Pricing updates on the WhatsApp Business Platform

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.

  • Effective November 1, 2024 — We are making service conversations free.
  • Effective February 1, 2025 — We will expand authentication-international rates to 7 additional markets across APAC and EMEA.
  • Effective April 1, 2025 — We are making utility templates free within the 24-hour customer service window.
  • Starting April 1, 2025 — We will charge per message for template messages instead of per conversation.

Per-message pricing

With per-message pricing, businesses on our platform will be charged:

  • Per delivered marketing template message
  • Per delivered authentication template message
  • Per delivered utility template message, if delivered outside of a customer service window

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).

Phased rollout

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.

Per-message pricing analytics

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.

Cloud API webhooks

Starting April, 2025, status messages webhooks containing pricing information will have the following changes to reflect the new pricing model:

Conversation object

If per-message pricing applies to you, the conversation object will have the following changes:

  • for webhooks version 22.0 and older, id will be set to a unique ID per-message, instead of per-conversation, unless the webhook is for a free-entry point conversation
  • for webhooks version 23.0 and newer, the entire conversation object will only be included for messages that are part of a free-entry point conversation

You can adjust webhook version subscriptions using the App Dashboard > WhatsApp > Configuration panel's Version dropdown menu for each webhook field.

Pricing object

Change to the pricing object in status messages webhook:

  • the pricing_model property will support a new PMP value. The property will be set to PMP (per-message pricing) if per-message pricing applies to you, otherwise it will be set to CBP (conversation-based pricing)
  • a new type property will be included, which can have the following possible values:
    • regular — indicates the message is billable
    • free_customer_service — indicates the message is free because it was either a utility template message or non-template message, sent within a customer service window
    • free_entry_point — indicates the message is free because it is part of a free-entry point conversation

Under the conversation-based pricing model, the category value in pricing objects indicated which conversation rate was applied. Under the per-message pricing model, these values will not change, but can be interpreted 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 the message is part of a free entry point conversation

The type value can be used in conjunction with the 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

regular

marketing

Marketing

All marketing template messages are billable.

regular

utility

Utility

Utility template messages sent outside of a customer service window are billable.

free_customer_service

utility

n/a

Utility template messages sent inside of a customer service window are free.

free_customer_service

service

n/a

Non-templates messages are free.

Note that the billable property will be deprecated in a future versioned release, so we recommend that after per-message pricing applies to you, you start using type to determine if a given webhook is associated with a billable message.

Structure of messages webhooks 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"
        }
      ]
    }
  ]
}

Free Entry Point conversations

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.

Free service conversations

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.

Example

  • Hour 0: A WhatsApp user messages you outside of your business hours. This opens a customer service window, so you are now able to send any type of message to the user for 24 hours, not just template messages ("type":"template").
  • Hour 0: Your conversational AI bot automatically responds with a text message ("type":"text"), informing the user that a customer service agent will respond by 9am the next day.
  • Hour 12: A customer service agent responds to the user with a text message.

Identifying free service conversations using Cloud API webhooks

Starting April 1, 2025, for all webhook versions and phase groups, the pricing object in free service conversation status messages webhooks will have:

  • type set to free_customer_service
  • category set to service
"pricing": {
  "billable": false,
  "pricing_model": "<PRICING_MODEL>"
  "type": "free_customer_service",
  "category": "service"
}

The <PRICING_MODEL> value can be either PMP (per-message pricing) or CBP (conversation-based pricing), depending on which pricing model applied to you when the message was sent.

Identifying free service conversations using On-Premises API webhooks

Version 2.61 and newer

From April 1, 2025 through June 30, 2025, the pricing object in webhooks identifying a free utility template message will have:

  • billable set to false (vs. true for billable utility template messages)
  • category set to service
"pricing": {
  "billable": false,
  "pricing_model": "CBP",
  "category": "service"
}

Starting July 1, 2025, the pricing object in webhooks identifying a free utility template message will have:

  • a new type property, set to free_customer_service (vs. regular for a billable utility template message, or free_entry_point for a free entry point conversation message)
  • the pricing_model property will be set to a new PMP (per-message pricing) value
  • category set to service
"pricing": {
  "billable": false,
  "pricing_model": "PMP",          // New PMP value
  "type": "free_customer_service"  // New object property
  "category": "service"
}

