01 · Definition
What is the phone number quality webhook?
The phone number quality webhook is the phone_number_quality_update field. Despite its name, Meta's current reference describes it as the event for a change in one business phone number's throughput or limit status. It reports event: ONBOARDING while the number is still being registered, and event: THROUGHPUT_UPGRADE when the number moves from the default of up to 80 messages per second to 1,000. The value also carries display_phone_number and max_daily_conversations_per_business, the owning portfolio's messaging limit after the change.
The name comes from the years when messaging limits and quality flags belonged to each phone number. Integrations built before October 2025 also received events such as FLAGGED, UNFLAGGED, UPGRADE and DOWNGRADE, with current_limit and old_limit. When messaging limits moved to the business portfolio, Meta's notes said the Flagged state no longer occurs and scheduled current_limit and old_limit for removal in February 2026. The current reference lists only the two events above, but a careful handler still logs any other value instead of failing.
So this webhook is not the quality alarm its name suggests. A number's quality rating — GREEN, YELLOW or RED, meaning high, medium or low — is read from the phone number's quality_rating field through the API or in WhatsApp Manager. Template quality has its own template quality webhook, message_template_quality_update. The portfolio's limit is announced by the business capability update webhook, business_capability_update. Subscribe to all of these webhook fields together and treat this one as the throughput signal.
Key takeaways
- The phone number quality webhook (
phone_number_quality_update) reports status changes for one business number, not its quality rating. - Meta's current reference lists two events:
ONBOARDING, andTHROUGHPUT_UPGRADEfor the move from 80 to 1,000 messages per second. - The upgrade is automatic and free with an unlimited limit, 100K+ unique users in a moving 24 hours and quality YELLOW or better.
- Read a number's GREEN, YELLOW or RED rating from its
quality_ratingfield; template quality has its own webhook. - Legacy events such as
FLAGGEDandDOWNGRADEbelong to per-number limits before October 2025; log them if one ever arrives.
02 · Specifications
The phone number quality webhook: key facts and limits
| Webhook field | phone_number_quality_update |
|---|---|
| Documented events | ONBOARDING, THROUGHPUT_UPGRADE |
| Limit field | max_daily_conversations_per_business (the portfolio's) |
| Default throughput | Up to 80 messages per second per number |
| Upgraded throughput | 1,000 messages per second, automatic and free |
| Upgrade criteria | Unlimited limit, 100K+ unique users in 24 hours, quality YELLOW or better |
| Quality values (API) | quality_rating: GREEN, YELLOW, RED |
| Deprecated fields | current_limit, old_limit (removal scheduled February 2026) |
03 · Rationale
Why does the phone number quality webhook matter?
For a high-volume sender, THROUGHPUT_UPGRADE is the moment a broadcast can go out more than twelve times faster, and a sender that misses it keeps throttling itself to the default rate. For marketers the bigger risk is false comfort. Older dashboards treated this field as the quality alarm, but a quiet phone_number_quality_update stream today does not mean quality is fine. Quality has to be watched where it is now reported.
04 · Operation
How does the phone number quality webhook work?
Subscribe to the related fields together
Subscribe to
phone_number_quality_update,business_capability_update,message_template_quality_updateandaccount_alerts. Between them they cover throughput, limits, template quality and refused increases.Map the number
The payload identifies the number by
display_phone_number(digits, no plus sign), andentry.idis the WABA. Look up yourphone_number_idfrom that pair rather than assuming one number per account.Hold sends while onboarding
On
ONBOARDING, keep the number out of campaign rotation until registration completes and a test message succeeds.TIER_NOT_SETmeans it has not sent anything yet.Raise the rate limiter on upgrade
On
THROUGHPUT_UPGRADE, lift that number's send rate from 80 towards 1,000 messages per second. The upgrade takes up to a minute, during which sends can fail with error 131057, so retry with backoff.Poll quality separately
Read
quality_ratingon a schedule (and after big sends), and pause marketing when it falls. Treat any legacyFLAGGEDorDOWNGRADEevent, if one ever arrives, as an alarm.
05 · Code samples
The phone number quality webhook in code
export async function onNumberQualityUpdate(entry, change) {const v = change.value;const number = await numbers.byDisplay(entry.id, v.display_phone_number); // WABA + digitsswitch (v.event) {case "ONBOARDING":await number.setStatus("onboarding"); // keep out of campaign rotationbreak;case "THROUGHPUT_UPGRADE":await rateLimiter.set(number.phoneNumberId, { perSecond: 1000 });await alerts.info("Throughput upgraded to 1,000 mps for " + v.display_phone_number);break;default:// Legacy values (FLAGGED, DOWNGRADE...) or new ones: never ignore silently.await alerts.warn("phone_number_quality_update: " + v.event, v);}if (v.max_daily_conversations_per_business) {await portfolios.setLimitTier(entry.id, v.max_daily_conversations_per_business);}}
Map the number, act on the two documented events and raise an alert for anything else.
06Playground
A working model of Phone Number Quality Webhook. Use its controls to replay it step by step.
When does a number earn THROUGHPUT_UPGRADE?
- Default: up to 80 mps0–100 K users
- Eligible for 1,000 mps100–150 K users
THROUGHPUT_UPGRADE
118 K users
Unlimited limit, over 100K unique users in 24 hours, quality YELLOW or better: Meta upgrades the number and posts the event.
THROUGHPUT_UPGRADE: 118 K users — Eligible for 1,000 mps zone. Unlimited limit, over 100K unique users in 24 hours, quality YELLOW or better: Meta upgrades the number and posts the event.
07 · Cautions
Common mistakes with the phone number quality webhook
Using it as the quality alarm
A dashboard that waits for
FLAGGEDwill wait for ever: the current reference no longer lists it. Pollquality_rating, subscribe to template quality updates, and alert on falls there.Hard-coding the old event list
Code written for
FLAGGED/UNFLAGGED/UPGRADE/DOWNGRADEmay ignoreTHROUGHPUT_UPGRADE, and a strict parser may throw on it. Branch on known values and log the rest.Raising throughput before the webhook
Sending above 80 messages per second before the upgrade returns error 130429 and wastes retries. Raise the limiter when
THROUGHPUT_UPGRADEarrives, and expect 131057 for up to a minute.Reading the deprecated limit fields
current_limitandold_limitwere scheduled for removal in February 2026. Usemax_daily_conversations_per_business, or GETwhatsapp_business_manager_messaging_limit, instead.
08 · Questions and answers
Phone Number Quality Webhook FAQs
- Does phone_number_quality_update still fire when my quality drops?
- Meta's current reference lists only ONBOARDING and THROUGHPUT_UPGRADE for this field. Read quality from the phone number's quality_rating and watch template quality webhooks; sustained low quality blocks upgrades and can lead to restrictions.
- Do I have to request the 1,000 messages-per-second upgrade?
- No. Meta upgrades eligible numbers automatically and free once the portfolio has an unlimited limit, has messaged 100,000 or more unique users outside a service window in a moving 24 hours, and has quality YELLOW or better.
- How is this different from business_capability_update?
- business_capability_update announces the portfolio's messaging limit and phone-number allowance. phone_number_quality_update is about one number's status — onboarding or a throughput upgrade — and carries the portfolio limit only as context.
- Why do sends fail with error 131057 right after a throughput upgrade?
- The upgrade is still being applied. Moving a number to 1,000 messages per second takes up to a minute, and sends during that time can return 131057, so retry them with backoff rather than treating them as failures.
09 · Worked example: Match-night offers in Hyderabad
Example: Match-night offers in Hyderabad
A Hyderabad food-delivery platform messages around 120,000 opted-in users before evening cricket matches during a tournament. Its portfolio already has an unlimited limit and its quality is GREEN, so once it passes 100,000 unique users in a moving 24 hours, its number receives phone_number_quality_update with event: THROUGHPUT_UPGRADE. The sender raises its rate limiter from 80 to 1,000 messages per second. The 7:30 pm broadcast that used to take about 25 minutes now finishes in about two, before the toss rather than after it.
10 · Recommended practice
Best practices for the phone number quality webhook
- Keep a per-number record of throughput level (80 or 1,000 mps) and the date it changed; campaign timing depends on it.
- Before a big send, check the number with the Health Status API as well — it says whether the number can send at all.
- Remember coexistence numbers are fixed at 20 messages per second, counting incoming and outgoing together.
- Recheck quality_rating after any large marketing send, not just on a timer.
- Sustained low quality blocks upgrades and can lead to restrictions — fix templates before scaling sends.