---
title: Messenger bridge
description: 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.
url: https://salexhub.com/docs/developers/messenger-bridge
type: reference
area: developers
section: Developers
last_updated: 2026-10-06
prerequisites:
  - https://salexhub.com/docs/developers
related:
  - https://salexhub.com/docs/developers/webhooks
tools: []
plans:
  - free
  - pro
  - business
  - enterprise
checked_against: salexhub/platform be080ea89
---

# 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. [Plans](https://salexhub.com/pricing#compare)

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>`:

| Door | What it does |
| --- | --- |
| `channel.message.receive` | A message that happened in the messenger: one that came in, or a copy of one your side sent |
| `channel.conversation.identify` | Evidence of who a conversation is, such as a shared phone or email, without a message |
| `channel.message.status` | What the messenger did with a reply: sent, delivered, read or failed |
| `channel.outbox.pull` | The replies waiting to go out, for a bridge that pulls |
| `channel.connection.report` | The 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](https://salexhub.com/docs/developers/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](https://salexhub.com/docs/developers/webhooks#verify-the-signature) page, with the connection's signing secret.

---

The same page for people: https://salexhub.com/docs/developers/messenger-bridge. Index of this site for agents: https://salexhub.com/llms.txt
