Settings

Team access, webhook delivery, and the credentials that sign your API calls
View as Markdown
Route/settings
Find itLeft rail → Settings
Who can open itAdmins and team members

Settings holds “Team, webhooks, API credentials, Zapier, and HubSpot CRM for this app.” across five tabs. All five are always present — none is gated on a feature flag.

Team

Invite a member takes an email address and a role:

RoleCan do
Team memberEverything except revoking device access
AdminThe same, plus revoking a device, and inviting others
Settings Team tab with an Invite a member form and a list of current members badged Admin
Team management — invite by email, choose a role, and see who currently has access

Current members are listed below, each removable, with their role shown as a badge. Inviting an address is also what lets that person past the Access Denied screen — an account that authenticates but was never invited cannot reach the app.

Webhooks

Where MessageBlue delivers events to your server. Two independent URLs:

Inbound webhook URL

Incoming iMessages are POSTed here as JSON events.

Status webhook URL

Delivery statuses — sent, delivered, SMS_FALLBACK, failed — are POSTed here. Set once; there is no per-message callback to register.

Settings Webhooks tab with inbound and status URL fields, a Save button, the signing secret with a Generate button, and four bullet points describing the contract
The Webhooks tab — both URLs, the signing secret, and the delivery contract stated inline

The two URLs are saved together with Save. The Signing secret field sits below them and reads “Generated when you save a webhook URL” until one exists — the Generate button beside it mints one.

Verifying the signature

Every delivery carries an X-MB-Signature header so you can prove it came from MessageBlue:

X-MB-Signature: v1=<hex>

The hex value is:

HMAC-SHA256(signing_secret, "{X-MB-Timestamp}.{raw body}")

Sign over the raw request bytes, not a re-serialized JSON parse. Parsing and re-encoding JSON reorders keys and changes whitespace, which produces a different digest and a signature that never matches. Capture the body before your framework touches it.

The signing secret is generated the first time you save a webhook URL. Like the app secret it is shown once, and Regenerate mints a new one that takes effect immediately — update your server before the next event arrives.

The delivery contract

Respond 2xx within 10 seconds. Anything else counts as a failure and is retried. Do the minimum in the handler — acknowledge, queue, and process out of band. Deliveries that exhaust their retries are dead-lettered and listed in Failed webhooks, where you can inspect and replay them.

API & secrets

The three values that identify and authenticate your app:

ValueVisible hereNotes
Account IDAlwaysCopyable
App IDAlwaysCopyable
App SecretNever after creationShows “Secret on file — regenerate to reveal a new value”, or “Not created yet”

The secret signs HMAC requests to the messaging API — see the API reference for how to construct a signed request, or try one in the API Console.

Settings API and secrets tab showing Account ID and App ID with copy buttons, and a Secret field reading Secret on file, regenerate to reveal a new value
API & secrets — the two IDs are copyable; the secret is never shown again after creation

Account ID and App ID each have a copy button. The Secret field is not a masked value you can reveal — the secret genuinely is not stored anywhere retrievable, which is why the field explains itself rather than offering an eye icon.

Regenerating

Regeneration is immediate and has no grace period:

The current secret stops working immediately. Any server still signing requests with it will start failing, so roll the new value out before regenerating.

Have the deployment ready to accept the new value before you press the button, not after.

The confirmation spells out the consequence and colours the destructive action red:

Regenerate API secret dialog warning that the current secret stops working immediately, with Cancel and a red Yes, regenerate button
The regeneration confirmation — Cancel is the safe default on the left

The replacement is displayed once afterwards, in a dialog with a Copy secret button. There is no way to retrieve it later — losing it means regenerating again.

The webhook signing secret has an identically-shaped confirmation, with the same immediacy: “Your current webhook signing secret stops working immediately.”

Zapier CRM

The fourth tab. It describes itself plainly:

Connect MessageBlue to Zapier using your App ID and a dedicated Zapier secret. Use these in your Zapier Platform app connection fields.

It shows three values and one control:

ValueNotes
Account IDShown for reference and support. Not needed by Zapier
App IDCopyable — one of the two values Zapier asks for
Zapier secret”Secret on file — regenerate to reveal a new value”, or “Not created yet”

Generate Zapier secret creates one; once it exists the button becomes Regenerate Zapier secret.

The Zapier secret is separate from the App Secret on the API & secrets tab and from the webhook signing secret. Rotating one does not affect the others — but rotating the Zapier secret does break every live Zap until each connection is updated:

The current Zapier secret stops working immediately. Any active Zaps using it will fail until you update the connection.

Like every other secret in MessageBlue, it is displayed exactly once, with the reminder “Copy it now — it is shown only once. Paste into your Zapier connection as the API key / secret field.”

For what to do with these values, see Set up Zapier.

HubSpot CRM

Private beta

The HubSpot CRM tab is in private beta and is not enabled on every account yet. Ask your MessageBlue administrator or support team for access.

The fifth tab links this MessageBlue app to a HubSpot portal, so iMessage conversations appear in HubSpot Conversations. It describes itself as:

Connect this MessageBlue app to your HubSpot portal once. Inbox replies and conversation sync use that mapping automatically — no HubSpot secret in MessageBlue.

Settings HubSpot CRM tab showing an App ID field, a Status line, and Connect HubSpot and Refresh status buttons
HubSpot CRM — one connection per app, and no secret to copy anywhere

Unlike Zapier CRM, there is nothing to copy — no secret is generated and none is pasted. The tab shows two values and two controls:

ValueNotes
App IDThe MessageBlue app being linked. Quote it to support; it is not a credential
Status”HubSpot service is not configured on the backend yet.”, “Not connected. Connect once to link this app to HubSpot.”, or Connected with the Portal ID and channel account

Connect HubSpot opens HubSpot’s authorization screen in a new tab; the same button reads Reconnect HubSpot once a portal is linked. Refresh status re-reads the connection — though status also refreshes by itself whenever you return to the MessageBlue tab.

Below it, New conversation sends an iMessage and opens or continues the matching HubSpot thread. Its fields stay disabled until a portal is connected.

New conversation card with Recipient phone and First message fields and a Create conversation button, all disabled
New conversation — disabled until HubSpot is connected, with the hint saying exactly that

For the full flow, see Set up HubSpot.