Integrate Forms

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 condition under 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 Preview to 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 condition under 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 condition under 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 condition under 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 arrow icon next to the Test button to test the webhook with a response that has already been submitted. Pick a response to test with, then click Run 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 Test button 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.

On this page