WhatsApp Pricing Changes (Effective July 1, 2025) & Channel-Level Analytics Support

1. Meta Pricing Model Update (July 1, 2025)

Summary of Change:

Meta is transitioning from conversation-based pricing to per-message pricing across all template message categories:

  • Marketing

  • Utility

  • Authentication

This change applies to all WABAs starting July 1, 2025.

Pricing Characteristics:

  • Each template message sent will be individually billed.

  • Utility template messages sent in response to a user's message will become free.

  • Service conversations (user-initiated messages responded to within 24 hours) remain free.

  • Rates vary by message category, destination country, and volume tier.

2. Impact for Partners

Key Implications:


3. New Channel-Level Pricing Analytics Proxy Endpoint

To help partners better understand and track pricing under the new model, on July 1st we are introducing a channel-level pricing analytics proxy endpoint.

Overview:

  • Returns current pricing breakdowns for a specific phone number (channel) within a WABA for any messages delivered within a specified date range

  • Abstracts all Meta-specific complexity, so that partners don’t need to implement or maintain their own integration with Meta’s pricing services.

  • Allows partners to proactively monitor pricing without needing direct integration with Meta.

GET 

https://hub.360dialog.io/api/v2/partners/{partner_id}/clients/{client_id}/channels/{channel_id}/info/usage

Query parameters

The endpoint supports the following optional input parameters to filter and shape the usage data:

  • start_date (required) - The start date in UNIX Timestamp (UTC). Returned data will be equal to or newer than the specified date.

  • end_date (required) - The end date in UNIX Timestamp (UTC). Returned data will be equal to or older than the specified date.

  • granularity (required) - The granularity by which you would like to retrieve the analytics. Supported options: ['daily', 'half_hour', 'monthly']

  • countries - The countries list for which you would like to retrieve analytics. Provide a 2 letter country codes for the countries you would like to include. If not provided, usage data will be returned for all countries you have communicated with.

  • pricing_types - Filter messages per pricing types list. Supported values: ['free_customer_service', 'free_entry_point', 'regular']

  • pricing_categories - Filter messages per pricing categories list. Supported values: ['authentication', 'authentication_international', 'marketing', 'service', 'utility']

  • metrics - Metric types you would like to receive. If not provided, we return results for all metric types. Supported options: ['cost', 'volume']

  • dimensions - Breakdowns you would like to apply to your metrics. If not provided, we return results without any breakdowns. Supported options: ['pricing_category', 'pricing_type', 'country', 'phone', 'tier']

Example Response

{
  "id": "WABA_ID",
  "currency": "USD",
  "pricing_analytics": {
    "data": [
      {
        "data_points": [
          {
            "start": 1749193200,
            "end": 1749279600,
            "country": "IN",
            "pricing_type": "FREE_CUSTOMER_SERVICE",
            "pricing_category": "SERVICE",
            "volume": 2,
            "cost": 0.00
          },
          {
            "start": 1749106800,
            "end": 1749193200,
            "country": "IN",
            "tier": "0:750000",
            "pricing_type": "REGULAR",
            "pricing_category": "AUTHENTICATION_INTERNATIONAL",
            "volume": 2,
            "cost": 4.60
          }
        ]
      }
    ]
  }
}

Rate Limits:

  • 10 requests/hour per phone number (channel)

  • 200 requests/hour per WABA

Disclaimer: This endpoint offers real-time usage and pricing data directly from Meta. Slight discrepancies may occur with existing info/balance endpoints due to varying usage collection and processing schedules.

Last updated

Was this helpful?