Event

trigger.webflow_event
TriggerBusiness appsconnection requiredruns in-engine

Registers a Webflow webhook on the site at publish and starts one run per delivery, verified against Webflow's x-webflow-signature.

Start a run when a Webflow site event arrives (form submission, CMS item, site publish, ecommerce order).

Connection

Required
Yes — the node will not save without one
Auth type
Bearer token
Providers
Webflow
Secret shape
the Webflow token, or {"access_token", "client_secret"}
Config it needs
site_id
Resolved by
config.connection_id, else node.connection_id
Note
The token needs the site's webhook scopes (a Site API token created in Site settings has them). A Site token's webhook carries its own signing key, which Webflow returns once at creation; an OAuth Data Client token does not, and the app's 'client_secret' must be stored on the connection or publishing is refused, because nothing else can verify a delivery. Publishing also needs MANTLE_APP_PUBLIC_BASE_URL set to an https URL Webflow 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.

FieldTypeRequiredDefaultConstraintsExample
trigger_type
Which Webflow event to subscribe to. One webhook is registered for exactly this type — add a second trigger node for a second type.
stringNoform_submissionone of "form_submission", "site_publish", "page_created", "page_metadata_updated", "page_deleted", "ecomm_new_order", "ecomm_order_changed", "ecomm_inventory_changed", "collection_item_created", "collection_item_changed", "collection_item_deleted", "collection_item_published", "collection_item_unpublished", "comment_created"—
site_id
The site to register on. Leave empty to use the connection's site_id.
stringNo———
form_name
Only fire for this form's submissions (Webflow's own filter). Applies to form_submission and is refused on any other trigger type.
stringNo———

Example configuration

Every value below is the contract’s own example or default — nothing invented.

{
  "trigger_type": "form_submission"
}

Output

One shape.

webflow event

A flat envelope with Webflow's own payload underneath. The payload's keys depend on the trigger type, so the shape is open below the declared fields.

Extra keys beyond the ones listed can appear.

FieldTypeExample
trigger_type
The Webflow trigger that fired, e.g. form_submission. One webhook is one trigger type, so this is the type this node registered.
stringform_submission
site_id
The Webflow site the event came from, lifted out of the payload.
string62749158efef318abc8d5a0f
id
The id inside the payload — the form submission for form_submission, the CMS item for collection_item_*, empty where the event has none. It is the *resource* id, not a delivery id: two edits of one CMS item carry the same value, which is why it is not the idempotency key.
string659d1f4a5a1c9e0d7f2b4c31
sent_at
When Webflow sent the delivery (from x-webflow-timestamp), as an ISO-8601 UTC string. Empty when the header is absent or unreadable.
string2024-05-30T12:00:00Z
payload
Webflow's own payload object, verbatim. Its keys depend on trigger_type — form fields for a submission, fieldData for a CMS item, the order for an ecommerce event.
object—
{
  "id": "659d1f4a5a1c9e0d7f2b4c31",
  "payload": {
    "data": {
      "Email": "ada@example.com",
      "Name": "Ada Lovelace"
    },
    "formId": "659d1f4a5a1c9e0d7f2b4c30",
    "id": "659d1f4a5a1c9e0d7f2b4c31",
    "name": "Contact Form",
    "siteId": "62749158efef318abc8d5a0f",
    "submittedAt": "2024-05-30T12:00:00.000Z"
  },
  "sent_at": "2024-05-30T12:00:00Z",
  "site_id": "62749158efef318abc8d5a0f",
  "trigger_type": "form_submission"
}

Notes

  • Publishing registers the webhook at Webflow; unpublishing, disabling or archiving deletes it. A workflow that is off is off at Webflow too.
  • Each delivery is verified against the HMAC-SHA256 of '{x-webflow-timestamp}:{body}' and refused outside a 5-minute window.
  • One webhook is one trigger type at Webflow, and each Site-token webhook has its own signing key, so this node subscribes to exactly one type.
  • Webflow allows 75 webhooks per trigger type per site, so publishing the 76th workflow on one trigger type is refused with Webflow's own message.
  • A webhook created in the Webflow dashboard sends no signature headers at all; this node never adopts one, it registers (and signs) its own.

See Event run in a workflow.

In a technical demo we add the Webflow connection, drop the node on the canvas and let Workflow Health pre-flight it before the first real run.