Skip to main content
Build your template with a body, optional header and footer, and buttons. Add variables for content that changes between recipients. Authentication and specialized formats have additional constraints.

Standard template anatomy

These limits are not a promise that every specialized template accepts every combination. Authentication uses preset text; carousel cards, limited-time offers, commerce templates, and calling components have their own structures. A useful standard layout is:
The example illustrates structure only; it is not pre-approved by Meta.
Meta template anatomy with labeled header, body, footer, URL, phone, and quick-reply buttons.

Meta labels the standard components. This promotional example illustrates structure, not a utility-category decision.

Source: Meta official example.

Choose the right button action

A quick-reply button labeled Stop promotions is not an automatic unsubscribe implementation. Your workflow must recognize the reply and update the customer’s preferences. See Customer opt-out.

Button order affects usability and compatibility

Put the most important actions first. With more than three buttons, WhatsApp shows the first two and a See all options control for the rest.
A WhatsApp template with two visible action buttons and See all options, alongside the expanded list containing URL, phone, and quick-reply actions.

Meta's example of a template with additional actions behind See all options. Client appearance may vary.

Source: Meta template components. Keep quick replies and other button types in separate groups:
  • Valid grouping: URL → Phone → Quick reply → Quick reply.
  • Invalid grouping: Quick reply → URL → Quick reply.
Meta currently documents a desktop limitation for templates with four or more buttons, or a quick reply mixed with another button type: recipients are prompted to view those messages on a phone. Test this if desktop use matters to your audience.

Variables: design, review, and send are separate stages

For this body:
Use a mapping that your team and integration can maintain: Review examples demonstrate what a variable means. They do not configure a data source or automatically populate future messages. The header, body, and each dynamic button have separate parameter positions. Body {{1}} and URL-button {{1}} do not have to contain the same value. Button index identifies the button’s position in the template, starting at 0; it is not a body-variable number.

Example: body values and a dynamic URL

Suppose the reviewed template has:
  • Body: Your booking {{1}} is confirmed for {{2}}.
  • Button at index 0: https://example.com/bookings/{{1}}
The YCloud message’s template object can map them as follows:
This is a template object fragment, not a complete send request. It assumes that the named template and exact language variant are approved in the sender’s WABA. The button parameter supplies the suffix, not the full URL. Keep a stable destination domain in the reviewed template. Encode URL values correctly, and avoid putting private information or long-lived access credentials in links. Do not use a variable to hide the message’s real category.

Media headers: sample assets are not live attachments

For an image, video, or document header:
  1. Select the intended header format when creating the template.
  2. Provide a representative sample for review.
  3. At send time, supply the actual media using the supported YCloud media ID or link field.
  4. Confirm that the file is retrievable, its format matches the template, and it meets the media limits.
  5. Test the delivered message, including the file’s readability on a phone.
Do not send an image parameter to a video-header template. A private URL that only works after you sign in is not a reliable media link for the messaging service. GIF headers appear in current contracts, but Meta restricts that capability to the applicable Marketing Messages API for WhatsApp route. Do not assume it is available through every ordinary template workflow merely because a field exists.

Select a specialized format

Diagnose a component error

The YCloud template API guide and OpenAPI contract define the YCloud fields. Meta’s component support does not prove that every YCloud editor, Inbox, Campaign, or API route exposes the same feature. Continue with Create a template and Template review and lifecycle.