WhatsApp: what Meta actually permits
Coexistence, the two gates on the way to sending, and which of them is ours to open.
What Meta actually permits in 2026, checked before building. The brief said not
to assume personal WhatsApp → one button → Business Platform. It is not one
button, and the reasons are specific and worth knowing before designing a funnel
around them.
The headline
Server-side sending with the phone off: SUPPORTED. Already working here -
sentloop_greeting_v2 is approved and the channel activated itself at
2026-08-22T22:46:24Z with nobody present.
Personal number onboarded directly: NOT SUPPORTED. Meta:
"Personal WhatsApp Messenger numbers cannot be onboarded through this coexistence flow - only established Business app accounts qualify."
Coexistence (app + API on one number): SUPPORTED, and it is the good news. Live globally. The number keeps working in the WhatsApp Business app - contacts, chat history, sending from the phone - while the Cloud API sends alongside it. Two-way sync, so a message sent from the phone appears in the platform and vice versa. This removes the objection that used to kill this funnel: connecting no longer means giving up your number.
The real funnel, with the gates named
Personal WhatsApp (Messenger)
│
│ ① Convert to the WhatsApp Business app, on the phone.
│ SentLoop cannot do this for anyone.
▼
WhatsApp Business app (v2.24.17 or higher)
│
│ ② Embedded Signup, coexistence flow.
│ Requires SentLoop to be a Meta Tech Provider or Solution Partner.
▼
Cloud API on the same number - the app keeps working
│
▼
SentLoop sends server-side. Phone off, computer off.
Gate ① - the user's phone
Converting personal WhatsApp to the WhatsApp Business app is an in-app action on the handset. There is no API for it and there never has been. It is free, it keeps the number and chats, and it takes about a minute - but it is the user's minute, and no amount of product design removes it.
Gate ② - Tech Provider status
Meta's onboarding documentation states you must be a Solution Partner or Tech Provider and maintain webhook callback capability. Embedded Signup is not an API you can simply call; it is a programme you are admitted to.
SentLoop does not hold that status today. Until it does, Embedded Signup cannot be offered, and the supported path is the manual Meta console setup that is already in place.
This is the difference between "we have not built it" and "we are not permitted to build it yet", and the product should not blur them.
What Embedded Signup automates, once available
| Automated | Left to the user |
|---|---|
| Presents the verification code | Enters that code |
| Runs the account connection workflow | Taps "Connect to the Business Platform" |
| Returns asset IDs and an exchangeable token code | Confirms chat-history sharing preference |
| Skips phone-number registration - already registered | Keeps the Business app open while it syncs |
The important half for SentLoop is the third row: asset IDs and a token code come back from the flow. That is what removes the "paste your access token and phone number ID" step the brief rightly objects to. Until Tech Provider status exists, that pasting is the only supported route, and it is labelled as a limitation rather than presented as normal.
Coexistence limits
Worth knowing before promising anything:
- Throughput is fixed at 20 messages per second for a number in use with both the app and the Cloud API. Irrelevant for personal greetings, fatal for bulk.
- Not synchronised to the API: group chats, broadcast lists.
- Disabled once connected: disappearing messages, view-once messages, live location sharing.
- Not available for phone numbers from Nigeria or South Africa.
- Voice and video calls, and Status, remain app-only.
Templates still send through the API under coexistence. The restriction people repeat - "the Business app does not support templates" - is about the app, not the API, and reading it the other way would rule out the whole product.
Messaging rules, unchanged by any of this
- Business-initiated messages outside the 24-hour window require a template Meta approved in advance. This is what WhatsApp permits and Instagram does not.
- Inside the 24-hour window opened by the recipient, free-form text sends with no template at all.
- Categories are Utility, Marketing, Authentication. A template must be used for the purpose it was approved for. A personal greeting is Marketing; using an order-confirmation template to carry one is a policy breach, which is why SentLoop refused a pre-approved sample template and created its own.
- A free Meta test number reaches only five recipients, each verified in
advance by a code sent to that handset.
account_modereportsLIVEregardless, so this cannot be detected in advance - it surfaces as(#131030) Recipient phone number not in allowed listat send time.
Answers, in the brief's own terms
| Question | Answer |
|---|---|
| Can personal WhatsApp numbers be onboarded directly? | No. Must become a Business app number first. |
| Can an existing personal number transition to Business? | Yes, by the user, in the app. Not by SentLoop. |
| Can the Business app and Cloud API coexist on one number? | Yes. Live globally, two-way sync, number keeps working. |
| Is migration required instead? | No, and coexistence is preferable - migration hands the number entirely to the API and the app stops working on it. |
| What exactly can Embedded Signup automate? | Verification-code presentation, connection workflow, asset IDs and token exchange, skipping phone registration. |
| What can it not automate? | The personal→Business conversion, the code entry, the consent taps. And it needs Tech Provider status first. |
| Server-side sending with every device off? | Yes, and observed here. |
What SentLoop should therefore do
- Never claim one-button onboarding. Show the two gates honestly, with the reassurance that matters: coexistence means the number and chats are kept.
- Detect account state from Meta, never from what the user typed.
- Keep the draft alive across the whole funnel. Someone who wrote "Happy birthday, tomorrow, 9am" and got sent to convert their app must come back to that exact message, not an empty form.
- Treat Embedded Signup as a provider that is currently unavailable, in the
same way
NativeInstagramProvideris kept and refuses. When Tech Provider status is granted, one file changes.
Sources
- Onboard WhatsApp Business app users - Meta
- What is WhatsApp Business App Coexistence?
- WhatsApp Coexistence: App + API on One Number
- Observed in this deployment:
npm run verify:whatsapp, and thebecameAutomatic:1tick at2026-08-22T22:46:24Z.