# Template components | Developer Documentation

<div id="bkmrk-template-componentsu">## Template components

<div><span>Updated: Nov 21, 2025</span></div><div>Templates are made up of four primary components which you define when you create a template: header, body, footer, and buttons. The components you choose for each of your templates should be based on your business needs. The only required component is the body component.</div><div>Some components support variables, whose values you can supply when using the Cloud API to send the template in a template message. If your templates use variables, you must include sample variable values upon template creation.</div><div id="bkmrk-text-header"><div id="bkmrk-text-header-1"><div>### Text header

</div></div></div><div>Text headers are optional elements that can be added to the top of template messages. Each template may include only one text header. Please note that markdown special characters are not supported in this component, so we recommend avoiding their use.</div><div>Text headers support 1 [parameter](/books/meta-whatsapp/page/templates-developer-documentation).</div><div id="bkmrk-creation-syntax"><div id="bkmrk-creation-syntax-1"><div>#### Creation syntax

</div></div></div><div id="bkmrk-creation-parameters"><div id="bkmrk-creation-parameters-1"><div>#### Creation parameters

</div></div></div><div><table><thead><tr><th><span>Placeholder </span></th><th><span>Description </span></th><th><span>Example Value </span></th></tr></thead><tbody><tr><td><div><div>`<HEADER_TEXT>`</div><div>*String*</div></div></td><td><div><div>**Required.**</div><div>Header body text string. Supports 1 [parameter](/books/meta-whatsapp/page/templates-developer-documentation).</div><div>If this string contains a parameter, you must include the `example` property and example parameter value.</div><div>Maximum 60 characters.</div></div></td><td><div><div>`Our new sale starts {{sale_start_date}}!`</div></div></td></tr><tr><td><div><div>`<NAMED_PARAMETER_NAME>`</div><div>*String*</div></div></td><td><div><div>**Required if using a named parameter.**</div><div>[Named parameter](/books/meta-whatsapp/page/templates-developer-documentation) name.</div></div></td><td><div><div>`{{sale_start_date}}`</div></div></td></tr><tr><td><div><div>`<PARAMETER_EXAMPLE_VALUE>`</div><div>*String*</div></div></td><td><div><div>**Required if using a parameter.**</div><div>[Parameter](/books/meta-whatsapp/page/templates-developer-documentation) example value.</div></div></td><td><div><div>`December 1st`</div></div></td></tr></tbody></table>

</div><div id="bkmrk-media-header"><div id="bkmrk-media-header-1"><div>### Media header

