Messenger error 200: pages_messaging_phone_number not reviewed
Last verified against Meta for Developers - Messenger Platform error codes
Cannot message users who are not admins, developers or testers of the app until pages_messaging_phone_number permission is reviewed and the app is live.What error 200 means
Code 200 with subcode 2018027 is the App Review wall for a narrower capability than ordinary messaging: pages_messaging_phone_number, the permission behind Messenger's customer-matching feature, which lets a business open a conversation by supplying a phone number instead of a Page-scoped ID. Like its sibling 200/2018028, it works for app admins, developers and testers before review and fails for everyone else, and the message says so verbatim.
Customer matching was always a restricted, US-oriented feature with additional strings attached: Meta's error table also documents subcode 2018021, "requires phone matching access fee to be paid by this page," reflecting that access historically involved a fee and explicit approval beyond ordinary review. If your integration merely replies to people who message the Page, you do not need this permission at all, seeing 2018027 usually means a recipient object was built with phone_number where an id (PSID) belongs.
The pragmatic question is therefore not "how do I pass review" but "should this code path exist." Messaging by phone number without prior interaction is exactly the cold-outreach pattern the platform has been closing down; the durable architectures start conversations through entry points the person initiates, m.me links (see the link generator), chat plugins and ads, then message the resulting PSID.
What it looks like
{
"error": {
"message": "(#200) Cannot message users who are not admins, developers or testers of the app until pages_messaging_phone_number permission is reviewed and the app is live.",
"type": "OAuthException",
"code": 200,
"error_subcode": 2018027,
"fbtrace_id": "BLBz/WZt8dN"
}
}Why it happens
- Sending with recipient.phone_number while the app lacks reviewed pages_messaging_phone_number access.
- Code intended for PSIDs accidentally populating the recipient object with a phone number field.
- Assuming ordinary pages_messaging review covers phone-number matching; it does not.
- Legacy customer-matching integrations resurrected after the app or Page changed, losing the old approval.
- Testing with non-role accounts before the review decision landed.
How to fix Messenger error 200
- 1Confirm the intent: if you have the person's PSID, send with recipient.id and delete the phone-number path.
- 2If customer matching is genuinely required, request pages_messaging_phone_number in App Review with a use-case demonstration, and note the documented access-fee requirement (subcode 2018021) tied to the feature.
- 3Until approval, restrict tests to accounts with app roles, which are exempt.
- 4Capture PSIDs at every entry point so phone numbers never need to be the key.
- 5Note that Send API responses for phone_number or user_ref recipients omit recipient_id, so adjust response parsing when testing this path.
How to stop it recurring
Design conversation starts around user-initiated entry points and PSIDs; keep phone numbers as CRM metadata, not addressing keys. If a business case truly needs phone matching, treat the permission, fee and review as a project with lead time, and isolate the capability behind a feature flag so its absence cannot break ordinary replies. The review-wall family is compared on the code 200 page and in the troubleshooting guide.
Official reference: Meta for Developers - Messenger Platform error codes. See all Messenger error codes or the Messenger limits and quotas.
Related codes
Error 200 - quick answers
What does Messenger error 200 mean?
Code 200 with subcode 2018027 is the App Review wall for a narrower capability than ordinary messaging: pages_messaging_phone_number , the permission behind Messenger's customer-matching feature, which lets a business open a conversation by supplying a phone number instead of a Page-scoped ID.
How do I fix Messenger error 200?
1. Confirm the intent: if you have the person's PSID, send with recipient.id and delete the phone-number path. 2. If customer matching is genuinely required, request pages_messaging_phone_number in App Review with a use-case demonstration, and note the documented access-fee requirement (subcode 2018021) tied to the feature. 3. Until approval, restrict tests to accounts with app roles, which are exempt. 4. Capture PSIDs at every entry point so phone numbers never need to be…
Stop debugging Messenger by hand
Connect the channel through Conferbot: tokens, webhooks and retries are handled, failures show as readable status.