Sentloop
Docs

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_mode reports LIVE regardless, so this cannot be detected in advance - it surfaces as (#131030) Recipient phone number not in allowed list at 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

  1. Never claim one-button onboarding. Show the two gates honestly, with the reassurance that matters: coexistence means the number and chats are kept.
  2. Detect account state from Meta, never from what the user typed.
  3. 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.
  4. Treat Embedded Signup as a provider that is currently unavailable, in the same way NativeInstagramProvider is kept and refuses. When Tech Provider status is granted, one file changes.

Sources