10 destinations

Form integrations: where your responses can go

Every response is saved to your dashboard and can be exported as CSV. A destination is an extra copy, delivered the moment someone submits — into a channel your team already watches, a spreadsheet or database you already keep, or a URL of your own.

This page compares all 10: which are free, what you need to connect each one, what actually arrives, and the one thing about each that makes a correct setup look broken.

Free on every plan

A webhook points at an endpoint you run, so it stays free: a form on the Free plan can still reach a system you own. Telegram is free as well, as the one push notification the Free plan has.

  • Webhooks

    Free
    You connect it with
    A URL you run, with an optional authentication header.
    What arrives
    Every response POSTed as JSON, field by field.
    Worth knowing
    The endpoint has to be reachable from the public internet — a localhost URL never receives anything.
    Webhooks setup guide →
  • Telegram

    Free
    You connect it with
    A bot token from BotFather and a chat ID.
    What arrives
    A plain-text message in the chat for each response.
    Worth knowing
    A bot cannot message someone who has not pressed Start, or a group it has not been added to — Telegram calls both "chat not found".
    Telegram setup guide →

On paid plans

These deliver into an account you hold with someone else. They are included from the Basic plan, at $20 a month. Compare plans →

  • Slack

    Paid plans
    You connect it with
    A Slack app's bot token and a channel ID.
    What arrives
    A message in the channel, labelled by question.
    Worth knowing
    The bot has to be invited to the channel. Until it is, Slack accepts the request and posts nothing.
    Slack setup guide →
  • Discord

    Paid plans
    You connect it with
    One webhook URL for the channel.
    What arrives
    An embed in the channel for each response.
    Worth knowing
    The webhook URL is a credential: anyone holding it can post to the channel.
    Discord setup guide →
  • Microsoft Teams

    Paid plans
    You connect it with
    A Workflows webhook URL for the channel.
    What arrives
    An Adaptive Card in the channel.
    Worth knowing
    The older Incoming Webhook connector is retired. Only a Workflows URL works, and "accepted" is not yet "delivered".
    Microsoft Teams setup guide →
  • Google Chat

    Paid plans
    You connect it with
    A webhook URL created in the space.
    What arrives
    A card in the space.
    Worth knowing
    A Workspace admin can switch webhooks off, and then the menu item is simply missing.
    Google Chat setup guide →
  • Google Sheets

    Paid plans
    You connect it with
    Your Google account, and a spreadsheet you pick.
    What arrives
    A row in the sheet for each response.
    Worth knowing
    Answers are bound to columns by header text: reordering columns is safe, renaming a header in the sheet is not.
    Google Sheets setup guide →
  • Airtable

    Paid plans
    You connect it with
    A personal access token, a base and a table.
    What arrives
    A record in the table, matched to columns by name.
    Worth knowing
    A question whose label matches no column is left out — Airtable would otherwise reject the whole record.
    Airtable setup guide →
  • Notion

    Paid plans
    You connect it with
    An integration token and a database.
    What arrives
    A page in the database for each response.
    Worth knowing
    With an internal connection, the database has to be connected to it in Notion first — otherwise Notion answers 404 for an ID that is correct.
    Notion setup guide →
  • Email notifications

    Paid plans
    You connect it with
    Your own Resend, SendGrid, Postmark or Mailgun API key.
    What arrives
    An email when a response arrives, capped at 3 an hour per form.
    Worth knowing
    The From address has to be on a domain you have verified with that provider.
    Email notifications setup guide →

How delivery works

The dashboard copy comes first

A response is written to your responses list before any destination is attempted. Whatever a destination does afterwards, the record is already there, and CSV export is always available.

You hear about a failure

When a delivery fails, we email you which destination failed and why — up to three times per broken episode. A recovery is not announced: the alerts simply stop.

You can test before you share

Every destination has a test button in Settings → Storage. It sends a real message, or reads the real schema, and names the cause when something is wrong.

Questions about integrations

Which integrations are free?
Webhooks and Telegram work on every plan, including Free, and so does CSV export. The others — Slack, Discord, Microsoft Teams, Google Chat, Google Sheets, Airtable, Notion, Email notifications — need a paid plan, which starts at $20 a month.
Do I lose a response if a destination fails?
No. Every response is saved to your dashboard first, whatever any destination does afterwards — a destination is an extra copy, never the only one. When a delivery fails you also get an email from us naming which destination failed and why, limited to three per broken episode so a destination that stays broken does not flood you.
Can one form send to more than one place?
Yes. A form can have several destinations at once — a webhook into your own system and a message in a channel, for example. Each is delivered independently, so one failing does not stop the others.
Does it connect to Zapier, Make or n8n?
There is no dedicated app in those directories. The webhook destination POSTs each response as JSON to any URL you give it, which is what the "catch a webhook" trigger in those tools accepts — so a free form can still reach them, and anything they connect to.
How do I check a destination before sharing the form?
Each destination has a test button in Settings → Storage — "Send test message", or "Check connection" for the ones that read a schema first. It reports the real reason when something is wrong, which matters because several of these services answer a misconfigured request as if it had worked.