Conversations

Pricing Models

Today, the WhatsApp API pricing model is based on conversations. This means that businesses pay per conversation, which includes all messages interchanged within a 24-hour period.

Meta will transition from a per-category pricing model to a per-message pricing model. This change is aimed to streamline costs and enhance the overall messaging experience.

See more details below:

Per-Conversation Pricing

Business-initiated conversations have three categories utility, authentication, and marketing. User-initiated is categorized as a service conversation, each with different rates:

  • Utility conversations - Business-initiated conversations with customers that have opted into facilitating a specific, agreed-upon request or transaction, or update to a customer about an ongoing transaction, including post-purchase notifications and recurring billing statements.

  • Authentication conversations - Business-initiated conversations with customers that have opted into, enabling businesses to authenticate users with one-time passcodes (OTP), potentially at multiple steps in the login process (e.g., account verification, account recovery).

  • Marketing conversations - Business-initiated conversations with customers that have opted into, which may include promotions or offers, informational updates like a back-in-stock alert, or invitations for customers to respond or take action. A marketing conversation is any conversation that does not qualify as utility or authentication.

  • Service conversations - Any user-initiated conversation, such as to resolve a customer enquiry.

The conversation starts when the first business message in a conversation is delivered. However, the conversation type will be defined once a message has been sent by the business with the category of the template message used.

Per-Message Pricing

With the new per-message pricing model, businesses will be charged as follow:

  • Per message for each marketing template

  • Per message for each authentication template

  • Per message for each utility template sent outside of a customer service window

For example, if the business send a marketing template followed by two utility templates to a WhatsApp user, will incur three charges (1 for marketing, 2 for utility). However, if the two utility templates are sent within the customer service window, the business will only be charged for the marketing message.

Pricing Changes Timeline

Here’s a timeline of key events that will shape the WhatsApp Business Platform:

  • November 1, 2024: Service conversations will become free. (Find more details below)

  • February 1, 2025: The introduction of international rates for authentication in seven additional markets: Egypt, Malaysia, Nigeria, Pakistan, Saudi Arabia, South Africa, and the United Arab Emirates.

  • April 1, 2025: Utility templates will be free within the 24-hour customer service window. The launch of the per-message pricing model will start and some business will start transitioning to the new pricing structure.

  • July 1, 2025: Per-message pricing will officially take effect for 360dialog Partners and Clients.

Sessions

All conversations, or “sessions”, as we’ll refer to them here, with the exception of free entry point conversations, are measured in 24-hour window. A session starts whenever the first message is sent by a business, either in response to a user inquiry or if a business-initiated message template is delivered.

When a business sends a template message within an open service conversation and then sends another template message of a different category, a new conversation is started according to the category of the template. Consequently, charges apply for each template category used in the conversation. In the future, there will be charges for each message sent.

Customer Service Window

Please note that conversations rules are different and independent from customer service windows, which are used to understand if the business can send a free-form message or a template message.

Whenever a WhatsApp user messages you, a 24-hour timer called a customer service window starts (or refreshes if one has already been started).

When a customer service window is open between you and a user, you can send any type of free-form message to the user. If a window is not open between you and the user, you can only send template messages to the user, as template messages are the only type that can be sent outside of a customer service window.

Free Utility Templates in the Customer Service Window

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 (per-message pricing model).

Example: 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.

Conversation Duration

Marketing, utility, authentication, and service conversations last 24 hours unless closed by a newly opened free-entry point conversation.

Free-entry point conversations last 72 hours.

Multiple Conversations

It is possible to have multiple open conversations between you and a customer. This can happen in the following situations:

  • An open marketing, utility, or authentication conversation exists between you and a customer and you send them a template message of a different category within 24 hours.

  • An open service conversation exists between you and a customer and you send them a template message within 24 hours.

Charges (Per Region Rate Cards)

Charges for conversations are based on the user’s phone number. Rates for business-initiated conversations and user-initiated conversations vary by market (country or region).

360dialog does not charge anything extra on top of the WhatsApp rates, so you can use the Meta Rate Cards for reference.

See the Rate Cards documentation for specific conversation pricing information.

Expansion of Authentication-International Rates

Effective February 1, 2025, Meta is expanding authentication-international rates to 7 new markets:

  • Egypt

  • Malaysia

  • Nigeria

  • Pakistan

  • Saudi Arabia

  • South Africa

  • United Arab Emirates

Other Recent Updates to Rate Cards

  • Authentication-International Rates — Effective June 1, 2024, Meta introduced authentication-international rates for specific markets. See Authentication-International Rates above to learn about these rates and if they apply to you.

  • Utility conversation rates — Effective August 1, 2024, rates for utility messages have been reduced to remain competitive with alternative communication channels. This reduction is designed to encourage businesses to use WhatsApp for a complete post-purchase customer journey.

  • Marketing conversation rates — Effective October 1, 2024, Marketing Messaging rates have been adjusted in specific markets. These rates may be updated quarterly to reflect the value delivered by marketing messages, so please stay attentive to future updates.

