Automation (Webhooks)
Automation sends data to external services (webhooks, Slack, Discord, Gmail, etc.) the moment a response is submitted to your form.
Creating a Custom Webhook
After creating an automation, open the detail editor for more granular configuration.
Open the Connect page
In the project editor, click Connect at the top.
Add a new automation
In the 'My Automations' section, click New Automation to get started.
Create it
In the popup, enter details like the automation name, choose a trigger type, and click Create.
- Automation name: A name to identify this automation.
- Trigger type: The condition that fires the automation (e.g., form submitted, respondent rejected). Trigger types cannot be changed after creation.
Configure paths (logic)
You can add filters so notifications only fire under specific conditions (e.g., when a multiple-choice answer is A, when a short text answer contains B).
- Click the
+in the top right to create multiple paths. If a path has no automation module attached, it runs as the default path (notifying on every submitted response). - Click
+ Add conditionunder each path to build compound conditions.
Enter the webhook URL
Webhook URL: The server URL that will receive the data.
Choose the webhook payload format
Decide whether to use the default webhook body (automatic) or a custom body. If you choose automatic, you can save and activate right away. If you choose custom, continue to the next step.
- Automatic (default): Form response data is included in the payload automatically. Open
Previewto check the exact payload that will be sent. - Custom: Set the request type, headers, and body yourself.
Configure request type and headers
- Request type: POST / GET / PUT, etc.
- Headers: Add
Content-Type, auth tokens, and any other headers as needed.
Edit the body
Freely edit the message content, and insert response values ({{responseKey}}) as variables.
Set up authentication (optional)
You can choose security methods like Bearer Token, Basic Auth, or API Key for your webhook.
Include hidden field values (optional)
Turn on Include hidden field values under advanced settings to send the values collected through tracking (hidden fields) along with the webhook data. Use it when your external service needs tracking info such as traffic source or customer group.
- When it's off, only response values are sent, without hidden fields.
Save and activate
Save your changes and click activate — the webhook only runs once it's turned on.
Slack Integration — Slack Notifications on Submission
Click Create New App
Go to https://api.slack.com/apps and click 'Create New App'.
Select From scratch
Choose 'From scratch'.
Set the app name and workspace
Enter an 'App Name' and pick the workspace where the app will run.
Enable Incoming Webhooks
Turn on 'Incoming Webhooks' and click 'Add New Webhook'.
Pick a channel
Pick the channel in your workspace where the webhook should post.
Copy the Webhook URL
Copy the Webhook URL from 'Install App'.
Open the Connect page
In the project editor, click Connect at the top.
Add a new Slack automation
In the 'My Automations' section, click Slack to get started.
Create it
In the popup, enter the automation's details, choose a trigger type, and click Create.
- Automation name: A name to identify this automation.
- Trigger type: The condition that fires the automation (e.g., form submitted, respondent rejected). Trigger types cannot be changed after creation.
- Webhook URL: The Slack server URL that will receive the data. See how to set up a Slack Webhook URL here.
- Body Preset: Choose how webhook notifications should look in Slack.
Configure paths (logic)
You can add filters so notifications only fire under specific conditions (e.g., when a multiple-choice answer is A, when a short text answer contains B).
- Click the
+in the top right to create multiple paths. If a path has no automation module attached, it runs as the default path (notifying on every submitted response). - Click
+ Add conditionunder each path to build compound conditions.
Save and activate
Save your changes and click activate — the webhook only runs once it's turned on.
Discord Integration — Discord Notifications on Submission
Open the Discord channel editor
Click the gear icon next to the channel name.
Create a new Webhook and copy the URL
In the Integrations tab, click New Webhook to create a webhook, then click Copy Webhook URL.
Open the Connect page
In the project editor, click Connect at the top.
Add a new Discord automation
In the 'My Automations' section, click Discord to get started.
Create it
In the popup, enter the automation's details, choose a trigger type, and click Create.
- Automation name: A name to identify this automation.
- Trigger type: The condition that fires the automation (e.g., form submitted, respondent rejected). Trigger types cannot be changed after creation.
- Webhook URL: The Discord server URL that will receive the data.
- Body Preset: Choose how webhook notifications should look in Discord.
Configure paths (logic)
You can add filters so notifications only fire under specific conditions (e.g., when a multiple-choice answer is A, when a short text answer contains B).
- Click the
+in the top right to create multiple paths. If a path has no automation module attached, it runs as the default path (notifying on every submitted response). - Click
+ Add conditionunder each path to build compound conditions.
Save and activate
Save your changes and click activate — the webhook only runs once it's turned on.
Gmail Integration — Send Emails on Submission
Open the Connect page
In the project editor, click Connect at the top.
Add a new automation
In the 'My Automations' section, click Gmail to get started.
Create it
In the popup, enter the automation's details, choose a trigger type, and click Create.
- Automation name: A name to identify this automation.
- Trigger type: The condition that fires the automation (e.g., form submitted, respondent rejected). Trigger types cannot be changed after creation.
- Sender: The Google account that will send the Gmail. Pick an account already linked to the workspace, or sign in with a new Google account.
Configure paths (logic)
You can add filters so notifications only fire under specific conditions (e.g., when a multiple-choice answer is A, when a short text answer contains B).
- Click the
+in the top right to create multiple paths. If a path has no automation module attached, it runs as the default path (notifying on every submitted response). - Click
+ Add conditionunder each path to build compound conditions.
Specify the sender
Pick the Google account to send from and enter the sender name.
Specify recipients
- Enter the email addresses that should receive the message.
- You can enter email addresses directly, or use value references (@) to set them dynamically.
- Separate multiple email addresses with commas (,), spaces, or Enter.
- Certain predefined references such as responseKey and timestamp cannot be used as email addresses.
- We recommend using an email field as the reference. If the email format is invalid, sending may fail.
Set CC, BCC, and reply-to
- Enter the email addresses for CC, BCC, or reply-to.
- You can enter email addresses directly, or use value references (@) to set them dynamically.
- Separate multiple email addresses with commas (,), spaces, or Enter.
- Certain predefined references such as responseKey and timestamp cannot be used as email addresses.
Include hidden field values (optional)
Turn on Include hidden field values under advanced settings to include the values collected through tracking (hidden fields) in the email.
- When it's off, only response values are used, without hidden fields.
Heads up
Hidden fields can hold values the respondent never typed in, such as traffic source or a customer identifier. If the email goes to an external recipient, check what will be included before turning this on.
Save and activate
Save your changes and click activate — the webhook only runs once it's turned on.
Testing the Webhook
Before activating a webhook, you can send a test to make sure it works as expected.
1. Test with an existing response
- Click the
down arrowicon next to theTestbutton to test the webhook with a response that has already been submitted. Pick a response to test with, then clickRun test.
Note
If you've entered an email field as the recipient of a Gmail automation, we recommend testing with an existing response so the delivery address is resolved accurately.
2. Test with random values
- If no responses have been submitted yet, click the
Testbutton to test the webhook with random values.
Resending a Webhook (When Delivery Fails)
- If a webhook delivery fails, you can resend it.
- The error summary tells you why the delivery failed.
- For example, if a Gmail automation shows 'At least one 'to' recipient is required', it means no recipient was provided, so the message couldn't be sent.
- If you see 'Webhook failed with status: 400', the webhook server received the request but rejected it as a "Bad Request" — meaning the payload format was invalid.
How to resend
- Retry with original settings: Resends using the original settings saved at the time the webhook ran. Useful when you want to retry under the exact same conditions without changing anything. If the failure was caused by a temporary server error, try retrying with the original settings first.
- Resend with current settings: Resends using the currently saved automation settings. Useful when you want to retry after fixing the configuration. If the failure was caused by a missing recipient or invalid payload format, fix the issue and then click Resend with current settings.