All workflows
Typeform logoGoogle Sheets logoSlack logo

Log every form submission to a sheet and post it to Slack

Checks your form for new submissions, posts each one to Slack and appends it to a spreadsheet - never the same one twice.

Every hour3 apps5 steps

Apps it connects

Authenticate each one once and the workflow is ready to run.

What it does

The integration steps this workflow runs, in the order it first runs them.

  1. 1TypeformList form fields
  2. 2Google SheetsRead rows
  3. 3Google SheetsAppend row
  4. 4TypeformList responses
  5. 5SlackSend message

How it works

Everything the template sets up, and what to fill in before the first run.

A form submission is worth nothing sitting in the form tool. Every hour this workflow reads your Typeform for submissions it has not handled yet, posts each one into a Slack channel so somebody sees it the same hour, and appends it to a spreadsheet so there is a permanent record to sort, filter and hand around.

It writes three columns and names them itself: 'Submitted at', 'Response ID' and 'Answers'. Point it at an empty tab and it writes those headings on the first run. Point it at a tab that already has headings but no 'Response ID' column and it stops with a message rather than carrying on, because that column is how it knows what it has already sent - without it every submission would be posted again on every run. Answers are written as one 'Question: answer' line per question, using the question wording from your form rather than the field ids, so the cell reads the way the form does.

Submitted text is treated as text from a stranger, because that is what it is. Slack reads things like a channel-wide alert, a mention of a named colleague, or a link whose label says something different from where it goes out of an ordinary message body; anything a submitter typed is escaped before it is posted, so it appears exactly as they typed it and cannot act as Slack formatting. The workflow's own lines - when it arrived, which submission it is - come first, above a line marking where the submitter's words begin. Nothing submitted is ever read as an instruction, and the spreadsheet is written as plain values, so a submission beginning with '=' lands as text rather than running as a formula.

The Slack message goes out before the row is written. That ordering is deliberate: the row is the record of what has been handled, so a run that dies halfway repeats one notification rather than silently marking a submission as done that nobody was ever told about.

Fill in 'formId', 'spreadsheetLink', 'tabName' and 'slackChannelId'. 'maxSubmissionsPerRun' limits how many are handled in one go, so a form with a backlog does not arrive as a hundred Slack messages at once; the rest are picked up on later runs, and the newest are handled first.

typeformformsgoogle sheetsslackintakenotificationshourly

Start from a workflow that already works.

Add "Log every form submission to a sheet and post it to Slack" to your workspace, connect its apps, and make it yours. No credit card required.

Free plan available · No credit card required