</div></div></div><div>Media headers can be an image, video, gif, or a document such as a PDF. All media must be uploaded with the [Resumable Upload API](https://developers.facebook.com/docs/graph-api/guides/upload). The syntax for defining a media header is the same for all media types.</div><div>Note: Gifs are currently only available for [Marketing Messages API for WhatsApp](/books/meta-whatsapp/page/features-developer-documentation). Gifs are mp4 files with a max size of 3.5MB and larger files will be displayed as video messages.</div><div id="bkmrk-creation-syntax-3"><div id="bkmrk-creation-syntax-4"><div>#### Creation syntax

</div></div></div><div id="bkmrk-creation-parameters-3"><div id="bkmrk-creation-parameters-4"><div>#### Creation parameters

</div></div></div><div><table><thead><tr><th><span>Placeholder </span></th><th><span>Description </span></th><th><span>Example Value </span></th></tr></thead><tbody><tr><td><div><div>`<FORMAT>`</div></div></td><td><div><div>Indicates media asset type. Set to `IMAGE`, `VIDEO`, `GIF`, or `DOCUMENT`.</div></div></td><td><div><div>`IMAGE`</div></div></td></tr><tr><td><div><div>`<HEADER_HANDLE>`</div></div></td><td><div><div>Uploaded media asset handle. Use the [Resumable Upload API](https://developers.facebook.com/docs/graph-api/guides/upload) to generate an asset handle.</div></div></td><td><div><div>`4::aW...`</div></div></td></tr></tbody></table>

</div><div id="bkmrk-location-header"><div id="bkmrk-location-header-1"><div>### Location header

</div></div></div><div>Location headers appear as generic maps at the top of the template and are useful for order tracking, delivery updates, ride-hailing pickup/dropoff, locating physical stores, etc. When tapped, the app user's default map app will open and load the specified location. Locations are specified when you send the template.</div><div>Location headers can only be used in templates categorized as `UTILITY` or `MARKETING`. Real-time locations are not supported.</div><div id="bkmrk-creation-syntax-6"><div id="bkmrk-creation-syntax-7"><div>#### Creation syntax

</div></div></div><div id="bkmrk-creation-parameters-6"><div id="bkmrk-creation-parameters-7"><div>#### Creation parameters

</div></div></div><div>None.</div><div id="bkmrk-send-syntax"><div id="bkmrk-send-syntax-1"><div>#### Send syntax

</div></div></div><div id="bkmrk-send-parameters"><div id="bkmrk-send-parameters-1"><div>#### Send parameters

</div></div></div><div><table><thead><tr><th><span>Placeholder </span></th><th><span>Description </span></th><th><span>Sample Value </span></th></tr></thead><tbody><tr><td><div><div>`<LOCATION_ADDRESS>`</div></div></td><td><div><div>Location address.</div></div></td><td><div><div>`101 Forest Ave, Palo Alto, CA 94301`</div></div></td></tr><tr><td><div><div>`<LOCATION_LATITUDE>`</div></div></td><td><div><div>Location latitude in decimal degrees.</div></div></td><td><div><div>`37.44211676562361`</div></div></td></tr><tr><td><div><div>`<LOCATION_LONGITUDE>`</div></div></td><td><div><div>Location longitude in decimal degrees.</div></div></td><td><div><div>`122.16155960083124`</div></div></td></tr><tr><td><div><div>`<LOCATION_NAME>`</div></div></td><td><div><div>Location name.</div></div></td><td><div><div>`Philz Coffee`</div></div></td></tr></tbody></table>

</div><div id="bkmrk-body"><div id="bkmrk-body-1"><div>### Body

</div></div></div><div>The body component represents the core text of your message template and is a text-only template component. Templates are limited to one body component.</div><div>The message text in the body component accepts multiple [parameters](/books/meta-whatsapp/page/templates-developer-documentation).</div><div id="bkmrk-creation-syntax-9"><div id="bkmrk-creation-syntax-10"><div>#### Creation syntax

</div></div></div><div id="bkmrk-creation-parameters-9"><div id="bkmrk-creation-parameters-10"><div>#### Creation parameters

</div></div></div><div><table><thead><tr><th><span>Placeholder </span></th><th><span>Description </span></th><th><span>Example Value </span></th></tr></thead><tbody><tr><td><div><div>`<BODY_TEXT>`</div><div>*String*</div></div></td><td><div><div>**Required.**</div><div>Body text string. Supports multiple [parameters](/books/meta-whatsapp/page/templates-developer-documentation).</div><div>Maximum of 1024 characters.</div></div></td><td><div><div>`Thank you, {{first_name}}! Your order number is {{order_number}}.`</div></div></td></tr><tr><td><div><div>`<NAMED_PARAMETER_NAME>`</div><div>*String*</div></div></td><td><div><div>**Required if using a named parameter.**</div><div>[Named parameter](/books/meta-whatsapp/page/templates-developer-documentation) name.</div></div></td><td><div><div>`{{order_number}}`</div></div></td></tr><tr><td><div><div>`<PARAMETER_EXAMPLE_VALUE>`</div><div>*String*</div></div></td><td><div><div>**Required if using a parameter.**</div><div>[Parameter](/books/meta-whatsapp/page/templates-developer-documentation) example value.</div></div></td><td><div><div>`December 1st`</div></div></td></tr></tbody></table>

</div><div id="bkmrk-footer"><div id="bkmrk-footer-1"><div>### Footer

</div></div></div><div>Footers are optional text-only components that appear immediately after the body component. Templates are limited to one footer component.</div><div id="bkmrk-properties"><div id="bkmrk-properties-1"><div>#### Properties

</div></div></div><div><table><thead><tr><th><span>Placeholder </span></th><th><span>Description </span></th><th><span>Example Value </span></th></tr></thead><tbody><tr><td><div><div>`<TEXT>`</div></div></td><td><div><div>Text to appear in template footer when sent.</div><div>  
60 characters maximum.</div></div></td><td><div><div>`Use the buttons below to manage your marketing subscriptions`</div></div></td></tr></tbody></table>

</div><div id="bkmrk-buttons"><div id="bkmrk-buttons-1"><div>### Buttons

</div></div></div><div>Buttons are optional interactive components that perform specific actions when tapped.</div><div>Templates can have a combination of up to 10 button components in total, although there are limits to individual buttons of the same type as well as combination limits, which are described below. In addition, templates composed of 4 or more buttons, or a quick reply button and one or more buttons of another type, cannot be viewed on WhatsApp desktop clients. WhatsApp users who receive one of these template messages will be prompted to view the message on a phone instead.</div><div>Buttons are defined within a single buttons component object, packed into a single `buttons` array. For example, this template uses a voice call button and a URL button:</div><div>If a template has more than three buttons, two buttons will appear in the delivered message, and the remaining buttons will be replaced with a **See all options** button. Tapping the **See all options** button reveals the remaining buttons.</div><div>![](https://support2.chatarchitect.com/uploads/images/gallery/2026-04/embedded-image-sooru2d8.png)</div><div id="bkmrk-copy-code-buttons"><div id="bkmrk-copy-code-buttons-1"><div>#### Copy code buttons

</div></div></div><div>Copy code buttons copy a text string (defined when the template is sent in a template message) to the device's clipboard when tapped by the app user. Templates are limited to one copy code button.</div><div id="bkmrk-properties-3"><div id="bkmrk-properties-4"><div>##### Properties

</div></div></div><div><table><thead><tr><th><span>Placeholder </span></th><th><span>Description </span></th><th><span>Example Value </span></th></tr></thead><tbody><tr><td><div><div>`<EXAMPLE>`</div></div></td><td><div><div>String to be copied to the device's clipboard when tapped by the app user.</div><div>  
Maximum 15 characters.</div></div></td><td><div><div>`250FF`</div></div></td></tr></tbody></table>

</div><div id="bkmrk-multi-product-messag"><div id="bkmrk-multi-product-messag-1"><div>#### Multi-product message buttons

</div></div></div><div>Multi-product message buttons are special, non-customizable buttons that, when tapped, display up to 30 products from your ecommerce catalog, organized in up to 10 sections, in a single message. See [Multi-Product Message Templates](/books/meta-whatsapp/page/multi-product-message-templates-developer-documentation).</div><div id="bkmrk-one-time-password-bu"><div id="bkmrk-one-time-password-bu-1"><div>#### One-time password buttons

</div></div></div><div>One-time password buttons are a special type of [URL button](#bkmrk-url-buttons-1) component used with authentication templates. See [Authentication Templates](/documentation/business-messaging/whatsapp/templates/authentication-templates/authentication-templates).</div><div id="bkmrk-voice-call-buttons"><div id="bkmrk-voice-call-buttons-1"><div>#### Voice call buttons

</div></div></div><div>Voice call buttons make a WhatsApp call to the business when tapped by the app user. See [Create and send WhatsApp call button template message](/books/meta-whatsapp/page/send-whatsapp-call-button-messages-and-deep-links-developer-documentation) to learn more</div><div id="bkmrk-phone-number-buttons"><div id="bkmrk-phone-number-buttons-1"><div>#### Phone number buttons

</div></div></div><div>Phone number buttons call the specified business phone number when tapped by the app user. Templates are limited to one phone number button.</div><div id="bkmrk-properties-6"><div id="bkmrk-properties-7"><div>##### Properties

</div></div></div><div><table><thead><tr><th><span>Placeholder </span></th><th><span>Description </span></th><th><span>Example Value </span></th></tr></thead><tbody><tr><td><div><div>`<PHONE_NUMBER>`</div></div></td><td><div><div>Alphanumeric string. Business phone number to be called when the user taps the button.</div><div>Note that some countries have special phone numbers that have leading zeros after the country calling code (for example, +55-0-955-585-95436). If you assign one of these numbers to the button, the leading zero will be stripped from the number. If your number will not work without the leading zero, assign an alternate number to the button, or add the number as message body text.</div><div>20 characters maximum.</div></div></td><td><div><div>`15550051310`</div></div></td></tr><tr><td><div><div>`<TEXT>`</div></div></td><td><div><div>Button label text.</div><div>  
25 characters maximum.</div></div></td><td><div><div>`Call`</div></div></td></tr></tbody></table>

</div><div id="bkmrk-quick-reply-buttons"><div id="bkmrk-quick-reply-buttons-1"><div>#### Quick reply buttons

</div></div></div><div>Quick reply buttons are custom text-only buttons that immediately message you with the specified text string when tapped by the app user. A common use case is a button that allows your customer to easily opt-out of any marketing messages.</div><div>Templates are limited to 10 quick reply buttons. If using quick reply buttons with other buttons, buttons must be organized into two groups: quick reply buttons and non-quick reply buttons. If grouped incorrectly, the API will return an error indicating an invalid combination.</div><div>Examples of valid groupings:</div><span>Quick Reply, Quick Reply</span><span>Quick Reply, Quick Reply, URL, Phone</span><span>URL, Phone, Quick Reply, Quick Reply</span><div>Examples of invalid groupings:</div><span>Quick Reply, URL, Quick Reply</span><span>URL, Quick Reply, URL</span><div>When using the API to send a template that has multiple quick reply buttons, you can use the index property to designate the order in which buttons appear in the template message.</div><div id="bkmrk-properties-9"><div id="bkmrk-properties-10"><div>##### Properties

</div></div></div><div><table><thead><tr><th><span>Placeholder </span></th><th><span>Description </span></th><th><span>Example Value </span></th></tr></thead><tbody><tr><td><div><div>`<TEXT>`</div></div></td><td><div><div>Button label text.</div><div>  
25 characters maximum.</div></div></td><td><div><div>`Unsubscribe`</div></div></td></tr></tbody></table>

</div><div id="bkmrk-spm-buttons"><div id="bkmrk-spm-buttons-1"><div>#### SPM buttons

</div></div></div><div>Single-product message (SPM) buttons are special, non-customizable buttons that can be mapped to a product in your product catalog. When tapped, they load details about the product, which it pulls from your catalog. Users can then add the product to their cart and place an order. See [Single-Product Message Templates](/books/meta-whatsapp/page/single-product-message-templates-developer-documentation) and [Product Card Carousel Templates](/books/meta-whatsapp/page/product-card-carousel-templates-developer-documentation).</div><div id="bkmrk-url-buttons"><div id="bkmrk-url-buttons-1"><div>#### URL buttons

</div></div></div><div>URL buttons load the specified URL in the device's default web browser when tapped by the app user. Templates are limited to two URL buttons.</div><div id="bkmrk-properties-12"><div id="bkmrk-properties-13"><div>##### Properties

</div></div></div><div><table><thead><tr><th><span>Placeholder </span></th><th><span>Description </span></th><th><span>Example Value </span></th></tr></thead><tbody><tr><td><div><div>`<EXAMPLE>`</div></div></td><td><div><div>URL of website. Supports 1 variable.</div><div>  
If using a variable, add sample variable property to the end of the URL string. The URL loads in the device's default mobile web browser when the customer taps the button.</div><div>  
2000 characters maximum.</div></div></td><td><div><div>`https://www.luckyshrub.com/shop?promo=summer2023`</div></div></td></tr><tr><td><div><div>`<TEXT>`</div></div></td><td><div><div>Button label text. 25 characters maximum.</div></div></td><td><div><div>`Shop Now`</div></div></td></tr><tr><td><div><div>`<URL>`</div></div></td><td><div><div>URL of website that loads in the device's default mobile web browser when the button is tapped by the app user.</div><div>  
Supports 1 variable, appended to the end of the URL string.</div><div>  
2000 characters maximum.</div></div></td><td><div><div>`https://www.luckyshrub.com/shop?promo={{1}}`</div></div></td></tr></tbody></table>

</div><div id="bkmrk-limited-time-offer"><div id="bkmrk-limited-time-offer-1"><div>### Limited-time offer

</div></div></div><div>Limited-Time Offer components are special components used to create [limited-time offer templates](/books/meta-whatsapp/page/limited-time-offer-templates-developer-documentation).</div></div>