PLEASE NOTE : REFER THIS ARTICLE FREQUENTLY AS SOME POINTS MAY BE SUBJECT TO CHANGES TILL PMP is APPLIED
Here is a summary of all changes coming up on PMP by Meta w.e.f July 01, 2025.
1. Webhook changes
Starting July 1, 2025, the conversation and pricing objects in below mentioned webhooks will be affected.
Refer V2 PMP Webhooks
Refer V3 PMP Webhooks
A) Here are the changes in Sent and Delivered Webhooks (v3) and Sent Webhooks (v2)
Conversation object related changes:
Conversation object and the 'type' property in it MAY BE deprecated in higher version of webhooks from Meta, unless it is a free entry point conversation in which case the value will be unique per free entry point conversation. This upgrade may take place any time after July 01, 2025 by Meta and Gupshup. It is recommended to not consume this property.
Example of current conversation object in v3 Sent and Delivered events
/* conversation object may be omitted unless webhook is for a free entry point conversation */
"conversation": {
"expiration_timestamp": "1710936120",
"id": "{{CONVERSATION_ID}}",
"origin": {
"type": "service"
}
},
Example of current conversation object in v2 sent event
/* conversation object may be omitted unless webhook is for a free entry point conversation */
"conversation": {
"id": "{{CONVERSATION_ID}}",
"expiresAt": {{CONVERSATION_EXPIRY}},
"type": "service"
},
-
-
Pricing objects
i. Changes and updates in ‘pricing model’ (for v3) and ‘policy’ (for v2) properties -
-
Values can now be:
- [NEW] "PMP" — indicates per-message pricing applies.
- "CBP" — indicates conversation-based pricing applies; will only be set to this value if the webhook is for a message that is part of a free entry point conversation.
ii. No change in the ‘category’ property. But all below & new values should be handled - definition should be followed as -
-
authentication
— indicates an authentication template message. -
authentication_international
– indicates an authentication template message sent to a WhatsApp user in a country or region that has authentication-international rates. -
marketing
— indicates a marketing template message. -
utility
— indicates a utility template message. -
service
— indicates a non-template message. -
referral_conversion
— indicates the message is part of a free entry point conversation. -
marketing_lite
[NEW VALUE] — indicates a marketing lite template message
iii. New property ‘type’ will be added if ‘PMP’ pricing applied as mentioned in point i. It defines the 'pricing type'.
Possible values -
– regular — indicates the message is billable
- free_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
- free_entry_point — indicates the message is free because it is part of a free-entry point conversation.
iv. ‘Billable’ property may be removed and is not a recommended property for consumption.
------------------------------------------------------------------------------
Example of current pricing object changes in v3 Sent and Delivered events
"pricing": {
"billable": true,
"category": "service",
"pricing_model": "CBP"
},
Example of upcoming pricing object changes in v3 Sent and Delivered events
"pricing": {
"billable": true,
"category": "marketing",
"pricing_model": "PMP"
"type": "regular"
},
--------------------------------------------------------------------------------------
Example of current pricing object changes in v2 Sent event
"pricing": {
"policy": "CBP",
"category": "service",
}
Example of upcoming pricing object changes in v2 sent event
"pricing": {
"policy": "PMP",
"category": "service",
"type": "regular"
}
------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------
B) Here are the changes in Billing Webhooks -
-
-
Conversation ID related changes:
Conversation ID will be deprecated after July 01, 2025 by Gupshup
-
Example of current conversation ID in v3 Billing events
/* conversation ID will be omitted unless */
"references": {
"conversation_id": "4fbe96296619fdcf34910786bdd96079",
"destination": "919163805873",
"gs_id": "01e8e5c8-a171-457f-af7a-9723c60a95b5",
"id": "0f19ef62-80ef-48c2-a493-9ac112478d20"
}
Example of current conversation ID in v2 Billing events
/* conversation ID will be omitted */
"references": {
"id": "d04cc3a7-18f0-4571-831e-xxxxxxxx",
"gsId": "7bf06899-5f0f-4cca-be3b-xxxxxxxxxx",
"conversationId": "0f957b88cfb1558f6199exxxxxxxx",
"destination": "79507xxxxxxxx"
}
-
-
Deduction objects
i. Changes and updates in ‘model' property -
-
Values can now be:
- [NEW] "PMP" — indicates per-message pricing applies.
- "CBP" — indicates conversation-based pricing applies; will only be set to this value if the webhook is for a message that is part of a free entry point conversation.
ii. 'Conversation type' property will be removed. It will be replaced with ‘category’, Also, all below values should be handled - definition should be followed as -
-
authentication
— indicates an authentication template message. -
authentication_international
– indicates an authentication template message sent to a WhatsApp user in a country or region that has authentication-international rates. -
marketing
— indicates a marketing template message. -
utility
— indicates a utility template message. -
service
— indicates a non-template message. -
referral_conversion
— indicates the message is part of a free entry point conversation. -
marketing_lite
[NEW VALUE] — indicates a marketing lite template message
iii. Redefined ‘type’ property, It will define the 'pricing type'.
Possible values -
– regular — indicates the message is billable
- free_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
- free_entry_point — indicates the message is free because it is part of a free-entry point conversation.
iv. ‘Billable’ value would be ‘False’ if ‘type’ is free customer service or free entry point.
-------------------------------------------------------------------------
Example of current deductions object in v3 Billing events
"deductions": {
"billable": true,
"model": "CBP",
"source": "whatsapp",
"type": "marketing",
"conversation_type": "service"
},
Example of upcoming deductions object in v3 Billing events
"deductions": {
"billable": true,
"model": "PMP",
"source": "whatsapp",
"type": "regular",
"category": "marketing"
},
--------------------------------------------------------------------------------------
Example of current deductions object in v2 Billing events
"deductions": {
"type": "marketing",
"model": "CBP",
"source": "whatsapp",
"billable": true,
"conversation_type": "marketing"
},
Example of upcoming deductions object in v2 Billing events
"deductions": {
"type": "regular",
"model": "PMP",
"source": "whatsapp",
"billable": true,
"category": "marketing"
},
----------------------------------------------------------------
C) Changes to ‘amount’ calculation logic :
If 'PMP' billing model is received, start using 'type' and 'category' values in deductions object together to determine if a message is billable. If billable, fetch billing rate from the Meta rate card (check rate card in USD). Check below table
Type | Category | Rate | Reason |
regular | marketing | Marketing | All marketing template messages are billable. |
regular | marketing_lite | Marketing Lite | All marketing lite template messages are billable. |
regular | utility | Utility |
Utility template messages sent outside of a customer service window are billable.
|
free_customer_service | utility | n/a |
Utility template messages sent inside of a customer service window are free.
|
free_customer_service | service | n/a | Non-templates messages are free. |
regular | authentication | Authentication | All authentication template messages are billable. |
regular | authentication_international | Authentication International |
All authentication international template messages are billable.
|
free_entry_point | referral conversion | n/a | Free entry point conversations are free |
-------------------------------------------------------------------------------
2. [Updated on 12th June] Change in response of API for Analytics
Updates to Public API endpoint GET /partner/app/{appId}/usage, will also take effect from July 1, 2025.
Starting on this date, the usage data returned by this API will reflect the Per-Message Pricing (PMP) model, aligning with Meta's updated WhatsApp Business Platform pricing.
Current Sample Response:
{ "status": "success", "partnerAppUsageList": [ { "appId": "bf9ee64c-3d4d-4ac4-8668-732e577007c4", "appName": "Jan10pass", "authentication": 0, "cumulativeBill": 0.007, "currency": "USD", "date": "2024-01-10", "discount": 0.0, "fep": 0, "ftc": 1, "gsCap": 75.0, "gsFees": 0.007, "incomingMsg": 2, "outgoingMsg": 4, "outgoingMediaMsg": 0, "marketing": 0, “mmLiteMarketing”: 0, "service": 0, "templateMsg": 0, "templateMediaMsg": 1, "totalFees": 0.007, "totalMsg": 7, "utility": 0, "waFees": 0.0, "internationalAuthentication": 1 } ] } |
Response after PMP: ('free utility' and 'mmlitemarketing' keys added that must be supported)
{ "status": "success", "partnerAppUsageList": [ { "appId": "bf9ee64c-3d4d-4ac4-8668-732e577007c4", "appName": "Jan10pass", "authentication": 0, "cumulativeBill": 0.007, "currency": "USD", "date": "2024-01-10", "discount": 0.0, "fep": 0, "ftc": 1, "gsCap": 75.0, "gsFees": 0.007, "incomingMsg": 2, "outgoingMsg": 4, "outgoingMediaMsg": 0, "marketing": 0, “mmLiteMarketing”: 0, "service": 0, "templateMsg": 0, "templateMediaMsg": 1, "totalFees": 0.007, "totalMsg": 7, "utility": 1, “freeUtility”: 2, "waFees": 0.0, "internationalAuthentication": 1 } ] } |
3. Updated on 12th June] Reports and analytics Modifications on Partner Portal and Wallet
Wallet Analytics -
Pie charts and tables will show the templates break up, which will have the following
- Marketing templates
- Utility Templates
- Authentication Templates
- International Authentication Templates
- Free Messages (Free tier or service, Free Utility, Referral )
- Sample wallet views after PMP changes are rolled out -
Wallet Statement
It will show 'Messages (Whatsapp Fee)' instead of 'Conversations fee'
The columns will also be reflected in the csv for the wallet statement sent on email
Partner Portal -
Dashboard - new cards
Analytics - dashboard
Reports -
New message specific reports added. It's downloadable versions will also be available similar to conversation reports.
NOTE : Time range selection will only be allowed either Pre-PMP or Post-PMP phase
THINGS TO NOTE :
Gupshup will -
a. share the webhooks based on if PMP or CBP pricing model is received for a message from Meta
b. apply the new rate cards if PMP pricing model is received for a message
c. deductions for utility and auth lowest tier (for volume starting zero). Discounts, if any, will be calculated and refunded back to wallet by 1st week of next month.
----------------------------------------------------------------------------------------
FAQ:
1. Will the billing event indicate deduction of Gupshup fee?
Ans. No, the Gupshup fee billing will be deducted as existing and there will be no separate event for it. Read here
2. How will volume based tier discounts given for utility and auth be given?
Ans. The actual deductions will take place at the standard rates. At the end of month Gupshup will calculate the final volumes and the volume based tier discount if applicable. It will then refund the amount to the same wallet accordingly
3. Can CBP be applied after Jul 01?
Yes, If a utility conversation is opened between you and a user that spans the switch to per-message pricing (the conversation was opened before the switch but won't close until after the switch), utility templates sent to the user after the switch while the conversation is open will be free, but attributed to the open conversation. These messages will have a pricing_model of CBP and the utility conversation ID will be assigned to conversation.id in status messages webhooks. Once the conversation closes, subsequent utility messages sent to the user will follow PMP
4. What time on July 01, will PMP apply?
Per-message pricing will apply to all businesses starting July 1, 2025, at 12am, by WhatsApp Business Account timezone.
5. Is there a webhook from Meta to know the tier change for utility and auth?
No, not currently
Comments
0 comments
Please sign in to leave a comment.