Free Service Conversations

Previously, each WABA would get 1,000 free service conversations each month across all of its business phone numbers. Marketing, utility and authentication conversations were not part of the free tier.

Starting November 1st, 2024, "Free Tier Conversations," user-initiated (service) conversations are free for all businesses instead of being capped at 1,000.

As a reminder, a customer service window must be open between you and a WhatsApp user before you can send non-template messages.

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.

This means that with the new policy, businesses can have as many user-initiated conversations as needed without incurring extra charges and reaching the tier limit, making it easier and more cost-effective to communicate with customers.

Free Tier Conversations 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.

Note that after per-message pricing applies in July 2025, the conversation_analytics field will be deprecated. This should give you adequate time to fetch any historical conversation analytics you might need before the field is no longer usable.

See Checking Usage and Statistics.

Free Entry Points Conversations

Conversations are not charged when users message businesses using call-to-actions buttons on Ads that click to WhatsApp or a Facebook Page CTA. Free entry point conversations last 72 hours and can only be user-initiated. Only the first conversation that starts from the entry point is free of charge. Subsequent conversations with the user are charged.

Standard pricing will apply for Ads that Click to WhatsApp. The conversation that initiates from the ad is free, but not the ad itself.

Once the free entry point conversation is opened, you can send any type of message to the customer without incurring additional charges. However, you can only send non-templates messages if there is an open customer service window between you and the customer.

For example, if the customer messages you via a Click to WhatsApp Ad at 10am and you respond via a template message at 10pm the same day:

  • The free entry point conversation starts at 10pm and lasts 72 hours.

  • You can send template messages at no charge in those 72 hours.

  • You can send non-template messages until 10am the next day, at which point the customer service window closes, as it is independent of the free entry point conversation (if the customer messages you again, however, it opens another 24-hour customer service window in which you can send any type of message).

With the launch of per-message pricing in 2025, 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.

Understanding the Conversations via Webhook

Per-Conversation Pricing Analytics

There is a conversation object on the webhook, as well as a pricing and an origin object. These indicate the conversation ID, how it was initiated and the pricing schema that is applied.

conversation

The conversation object tracks the attributes of your current conversation. The following fields are specified within the conversation object:

NameDescription

id

type: string

Represents the ID of the conversation the given status notification belongs to.

origin

type: object

expiration_timestamp

type: UNIX timestamp

Timestamp when the current ongoing conversation expires. This field is only present on "message sent" webhooks.

origin

The origin object describes where a conversation has originated from. The following fields are specified within the origin object:

NameDescription

type

type: string

Indicates where a conversation has started. This can also be referred to as a conversation entry point.

  • authentication — Indicates the business initiated the conversation with a message template categorized as AUTHENTICATION.

  • marketing — Indicates the business initiated the conversation with a message template categorized as MARKETING.

  • utility — Indicates the business initiated the conversation with a message template categorized as UTILITY

  • service — Indicates the user initiated the conversation.

pricing

The pricing object includes your billing attributes, but does not include whether a message is part of your account’s free tier.

The following fields are specified within the webhooks pricing object:

NameDescription

pricing_model

type: String. “CBP” or “NBP”.

Type of pricing model being used. Current supported value is "CBP".

The Notification-Based Pricing (NBP) model has been deprecated.

category

type: string

Indicates the conversation pricing category.

  • authentication — Indicates the business initiated the conversation with a message template categorized as AUTHENTICATION.

  • marketing — Indicates the business initiated the conversation with a message template categorized as MARKETING.

  • utility — Indicates the business initiated the conversation with a message template categorized as UTILITY

  • service — Indicates the user initiated the conversation.

There is a field for category on the pricing object. Here's an example of a pricing object in a message status webhook:

"statuses": [
              {
                "id": "wamid.HBgLM...",
                "status": "delivered",
                "timestamp": "1674076968",
                "recipient_id": "15550051310",
                "conversation": {
                  "id": "91729e1df277b2ad74fc5fb6273eb3d1",
                  "origin": {
                    "type": "authentication"
                  }
                },
                "pricing": {
                  "billable": true,
                  "pricing_model": "CBP",
                  "category": "authentication" // Indicates conversation category
                }
              }
            ]

Per-Message Pricing Analytics

A new pricing_analytics analytics field will be released April 1, 2025, that allows to get per-message pricing breakdowns for any messages the business 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 included

  • the pricing.pricing_model property value can be PMP, which indicates per-message pricing

  • a new pricing.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:

TypeCategoryRateReason

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 pricing.billable property will be deprecated, so its recommended that after per-message pricing applies to you in July 2025, you start using pricing.type to determine if a given webhook is associated with a billable message.

Here's an example of a messages status webhook:

            "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>"
                }
              }
            ]

Last updated