APPROVED status — send it to your contacts with dynamic parameter values substituted at runtime.
Submitting a Template
Send aPOST request to create and queue a template for Meta’s review.
Use double-brace placeholders like
{{1}}, {{2}} for dynamic values. The sample_text field shows Meta reviewers what realistic content looks like in those slots.
Key template fields
Template with CTA Buttons
Call-to-action buttons let recipients open a URL or dial a phone number directly from the message. Setmessage_action_type to "CTA" and supply a call_to_action array.
Quick Reply Templates
Quick Reply buttons let recipients tap a pre-defined response, making it easy to collect structured feedback or route conversations. Setmessage_action_type to "QuickReplies" and list up to three reply strings.
Sending an Approved Template
Once a template reachesAPPROVED status, send it using the messages endpoint with type: "template". Pass dynamic values as parameters inside the appropriate components array entry.
{{1}}, the second to {{2}}, and so on.
Template with Image Header
For templates with atype of IMAGE, include a header component that supplies the image URL at send time.
VIDEO and DOCUMENT headers — replace "type": "image" with "type": "video" or "type": "document" and update the nested object key accordingly.
Carousel Templates
Carousel templates display a horizontal scroll of up to 10 product cards, each with its own image, body text, and buttons. This is ideal for showcasing a range of products or promotions in a single message. Each card is represented as a separate component withtype: "carousel_card" and its own card_index. Supply header media and body parameters for each card independently.
Checking Template Status
Poll the template status endpoint to find out whether Meta has approved or rejected a submitted template.Status values
When a template is rejected, the response includes a
rejected_reason field with a short explanation from Meta — for example, "ABUSIVE_CONTENT" or "INVALID_FORMAT". Use this to fix and resubmit under a new name.
