Event
Registers a webhook endpoint in the tenant's Chargebee site on publish and starts one run per delivered event, authenticated with the basic-auth credential Chargebee sends.
Start a run when Chargebee emits an event (subscription, invoice, payment…).
Connection
- Required
- Yes — the node will not save without one
- Auth type
- API key
- Providers
- Chargebee
- Secret shape
- the Chargebee site API key
- Config it needs
- site
- Resolved by
- config.connection_id, else node.connection_id
- Note
- The key must be a full-access one: a read-only key can list customers and still be refused when it tries to create a webhook endpoint. Publishing also needs MANTLE_APP_PUBLIC_BASE_URL set to an https URL Chargebee can reach — it only accepts ports 80, 443, 8080 and 8443.
Configuration
1 field, 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 Chargebee event_type names to subscribe to. Any valid name is accepted, not only the ones listed; "*" leaves enabled_events empty, which is Chargebee's own 'every event type' (noisy — each one starts a run). | array | No | ["subscription_created"] | 1–256 characters; array of string | — |
Example configuration
Every value below is the contract’s own example or default — nothing invented.
{
"events": [
"subscription_created"
]
}Output
One shape.
chargebee event
The flattened Chargebee event. `content`'s own keys vary by event_type, so the shape is open below the declared fields.
Extra keys beyond the ones listed can appear.
| Field | Type | Example |
|---|---|---|
id Chargebee's event id (ev_…). Also the idempotency key: every retry of a delivery carries this same id, so a redelivery joins the run it already started instead of starting a second. The ingress remembers a key for 24 hours. | string | ev_16BPgETyVrQbiGhA |
event_type The event name, e.g. subscription_created. Branch on this when the trigger subscribes to more than one. | string | subscription_created |
occurred_at When Chargebee raised the event, epoch seconds. | number | 1702645601 |
occurred_at_iso The same instant as an ISO-8601 UTC string, for nodes that want a date. | string | 2023-12-15T13:06:41Z |
source What caused the event — admin_console, api, scheduled_job, hosted_page, portal, migration, bulk_operation or js_api. | string | admin_console |
user Who triggered it: the admin's email for a console action, the API key's name for an API call, empty for a scheduled job. | string | — |
api_version The Chargebee API version the content is shaped by. | string | — |
site_id The Chargebee site the event came from. | string | — |
webhook_status Chargebee's own delivery status for this event, as it stood when the delivery was made (e.g. not_applicable, scheduled, succeeded). | string | — |
content The resources the event is about, keyed by resource name — a subscription beside its customer, card and invoice. Which keys appear depends on event_type, which is why this shape is open. | object | — |
payload The event envelope exactly as Chargebee sent it, for anything the fields above do not lift out. | object | — |
{
"api_version": "v2",
"content": {
"customer": {
"email": "buyer@example.com",
"id": "8avVGOkx8Fy"
},
"subscription": {
"currency_code": "USD",
"customer_id": "8avVGOkx8Fy",
"id": "8avVGOkx8FzZ3z",
"status": "active"
}
},
"event_type": "subscription_created",
"id": "ev_16BPgETyVrQbiGhA",
"occurred_at": 1702645601,
"occurred_at_iso": "2023-12-15T13:06:41Z",
"payload": {
"id": "ev_16BPgETyVrQbiGhA",
"object": "event"
},
"site_id": "cb_site_16CQtCTrgrYqi9n2A",
"source": "admin_console",
"user": "billing@acme.com",
"webhook_status": "not_applicable"
}Notes
- Publishing creates the endpoint in Chargebee; unpublishing, disabling or archiving deletes it. A workflow that is off is off at Chargebee too.
- Chargebee allows five webhook endpoints per site and this trigger creates one per published workflow, so a sixth publish is refused with Chargebee's own message.
- Chargebee does not sign its deliveries — it authenticates with HTTP Basic. The password is minted at publish, stored through the secret broker, and checked in constant time on every delivery; a proxy in front of Mantle that strips Authorization headers will make every delivery 401.
- One run per event, idempotent on Chargebee's own event id, so a retry cannot start a second run.
See Event run in a workflow.
In a technical demo we add the Chargebee connection, drop the node on the canvas and let Workflow Health pre-flight it before the first real run.