Your app is not subscribed to the WhatsApp account
Covered above. Outbound works perfectly, so nothing looks wrong.
Almost always one of three things: your app is not subscribed to your WhatsApp account, the number is still living on the WhatsApp Business app, or the number was never registered. Run the check in Channels → WhatsApp and it names which one.
It reads your Meta setup and changes nothing, so it is safe to press at any time — including while you are on the phone to us.
In your dashboard: Channels → WhatsApp. Once a number is connected, a panel appears headed"Messages not arriving?" with a Run check button. It reports a Most likely cause at the top, then each individual check:
A check that could not run says so rather than claiming a failure. "Couldn't reach Meta to check. Try again shortly." means exactly that — we did not look, so nothing is being alleged about your setup.
This is Meta's side of the wiring, and the wording is precise: Meta has your messages and nowhere to deliver them. Outbound keeps working throughout, which is what makes it so hard to spot.
There are three separate switches, and people reasonably assume they are one:
The first two can be perfect while the third is missing. That is this failure.
Channels → WhatsApp → connect your own WhatsApp Business account, with the same token, App ID and App secret. Subscribing your app to your WhatsApp account is one of the three things we do for you at the end of that flow, and it is safe to repeat. The completion screen lists what happened, including "App subscribed to your WhatsApp account".
You will be warned that finishing overwrites the stored credentials. That is expected — it is the same connection, re-provisioned.
Use this if the reconnect reports that it could not subscribe the app.
The callback URL is specific to your account and looks like this — copy it from the screen rather than typing it:
https://api.orcalinq.com/webhooks/channel/whatsapp/<your-account-id>If the check says "No WhatsApp Business Account ID is stored, so this check cannot run", we never captured your WABA ID. Reconnect and, if the account is not detected,paste the WABA ID into the optional box.
WhatsApp only lets a business send a free-form message within 24 hours of the customer's last message. Outside that window Meta refuses the send, and it is working as designed rather than broken.
You will meet it in two places:
Channels → WhatsApp → Message templates. You can write one there instead of going to Meta's console. Meta reviews it, so a new template is pending until approved — write the ones you need before you need them. Pick the category honestly: Utility is about a specific existing order, booking or account; a greeting or a menu reads as Marketing to Meta's reviewer even when it does not to you.
One template is created for you automatically when WhatsApp connects: agent_new_escalation. It exists so an escalation still reaches a teammate on WhatsApp after their window has shut.
A send can also be declined because the recipient opted out of your messages. That is us declining deliberately, not a delivery failure — retrying will not help.
Covered above. Outbound works perfectly, so nothing looks wrong.
If Meta reports the number as anything other than Cloud API, incoming messages go to that phone app and never reach us — with no error raised anywhere. The check names this as "Number is on the API, not the phone app".
The number has to be moved to the Cloud API, which means deleting its WhatsApp account first and losing its chat history permanently. Meta's Coexistence option keeps both, but it is only available through an approved Meta partner, and our application for that is still pending. Until it clears we cannot offer it, and a second number is the safe choice.
Adding a number and proving you own it is not the same as registering it. Until it is registered with a 6-digit PIN, it cannot send or receive. The check reports Meta's own word for the state instead of CONNECTED.
Reconnecting attempts the registration for you. If Meta refuses, it is usually because the number is already registered with a different PIN, or because two-step verification is switched on for it — check the number in WhatsApp Manager → Phone Numbers.
Messages then do arrive and are rejected as unsigned, because we cannot prove they came from Meta. The check flags this as a warning rather than a failure. Reconnect through the guided flow, which captures both.
Numbers connected through the retired manual form are in exactly this state: they were stored without an app secret, so inbound could never be verified. Reconnecting is the only fix.
The check says so plainly. In that case the person messaging you is almost certainly messaging a different number from the one connected here. Compare the number on your poster, website or ad with the one the check reports.
If WhatsApp worked for weeks and then went quiet, the token is the first suspect. The check will say:"WhatsApp is connected, but its access token has stopped working, so nothing can send or arrive until it is replaced" — followed by Meta's own reason, verbatim.
Two causes account for nearly all of it: a 60-day token reached its date, or a personal token was invalidated when someone changed their Facebook password. Neither announces itself. The fix is the same: generate a permanent System User token and reconnect.
A related message, "This WhatsApp number was disconnected. Reconnect it to re-add credentials", means the connection was removed here at some point. Connect it again.
Channels → WhatsApp → Messages not arriving? → Run check. It reads your Meta setup, changes nothing, and names the cause.