---
title: "WhatsApp is shutting off conversation_analytics on November 1, and gave only five days' notice"
url: https://hernandez.systems/en/articles/whatsapp-is-shutting-off-conversation-analytics-on-november-1-and-gave-only-five-days-notice
lang: en
type: TechArticle
section: Bots
published: "2026-10-30T16:03:37+00:00"
modified: "2026-10-31T15:01:06+00:00"
publisher: Osky Networks
image: https://oskydj.sfo3.cdn.digitaloceanspaces.com/calamardo/whatsapp_bot/2026-10-30/e36-portada-ebad66ce.png
alternate_es: https://hernandez.systems/es/articulos/whatsapp-apaga-conversationanalytics-este-1-de-noviembre-y-aviso-con-cinco-dias
---

# WhatsApp is shutting off conversation_analytics on November 1, and gave only five days' notice

> Meta deprecated the conversation_analytics field of the WhatsApp API on October 27, 2026, and it stops being available on November 1. The replacement is pricing_analytics, which counts delivered messages and adds volume tiers.

If your WhatsApp cost dashboard, your monthly client report, or that script that runs every night at dawn still asks the Graph API for the `conversation_analytics` field, you have hours left. On October 27, 2026, Meta logged in the WhatsApp Business Platform changelog that the field is deprecated and that it "will no longer be available as of November 1, 2026." That's five days' notice. The replacement has existed for over a year: `pricing_analytics`, which counts delivered messages instead of conversations. If you run bots for third parties, this won't break message sending, but it can leave your spending reports blank right when the month closes.

## What Meta announced

The October 27 changelog entry appears under *Business Management API* and *Pricing*, and it's a single line. It says the `conversation_analytics` field is deprecated, that it stops being available on November 1, 2026, and it points to the *Conversation analytics* section of the Analytics documentation.

That field was queried on the WhatsApp Business Account (WABA) using the Graph API's chained-filter field syntax, something like this:

```
GET /<WABA_ID>?fields=conversation_analytics
  .start(<UNIX>).end(<UNIX>)
  .granularity(MONTHLY)
  .dimensions(["CONVERSATION_CATEGORY","COUNTRY"])
```

According to the documentation, it returned two metrics: `CONVERSATION`, the number of conversations in the period, and `COST`, the approximate charge in the account's currency. You could break it down by category (marketing, utility, authentication, service), by type (`FREE_TIER`, `FREE_ENTRY_POINT`, `REGULAR`), by direction (business-initiated or user-initiated), by country, and by number.

What Meta does **not** spell out in the changelog is exactly what the API will respond with starting November 1: an error, an empty field, or something else. And as of this writing, the Analytics page still documents `conversation_analytics` with no retirement warning at all. In other words, if someone lands on that page via Google, they'll find the full example as if nothing were happening.

## Why it's going away: nobody charges per conversation anymore

The field has lost its meaning because of a change that's now more than a year old. Meta stopped charging per conversation on **July 1, 2025**: since that date it charges **per delivered message**, based on the message category and the recipient's country. The documentation for the previous model now carries a *Deprecated* label and says it's kept "for developers who have historical billing data" from that period.

There's a detail that, in my reading, had already turned `conversation_analytics` into a zombie field before this notice. Since December 1, 2025, Meta cut the maximum lookback window for message, conversation, and pricing analytics from 10 years to 1 year. Do the math: starting in July 2026, a one-year window no longer reaches any day of the period when conversation-based charging applied, which ended on June 30, 2025. The field was still there, but counting a unit that no longer shows up on your invoice.

For a bot, the difference between the two units isn't cosmetic. A "conversation" was a 24-hour window in which you could send many messages for a single charge. Today every billable delivered message is a charge. If your dashboards or your client quotes still think in conversations, the numbers won't add up with what Meta charges.

## The replacement: pricing_analytics

Meta points to `pricing_analytics`, which according to its documentation delivers "pricing breakdowns" for messages delivered in a date range. It's queried the same way, on the WABA and with chained filters:

```
GET /<WABA_ID>?fields=pricing_analytics
  .start(<UNIX>).end(<UNIX>)
  .granularity(DAILY)
  .dimensions(["PRICING_CATEGORY","PRICING_TYPE","COUNTRY"])
```

Most parameters have a direct equivalent, though under a different name:

![Diagrama de equivalencias: los parámetros de conversation_analytics y su reemplazo en pricing_analytics; CONVERSATION pasa a VOLUME, las categorías y tipos de conversación pasan a categorías y tipos de precio, CONVERSATION_DIRECTION no tiene equivalente directo y TIER es nuevo](https://oskydj.sfo3.cdn.digitaloceanspaces.com/calamardo/whatsapp_bot/2026-10-30/e36-mapeo-96f6fc13.png)

| In `conversation_analytics` | In `pricing_analytics` |
|---|---|
| `metric_types`: `CONVERSATION` | `metric_types`: `VOLUME` (delivered messages) |
| `metric_types`: `COST` | `metric_types`: `COST` |
| `conversation_categories` | `pricing_categories` |
| `conversation_types` (`FREE_TIER`, `FREE_ENTRY_POINT`, `REGULAR`) | `pricing_types` (`FREE_CUSTOMER_SERVICE`, `FREE_ENTRY_POINT`, `REGULAR`) |
| `dimensions`: `CONVERSATION_CATEGORY`, `CONVERSATION_TYPE` | `dimensions`: `PRICING_CATEGORY`, `PRICING_TYPE` |
| `dimensions`: `CONVERSATION_DIRECTION` | No direct equivalent in the documentation |
| Didn't exist | `dimensions`: `TIER` |
| Didn't exist | `country_codes` filter |

Price categories are also more granular. Besides `AUTHENTICATION`, `MARKETING`, `UTILITY`, and `SERVICE`, the documentation lists `AUTHENTICATION_INTERNATIONAL`, `MARKETING_LITE`, and `REFERRAL_CONVERSION`, the latter for messages received through a free entry point.

The new feature that helps most if you operate at volume is `TIER`. If you request `TIER`, `PRICING_CATEGORY`, and `COUNTRY` as dimensions, every data point for utility or authentication messages comes with its volume tier, in `lower_bound:upper_bound` format. Subtracting your `volume` from the upper bound tells you how many messages you have left before the next price tier. In marketing, where there are no tiers, the value is `0:MAX`. Meta clarifies that tier information doesn't come in webhooks: it only comes from this field.

## What doesn't change (and what's worth watching)

Some caveats stay the same in the new field:

- **If you pay through a Solution Partner** (you share their credit line), `COST` isn't returned. The documentation tells you to ask your partner how much they charge you.
- **The data is approximate.** Meta insists that analytics can differ from the invoice because of "small variations in data processing." To reconcile for real, the invoice still rules.
- **The one-year window** also applies to `pricing_analytics`.

And one that, in my reading, is worth watching: since October 1, 2026, Meta started charging for service messages again after the first 1,000 free per month per number, but the `pricing_categories` table still describes `SERVICE` as messages "that were not charged." The documentation isn't fully aligned with the current model. Before building a report that assumes service always costs zero, check what your own account returns and compare it with the status webhooks, where billable messages arrive with `"billable": true` and `"type": "regular"`.

## What to do before November 1

If you maintain bots or dashboards on the Cloud API, here's the short list:

1. **Search for the field in your code.** A `grep -r conversation_analytics` across your repos, workers, scheduled functions, and BI connectors. Also in third-party tools that query the Graph API for you.
2. **Change the metrics, not just the name.** A conversation isn't the same as a message. Historical charts that compare "conversations" against "messages" will show a jump that isn't real; add a note or cut them off at the date of the change.
3. **Decide what to do about direction.** If your reports separated business-initiated from user-initiated, `pricing_analytics` doesn't bring that dimension. An imperfect approximation is the category: non-template messages can only go inside the service window the user opens, while templates are the only way to write to them first (though they can also be used to reply, so it's not an exact equivalence).
4. **Take advantage of `TIER`** if you send a lot of utility or authentication: it's the only documented way to know which tier you're in.
5. **Test now.** Switch one query, compare against your October invoice, and have the new code deployed before the weekend.

I didn't test this against a real account; all of this comes from Meta's official documentation and its changelog.

## My take

Five days' notice to retire a field seems like little, and it is. The generous explanation is that the field had already spent over a year describing a billing model that no longer exists, and that the one-year window left it without data from that model since mid-2026. The less generous explanation is that Meta keeps announcing API changes with the same lead time it uses to tell you the water's going out in your neighborhood. Whichever it is, the practical result is the same: if your monthly report depends on that field, the November cut can come out blank. Better to find out today than on Monday with the client asking.

## Sources

- [Changelog de la WhatsApp Business Platform, entrada del 27 de octubre de 2026 (Meta)](https://developers.facebook.com/documentation/business-messaging/whatsapp/changelog#2026-10-27-a66cb18ac140)
- [Analytics: conversation_analytics y pricing_analytics (Meta)](https://developers.facebook.com/documentation/business-messaging/whatsapp/analytics)
- [Pricing on the WhatsApp Business Platform (Meta)](https://developers.facebook.com/documentation/business-messaging/whatsapp/pricing)
- [Conversation-based pricing (Deprecated) (Meta)](https://developers.facebook.com/documentation/business-messaging/whatsapp/pricing/conversation-based-pricing)
