Event
Registers a Mailbox API webhook in the tenant's Help Scout account on publish and starts one run per delivery, verified against Help Scout's base64 HMAC-SHA1 signature.
Start a run when Help Scout raises an event (conversation created, reply added, customer updated…).
Connection
- Required
- Yes — the node will not save without one
- Auth type
- OAuth 2.0
- Providers
- Help Scout
- Secret shape
- {"client_id", "client_secret", "refresh_token"}
- Resolved by
- config.connection_id, else node.connection_id
- Note
- The app needs permission to manage webhooks; a credential that can read conversations can still fail to publish. Publishing also needs MANTLE_APP_PUBLIC_BASE_URL set to an https URL Help Scout can reach.
Configuration
3 fields, none required. A dotted path is a nested object and name[] an array of objects — the editor renders the same tree.
| Field | Type | Required | Default | Constraints | Example |
|---|---|---|---|---|---|
events Which Help Scout events to subscribe to. One webhook carries all of them, so adding an event does not create a second subscription — but every one of them starts a run, so branch on `event` downstream. | array | No | ["convo.created"] | 1–27 characters; array of string | — |
mailbox_ids Restrict the webhook to these inboxes, by their numeric ids. Leave empty for every inbox. Note that customer.created is not filterable by inbox and fires for every customer however this is set. | array | No | — | array of string | — |
payload_version Which payload shape Help Scout delivers. V3 is current and keeps the system_user type on conversations; V2 is the deprecated older shape. | string | No | V3 | one of "V2", "V3" | — |
Example configuration
Every value below is the contract’s own example or default — nothing invented.
{
"events": [
"convo.created"
],
"payload_version": "V3"
}Output
One shape.
helpscout event
The flattened event. `payload` is a Conversation, Customer, Rating, Tag or Organization depending on the event, so the shape is open below the declared fields.
Extra keys beyond the ones listed can appear.
| Field | Type | Example |
|---|---|---|
event The Help Scout event name from X-HelpScout-Event, e.g. convo.created. Branch on this when the trigger subscribes to more than one. | string | convo.created |
id Id of the resource the event is about — the conversation, customer, tag or organization. A string, so a large id survives a JSON round trip. It is the only field every Help Scout event carries: a *.deleted event sends this and nothing else. | string | 291938 |
number The conversation number shown in the Help Scout UI, which with the id builds the link secure.helpscout.net/conversation/<id>/<number>/. Empty on every event that is not about a conversation. | string | 349 |
subject The conversation's subject line. Empty on customer, tag, organization and rating events. | string | I need help! |
status The conversation's status: active, pending, closed or spam. Empty on events that are not about a conversation. | string | active |
mailbox_id The inbox the conversation belongs to, lifted out of mailbox.id. Useful for branching when the webhook covers several inboxes. | string | 1234 |
created_at When Help Scout created the resource, ISO-8601 UTC. This is the resource's own timestamp, not when the delivery arrived. | string | 2026-09-10T12:34:12Z |
payload Help Scout's own body, verbatim — a v2 Conversation for convo.* events, a v2 Customer for customer.*, a Rating, Tag or Organization for the rest, and just {id} for any *.deleted event. | object | — |
{
"created_at": "2026-09-10T12:34:12Z",
"event": "convo.created",
"id": "291938",
"mailbox_id": "1234",
"number": "349",
"payload": {
"createdAt": "2026-09-10T12:34:12Z",
"customer": {
"email": "vbear@mywork.com",
"id": 29418,
"type": "customer"
},
"id": 291938,
"mailbox": {
"id": 1234,
"name": "Support"
},
"number": 349,
"preview": "Hello, I tried to download the file off your site...",
"status": "active",
"subject": "I need help!",
"tags": [
"billing"
],
"type": "email"
},
"status": "active",
"subject": "I need help!"
}Notes
- Publishing creates the webhook in Help Scout; unpublishing, disabling or archiving deletes it, so a workflow that is off is off at the vendor too.
- Every delivery is verified against X-HelpScout-Signature — base64 HMAC-SHA1 of the raw body — before any run starts; an unsigned or mis-signed POST is refused with 401.
- Help Scout retries a failed delivery up to 10 times and then discards it, and switches a webhook off once 10 events have been discarded. Publishing again re-registers it.
- One run per delivery: a retry repeats the same body and cannot start a second run.
- A *.deleted event (conversation, customer, tag, organization) carries only the id — there is no resource left to send.
See Event run in a workflow.
In a technical demo we add the Help Scout connection, drop the node on the canvas and let Workflow Health pre-flight it before the first real run.