Effective April 1, 2025, we are lowering our authentication-international rates in Egypt, Nigeria, Pakistan and South Africa, as part of continued efforts to ensure our prices are on-par with alternate channels.
We are updating pricing on the WhatsApp Business Platform to be simpler and more consistent with industry practices, encourage higher-quality messaging experiences for people, and better align with value delivered for people and businesses.
Per-message pricing will apply to all businesses starting July 1, 2025, at 12am, by WhatsApp Business Account timezone. With per-message pricing, businesses on our platform will be charged:
For example, if you send a marketing template and then two utility templates to a WhatsApp user, that will incur 3 charges (1 marketing, 2 utility). If the 2 utility templates are sent while a customer service window is open between you and the user, however, it would only incur a single charge (1 marketing).
A new pricing_analytics field will be released July 1, 2025, that allows you to get per-message pricing breakdowns for any messages you have sent.
Starting July 1, 2025, the conversation
and pricing
objects in status messages webhooks will be affected in the following ways, based on the webhook field version you are subscribed to. You can adjust subscriptions using the App Dashboard > WhatsApp > Configuration panel's Version dropdown menu for each webhook field.
/* conversation object omitted unless webhook is for a free entry point conversation */ "conversation": { "id": "<CONVERSATION_ID>", // new behavior, see table below "expiration_timestamp": "<CONVERSATION_EXPIRATION_TIMESTAMP>", "origin": { "type": "<CONVERSATION_CATEGORY>" } }, "pricing": { "billable": <IS_BILLABLE?>, "pricing_model": "<PRICING_MODEL>", // new value, see table below "type": "<PRICING_TYPE>", // new property, see table below "category": "<CONVERSATION_CATEGORY>" }
"conversation": { "id": "<CONVERSATION_ID>", // new behavior, see table below "expiration_timestamp": "<CONVERSATION_EXPIRATION_TIMESTAMP>", "origin": { "type": "<CONVERSATION_CATEGORY>" } }, "pricing": { "billable": <IS_BILLABLE?>, "pricing_model": "<PRICING_MODEL>", // new value, see table below "type": "<PRICING_TYPE>", // new property, see table below "category": "<PRICING_CATEGORY>" }
Placeholder | Description |
---|---|
| Version 24.0 and higher:
Version 23.0 and lower:
|
| Not changing. |
| Not changing. |
| Not changing. However, the |
| New
|
| New property. Values can be:
|
| Values are not changing, but can now be interpreted as follows:
|
On-Premises API messages status and pricing notification changes will mirror the Cloud API version 24.0 webhook changes.
On-Premises API messages status and pricing notification changes will mirror the Cloud API version 24.0 webhook changes, however, the pricing.type
property will not be included.
The pricing.type
value can be used in conjunction with the pricing.category
value to determine if the webhook describes a message that was billable, and if so, which rate was applied. For example:
Type | Category | Rate | Reason |
---|---|---|---|
|
| Marketing | All marketing template messages are billable. |
|
| Utility | Utility template messages sent outside of a customer service window are billable. |
|
| n/a | Utility template messages sent inside of a customer service window are free. |
|
| n/a | Non-templates messages are free. |
With the launch of per-message pricing, free entry point conversations will behave the same but reflect messages instead of conversations. If a WhatsApp user messages you via a free entry point surface, you can respond with any type of message for free for 24 hours. If you respond, a 72 hour free entry point window will be opened. You can continue to message the user with any type of message while this window is open, at no charge. Note that 24 hours after the customer initially messages you, you will only be able to send templates (for free) unless the customer messages you again.
Starting November 1, 2024, service conversations are free for all businesses (free tier conversations are now unlimited instead of capped at 1,000). As a reminder, a customer service window must be open between you and a WhatsApp user before you can send the user a non-template message.
Use the pricing
object in status messages webhooks as follows to determine if the webhook is associated with a free service conversation/message.
November 1, 2024 through June 30, 2025:
"pricing": { "billable": true, "pricing_model": "CBP", "category": "service" // Will be set to "service" }
Starting July 1, 2025:
"pricing": { "billable": false, "pricing_model": "PMP", // New "PMP" value "type": "free_customer_service", "category": "service" }
Use the pricing object in status and pricing notification webhooks as follows to determine if the webhook is associated with a free service conversation/message.
November 1, 2024 through June 30, 2025:
"pricing": { "billable": true, "pricing_model": "CBP", "category": "service" // Will be set to "service" }
Starting July 1, 2025:
"pricing": { "billable": false, "pricing_model": "PMP", // New "PMP" value "type": "free_customer_service", // New "type" property "category": "service" }
November 1, 2024 through June 30, 2025:
"pricing": { "billable": true, "pricing_model": "CBP", "category": "service" // Will be set to "service" }
Starting July 1, 2025:
"pricing": { "billable": false, "pricing_model": "PMP", // New "PMP" value "category": "service" }
All service conversations opened on or after November 1, 2024, will be identified as FREE_TIER
. If you request conversation analytics filtering for service conversations (conversation_categories
includes SERVICE
) and use a lookback period that straddles this date:
conversation_types
with a value of either FREE_TIER
(conversations opened before the 1K free tier limit was reached) or REGULAR
(conversations opened after the 1K free tier limit was reached). Note that conversations opened before this date but delivered after it are charged, and thus identified as REGULAR
.conversation_types
with either value as well, but REGULAR
will be zero (0
), since all service conversations are now free and identified as FREE_TIER
.The conversation_analytics
field will be deprecated when Graph API version 25.0 is released (late October or early November, 2025). This should give you adequate time to fetch any historical conversation analytics you might need before the field is no longer usable.
Starting November 1, 2024, the WhatsApp Manager > Account tools > Insights panel will have the following changes:
Starting July 1, 2025, utility templates sent within a customer service window ("CSW") are free for all businesses. Utility templates sent outside a CSW will continue to be charged the utility rate.
This illustration shows the behavior of two utility templates sent by a business on or after July 1, 2025:
Utility template um1 is free because it is sent while the CSW is still open, but um2 is billed the utility rate, because it is sent after CSW has closed.
Note that you can also respond for free within the CSW using any non-template message, such as a text message, which also would not incur a charge (this is not changing).
If a utility conversation is opened between you and a user that spans the switch to per-message pricing (the conversation was opened before the switch but won't close until after the switch), utility templates sent to the user after the switch while the conversation is open will be free, but attributed to the open conversation. These messages will have a pricing_model
of CBP
and the utility conversation ID will be assigned to conversation.id
in status messages webhooks. Once the conversation closes, subsequent utility messages sent to the user will follow the new behavior illustrated above.
Use the pricing
object in status messages webhooks as follows to determine if the webhook is associated with a free (or billable) utility template.
Starting July 1, 2025:
"pricing": { "billable": false, // vs. "true" for a billable utility template "pricing_model": "PMP", // new value, will be set to "PMP" "type": "free_customer_service", // new property, vs. "regular" for a billable utility template "category": "utility" }
Use the pricing
object in message status and pricing notification webhooks as follows to determine if the webhook is associated with a free (or billable) utility template.
Starting July 1, 2025:
"pricing": { "billable": false, // vs. "true" for a billable utility template "pricing_model": "PMP", // new value, will be set to "PMP" "type": "free_customer_service", // new property, vs. "regular" for a billable utility template "category": "utility" }
Starting July 1, 2025:
"pricing": { "billable": false, // vs. "true" for a billable utility template "pricing_model": "PMP", // will be set to "PMP" "category": "utility" }
Starting July 1, 2025, free utility templates message will have the following values in data point objects returned in pricing analytics responses:
{ "pricing_analytics": { "data": [ { "data_points": [ { "start": <START_TIME>, "end": <END_TIME>, "volume": 1, "pricing_type": "FREE_CUSTOMER_SERVICE", // Will be set to "FREE_CUSTOMER_SERVICE" "pricing_category": "UTILITY", // Will be set to "UTILITY" }, ... ] } ] } }
Effective April 1, 2025, we are lowering our authentication-international rates in Egypt, Nigeria, Pakistan and South Africa, as part of continued efforts to ensure our prices are on-par with alternate channels.
Effective February 1, 2025, any business eligible for authentication-international rates will be charged these rates across 7 additional markets listed below, except for the market that matches their Primary Business Location (where they will continue to be charged the authentication rate).
We will continue to notify businesses 30 days prior to authentication-international charges starting.
Updates to rates are available in the rate cards below.
Starting July 1, 2025, the eligibility threshold for authentication-international rates will be based on authentication messages sent instead of authentication conversations opened across all 9 markets that have authentication-international rates.
Our current rate cards are available here. They reflect all changes to rates through April 1, 2025.
pricing_model
value of PMP
instead of CBP
, and conversation objects will have inaccurate data.id
will be set to a unique ID per-message, instead of per-conversation, in status messages webhooks, unless the webhook is for a free entry point conversation message.conversation
object will only be included in status messages webhooks for messages that are part of a free entry point conversation.conversation_analytics
field will return an error.April 18, 2025:
expiration_timestamp
to Cloud API per-message pricing webhooks example and parameter descriptions table.<PRICING_CATEGORY>
enum value from authentication-international
to authentication_international
in Cloud API per-message pricing webhooks parameter description table.April 1, 2025:
March 27, 2025:
March 6, 2025:
pricing.type
property in Cloud API and On-Premises API availability date to July 1, 2025.pricing_model
new "PMP"
value availability date to July 1, 2025.February 25, 2025:
December 20, 2024:
conversation_analytics
field.October 31, 2024:
October 28, 2024: