🔓 Unlock all 10,000+ workflows & prompts free Join Newsletter →
✅ Full access unlocked — explore all 10,000 AI workflow and prompt templates Browse Templates →
Home n8n Workflow
January 22, 2026

Jotform to Google Sheets, leads routed to the right rep

Lisa Granqvist Partner Workflow Automation Expert

New leads should feel exciting. Instead, they turn into a messy thread of “Did anyone respond?” and “Who owns this one?” in under a day.

If you’re a marketing manager trying to prove pipeline impact, you feel the pain first. A sales ops lead gets dragged into rule debates. And a small business owner just wants someone to call the lead today. This Jotform lead routing automation fixes the handoff and gets you back to fast follow-up.

You’ll see how this n8n workflow qualifies each Jotform submission with AI, assigns it to the right rep, logs everything in Google Sheets, and notifies people with the context they need to act.

How This Automation Works

The full n8n workflow, from trigger to final output:

n8n Workflow Template: Jotform to Google Sheets, leads routed to the right rep

The Problem: Leads Get Lost in the Handoff

Jotform makes it easy to collect inquiries. The hard part starts right after the submit button. Someone has to read the form, decide if it’s any good, figure out which rep should take it, and then make sure the rep actually follows up. And when you’re busy, that process stretches from minutes into hours, sometimes days. Meanwhile the lead is still shopping, and the first vendor to respond usually “wins” the conversation (even if they’re not the best fit).

It adds up fast. Here’s where it breaks down in real life.

  • Leads sit in an inbox until someone notices, which quietly kills response time.
  • Routing turns into tribal knowledge, so one person becomes the bottleneck.
  • Reps get partial context, then ask the same questions again and frustrate the prospect.
  • Tracking is inconsistent, so you can’t trust reports or coach the team properly.

The Solution: AI Qualification + Automatic Rep Assignment

This workflow turns every Jotform submission into a qualified, routed, and logged sales-ready lead. It starts the moment a form is submitted, maps the raw answers into clean fields, then sends the full lead profile to an AI agent powered by an OpenAI chat model. The AI scores the lead using BANT (Budget, Authority, Need, Timeline), so you get a practical 0–100 score plus short reasoning you can actually use. Next, n8n assigns the lead to the right sales rep using your rules (territory, industry, workload, deal size), then fires off notifications with talking points so the rep can respond immediately. Finally, the workflow appends a complete record to Google Sheets, giving you an audit trail for coaching, attribution, and SLA monitoring.

The flow is simple to live with day-to-day. Jotform triggers the process, OpenAI generates the qualification details, and your routing logic decides ownership. Google Sheets becomes the source of truth, while Gmail and Slack (optional) make sure nobody misses the moment a good lead arrives.

What You Get: Automation vs. Results

Example: What This Looks Like

Say you get 20 inbound leads a week. Manually, it’s common to spend about 10 minutes per lead to read the form, judge quality, pick a rep, send a message, and update a sheet or CRM. That’s around 3 hours of admin work, plus delays when the “router” is in meetings. With this workflow, the only human time is reviewing the rep notification and taking action. The routing and logging happens automatically, and the lead typically gets touched in about 5 minutes instead of “later today.”

What You’ll Need

  • n8n instance (try n8n Cloud free)
  • Self-hosting option if you prefer (Hostinger works well)
  • Jotform to capture lead submissions.
  • Google Sheets to log leads and track outcomes.
  • OpenAI API key (get it from your OpenAI dashboard).

Skill level: Intermediate. You’ll paste credentials, map a few fields, and edit routing rules in one code node.

Don’t want to set this up yourself? Talk to an automation expert (free 15-minute consultation).

How It Works

A Jotform submission kicks it off. The trigger grabs the responses the moment someone fills out your lead intake form, including budget range, timeline, industry, and pain points.

The workflow cleans up the lead profile. n8n maps fields into a consistent structure so downstream logic doesn’t break when someone changes wording or form layout. This is also where you can add hidden fields like UTMs later if you want stronger attribution.

AI qualifies the lead with BANT. An AI agent (using the OpenAI chat model) reads the responses and outputs a score plus short reasoning and talking points. Honestly, this is the part that stops reps from asking “Is this even real?” before they follow up.

Routing, notifications, and tracking happen in parallel. Your routing logic assigns a rep, then n8n creates the CRM record via HTTP request, sends Gmail alerts (rep + lead confirmation), and appends a single tracking row to Google Sheets with timestamps and assignment details.

You can easily modify the routing rules to match your territories or round-robin preferences based on your needs. See the full implementation guide below for customization options.

Step-by-Step Implementation Guide

Step 1: Configure the Jotform Trigger

Set up the incoming lead capture so the workflow starts when a Jotform submission is received.

  1. Add the Jotform Lead Intake node as your trigger.
  2. Set Form to [YOUR_ID] so it listens to the correct Jotform form.
  3. Credential Required: Connect your jotFormApi credentials.

