Receive an inbound whatsapp message into the inbox

A customer sends a WhatsApp message to a connected number; the platform receives it via Meta's webhook, verifies it, and delivers it into the shared Inbox as a new or continuing conversation.

When this happens: Customer sends a WhatsApp message to the connected number.

How it works

  • EasyCRM sends Hi, do you have this in blue? to *+373 69 …* on WhatsApp.
  • Delivers a signed webhook POST to /api/webhooks/channels/whatsapp (one callback URL per Meta App).
  • EasyCRM verifies X-Hub-Signature-256, resolves the tenant from the connection, and stores the message as a ChannelWebhookEvent keyed on the provider's message id; returns 200 OK.
  • ChannelInboundProcessJob identifies the sender, finds or creates the conversation (FR-14 rules), appends the Message, routes it (FR-24), and refreshes CustomerWindowExpiresAt.
  • EasyCRM notifies the routed Operator of a new message (FR-10 UC-10.5) and updates the Inbox in real time.

Other paths

Message arrives on a resolved conversation within the reopen window

If the customer's last conversation on this number was Resolved within the company's reopen window. EasyCRM reopens it instead of starting a new one (FR-14).

If something goes wrong

Invalid signature

If signature verification fails. EasyCRM returns 400, logs a security event, and stores nothing.

Unknown connection key

The payload's phone_number_id matches no active ChannelConnection (e.g. The number was disconnected and later deleted). EasyCRM returns 200 OK with no processing, so Meta stops retrying.

Good to know

  • Duplicate delivery of the same provider message id is a no-op.
  • A message is accepted regardless of the connection's health State — a broken connection never loses inbound messages, only outbound sending is blocked.