Meta reviews every template. Most rejections come from a short list of avoidable problems.
The usual suspects
Variables at the very start or end of the body, or numbered out of order. Placeholder-only or too-vague text. Promotional wording in a utility template. A link shortener or a URL that doesn't match your business. Missing sample values for variables.
Marketing templates with no way to opt out also draw complaints from customers, which hurts your quality rating.
Check before you submit
baseNode checks for most of these as you type, shows a live preview of the message, and keeps Meta's rejection reason on the template card if one comes back so you can edit and resubmit.