Triggers
Every workflow starts with a trigger: the event that kicks off execution.New submission
New submission
Fires whenever a respondent successfully submits a form. This is the most common trigger. You can scope it to a specific form or to all forms in a folder.
Submission matches condition
Submission matches condition
Fires only when a new submission satisfies a condition you define — for example, when the “Department” field equals “Sales” or when a numeric score exceeds a threshold. Use this trigger to create branching automation paths without building multiple separate workflows.
Form published
Form published
Fires when a form transitions from draft to published. Useful for notifying teammates, creating a tracking record, or running a pre-launch checklist.
Form archived
Form archived
Fires when a form is archived. Use this to send a final summary, close a connected task, or update a status field in an external system.
Scheduled (time-based)
Scheduled (time-based)
Fires on a recurring schedule — hourly, daily, weekly, or on a custom cron expression. Useful for digest emails, periodic data exports, or reminder campaigns that reference submission data.
A single form can have multiple workflows attached to it. Each workflow runs independently, so a new submission can simultaneously trigger a Slack notification, a Google Sheets update, and a confirmation email.
Actions
After a trigger fires, the workflow executes one or more actions in the order you define.Notifications and messaging
| Action | What it does |
|---|---|
| Send email | Sends a formatted email to one or more recipients. You can address it to a fixed address, to the respondent’s email field, or to a dynamic list. |
| Post to Slack | Posts a message to a Slack channel or sends a direct message to a user. Supports field value interpolation so submissions surface inline. |
| Send SMS | Sends a text message via your connected SMS provider. |
Data operations
| Action | What it does |
|---|---|
| Add row to Google Sheets | Appends a new row to a connected spreadsheet, mapping form fields to columns. |
| Update Google Sheets row | Updates an existing row matched by a lookup value, useful for editing records rather than appending. |
| Create record in Airtable | Adds a new record to a connected Airtable base. |
| Update record in Airtable | Updates a matched record in Airtable. |
Integrations
| Action | What it does |
|---|---|
| Call webhook | Makes an HTTP request (GET, POST, PUT, or PATCH) to any URL, with full control over headers and request body. Use this to connect to any tool not natively integrated. |
| Trigger Zapier Zap | Fires a Zapier webhook trigger, giving you access to thousands of apps through your existing Zapier account. |
| Create task in Asana / Trello | Creates a task or card in a connected project management workspace. |
Workflow control
| Action | What it does |
|---|---|
| Delay | Pauses workflow execution for a set duration (minutes, hours, or days) before continuing to the next step. |
| Conditional branch | Evaluates a condition and routes execution to one of two paths, similar to an if/else statement. |
| Stop | Halts the workflow immediately. Useful as the final step of a conditional branch that should take no further action. |
Conditions and branching
You can attach conditions to any action step, not just to the trigger. An action only executes if its condition evaluates to true. This lets you write a single workflow with multiple branches rather than maintaining several near-identical workflows. Example: A contact form workflow that sends a high-priority Slack alert when the “Urgency” field is “Critical”, sends a standard email for all other values, and always appends a row to Google Sheets regardless of urgency.Execution order and reliability
Workflow steps execute sequentially in the order you define them. If you add a Delay step, subsequent steps are queued and resume automatically after the delay period — you don’t need to keep the app open.Workflow execution is asynchronous. After a respondent submits a form, they see the thank-you screen immediately. Workflow steps run in the background and do not delay the respondent’s experience.
Retries
If an action fails — for example, a webhook endpoint returns a 5xx error — FormFlows.ai automatically retries up to three times with exponential back-off. If all retries fail, the workflow logs the error and sends you an email notification.Execution history
Every workflow run is logged. In the Workflow history panel, you can see:- The timestamp and trigger event that started each run
- The status of every step (success, failed, skipped)
- The full request and response payload for webhook and API calls
- Any error messages returned by external services
Passing data between steps
Each step in a workflow can reference data from the triggering submission or the output of earlier steps. Use the variable picker in any text field to insert dynamic values:{{submission.field_id}}— the value of a specific form field{{submission.submitted_at}}— the ISO 8601 timestamp of the submission{{submission.id}}— the unique submission ID{{form.name}}— the name of the form{{step.N.output}}— the response body from step N (useful after a webhook call)
Building your first workflow
Choose a trigger
Select the event that should start the workflow. For most use cases, start with New submission.
Add actions
Click Add step and choose an action from the panel. Configure each step — select connected accounts, map fields, and write message copy.
Add conditions (optional)
Click the condition toggle on any step to restrict when it runs. Build the condition using the field picker and comparison operators.
Test the workflow
Use Test workflow to simulate a submission with sample data. Review the execution log to confirm each step behaved as expected.
Next steps
Workflow Builder guide
Detailed walkthrough of the workflow builder interface.
Triggers reference
Full reference for every available trigger type and its configuration options.
Integrations
Connect FormFlows.ai to Zapier, Slack, Google Sheets, and more.
Data flows
Learn how submission data moves through the system after it is captured.
