New Submission

trigger.jotform_submission
TriggerBusiness appsconnection requiredruns in-engine

Polls the form's submissions on an interval; one run per new submission.

Start a run for every new submission on a Jotform form (polled).

Connection

Required
Yes — the node will not save without one
Auth type
API key
Providers
Jotform
Secret shape
the API key, or {"api_key": "…"}
Config it needs
region, base_url
Resolved by
config.connection_id, else node.connection_id

Configuration

4 fields, 1 required. A dotted path is a nested object and name[] an array of objects — the editor renders the same tree.

FieldTypeRequiredDefaultConstraintsExample
form_id
The form to watch — the digits at the end of the form's public URL.
stringYes——240123456789012
poll_interval_sec
How often to check the form for new submissions, in seconds.
numberNo6030–86400—
page_size
How many submissions to read per poll. Raise it for a busy form so a burst between two polls still fits in one page.
numberNo1001–1000—
only_unread
Start a run only for submissions Jotform still marks unread, so a submission somebody has already opened in Jotform is skipped.
booleanNofalse——

Example configuration

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

{
  "form_id": "240123456789012",
  "only_unread": false,
  "page_size": 100,
  "poll_interval_sec": 60
}

Output

One shape.

submission

FieldTypeExample
submission_id
The id of the submission that started this run.
string—
form_id
The id of the form that was submitted.
string—
created_at
When the submission arrived, as YYYY-MM-DD HH:MM:SS.
string—
updated_at
When the submission was last edited, as YYYY-MM-DD HH:MM:SS.
string—
status
Jotform's submission status: ACTIVE or OVERQUOTA.
string—
new
'1' while the submission is still unread, '0' once it has been read.
string—
ip
The IP address the submission came from.
string—
answers
Jotform's answers map, keyed by question id, each with text, type and answer.
object—
fields
The same answers flattened to one object keyed by each question's name (else a slug of its label), so the next node can read {{ $json.fields.email }} without a qid.
object—
submission
The whole submission row as Jotform returned it.
object—
{
  "answers": {},
  "created_at": "",
  "fields": {},
  "form_id": "",
  "ip": "",
  "new": "",
  "status": "",
  "submission": {},
  "submission_id": "",
  "updated_at": ""
}

Notes

  • Existing submissions are never replayed: the first poll after publish only sets the cursor.
  • Runs are idempotent per submission id, so a re-poll cannot start a second run.
  • This polls the API — it does not register a Jotform webhook. Jotform posts multipart/form-data and signs nothing, which Mantle's webhook ingress cannot verify or parse.
  • Every poll spends one API call from the account's daily quota; the quota left is reported as 'limit_left' by the jotform.* action nodes.

See New Submission run in a workflow.

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