Connect by JBRH Open Connect

WhatsApp messages are not arriving

Messages sent to your business number are not appearing anywhere in Connect. Almost always Meta is not calling the webhook, or its call is failing the signature check — when a call arrives and verifies, a conversation appears within seconds. Work outwards from Meta rather than inwards from the screen: the application cannot notice a call that never arrived.

Status
Available What this means
Audience
both
Channels
whatsapp
In the app
#/whatsapp, #/inbox, #/whatsapp-setup
Last verified
Product version
6.3.2

What the symptom looks like#

You send a message to the business number from a phone. Nothing appears on #/whatsapp or #/inbox, no Person is created, no reply comes back, and there is no error anywhere. Other channels are working normally. In Meta's own console the message shows as delivered to the business.

That last detail is the important one. The message reached WhatsApp; what did not happen is Meta calling Connect about it, or Connect accepting the call it made.

What it means#

Inbound WhatsApp is push, not poll. Connect does not go and look for messages; Meta posts each one to a webhook. There is no missed-delivery signal in that arrangement, so a platform that stops calling produces exactly the same experience as a quiet afternoon. Silence is not evidence of a fault and it is not evidence of health.

A call that arrives and is refused looks identical from the outside. The signature is an HMAC-SHA256 of the raw body keyed with the account's app secret; if the wrong app secret was saved, every call Meta makes is refused 403 and nothing is written. From #/whatsapp that is indistinguishable from Meta never calling, which is why the app secret is worth re-entering early rather than late.

Causes, in the order worth checking#

  1. The webhook was never registered, or points somewhere else. The commonest cause by a distance, and the usual variant is a staging address left in place. Check it in Meta's console, not in Connect.
  2. The verify handshake never completed. Meta registers an address and then does not deliver to it until hub.mode=subscribe gets the challenge back. The setup screen reports whether the account has been verified.
  3. The app secret is wrong. Every call then fails the signature check and is refused 403, which looks exactly like no call at all.
  4. The receiving number is not the number you configured. phone_number_id in the payload is what finds the account; a second number on the same WhatsApp Business account matches nothing and is skipped.
  5. The workspace is not the one you are looking at. A message can be arriving correctly into a workspace whose screen you do not have open — particularly when an Owner session and a customer session are both in use.
  6. Meta is having an incident. Rare, and worth checking last rather than first because it is the one you cannot act on.

What Connect did complete#

Nothing, and that is the accurate answer rather than an evasive one. With no inbound call there is no verification, no workspace resolution, no Person, no thread and no message. Nothing has been half-written and there is no partial state to clean up.

Everything the workspace already holds is untouched: existing conversations, people, memory, suppressions and the other channels all carry on. A WhatsApp webhook problem is contained to WhatsApp.

What Connect did not complete#

  • It did not receive the message, so it cannot show it, reply to it, or tell you it exists.
  • It did not raise an alert, because there is nothing to alert on — an absent call leaves no trace.
  • It did not queue the message for later. Messages that never arrived are not retried into existence.
  • It did not record anything against the sender, so their history has a gap Meta's side does not.

What you can do#

  1. Check Meta's console for delivery of your test message and for the webhook's configured address.

    Result A message delivered with no outbound webhook attempt is the answer: the registration is wrong or missing.

  2. Check whether the setup screen says the webhook has been verified.

    Result Not verified means Meta's handshake never got the challenge back, and it will not deliver until it does.

  3. Confirm the number you messaged is the number configured in the workspace.

    Result Cheap to check and a surprisingly common cause on accounts with more than one number.

  4. Look at the correct workspace, as the audience that owns it.

    Result An Owner session and a customer session are different sessions on different workspaces. A message can be arriving into one while you watch the other.

What an administrator can do#

Re-register the webhook with Meta using the URL and verify token the setup screen shows, complete the handshake, then send a fresh test message. If the app secret or access token was rotated, re-enter both on #/whatsapp-setup — Connect holds the values it was given and has no way to learn new ones — and press Verify, which asks Meta about the number and will say plainly if the credentials are rejected. Then confirm both halves: a conversation appearing proves inbound, and a reply reaching the phone proves outbound.

Verify as a customer session as well as the Owner if this is a customer workspace. The two audiences reach the same code by different paths, and a fix proved on one account is not proved on the other.

When to escalate#

Escalate to Meta when the webhook is registered at the right address, the handshake has succeeded, the app secret is known to be correct, and the console still shows no outbound attempt against a delivered message. At that point the missing step is entirely on Meta's side and no change inside Connect will produce one.

Escalate internally when messages arrive for one workspace and not another with identical configuration, which is a different problem from this one and worth investigating rather than reconfiguring.

Questions#

Can Connect poll for missed WhatsApp messages?

No. Inbound on this channel is delivered by Meta's webhook. Messages that were never posted to it are recovered, if at all, from Meta's side. The one exception is unrelated: a QR-linked number receives up to 180 days of the handset's own history at onboarding, and that is a coexistence feature rather than a recovery mechanism.

Will the messages appear once the webhook is fixed?

New messages will. Whether the ones sent during the gap are re-delivered depends on Meta's retry behaviour, and is a question for them.

Everything works for me but not for a colleague. Same fault?

Probably not. That pattern usually means a different workspace or a permission difference rather than a webhook problem — see WhatsApp for the Owner and for a customer.