Skip to content
All articles
Integrations

WhatsApp capture via companion

Capture every conversation from the rep's WhatsApp Business straight into the Conversations timeline, using a companion bridge you host yourself. Optional, off by default, and it requires accepting a Terms of Service notice.

This connector brings the rep's WhatsApp Business messages into the Conversations timeline, captured by a companion bridge your organization hosts. Messages land in the same place as your other conversations, so the AI summary, insights and follow-up monitoring already work on top of them.

Before you start: Terms of Service notice

💡 Capturing conversations through a WhatsApp Web session is a gray area of WhatsApp's Terms of Service and may get the number banned. Use a dedicated number, at your own risk. We do not host the WhatsApp session: the companion, in your environment, is what pairs by QR code and listens to messages.

How it works

  • You run a companion bridge (an open-source WhatsApp Web service) in your environment.
  • The companion pairs WhatsApp Business by QR code and listens to incoming and outgoing messages.
  • For each message, the companion sends a signed POST to your organization's ingestion URL.
  • The message is stored, linked to the contact or lead by phone number (or creates a new lead when the number is unknown), and shows up in the Conversations timeline.

How to connect

  1. Go to Settings, Integrations and open the "WhatsApp: capture via companion" card.
  2. Set a strong pairing secret and check the consent box (I understand the Terms of Service risk). Click Save.
  3. Copy the ingestion URL shown and configure the companion with that URL and the same pairing secret.
  4. Back on the card, click Enable. Without the consent checked and saved, capture is not accepted.

While the connector is off or the consent is not saved, the ingestion URL rejects every post. That way you never capture anything without having accepted the notice.

POST format (companion contract)

The companion sends one message or a batch, signing the body with the pairing secret (HMAC-SHA256) in the X-Sellio-Signature header, formatted as sha256=<hex>.

POST /api/inbound/whatsapp-capture/YOUR_TOKEN
X-Sellio-Signature: sha256=<hmac-sha256 of the body with the secret>
Content-Type: application/json

{
  "messages": [
    {
      "messageId": "unique-message-id",
      "from": "15551230000",
      "to": "15559990000",
      "direction": "in",
      "body": "message text",
      "timestamp": 1700000000,
      "name": "Contact name"
    }
  ]
}

The messageId ensures the same message, if resent, does not become a duplicate. direction is "in" (received) or "out" (sent by the rep). timestamp accepts seconds or milliseconds and is used to order the timeline.

Open this article inside the system

Read it and want to see it working?

The account is free and the whole manual is available inside the system, with an assistant that answers from this very content.

Create free account
WhatsApp capture via companion · Sellio