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.
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).
We are rolling out per-message pricing in two phases. Per-message pricing will apply to businesses in the Phase 1 group on April 1, 2025, and to all other businesses (Phase 2 group) on July 1, 2025. The email sent to you on October 10, 2024, indicates your group.
Utility templates sent inside of a customer service window will also be free starting April 1, 2025, to anyone in the Phase 2 group.
If you are in the Phase 1 group but manage WhatsApp Business Accounts (WABAs) that use either On-Premises API or are in the Groups API alpha, those WABAs will be part of the Phase 2 group.
A new pricing_analytics
analytics field will be released April 1, 2025, that allows you to get per-message pricing breakdowns for any messages you have sent.
Once per-message pricing applies to you, messages webhooks containing pricing information will have the following changes to reflect the new pricing model:
conversation
is no longer an event type so will not be includedpricing.pricing_model
property value can be PMP
, which indicates per-message pricingpricing.type
property will be included with the following possible values:
regular
— Indicates message is billable.free_customer_service
— Indicate the message is not billable because it was a utility template message, sent within a customer service window.free_entry_point
— Indicates the message is not billable, as it was sent within 24 hours of the user messaging you via a Click to WhatsApp Ad or Facebook Page Call-to-Action button.Under the conversation-based pricing model, the pricing.category
values indicated which conversation rate was applied. Under the new model, these values will not change, but can be used as follows:
authentication
— indicates an authentication template message.authentication-international
– indicates an authentication template message sent to a WhatsApp user in a country or region that has authentication-international rates.marketing
— indicates a marketing template message.utility
— indicates a utility template message.service
— indicates a non-template message.referral_conversion
— indicates a WhatsApp user, using a device running Android or iOS, messaged you via a Click to WhatsApp Ad or Facebook Page Call-to-Action button and you responded with a message (of any type) within 24 hours.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. |
Note that the pricing.billable
property will be deprecated in a future versioned release, so we recommend that after per-message pricing applies to you, you start using pricing.type
to determine if a given webhook is associated with a billable message.
Structure of messages webhook with pricing information after per-message pricing applies to you:
{ "object": "whatsapp_business_account", "entry": [ { "id": "<WHATSAPP_BUSINESS_ACCOUNT_ID>", "changes": [ { "value": { "messaging_product": "whatsapp", "metadata": { "display_phone_number": "<BUSINESS_DISPLAY_PHONE_NUMBER>", "phone_number_id": "<BUSINESS_PHONE_NUMBER_ID>" }, "statuses": [ { "id": "<WHATSAPP_MESSAGE_ID>", "status": "sent", "timestamp": "<WEBHOOK_SENT_TIMESTAMP>", "recipient_id": "<WHATSAPP_USER_ID>", "pricing": { "billable": <IS_BILLABLE?>, // to be deprecated in future release "type": "<PRICING_TYPE>", // new property "pricing_model": "PMP", // new `PMP` value "category": "<PRICING_CATEGORY>" } } ] }, "field": "messages" } ] } ] }
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 within 24 hours; this opens a free entry point customer service window that lasts 72 hours. You can continue to message the user using any type of message while this window is open, at no charge.
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.
"type":"template"
).text
message ("type":"text"
), informing the user that a customer service agent will respond by 9am the next day.text
message.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
.Note that after per-message pricing applies to everyone, the conversation_analytics
field will be deprecated in a future versioned release. 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 April 1, 2025, utility templates sent within a customer service window are free for all businesses. Utility templates sent outside a customer service window will continue to be charged the utility rate.
If a WhatsApp user sends you a message asking when the package they ordered will be delivered, you can respond within the customer service window with a text message or utility template message, and neither incurs a charge.
We are expanding authentication-international rates to 7 new markets effective February 1, 2025:
Updates to rates are available in the rate cards below.
Starting April 1, 2025 - If you are in the per-message pricing Phase 1 group, 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.
Updated rate cards reflecting the changes described on this page are below. Note these reflect future updates to rates; our current rate cards are available here.
pricing_model
value of PMP
instead of CBP
, and conversation objects will have inaccurate data.pricing_analytics
analytics field now available to businesses in the Phase 1 group.pricing_analytics
analytics field now available to businesses in the Phase 2 group.