n8n Form Trigger: Respond When and a long Sume video job
n8n's Form Trigger can answer on submit or when the workflow finishes. For a Sume video job that runs minutes, answer on submit and deliver the video later.

Set the n8n Form Trigger's Respond When option to Form Is Submitted when the form starts a Sume video job, and deliver the video afterwards by email, a second form page, or a message. The other choice, Workflow Finishes, keeps the submitter's response pending until the whole workflow ends, and a Sume video, avatar-video or face-swap job often runs longer than the 30 seconds a Sume sync wait can hold.
The n8n side below is from the Form trigger docs (read 2026-10-02); the Sume side is from Jobs and results.
What does Respond When change?
n8n describes two settings. Form Is Submitted sends the user a response as soon as they submit. Workflow Finishes waits for the workflow to complete first, and if the workflow errors it tells the user there was a problem submitting the form.
| Respond When | What n8n says | Fit with a Sume job |
|---|---|---|
| Form Is Submitted | Responds to the user as soon as they submit | Submit with mode: "async" or "webhook", show a confirmation, deliver the video later |
| Workflow Finishes | Responds after the workflow completes; on an error the user is told submitting failed | Only if every step, including the Sume job, finishes while the submitter waits; a failed job then reads to them as a failed form |
Why not wait for the video inside the form?
Sume's docs state that the 30-second wait_timeout_seconds cap bounds how long the HTTP request blocks, not how long the job takes, and that video, avatar-video and face-swap jobs routinely do not finish inside it. A 2xx on submit means the job exists and paid work is in flight; it does not mean the video is ready. Holding a browser on the form page for that duration ties the user's experience to a workflow run, and a failure at the end shows up as a form error even though the paid job may still complete.
The pattern Sume documents instead is: submit with async, keep the job id, then either poll GET /v1/jobs/{id}/status until terminal is true or take a webhook-mode callback. n8n's Wait node and a second webhook workflow handle that part; see the Wait node post.
How do I pass campaign details into the form?
The Form Trigger supports Hidden Field elements, and n8n says you can set their values with query parameters on the production URL. The docs note that query parameters only work in production mode, not in test mode, and that special characters in names or values must be percent-encoded. A link such as .../form/my-form?campaign=spring can therefore carry a campaign id into the workflow without showing it on the page.
Who should be allowed to submit?
The trigger's Authentication setting offers Basic Auth, n8n User Auth, or None. With n8n User Auth, only users signed in to that n8n instance can load or submit the form, and unauthenticated submissions get a 401. Each submission on this workflow can start a paid Sume generation, so pick the setting that matches who may spend credits.
Keep one more habit from Sume's docs: send an Idempotency-Key on the submit request, built from something stable in the form data, so a retry of the same submission returns the original job instead of billing a second one.
Sources
Related posts
More in Integrations
- n8n payload limit 16 MiB: pass Sume artifact URLs, not video bytes
n8n caps webhook payloads at 16 MiB and form-data files at 200 MiB. A Sume callback is small JSON with media URLs, so keep the video out of the payload.
- n8n Remove Duplicates node: skip repeat rows before Sume calls
Use n8n's Remove Duplicates node in previous-executions mode so a repeated row never reaches a paid Sume call, and keep an Idempotency-Key for retries.
- n8n WEBHOOK_URL deprecated in 2.35: the URL Sume will accept
n8n 2.35.0 deprecates WEBHOOK_URL for N8N_WEBHOOK_URL. Sume only calls public HTTPS webhook URLs, so a wrong base URL fails at submit. How to set and test it.
- Next.js after() runs even on errors: guard Sume submits with a key
Next.js after() runs after the response, even when the handler threw. Put a Sume submit there only with an Idempotency-Key, and cap it by route maxDuration.
Written by Sume