Step 2: Connect Jotform Lead Intake and Map Lead Fields

Normalize the incoming form payload into fields used throughout the workflow.

  1. Add the Map Lead Fields node and connect it after Jotform Lead Intake.
  2. In Map Lead Fields, set the assignments to the following expressions: companyName{{ $json.rawRequest['q3_companyName'] }}, contactName{{ $json.rawRequest['q4_contactName'] }}, email{{ $json.rawRequest['q5_email'] }}, phone{{ $json.rawRequest['q6_phone'] }}.
  3. Continue mapping: companySize{{ $json.rawRequest['q7_companySize'] }}, budgetRange{{ $json.rawRequest['q8_budgetRange'] }}, timeline{{ $json.rawRequest['q9_timeline'] }}, industry{{ $json.rawRequest['q10_industry'] }}.
  4. Finalize mapping: currentSolution{{ $json.rawRequest['q11_currentSolution'] }}, painPoints{{ $json.rawRequest['q12_painPoints'] }}, submissionId{{ $json.submissionID }}, submittedAt{{ $now.toISO() }}.

If your Jotform question IDs differ, update the expressions in Map Lead Fields to match your form’s field IDs.

Step 3: Set Up AI Qualification Scoring

Use AI to score the lead with a BANT-based qualification analysis.

  1. Add AI Qualification Scoring and connect it after Map Lead Fields.
  2. Set Text to the full prompt expression: =Analyze this lead using the BANT framework (Budget, Authority, Need, Timeline) and provide comprehensive qualification: LEAD INFORMATION: Company: {{ $json.companyName }} Contact: {{ $json.contactName }} Email: {{ $json.email }} Phone: {{ $json.phone }} Company Size: {{ $json.companySize }} Budget Range: {{ $json.budgetRange }} Timeline: {{ $json.timeline }} Industry: {{ $json.industry }} Current Solution: {{ $json.currentSolution }} Pain Points: {{ $json.painPoints }} Provide analysis in JSON format: { "leadScore": 0-100, "qualificationTier": "Hot/Warm/Cold/Unqualified", "bant": { "budget": { "score": 0-25, "assessment": "description", "hasBudget": true/false }, "authority": { "score": 0-25, "assessment": "description", "decisionMaker": true/false }, "need": { "score": 0-25, "assessment": "description", "painSeverity": "low/medium/high/critical" }, "timeline": { "score": 0-25, "assessment": "description", "urgency": "immediate/1-3months/3-6months/6+months" } }, "keyInsights": ["insight1", "insight2"], "redFlags": ["flag1", "flag2"], "opportunitySize": "small/medium/large/enterprise", "competitorVulnerability": "low/medium/high", "recommendedAction": "immediate call/email nurture/demo/disqualify", "idealSalesRep": "senior/mid-level/junior/SDR", "conversionProbability": "0-100%", "estimatedDealValue": "dollar amount or range", "nextSteps": ["step1", "step2", "step3"], "talkingPoints": ["point1", "point2", "point3"] }.
  3. Ensure OpenAI Chat Engine is connected as the language model for AI Qualification Scoring.
  4. Credential Required: Connect your openAiApi credentials in OpenAI Chat Engine (not in the agent node).
  5. Add Extract Scoring Result after AI Qualification Scoring and set Mode to expressionData to normalize the AI JSON output.

⚠️ Common Pitfall: If the AI output is not valid JSON, Extract Scoring Result will fail to parse it. Keep the prompt strict and JSON-only.

Step 4: Configure Assign Sales Representative

Route qualified leads to the correct sales rep based on score, industry, and workload.

  1. Add Assign Sales Representative and connect it after Extract Scoring Result.
  2. Set JavaScript Code to the provided script (including your rep details and emails) exactly as shown in the workflow: const salesTeam = { ... } ... return { json: output };.
  3. Confirm the code references Map Lead Fields for industry and company size using $('Map Lead Fields').first().json.industry and $('Map Lead Fields').first().json.companySize.

Step 5: Configure Output/Action Nodes

