Conversations
Conversation-based pricing is changing starting June 1, 2023 and Message template categories will be updated on April 1, 2023. From June 1, conversations will be priced by the new category of your message template (marketing, utility or authentication).
We are gradually updating our documentation and will share more details with Partners soon.
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.
Previously there were only two types of conversations: user-initiated and business-initiated. From June 1, 2023, business-initiated conversations are unbundled into three categories utility, authentication, and marketing. User-initiated is categorized as a service conversation, reflecting key use cases of conversations on WhatsApp Business API, 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.
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.
If a business replies to a user with a template message and sends different a template message in an open service conversation, this will open a new conversation based on the sent template category, so you will be charged 1 time for each template category used in the conversation.
The policy requires the use of a template message whenever sending a message to a user more than 24 hours after their last message. So, a new session begins.
If you send a free-form message outside the customer support window, you are not following the policy, so the delivery of this message will fail. However, it opens a business-initiated conversation that might be charged.
If the user sends a message back (replies) within 24 hours of the failed delivery, this conversation will be charged as business-initiated. Because, although the free-form message was not delivered, it was sent by the business.
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.
See the example below for more details:

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). See the Rate Cards for specific pricing information.
360dialog does not charge anything extra on top of the WhatsApp rates, so you can use the Meta Rate Cards for reference.
We are only able to support USD or EUR Rate Cards at the moment. Other currencies should be available soon.
The first 1000 user-initiated(service) conversations (per WABA) each month will be free, so these conversation charges will only start on conversation number 1001. From June 1st, 2023, Business-initiated conversations are no longer included in the free tier.
If you have multiple phone numbers in the same WABA, the first 1000 user-initiated conversations among all phone numbers (meaning across the WABA) will be free.
Conversations will not be 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.
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.The
conversation
object tracks the attributes of your current conversation. The following fields are specified within the conversation
object:Name | Description |
---|---|
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. |
The
origin
object describes where a conversation has originated from. The following fields are specified within the origin
object:Name | Description |
---|---|
type type: string | Indicates where a conversation has started. This can also be referred to as a conversation entry point.
|
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:Name | Description |
---|---|
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.
|
By June 1st, there will be a new 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
}
}
]