Form Entry
trigger.wufoo_event
TriggerBusiness appsconnection requiredruns in-engine
Adds a WebHook to the tenant's Wufoo form on publish and starts one run per submitted entry, checked against the handshake key Wufoo echoes back.
Start a run when someone submits an entry to a Wufoo form.
Connection
- Required
- Yes — the node will not save without one
- Auth type
- Username & password
- Providers
- Wufoo
- Secret shape
- {"api_key": "…"} — the 16-character Wufoo API key
- Config it needs
- subdomain, base_url
- Resolved by
- config.connection_id, else node.connection_id
- Note
- The API key must belong to a user who can administer the form; Wufoo refuses the webhook PUT otherwise. Publishing also needs MANTLE_APP_PUBLIC_BASE_URL set to a URL Wufoo can reach — it is the address written into the form's webhook.
Configuration
2 fields, 1 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 |
|---|---|---|---|---|---|
form_identifier Which form to watch, as its permanent hash (from the form's URL or wufoo.list_forms) or its title. The hash is the safer of the two — a renamed form keeps its hash and loses its title. | string | Yes | — | 1–200 characters | s1afea8b1vk0jf7 |
include_metadata Ask Wufoo to send the form and field definitions with every entry, so 'field_structure' can name each Field id. Bigger deliveries; leave off unless a downstream node needs the titles. | boolean | No | false | — | — |
Example configuration
Every value below is the contract’s own example or default — nothing invented.
{
"form_identifier": "s1afea8b1vk0jf7",
"include_metadata": false
}Output
One shape.
wufoo entry
The flattened submission. `fields` keys are this form's own field ids, so the shape is open below the declared fields.
Extra keys beyond the ones listed can appear.
| Field | Type | Example |
|---|---|---|
entry_id Wufoo's id for the stored entry, and the idempotency key: a redelivered POST carries the same id, so it joins the run it already started instead of starting a second. The same id the Entries API returns, so a later wufoo.list_entries can find this row again. | string | 21 |
created_at When Wufoo stored the entry, as Wufoo formats it — 'YYYY-MM-DD HH:MM:SS' in the account's own time zone, not an ISO-8601 UTC stamp. | string | 2026-09-10 07:38:09 |
created_by Who submitted it: 'public' for an anonymous submission, otherwise the Wufoo username. | string | public |
ip The submitter's IP address as Wufoo recorded it. | string | 203.0.113.24 |
fields The answers, keyed by Wufoo field id (Field1, Field105, Field105-1 for one choice of a multi-part field). wufoo.list_fields maps those ids to the question titles. | object | — |
form_structure The form's own metadata (name, description, redirect message). Empty unless 'include_metadata' is on. | object | — |
field_structure One entry per question — id, title, type, whether it is required. Empty unless 'include_metadata' is on. | array | — |
payload Every parameter Wufoo posted, verbatim, except HandshakeKey — which is the shared secret and is checked and discarded before the run starts. | object | — |
{
"created_at": "2026-09-10 07:38:09",
"created_by": "public",
"entry_id": "21",
"field_structure": [
{
"ID": "Field1",
"Title": "Name",
"Type": "text"
}
],
"fields": {
"Field1": "Jane",
"Field2": "jane@example.com"
},
"form_structure": {
"Hash": "s1afea8b1vk0jf7",
"Name": "Contact Us"
},
"ip": "203.0.113.24",
"payload": {
"CreatedBy": "public",
"DateCreated": "2026-09-10 07:38:09",
"EntryId": "21",
"Field1": "Jane",
"Field2": "jane@example.com",
"IP": "203.0.113.24"
}
}Notes
- Publishing adds the WebHook to the form; unpublishing, disabling or archiving removes it. A workflow that is off is off at Wufoo too.
- Wufoo does not sign deliveries. Mantle mints a handshake key at registration and refuses any POST that does not echo it back, which is the whole of what Wufoo offers — there is no replay window.
- One run per EntryId: a redelivery cannot start a second run.
- Wufoo allows one webhook per URL per form, so re-publishing updates the existing one rather than adding another.
- Entries added through wufoo.submit_entry fire this trigger too — point the two at different forms, or a workflow can feed itself.
See Form Entry run in a workflow.
In a technical demo we add the Wufoo connection, drop the node on the canvas and let Workflow Health pre-flight it before the first real run.