Conversations
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.
There are two types of conversations on the WhatsApp Business API, each with different rates:
  • User-initiated: A conversation that initiates in response to a user message. Any time a business replies to a user within the 24-hour customer service window, that message will be associated with a user-initiated conversation.
  • Business-initiated: A conversation that initiates from a business sending a user a message outside the 24-hour customer service window.
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.

All conversations are measured in 24-hour increments or “sessions”, as we’ll refer to them here. 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.

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.

The first 1000 conversations (per WABA) each month will be free, so the charges will only start on conversation number 1001. Free tier conversations can be business-initiated or user-initiated.
If you have multiple phone numbers in the same WABA, the first 1000 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 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
Describes where the conversation originated from. See origin object for more information.
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.
  • business_initiated: indicates that the conversation started by a business sending the first message to a user. This applies any time it has been more than 24 hours since the last user message.
  • user_initiated: indicates that the conversation started by a business replying to a user message. This applies only when the business reply is within 24 hours of the last user message.
  • referral_conversion: indicates that the conversation originated from a free entry point. These conversations are always user-initiated.

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.
  • business_initiated: indicates that the conversation started by a business sending the first message to a user. This applies any time it has been more than 24 hours since the last user message.
  • user_initiated: indicates that the conversation started by a business replying to a user message. This applies only when the business reply is within 24 hours of the last user message.
  • referral_conversion: indicates that the conversation originated from a free entry point. These conversations are always user-initiated.
Copy link
On this page
Sessions
Policy
Customer Service Window
Charges
Free Tier Conversations
Free Entry Points Conversations
Understanding the Conversations via Webhook