Version 2.60 and older

Starting April 1, 2025, the pricing object in webhooks identifying a free utility template message will have:

  • billable set to false (vs. true for billable utility template messages)
  • category set to service
"pricing": {
  "billable": false,
  "pricing_model": "<PRCING_MODEL>",
  "category": "utility"
}

The <PRICING_MODEL> value can be PMP or CBP, depending on which pricing model applied to you when you sent the message.

Conversation analytics

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:

  • Data before this date can include 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.
  • Data after this date can include 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.

Whatsapp Manager insights

Starting November 1, 2024, the WhatsApp Manager > Account tools > Insights panel will have the following changes:

  • The Free tier count in the Free conversations tile can exceed 1,000. This indicates the number of free service conversations you have opened.
  • The Service count in the Paid conversations tile will no longer increment.

Free utility templates in the customer service window

Starting April 1, 2025, utility templates sent within a customer service window ("CSW") are free for all businesses. Utility templates sent outside a customer service window will continue to be charged the utility rate.

The illustration below shows the behavior of two utility template messages sent by a business in the phase 1 group, on or after April 1, 2025. Utility template message 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.

As another example, the illustration below shows the behavior of two utility template messages sent by a business in the phase 2 group, between April 1, 2025 and June 30, 2025 (after this time period, the behavior will be the same as the behavior illustrated above). Utility template message um1 is free because it is sent while the CSW is still open, but um2 opens a utility conversation billed at the utility rate because the CSW has closed.

Note that in this scenario, although a 24-hour CSW is opened when the WhatsApp user messages the business, no conversation exists. So, um1 opens a service conversation (which is free since it is within the CSW) and the conversation ID gets assigned to the conversation.id property in any related status messages webhooks.

Example

A WhatsApp user sends you a message asking when the package they ordered will be delivered. You can respond for free within the customer service window using any non-template message, such as a text message, or a utility template message, and neither would incur a charge.

Cloud API webhooks

To support this new behavior, starting April 1, 2025, for all Cloud API webhook versions and both phase groups, status messages webhooks will have the following pricing object changes:

  • a new type property will be included with the following possible values:
    • regular — Indicates the message is billable
    • free_customer_service — Indicates the message is not billable because it was a utility template message, sent within a CSW
    • free_entry_point — Indicates the message is not billable, as it is part of a free entry point conversation
  • a new PMP value will be added to the pricing_model field. Once per-message pricing applies to you, the value will be set to PMP. Until then, it will be set to CBP to indicate conversation-based pricing
"pricing": {
  "billable": <IS_BILLABLE?>,         // to be deprecated in a future release
  "pricing_model": "<PRICING_MODEL>", // can now be "PMP" or "CBP"
  "type": "<PRICING_TYPE>"            // new object property
  "category": "<PRICING_CATEOGORY>"
}

In addition, once per-message pricing applies to you, the conversation object will have the following changes:

  • for webhooks version 22.0 and older, id will be set to a unique ID per-message, instead of per-conversation, unless the webhook is for a free-entry point conversation
  • for webhooks version 23.0 and newer, the entire conversation object will only be included for messages that are part of a free-entry point conversation

Identifying free utility template messages using Cloud API webhooks

Starting April 1, 2025, for all webhook versions and phase groups, the pricing object in free utility template status messages webhooks will have:

  • type set to free_customer_service
  • category set to utility
"pricing": {
  "billable": false,
  "pricing_model": "<PRICING_MODEL>"
  "type": "free_customer_service",
  "category": "utility"
}

The <PRICING_MODEL> value can be either PMP (per-message pricing) or CBP (conversation-based pricing), depending on which pricing model applied to you when the message was sent.

Identifying billable utility template messages using Cloud API webhooks

Starting April 1, 2025, for all webhook versions and phase groups, the pricing object in billable utility template status messages webhooks will have:

  • type set to regular
  • category set to utility
"pricing": {
  "billable": true,
  "pricing_model": "<PRICING_MODEL>"
  "type": "regular",
  "category": "utility"
}

The <PRICING_MODEL> value can be either PMP (per-message pricing) or CBP (conversation-based pricing), depending on which pricing model applied to you when the message was sent.

On-Premises API webhooks

Version 2.61 and newer

