# Groups API Pricing | Developer Documentation

<div id="bkmrk-groups-api-pricingup">## Groups API Pricing

<div><span>Updated: Oct 22, 2025</span></div><div id="bkmrk-per-message-pricing-"><div id="bkmrk-per-message-pricing--1"><div>### Per-message pricing on Groups API

</div></div></div><div>Groups API uses Cloud API's [per-message pricing model](/books/meta-whatsapp/page/pricing-on-the-whatsapp-business-platform-developer-documentation) to determine if a given message is billable. However, **you are charged each time a billable message is delivered to someone in the group.**</div><div>For example, if you send a (billable) marketing template message to a group with 5 WhatsApp users and it is delivered to all 5 users, you would be charged for 5 delivered messages at the going marketing message rate for each recipient's country calling code.</div><div>If the message was delivered to only 4 of the 5 users, you would only be charged for the 4 delivered messages.</div><div id="bkmrk-how-customer-service"><div id="bkmrk-how-customer-service-1"><div>### How customer service windows work with Groups API

</div></div></div><div>Customer service windows work differently when using Groups API.</div><div>When any WhatsApp user in the group messages you, a [customer service window](/books/meta-whatsapp/page/sending-messages-developer-documentation) is opened between you and the entire group (or is refreshed, if one already exists). This allows you to send utility and marketing template messages, or free form messages, for free.</div><div>This is different from 1:1 messaging, where when a WhatsApp user messages you, a [customer service window](/books/meta-whatsapp/page/sending-messages-developer-documentation) is opened between you and that customer (or is refreshed, if one already exists).</div><div>Everything else about [customer service windows](/books/meta-whatsapp/page/sending-messages-developer-documentation) remains the same.</div><div id="bkmrk-pricing-information-"><div id="bkmrk-pricing-information--1"><div>### Pricing information in Message Status webhook

</div></div></div><div>Pricing information for messages sent using Groups API is included in [messages status webhooks](/books/meta-whatsapp/page/group-messages-webhook-reference-developer-documentation).</div><div id="bkmrk-how-read-and-deliver"><div id="bkmrk-how-read-and-deliver-1"><div>#### How `read` and `delivered` message status webhooks are processed

</div></div></div><div>In order for a message status to be considered `read`, it must have been at least `delivered`.</div><div>In some scenarios, such as when a user is present in the chat thread when a message arrives, the message is marked `delivered` and `read` nearly simultaneously. In this and other similar scenarios, the `delivered` webhook is not sent back. This is because it is implied that the message was delivered since it has been read.</div><div id="bkmrk-how-pricing-data-is-"><div id="bkmrk-how-pricing-data-is--1"><div>#### How pricing data is displayed in the Message Status webhook

</div></div></div><div>Not all Message Status webhooks include pricing information.</div><div>With the introduction of [Per-message Pricing](/books/meta-whatsapp/page/pricing-on-the-whatsapp-business-platform-developer-documentation), pricing data can be present in `sent`, `delivered` or `read` status webhook. If a message is **charged**, you can expect that at least one webhook (`delivered` or `read`) will contain the pricing information.</div><div id="bkmrk-sent-message-status-"><div id="bkmrk-sent-message-status--1"><div>#### Sent message status webhook

</div></div></div><div></div><div id="bkmrk-delivered-%2F-read-mes"><div id="bkmrk-delivered-%2F-read-mes-1"><div>#### Delivered / Read message status webhook

</div></div></div><div></div><div id="bkmrk-parameters"><div id="bkmrk-parameters-1"><div>#### Parameters

