# Duplicate a template with a new max price (BETA)
Duplicate an existing approved template to run the same message content at a different [max price](https://developers.facebook.com/documentation/business-messaging/whatsapp/marketing-messages/pricing). Template duplication clones an approved template with a new name and max price (`optimization_spec`), so you can run identical templates across audience segments while setting a different max price for each.
**Note:** Template duplication is available in Limited Beta as part of the max price feature. To use it, you must be [enrolled in max price](https://developers.facebook.com/documentation/business-messaging/whatsapp/marketing-messages/pricing/enroll-max-price).
## Eligibility
To duplicate a template:
## When to use template duplication
Use template duplication when you want to send the same approved template at more than one max price:
- **Cohort-based max price setup.** Segment your audience by intent — such as recent buyers, lapsed users, and first-time prospects — and set a different max price for each segment while keeping the message identical. Because the template never changes, price becomes the only variable, so you can set a higher max price for high-value cohorts\* and a lower max price for the rest.
_\* Some in-demand customers are reached by many businesses, making delivery more competitive and messaging caps more likely to be hit — which leads to more undelivered messages. Setting a higher max price signals your priority to reach the customer and can increase your delivery rate._
- **A/B testing max price.** Spin up several test arms from a single approved template, each with a different max price, in seconds. Since every arm carries byte-for-byte identical content, any difference in delivery rate, cost per delivery, or downstream conversion is attributable to the max price alone — giving you a clean read on how price moves your results.
- **Existing rate card template enablement.** Duplicate a template that was created without a max price to produce a max price-enabled copy, without rebuilding it from scratch. This lets you adopt max price for a template that already performs on standard [rate card (published rate)](https://faq.whatsapp.com/1022626499062292) pricing while leaving the original template untouched.
## How template duplication works
## Duplicate caps
Meta limits how many duplicates you can create from a single source template. The cap is determined by your business's trust level: the higher your trust level, the more duplicates you can create per source template, up to a maximum of 25. If a source template has reached its cap, further duplication requests for that template fail until you remove an existing duplicate.
## Duplicate a template
Use the [Message Templates API](https://developers.facebook.com/documentation/business-messaging/whatsapp/reference/whatsapp-business-account/message-template-api#post-version-waba-id-message-templates) to create the duplicate. Call the same endpoint you use to create a template, and include `source_template_id` to identify the template to clone. When `source_template_id` is present, the content components, `category`, and `language` are cloned from the source and become optional in the request body.
### Request syntax
```html
curl 'https://graph.facebook.com/<API_VERSION>/<WHATSAPP_BUSINESS_ACCOUNT_ID>/message_templates' \
-H 'Authorization: Bearer <ACCESS_TOKEN>' \
-H 'Content-Type: application/json' \
-d '{
"source_template_id": "<SOURCE_TEMPLATE_ID>",
"name": "<TEMPLATE_NAME>",
"optimization_spec": {
"bid_amount": <BID_AMOUNT>,
"bid_strategy": "LOWEST_COST_WITH_BID_CAP"
}
}'
```
### Request parameters
| Placeholder | Description | Example Value |
| --- | --- | --- |
| `<ACCESS_TOKEN>`<br><br>_String_ | **Required.**<br><br>[System token](https://developers.facebook.com/documentation/business-messaging/whatsapp/access-tokens#system-user-access-tokens) or [business token](https://developers.facebook.com/documentation/business-messaging/whatsapp/access-tokens#business-integration-system-user-access-tokens). | `EAAA...` |
| `<API_VERSION>`<br><br>_String_ | **Optional.**<br><br>Graph API version. | v26.0 |
| `<WABA_ID>`<br>_String_ | **Required.** | `102290129340398` |
| `<SOURCE_TEMPLATE_ID>`<br><br>_String_ | **Required.** | `1234567890123456` |
| `<TEMPLATE_NAME>`<br><br>_String_ | **Required.** | `seasonal_sale_promo_high_intent` |
| `<BID_AMOUNT>`<br><br>_int32_ | **Required.** | `87000` |
| `<BID_STRATEGY>`<br><br>_Enum_ | **Required.**<br><br>The bid strategy to use. Currently supports only `LOWEST_COST_WITH_BID_CAP`. | `LOWEST_COST_WITH_BID_CAP` |
### Example request
```html
curl 'https://graph.facebook.com/v23.0/102290129340398/message_templates' \
-H 'Authorization: Bearer EAAJB...' \
-H 'Content-Type: application/json' \
-d '{
"source_template_id": "1234567890123456",
"name": "seasonal_sale_promo_high_intent",
"optimization_spec": {
"bid_amount": 87000,
"bid_strategy": "LOWEST_COST_WITH_BID_CAP"
}
}'
```
### Example response
When the source template is approved, the duplicate is created in `APPROVED` status immediately.
```json
{
"id": "1733678867511493",
"status": "APPROVED",
"category": "MARKETING",
}
```
### Response fields
| Field | Description |
| --- | --- |
| `id` | ID of the new duplicate template. |
| `status` | Status of the duplicate. `APPROVED` when the source template is approved. |
| `category` | Template category, cloned from the source template. |
## Limitations
During Limited Beta, the following limits apply:
- **Content can't change.** You can override only `name` and `optimization_spec`. All content components (header, body, footer, and buttons), as well as `category` and `language`, are cloned from the source template and can't be modified.
- **Deleting the source removes its duplicates.** When you delete a source template, its duplicates are also removed.
## Error handling
| Condition | Behavior |
| --- | --- |
| Source template is not in `APPROVED` status | HTTP 400 — the source template must be approved before it can be duplicated |
| | HTTP 400 with a naming conflict error |
| Duplicate cap for the source template is reached | HTTP 400 — the source template has reached its maximum number of duplicates |
| | HTTP 403 — enroll in max price before duplicating templates |