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.

FieldTypeRequiredDefaultConstraintsExample
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.
stringYes—1–200 characterss1afea8b1vk0jf7
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.
booleanNofalse——

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.

FieldTypeExample
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.
string21
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.
string2026-09-10 07:38:09
created_by
Who submitted it: 'public' for an anonymous submission, otherwise the Wufoo username.
stringpublic
ip
The submitter's IP address as Wufoo recorded it.
string203.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.