Typeform + Google Sheets: tickets logged and routed
Your “support inbox” isn’t really an inbox anymore. It’s Typeform submissions, half-filled details, screenshots in random places, and someone on your team trying to decide what’s urgent before it becomes a fire.
This Typeform ticket routing automation hits marketing ops teams hardest, but founders and client-facing agency leads feel it too. The outcome is simple: every submission becomes a clean log in Google Sheets, and the right people get pinged immediately.
Below, you’ll see how the workflow routes urgent issues to Slack, sends routine tickets to email, and keeps a single “source of truth” sheet so nothing quietly disappears.
How This Automation Works
The full n8n workflow, from trigger to final output:
n8n Workflow Template: Typeform + Google Sheets: tickets logged and routed
flowchart LR
subgraph sg0["Typeform Intake Flow"]
direction LR
n0["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/typeform.dark.svg' width='40' height='40' /></div><br/>Typeform Intake Trigger"]
n1@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Severity Branch Check", pos: "b", h: 48 }
n2@{ icon: "mdi:database", form: "rounded", label: "Append Sheet Rows", pos: "b", h: 48 }
n3@{ icon: "mdi:message-outline", form: "rounded", label: "Dispatch Email Notice", pos: "b", h: 48 }
n4["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/slack.svg' width='40' height='40' /></div><br/>Slack Alert Post"]
n1 --> n4
n1 --> n3
n2 --> n1
n0 --> n2
end
%% Styling
classDef trigger fill:#e8f5e9,stroke:#388e3c,stroke-width:2px
classDef ai fill:#e3f2fd,stroke:#1976d2,stroke-width:2px
classDef aiModel fill:#e8eaf6,stroke:#3f51b5,stroke-width:2px
classDef decision fill:#fff8e1,stroke:#f9a825,stroke-width:2px
classDef database fill:#fce4ec,stroke:#c2185b,stroke-width:2px
classDef api fill:#fff3e0,stroke:#e65100,stroke-width:2px
classDef code fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px
classDef disabled stroke-dasharray: 5 5,opacity: 0.5
class n0 trigger
class n1 decision
class n2 database
classDef customIcon fill:none,stroke:none
class n0,n4 customIcon
The Problem: Ticket Triage Becomes a Daily Tax
When tickets come in through Typeform, you usually get the worst of both worlds. The form is structured, but the handling is not. Someone copies fields into a sheet (or doesn’t), tries to “read between the lines” on severity, and then forwards the message to the right person with zero context. Do this for a week and you end up with duplicate entries, missing follow-ups, and that sinking feeling that one urgent issue is sitting in the wrong place. Honestly, it’s exhausting.
The friction compounds. Not because any single step is hard, but because every step is easy to skip when you’re busy.
- Tickets get handled in DMs or inbox threads, so you can’t see a clean backlog without asking around.
- Severity gets judged inconsistently, which means “urgent” depends on who read it first.
- Copy-paste logging takes about 5 minutes per ticket and invites typos in names, emails, and issue details.
- When a submission slips through, you only notice after a customer follows up (which is the worst time to notice).
The Solution: Typeform Tickets Logged, Then Routed Automatically
This workflow turns Typeform submissions into a simple, reliable ticket intake system. It starts the moment someone submits your form. n8n takes the responses and appends them as a new row in a Google Sheet (so your log is always up to date). Then it checks the “Severity” field and makes a decision: high-severity issues trigger a Slack alert so your team sees it fast, while routine items trigger an email notification so they still get handled without disrupting everyone. Same intake, cleaner routing, fewer misses.
The flow is straightforward. A Typeform submission kicks things off, Google Sheets becomes the ticket database, and an If condition routes the notification. Slack is for urgent, email is for everything else.
What You Get: Automation vs. Results
| What This Workflow Automates | Results You’ll Get |
|---|---|
|
|
Example: What This Looks Like
Say you get about 20 Typeform tickets a week. Manually, you might spend 5 minutes logging each one into a sheet, then another 3 minutes deciding urgency and notifying someone, which is roughly 3 hours weekly. With this workflow, the “work” becomes submitting the form (already happening) plus a quick glance at the Slack alert or email when it arrives. The logging and routing runs in the background, usually within a minute of submission.
What You’ll Need
- n8n instance (try n8n Cloud free)
- Self-hosting option if you prefer (Hostinger works well)
- Typeform to collect ticket submissions consistently.
- Google Sheets for the central “Problems” ticket log.
- Slack to alert the team on severe issues.
- Email account (Gmail or SMTP) to notify on routine tickets.
Skill level: Beginner. You will connect accounts, map a few fields, and confirm your sheet column names match the form questions.
Don’t want to set this up yourself? Talk to an automation expert (free 15-minute consultation).
How It Works
A Typeform submission triggers the workflow. As soon as someone hits submit, n8n receives the responses from your ticket form and packages them for the next steps.
The submission is logged to Google Sheets. The workflow appends a new row into a spreadsheet (in a sheet named “Problems”), using columns like Name, Email, Severity, and Problem so you always have a clean history.
Severity is checked and routed. An If condition reads the Severity field and branches. One branch posts a Slack message for very severe tickets, the other sends an email for lower-severity items.
Notifications go where your team actually reacts. Slack gives you immediate visibility for urgent issues, while email keeps routine tickets moving without spamming channels.
You can easily modify the severity rules to match your own labels (for example, “P1/P2/P3” instead of “very severe”). See the full implementation guide below for customization options.
Step-by-Step Implementation Guide
Step 1: Configure the Typeform Trigger
Set up the workflow to start when a new Typeform response is received.
- Add the Typeform Intake Trigger node as your trigger.
- Set Form ID to
UXuY0A. - Credential Required: Connect your typeformApi credentials.
Step 2: Connect Google Sheets
Capture incoming issues in a Google Sheet for tracking.
- Add the Append Sheet Rows node after Typeform Intake Trigger.
- Set Operation to
append. - Set Sheet ID to
[YOUR_ID]. - Set Range to
Problems!A:D. - Credential Required: Connect your googleApi credentials.
Step 3: Set Up Severity Branch Check
Route issues based on severity to determine when alerts should be sent.
- Add the Severity Branch Check node after Append Sheet Rows.
- Configure the number condition to compare Value 1 as
={{$node["Append Sheet Rows"].data["Severity"]}}. - Set Operation to larger and Value 2 to
7. - Note the routing: Severity Branch Check outputs to both Slack Alert Post and Dispatch Email Notice in parallel, based on the IF true/false paths.
Step 4: Configure Output and Alert Nodes
Send notifications to Slack and email using the data from the severity branch.
- Add Slack Alert Post on the true/false branch as configured in Severity Branch Check.
- Set Channel to
[YOUR_ID]and Text to=Email: {{$node["Severity Branch Check"].data["Email"]}} Name: {{$node["Severity Branch Check"].data["Name"]}} Severity: {{$node["Severity Branch Check"].data["Severity"]}} Problem: {{$node["Severity Branch Check"].data["Problem"]}}. - Credential Required: Connect your slackApi credentials.
- Add Dispatch Email Notice on the alternate branch from Severity Branch Check.
- Set Subject to
User Reported Problem, and set Text to=Email: {{$node["Severity Branch Check"].data["Email"]}} Name: {{$node["Severity Branch Check"].data["Name"]}} Severity: {{$node["Severity Branch Check"].data["Severity"]}} Problem: {{$node["Severity Branch Check"].data["Problem"]}}. - Fill in To Email and From Email with your alert addresses.
- Credential Required: Connect your smtp credentials.
Step 5: Test and Activate Your Workflow
Verify the workflow behaves correctly before turning it on.
- Use Typeform Intake Trigger to submit a test entry with a Severity above and below
7. - Confirm a new row appears in the Google Sheet via Append Sheet Rows.
- Verify that high-severity submissions reach Slack Alert Post, and lower-severity submissions reach Dispatch Email Notice.
- Click Activate in n8n to enable the workflow for production use.
Common Gotchas
- Google Sheets permissions can be picky. If rows stop appending, check the connected Google account access and the exact spreadsheet and sheet name (“Problems”) in the Google Sheets node.
- Slack connections fail more often than people expect after workspace changes. If alerts aren’t posting, confirm the Slack app is still authorized and the target channel still exists.
- The workflow assumes your Typeform question names match the Google Sheets column names. If your form says “Severity Level” but the sheet column is “Severity,” you’ll log blanks and routing will misfire.
Frequently Asked Questions
About 30 minutes if your Typeform and Google Sheet are ready.
No. You’ll connect accounts and map fields like Name, Email, Severity, and Problem.
Yes. n8n has a free self-hosted option and a free trial on n8n Cloud. Cloud plans start at $20/month for higher volume. You’ll also want to account for Typeform plan limits if you collect a lot of submissions.
Two options: n8n Cloud (managed, easiest setup) or self-hosting on a VPS. For self-hosting, Hostinger VPS is affordable and handles n8n well. Self-hosting gives you unlimited executions but requires basic server management.
Yes, but keep it simple at first. You’ll update the Severity check in the If node to match your labels (like “P1” or “Critical”) and adjust the Slack vs email branches accordingly. Common tweaks include adding a second Slack channel for “billing,” sending a CC to an on-call address, or writing extra columns like “Status” and “Owner” into Google Sheets. If you later want smarter classification, you can insert an AI Agent step before the If check to normalize messy severity inputs.
Usually the Typeform token was revoked or the form permissions changed. Reconnect the Typeform Trigger in n8n, then confirm the form still exists and you’re testing with real submissions (not just saved drafts). If it still fails, double-check that your Typeform field names match what you’re mapping into Google Sheets, because mismatched fields can look like “no data” downstream.
For most small teams, hundreds of tickets a day is fine as long as your Google Sheet stays within reasonable size and your n8n instance has enough memory. On n8n Cloud, capacity depends on your plan’s execution limits. If you self-host, you’re mainly limited by your server and any API rate limits from Google, Slack, or Typeform.
Sometimes. If your routing is literally “Typeform → Slack,” Zapier or Make can be faster to set up. But once you care about branching rules, logging to a sheet, and keeping everything in one place, n8n tends to be easier to grow with. You can add extra checks, retries, and formatting without rebuilding the whole thing. Self-hosting is also a big deal if you don’t want to pay more as volume increases. If you’re torn, Talk to an automation expert and describe your ticket volume and routing rules.
Once this is live, tickets stop living in people’s heads and inboxes. The workflow logs, routes, and nudges automatically, so you can focus on fixing problems instead of chasing them.
Need Help Setting This Up?
Our automation experts can build and customize this workflow for your specific needs. Free 15-minute consultation—no commitment required.