From April 1, 2025 through June 30, 2025, the pricing object in webhooks identifying a free utility template message will have:

  • billable set to false (vs. true for billable utility template messages)
  • category set to utility
"pricing": {
  "billable": false,
  "pricing_model": "CBP",
  "category": "utility"
}

Starting July 1, 2025, the pricing object in webhooks identifying a free utility template message will have:

  • type set to free_customer_service (vs regular for a billable utility template message, or free_entry_point for a free entry point conversation message)
  • category set to utility
"pricing": {
  "billable": false,
  "pricing_model": "PMP",          // New PMP value
  "type": "free_customer_service"  // New object property
  "category": "utility"
}

Version 2.60 and older

Starting April 1, 2025, the pricing object in webhooks identifying a free utility template message will have:

  • billable set to false (vs. true for billable utility template messages)
  • category set to utility
"pricing": {
  "billable": false,
  "pricing_model": "CBP",
  "category": "utility"
}

Analytics

For business in the phase 1 group, starting April 1, 2025, utility template messages will have pricing_type set to FREE_CUSTOMER_SERVICE and pricing_category set to UTILITY 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",
            "pricing_category": "UTILITY",
          },
          ...
        ]
      }
    ]
  }
}

For businesses in the phase 2 group, between April 1, 2025, and June 30, 2025, free utility template messages are part of existing conversation windows and are not surfaced in conversation_analytics. After this time period, the analytics behavior described above will apply.

Expansion of authentication-international rates

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).

Eligibility emails will be sent 30 days prior to confirm this.

  • Egypt (+20)
  • Malaysia (+60)
  • Nigeria (+234)
  • Pakistan (+92)
  • Saudi Arabia (+966)
  • South Africa (+27)
  • United Arab Emirates (+971)

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.

Rate cards

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.

Complete timeline

October 10, 2024

  • Emails announcing our pricing update and details about the update are sent and specify if you are in the Phase 1 or Phase 2 group of the per-message pricing roll-out.

November 1, 2024

  • Service conversations are now free for all businesses on our platform.
  • Utility conversation rate is now lower for the "Rest of Africa" region. See Rate Cards above for this rate.

January 1, 2025

  • We count the number of authentication conversations you open with WhatsApp users across India, Indonesia and the seven additional markets when determining your eligibility for authentication-international rates.

January 7, 2025

  • A new version of On-Premises API is available. If you are an On-Premises API user, we recommend that you update to this version before July 1, 2025. If you do not upgrade to this version on or before July 1, 2025, any messages webhooks that include pricing information will have a pricing_model value of PMP instead of CBP, and conversation objects will have inaccurate data.

February 1, 2025

April 1, 2025

  • Per-messaging pricing now applies to businesses in the Phase 1 group.
  • New webhooks payloads now apply to businesses in the Phase 1 group.
  • New pricing_analytics analytics field now available to businesses in the Phase 1 group.
  • Utility templates sent within a customer service window are now free of charge for everyone.
  • Authentication-international eligibility is now counted using messages sent instead of conversations opened for business in the Phase 1 group.
  • Authentication-international rates now apply per-message (instead of per-conversation) for any eligible businesses in the Phase 1 group.

Late April or early May, 2025

Cloud API status messages webhooks conversation object changes:

  • For version 22.0 and older versions, id will be set to a unique ID per-message, instead of per-conversation, unless the webhook is for a free-entry point conversation message, if per-message pricing applies to you.
  • For version 23.0 (available late April or early May, 2025) and newer versions, the entire conversation object will only be included for messages that are part of a free-entry point conversation, if per-message pricing applies to you.

July 1, 2025

  • Per-messaging pricing now applies to businesses in the Phase 2 group. All businesses on the platform are now charged per message.
  • New webhooks payloads now apply to businesses in the Phase 2 group.
  • pricing_analytics analytics field now available to businesses in the Phase 2 group.
  • Authentication-international eligibility is now counted using messages sent instead of conversations opened for all businesses on the platform. Authentication-international rates now apply per-message (instead of per-conversation) for all businesses on the platform.

Late October or early November, 2025

  • For Graph API version 25.0 (available late October or early November, 2025) or newer, conversation analytics requests, the conversation_analytics field will return an error.

Document changelog

December 20, 2024

October 31, 2024

October 28, 2024