Create CRM records, email the assigned rep, acknowledge the lead, and log the lead to Sheets in parallel.

  1. Connect Assign Sales Representative to its parallel branches. Assign Sales Representative outputs to both Create CRM Entry and Email Rep Alert and Send Lead Acknowledgment and Append Tracking Record in parallel.
  2. In Create CRM Entry, set URL to https://api.hubapi.com/crm/v3/objects/contacts, Method to POST, Authentication to predefinedCredentialType, and Credential Type to hubspotApi.
  3. Credential Required: Connect your hubspotApi credentials in Create CRM Entry (this node requires credentials but none are configured yet).
  4. In Email Rep Alert, set Send To to {{ $json.assignedRepEmail }}, Subject to =🔥 {{ $json.qualificationTier }} Lead Assigned: {{ $json.companyName }} (Score: {{ $json.leadScore }}), and Message to the provided HTML body expression.
  5. Credential Required: Connect your gmailOAuth2 credentials in Email Rep Alert.
  6. In Send Lead Acknowledgment, set Send To to {{ $json.email }}, Subject to =Thank You for Your Interest!, and Message to the provided HTML body expression.
  7. Credential Required: Connect your gmailOAuth2 credentials in Send Lead Acknowledgment.
  8. In Append Tracking Record, set Operation to appendOrUpdate, Document ID to [YOUR_ID], and Sheet Name to Lead_Tracking.
  9. Map the key columns in Append Tracking Record using expressions like email{{ $json.email }}, leadScore{{ $json.leadScore }}, repEmail{{ $json.assignedRepEmail }}, qualificationTier{{ $json.qualificationTier }}, and keep the full mapping as defined in the workflow.
  10. Credential Required: Connect your googleSheetsOAuth2Api credentials in Append Tracking Record.

The Flowpast Branding sticky note is optional and does not affect execution. You can keep it for reference or remove it.

Step 6: Test and Activate Your Workflow

Verify each branch works correctly before enabling the workflow for production.

  1. Use Jotform Lead Intake to submit a test entry, then click Execute Workflow to run the full flow.
  2. Confirm the AI output is parsed in Extract Scoring Result and that Assign Sales Representative outputs assignedRepName and assignedRepEmail.
  3. Verify all four parallel actions complete: a CRM contact is created by Create CRM Entry, the rep receives Email Rep Alert, the lead receives Send Lead Acknowledgment, and a new row appears in Append Tracking Record.
  4. When satisfied, toggle the workflow to Active so it runs automatically for new Jotform submissions.
🔒

Unlock Full Step-by-Step Guide

Get the complete implementation guide + downloadable template

Common Gotchas

  • Jotform credentials can expire or need specific permissions. If things break, check your n8n credentials list and Jotform API access first.
  • If you’re using Wait nodes or external rendering, processing times vary. Bump up the wait duration if downstream nodes fail on empty responses.
  • OpenAI prompts that ship “generic” will stay generic. Add your brand voice and qualification rules early or you’ll be rewriting rep briefs forever.

Frequently Asked Questions

How long does it take to set up this Jotform lead routing automation?

About an hour if your form and Google Sheet already exist.

Do I need coding skills to automate Jotform lead routing?

No, but you will edit one routing section that’s written as simple JavaScript. If you can follow a clear example and change names or territories, you’ll be fine.

Is n8n free to use for this Jotform lead routing workflow?

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 need to factor in OpenAI API costs of about $0.20-0.40 per lead.

Where can I host n8n to run this automation?

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.

Can I customize this Jotform lead routing automation for different territories and scoring tiers?

Yes. You can change the hot/warm/cold thresholds in the “Extract Scoring Result” mapping and then update the “Assign Sales Representative” code to route by region, industry, or workload. Common tweaks include sending hot leads (75+) to senior reps, using round-robin inside a territory, and adding a special path for enterprise deal sizes.

Why is my Jotform connection failing in this workflow?

Usually it’s expired credentials or the Jotform account doesn’t have API access enabled. Reconnect Jotform in n8n, then submit a fresh test lead to confirm the trigger fires. If it still fails, check if the form was duplicated or its field IDs changed, because the mapping step can break when question keys are renamed.

How many leads can this Jotform lead routing automation handle?

On n8n Cloud, it depends on your plan’s monthly executions, and high-volume teams usually upgrade quickly. If you self-host, there’s no fixed execution limit, so capacity mostly comes down to your server and API rate limits. Practically, this workflow can process leads continuously, one submission at a time, as they come in.

Is this Jotform lead routing automation better than using Zapier or Make?

Often, yes, especially if you want AI scoring plus more nuanced routing logic than “if field X, then do Y.” n8n makes it easier to keep the whole decision process in one place, and you can self-host to avoid per-task pricing when volume grows. Zapier or Make can still be a good fit for very simple two-step alerts. The difference shows up once you add tiers, SLAs, and CRM mapping. Talk to an automation expert if you want help choosing.

Once this is live, leads stop depending on someone remembering to do the handoff. The workflow handles the repetitive parts, and your team gets to focus on the conversations that close.

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.

Lisa Granqvist

Workflow Automation Expert

Expert in workflow automation and no-code tools.

×

Use template

Get instant access to this n8n workflow Json file

💬
Get a free quote today!
Get a free quote today!

Tell us what you need and we'll get back to you within one working day.

Get a free quote today!
Get a free quote today!

Tell us what you need and we'll get back to you within one working day.

Launch login modal Launch register modal