Skip to content

Messenger bridge

Bring a messenger's conversations into your organization through a bridge you run. Messages arrive with a channel key; replies go back by signed push or pull.

Availability: Available on every plan. Compare plans

On this page

SalexHub does not speak to a messenger itself. A bridge does: your own program, or a scenario in a tool such as n8n or Make, holding the messenger's bot token. The bridge sends conversations into your organization, where they land on the right records, and it delivers the replies your team or the Agent writes.

Connect a bridge#

Owners and Admins add a connection in Settings > Customers > Channels, with Add connection: a Name, Whose account (The whole organization (shared), a team or a member), the Messenger, and How replies reach the bridge:

  • Push to a URL: SalexHub POSTs each reply to your Bridge URL, signed like its webhooks;
  • The bridge pulls: your bridge asks for replies, so it needs no public address.

How replies reach the bridge is chosen when the connection is made and cannot be switched later. A member connects their own account under Messengers in their account settings, and only they answer from it.

The product then shows, once, a Channel key (it starts with ck_live_) and, for push, a Signing secret. New channel key is on every connection; Send test and New signing secret are on a push connection.

Messages in#

The bridge calls POST https://app.salexhub.com/api/channels/v1/<door> with Authorization: Bearer <channel key>:

DoorWhat it does
channel.message.receiveA message that happened in the messenger: one that came in, or a copy of one your side sent
channel.conversation.identifyEvidence of who a conversation is, such as a shared phone or email, without a message
channel.message.statusWhat the messenger did with a reply: sent, delivered, read or failed
channel.outbox.pullThe replies waiting to go out, for a bridge that pulls
channel.connection.reportThe bridge's own health, such as offline because the bot token was revoked

A channel key opens these doors only. A body is up to 256 KB, and a key makes up to 600 calls a minute. A message sent again, with the same conversation and message id, answers duplicate: true and is recorded once.

A call may carry an Idempotency-Key header. A repeat under the same key runs nothing and answers as the first call did, with Idempotent-Replayed: true; a different body under the same key is refused with 422.

Replies out#

  • Push: each reply is POSTed to the Bridge URL with the same signature scheme as webhooks (X-SalexHub-Signature, X-SalexHub-Event, X-SalexHub-Delivery, X-SalexHub-Timestamp), plus X-SalexHub-Contract: 2026-09. The event is message.outbound, or ping for Send test. Answer within 10 seconds.
  • Pull: the bridge calls channel.outbox.pull for up to 50 replies. Each reply it takes is held for it for 60 seconds, then offered again until the bridge reports its status; after five such lapses it is marked failed. Send each pull with an Idempotency-Key: a pull whose answer was lost, repeated under the same key, gets the same replies back.

A reply that has not reached the bridge within 60 minutes is marked failed. While a connection is paused its replies wait, and their hour starts again on Resume.

Verify a push delivery with the routine on the Webhooks page, with the connection's signing secret.

Last updated October 6, 2026 · Checked against the product: salexhub/platform be080ea89