Capacity, Quality & Limits

API rate limits, messaging limit tiers, quality rating, and scaling guidance.

Throughput

Each business phone number can send up to 80 messages per second by default (combined inbound and outbound across text, media, and template messages). Higher capacity is available through Meta on request.

Throughput is per phone number, not per portfolio — adding more numbers under the same WABA is one way to scale total send rate.

API Rate Limits

Two layers of rate limiting apply at the Graph API level:

App-level call limits

Calls your app makes against a WABA count toward an app-level request budget over a rolling one-hour window:

WABA stateDefault limit (per app, per WABA)
New WABA, no registered phone number200 requests / hour
Active WABA with at least one registered phone number5,000 requests / hour

These limits apply to management endpoints such as /<WABA_ID>, /<WABA_ID>/phone_numbers, /<WABA_ID>/message_templates, /<WABA_ID>/subscribed_apps, and /<WABA_ID>/assigned_users.

Runtime symptoms

Rate limiting can also occur even when your account is healthy. Two common runtime modes:

  • Request-rate limit — returns 429 when request-per-second thresholds are exceeded.
  • Concurrent-load limit — returns 503 when upstream systems are temporarily overloaded.

If either appears:

  1. Slow down request pace immediately.
  2. Use queue-based traffic shaping.
  3. Retry with exponential backoff and jitter.

For error code details, see Meta API Error Reference.

Pair Rate Limit (Per Recipient)

Independent of throughput, a single business phone number can only send 1 message every 6 seconds to the same WhatsApp user (≈10 messages/minute, 600/hour per pair). Exceeding this returns error 131056 until the pair is back within the allowed rate.

Bursting is allowed: up to 45 messages in a 6-second burst to the same user, but each burst "borrows" from future quota — after a burst of 20, you must wait roughly 2 minutes before sending more to that recipient.

Recommended retry on 131056: back off 4^X seconds (start with X=0, increment on each repeated failure) until the send succeeds.

Messaging Limits (Portfolio-Level)

Messaging limits define how many unique users your business can message outside the customer service window in a rolling 24-hour period.

Limits are shared at the Meta Business Portfolio level — all numbers in the same portfolio consume the same messaging pool.

Typical tiers:

TierUnique users / 24h
TIER_250250
TIER_2K2,000
TIER_10K10,000
TIER_100K100,000
UNLIMITEDNo cap

Important: User-initiated conversations are not counted toward this limit. Limits only apply to business-initiated outreach outside the service window.

Legacy vs Current Limit Fields

Meta shifted to portfolio-level limit handling on October 7, 2025. Some older limit-related fields were gradually phased out after that date.

FieldStatus
whatsapp_business_manager_messaging_limitCurrent (portfolio-level)
messaging_limit_tierLegacy (per-number)
current_limitUsed in some webhook events

Dualhook prefers current portfolio-level fields when present and keeps compatibility with legacy fields for backward support.

Increasing Limits

Limit growth happens in stages:

  1. Scale from 250 to 2,000
  2. Scale from 2,000 upward (10K, 100K, UNLIMITED)

Common qualification factors:

  • Business verification path completion
  • Consistent high-quality messaging
  • Sufficient recent usage of current limit

After eligibility is met, upgrades are often applied automatically within a few hours.

Automatic Scaling Beyond 2,000

Meta evaluates:

  • Message quality across numbers and templates
  • Utilization of current limit over the last 7 days

If criteria are satisfied, the portfolio moves up one tier automatically.

Quality Rating

Quality is based on recent user feedback signals, weighted by recency:

  • Blocks
  • Reports
  • Read/engagement behavior
  • Negative feedback patterns

When quality degrades:

  • Upgrade eligibility can be delayed
  • Sending restrictions can appear
  • Health may move from AVAILABLE to LIMITED or BLOCKED (see Health Monitoring)

Template Quality States

Template-level quality is tracked separately from number-level health.

StateMeaning
ACTIVE - QUALITY_PENDINGNot enough data to rate
ACTIVE - HIGH QUALITYStrong user satisfaction
ACTIVE - MEDIUM QUALITYEarly dissatisfaction signals
ACTIVE - LOW QUALITYHigh dissatisfaction risk

Low template quality can lead to pauses or disablement even if account-level access is still active.

Check Current Status

curl -X GET "https://graph.facebook.com/<GRAPH_VERSION>/<PHONE_NUMBER_ID>?fields=health_status,quality_rating,whatsapp_business_manager_messaging_limit,messaging_limit_tier" \
  -H "Authorization: Bearer <ACCESS_TOKEN>"
{
  "id": "<PHONE_NUMBER_ID>",
  "health_status": {
    "can_send_message": "AVAILABLE",
    "entities": []
  },
  "quality_rating": "GREEN",
  "whatsapp_business_manager_messaging_limit": "TIER_10K",
  "messaging_limit_tier": "TIER_10K"
}

Webhook Signals to Monitor

Dualhook surfaces management events for operations monitoring. See Webhook Events for the complete event list.

phone_number_quality_update

{
  "object": "whatsapp_business_account",
  "entry": [
    {
      "id": "<WABA_ID>",
      "changes": [
        {
          "field": "phone_number_quality_update",
          "value": {
            "event": "QUALITY_UPDATED",
            "phone_number_id": "<PHONE_NUMBER_ID>",
            "display_phone_number": "<BUSINESS_DISPLAY_PHONE_NUMBER>",
            "current_limit": "TIER_2K",
            "current_quality_rating": "YELLOW",
            "previous_quality_rating": "GREEN"
          }
        }
      ]
    }
  ]
}

business_capability_update

{
  "object": "whatsapp_business_account",
  "entry": [
    {
      "id": "<WABA_ID>",
      "changes": [
        {
          "field": "business_capability_update",
          "value": {
            "event": "increased_capabilities_eligibility_deferred"
          }
        }
      ]
    }
  ]
}

Monitoring Locations

Use both product and Meta surfaces:

  • Dualhook dashboard — webhook-driven health and limit/quality signals
  • WhatsApp Manager — Messaging Limits and account insights
  • Meta Account Qualitybusiness.facebook.com/accountquality

Operational Playbook

If quality drops or limit upgrades stall:

  1. Reduce promotional volume and tighten audience targeting.
  2. Send only to recently opted-in users.
  3. Improve template relevance and frequency control.
  4. Monitor blocks/reports daily and pause weak campaigns quickly.
  5. Resume scale gradually only after sustained quality recovery.

For a comprehensive health maintenance strategy, see Maintain Account Health.

Related

  • Messaging Health StatusMonitor phone number health: AVAILABLE, LIMITED, BLOCKED states and quality rating.
  • Maintain Account HealthOwnership hygiene, quality monitoring, opt-out governance, and incident playbook.
  • Marketing MessagesMarketing template messaging hub: send paths (Cloud API and MM API), specialty template types, opt-out handling, billing, quality, and compliance.
Browse more docsStart Free Trial