Links

Conversations

If you are using On-Premise API, remember that it is being discontinued by Meta. No new signups will be allowed with this type of integration from May 15, 2024.
Numbers registered before this date will still be supported, but should start planning a change of hosting type as soon as possible.
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.

How It Works

Conversations

Business-initiated conversations have three categories utility, authentication, and marketing. User-initiated is categorized as a service conversation, each with different rates:
  • 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.
  • 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).
  • 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.

Experiments

Meta's ongoing experiment on the WhatsApp Business Platform is focused on evaluating how marketing messages impact consumer experience and engagement. As part of this experiment, approximately 1% of WhatsApp consumers will not receive marketing messages.
Businesses will not be charged for undelivered messages. While there is no guaranteed timeframe for how long a number may be part of the experiment, we do not recommend retrying to send marketing messages to consumers with experimentation error codes unless there is an active conversation open. See Cloud API and On-Premise Experiments on Meta's Official Documentation.
Template Pacing for Marketing Messages
Template Pacing is a recent added functionality that proactively gathers real-time user feedback on a limited sample of campaign recipients before scaling the campaign to a wider audience. After templates are sent, Businesses will be alerted early on if users perceive their templates negatively by webhook events, providing an opportunity to edit these templates, ensuring that only high-quality content reaches the wider audience.

Per-User Marketing Template Message Limits

This feature is only valid for businesses in India. It will launch globally by April 1st, 2024.
Meta is rolling out new approaches to create more valuable experiences and maximize engagement with businesses’ marketing conversations.
Starting February 2024, Meta implemented a policy for businesses operating in India to limit the number of marketing conversations a user receives from any business over a specific timeframe, starting with a small number of conversations that are less likely to be read.
Note that the limit is determined based on the number of marketing template messages that person has already received from any business, and is not related to your business specifically.
The limit only applies to marketing template messages that would normally open a new marketing conversation. If a marketing conversation is already open between you and a WhatsApp user, marketing template messages sent to the user will not be affected.
If a marketing template message is not delivered to a given user due to the limit, the API will return a Message Undeliverable error code. Note, however, that this error code cover a wide range of issues that can result in non-delivery of a message, and for privacy reasons, Meta does not disclose if in fact the message was not delivered due to the limit. See error code: 131026 in Error Messages.
If you do receive one this error code and suspect it is due to the limit, avoid immediately resending the template message, as it will only result in another error response. Instead, retry in increasing larger time increments until the message is delivered, since the limit may be in effect for differing periods of time.

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.
If a business replies to a user with a template message and subsequently sends a different template message within an open service conversation, a new conversation will be initiated based on the category of the sent template. As a result, you will be charged once for each template category utilized in the conversation.

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. Please see the customer service windows rules here.
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

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

Free Tier Conversations

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. Business-initiated conversations are not 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. Free-tier conversations can be only user-initiated.

Free Entry Points Conversations

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.

Understanding the Conversations via Webhook

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

origin

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.
  • 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.
  • referral_conversion — indicates that the conversation originated from a free entry point. These conversations are always user-initiated.

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:
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.
  • 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.
  • referral_conversion — indicates that the conversation originated from a free entry point. These conversations are always user-initiated.
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
}
}
]

Facebook Documentation

See the below link for the official Facebook documentation on the Topic.

FAQ - Conversations

Q: Am I charged and then reimbursed for the first 1000 conversations per WABA? No. You are not charged for the first 1000 conversations. The first charge will be for the 1001 st conversation.
Q: Where can I see the total costs for my conversations? For owned WABAs (if you onboarded with the Embedded Signup process) you can view the following metrics are available in the Insights tab of your WhatsApp Manager:
  • Messages sent: The number of messages sent from the selected phone number(s). This is different from messages delivered, which only count messages that were confirmed as being delivered to the recipient.
  • Messages delivered: The number of messages that your recipients received that were sent and delivered from the selected phone number(s). This only counts messages that were confirmed as being delivered to the recipient.
  • Messages received: The number of messages that the selected phone number(s) received from recipients.
  • Amount spent: The estimated total amount of money you've spent on messages delivered from the selected phone number(s). This metric is an estimate.
You can export these metrics from the Insights tab by phone number, country and message type.