</div></div></div><div><table><thead><tr><th><span>Placeholder </span></th><th><span>Description </span></th></tr></thead><tbody><tr><td><div><div>`<CONVERSATION_ID>`</div></div></td><td><div><div>Version 24.0 and higher:</div>
<span>The `conversation` object will be omitted entirely</span><div>Version 23.0 and lower:</div>
<span>Value will now be set to a unique ID per-message, instead of per-conversation.</span></div></td></tr><tr><td><div><div>`<CONVERSATION_CATEGORY>`</div></div></td><td><div><div>Not changing.</div></div></td></tr><tr><td><div><div>`<CONVERSATION_EXPIRATION_TIMESTAMP>`</div></div></td><td><div><div>Not changing.</div></div></td></tr><tr><td><div><div>`<IS_BILLABLE?>`</div></div></td><td><div><div>Not changing.</div><div>However, the `billable` property will be deprecated in a future [versioned release](https://developers.facebook.com/docs/graph-api/guides/versioning#calling_older_versions), so we recommend that you start using `pricing.type` and `pricing.category` together to determine if a message is billable, and if so, its [billing rate](#bkmrk-identifying-billable-1).</div></div></td></tr><tr><td><div><div>`<PRICING_TYPE>`</div></div></td><td><div><div>New property. Values can be:</div>
<span>`regular` - indicates the message is billable.</span><span>`free_group_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](/books/meta-whatsapp/page/sending-messages-developer-documentation).</span></div></td></tr><tr><td><div><div>`<PRICING_CATEGORY>`</div></div></td><td><div><div>Values are not changing, but can now be interpreted as follows:</div>
<span>`group_marketing` - indicates a marketing template message.</span><span>`group_utility` - indicates a utility template message.</span><span>`group_service` - indicates a non-template message.</span></div></td></tr></tbody></table>

</div><div id="bkmrk-identifying-billable"><div id="bkmrk-identifying-billable-1"><div>#### Identifying billable messages

</div></div></div><div>Billable messages have `pricing.type` set to regular. The `pricing.category` value indicates the rate (`group_marketing` or `group_utility`).</div><div id="bkmrk-identifying-free-mes"><div id="bkmrk-identifying-free-mes-1"><div>#### Identifying free messages

</div></div></div><div>Free messages have `pricing.type` set to `free_group_customer_service`. The `pricing.category` value tells you why it was free:</div>
<span>`group_utility` - the message was sent within an open group customer service window.</span><span>`group_service` - all non-templates messages are free.</span><div id="bkmrk-messaging-analytics-"><div id="bkmrk-messaging-analytics--1"><div>### Messaging analytics for Groups API

</div></div></div><div>The `analytics` field provides the number and type of messages sent and delivered by the phone numbers associated with a specific WABA - for conversation metrics, see Conversation Analytics.</div><div>You can use the following endpoint to retrieve analytics for messages sent using Groups API:</div><div>```
/<WHATSAPP_BUSINESS_ACCOUNT_ID>?fields=analytics.<FILTER_PARAMETER>.<FILTER_PARAMETER>...

```

</div><div id="bkmrk-filter-parameters-fo"><div id="bkmrk-filter-parameters-fo-1"><div>#### Filter parameters for messaging analytics

</div></div></div><div>For a full list of messaging analytics filter parameters, view the [Messaging Analytics reference](/books/meta-whatsapp/page/analytics-developer-documentation).</div><div id="bkmrk-changes-to-filter-pa"><div id="bkmrk-changes-to-filter-pa-1"><div>#### Changes to filter parameters for Groups API

</div></div></div><div><table><thead><tr><th><span>Name </span></th><th><span>Description </span></th></tr></thead><tbody><tr><td><div><div>`product_types`</div><div>type: Array</div></div></td><td><div><div>*Optional.*</div><div>The types of messages (notification messages and/or customer support messages) for which you want to retrieve notifications.</div><div>Provide an array and include:</div>
<span>`101` for group notification messages</span><span>`102` for group customer support messages.</span><span>`103` for inbound group messages</span><div>If the above values are not provided, the API call will be return analytics for all messages together.</div><div>Inbound product type cannot be queried together with other product types, or you will see an error similar to the one below:</div><div></div></div></td></tr></tbody></table>

</div><div id="bkmrk-response-value"><div id="bkmrk-response-value-1"><div>#### Response value

</div></div></div><div>Successful responses to the analytics API when querying Groups API message data will return an object similar to the following:</div><div>**Note: The country code filter is not supported for group sent messages.**</div><div></div><div id="bkmrk-pricing-analytics-fo"><div id="bkmrk-pricing-analytics-fo-1"><div>### Pricing analytics for Groups API

</div></div></div><div>The `pricing_analytics` field allows you to get pricing breakdowns for any messages delivered within a specified date range.</div><div>```
GET /<WABA_ID>
?fields=pricing_analytics
.start(<START>)
.end(<END>)
.granularity(<GRANULARITY>)
.phone_numbers(<PHONE_NUMBERS>)
.country_codes(<COUNTRY_CODES>)
.metric_types(<METRIC_TYPES>)
.pricing_types(<PRICING_TYPES>)
.pricing_categories(<PRICING_CATEGORIES>)
.dimensions(<DIMENSIONS>)

```

</div><div id="bkmrk-filter-parameters-fo-3"><div id="bkmrk-filter-parameters-fo-4"><div>#### Filter parameters for pricing analytics

</div></div></div><div>For a full list of messaging analytics filter parameters, view the [Messaging Analytics reference](/books/meta-whatsapp/page/analytics-developer-documentation).</div><div id="bkmrk-changes-to-filter-pa-3"><div id="bkmrk-changes-to-filter-pa-4"><div>#### Changes to filter parameters for Groups API

</div></div></div><div><table><thead><tr><th><span>Name </span></th><th><span>Description </span></th></tr></thead><tbody><tr><td><div><div>`<PRICING_CATEGORIES>`</div><div>*Array of strings*</div></div></td><td><div><div>*Optional.*</div><div>Array of pricing categories. If you send an empty array, we return results for all pricing categories.</div><div>Values can be:</div>
<span>`GROUP_MARKETING`: Group messages charged the marketing rate.</span><span>`GROUP_SERVICE`: Group messages that were not charged. Includes all non-template messages and utility messages sent inside of a customer service window.</span><span>`GROUP_UTILITY`: Group messages charged the utility rate.</span></div></td></tr><tr><td><div><div>`<PRICING_TYPES>`</div><div>*Array of strings*</div></div></td><td><div><div>*Optional.*</div><div>Array of pricing types. If you send an empty array, we return results for all pricing types.</div><div>Values can be:</div>
<span>`FREE_GROUP_CUSTOMER_SERVICE`: Free group messages. These are non-template messages and utility messages sent within group customer service windows.</span><span>`REGULAR`: Billable messages. Includes all authentication and marketing template messages, and any utility template messages sent outside of a customer service window.</span></div></td></tr></tbody></table>

</div><div id="bkmrk-rate-cards"><div id="bkmrk-rate-cards-1"><div>### Rate cards

</div></div></div><div><span></span><div>Group utility messages are not eligible for volume tiers.</div></div><div>Messaging rates for Groups API are the same as per-messaging pricing rates for 1 to 1 messaging.</div><div>[View per-message pricing rate cards](/books/meta-whatsapp/page/pricing-on-the-whatsapp-business-platform-developer-documentation)</div></div>