Event
Registers a webhook in the tenant's MailerLite account on publish and starts one run per delivered event, verified against MailerLite's HMAC signature. Emits {event, subscriber_id, email, campaign_id, occurred_at, payload}.
Start a run when MailerLite reports an event (subscriber created, unsubscribed, campaign sent, opened, clicked…).
Connection
- Required
- Yes — the node will not save without one
- Auth type
- Bearer token
- Providers
- MailerLite
- Secret shape
- the MailerLite API token
- Resolved by
- config.connection_id, else node.connection_id
- Note
- The token needs the Webhooks scope; one without it can read subscribers and still fail to publish. Publishing also needs MANTLE_APP_PUBLIC_BASE_URL set to a URL MailerLite can reach — it is the address the webhook is created against.
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 Which MailerLite events start a run. Every chosen event lives on one webhook, which is deleted again when the workflow is unpublished or disabled. MailerLite refuses any name it does not publish. | array | No | ["subscriber.created"] | 1–14 characters; array of string | — |
Example configuration
Every value below is the contract’s own example or default — nothing invented.
{
"events": [
"subscriber.created"
]
}Output
One shape.
mailerlite event
A flat envelope over MailerLite's event body. MailerLite uses three different body shapes across its events, so `payload`'s own keys vary and the shape is open below the declared fields.
Extra keys beyond the ones listed can appear.
| Field | Type | Example |
|---|---|---|
event The MailerLite event name, e.g. subscriber.created or campaign.click. Branch on this when the trigger subscribes to more than one. Taken from the payload's `event`, or its `type` on the open/click shape. | string | subscriber.created |
account_id The MailerLite account the event happened in, as a string. | string | 1234567 |
subscriber_id The subscriber the event is about, lifted out of whichever shape MailerLite used. Empty on campaign.sent, which is about a campaign and names no subscriber. | string | 100000000000000000 |
email That subscriber's address. Empty on campaign.sent for the same reason. | string | buyer@example.com |
campaign_id The campaign the event is about — the record itself on campaign.sent, the nested campaign on open and click. Empty on subscriber events. | string | 83920 |
campaign_name That campaign's name, when the payload carries one. | string | — |
occurred_at When MailerLite says it happened: a subscriber's `updated_at`, or a sent campaign's `date`. Empty on campaign.open and campaign.click — MailerLite sends no timestamp on either. | string | 2026-09-01T09:15:04.000000Z |
payload MailerLite's event body exactly as it arrived, for everything the fields above do not lift out — a subscriber's `fields` and `status`, a click's `link_url`, a sent campaign's `total_recipients` and `preview_url`. | object | — |
{
"account_id": "1234567",
"campaign_id": "",
"campaign_name": "",
"email": "buyer@example.com",
"event": "subscriber.created",
"occurred_at": "2026-09-01T09:15:04.000000Z",
"payload": {
"account_id": 1234567,
"created_at": "2026-09-01T09:15:04.000000Z",
"email": "buyer@example.com",
"event": "subscriber.created",
"fields": {
"last_name": "Lovelace",
"name": "Ada"
},
"id": "100000000000000000",
"source": "api",
"status": "active",
"subscribed_at": "2026-09-01T09:15:04.000000Z",
"updated_at": "2026-09-01T09:15:04.000000Z"
},
"subscriber_id": "100000000000000000"
}Notes
- Publishing creates the webhook in MailerLite; unpublishing, disabling or archiving deletes it. A workflow that is off is off at MailerLite too.
- Each delivery is verified against MailerLite's Signature header — an HMAC-SHA256 of the raw body keyed on the secret MailerLite minted for this webhook — so the callback URL alone is not enough to start a run.
- subscriber.deleted, campaign.open and campaign.click are only accepted on a batchable webhook, so choosing one of them makes MailerLite deliver every event of this trigger in batches. One run is still started per event.
- MailerLite sends no event id, so a redelivery is recognised by the event body itself. campaign.open and campaign.click carry no timestamp: two identical opens within 24 hours are indistinguishable from a retry and start one run.
- Your endpoint has 3 seconds to answer before MailerLite calls the delivery failed and retries it at 10, 100 and 1000 seconds. Mantle answers as soon as the run is queued, not when it finishes.
See Event run in a workflow.
In a technical demo we add the MailerLite connection, drop the node on the canvas and let Workflow Health pre-flight it before the first real run.