Jotform + Google Sheets: training approvals, tracked
Training requests should be simple. Instead, they turn into long email threads, missing budget context, and “who approved this?” moments that pop up at the worst time.
HR managers feel it when completions aren’t tracked. A department head feels it when spend surprises hit late in the quarter. And the person requesting training just wants a clear yes or no. This training approvals automation cleans up the whole loop so requests get reviewed faster, with budget visibility and a clean audit trail.
Below, you’ll see how the workflow routes Jotform submissions into Google Sheets, runs an AI assessment, and sends the right emails automatically (plus what to watch out for when you customize it).
How This Automation Works
The full n8n workflow, from trigger to final output:
n8n Workflow Template: Jotform + Google Sheets: training approvals, tracked
flowchart LR
subgraph sg0["Form Submission 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/jotform.dark.svg' width='40' height='40' /></div><br/>Form Submission Trigger"]
n1["<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/code.svg' width='40' height='40' /></div><br/>Normalize Request Data"]
n2["<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/code.svg' width='40' height='40' /></div><br/>Verify Budget Availability"]
n3@{ icon: "mdi:robot", form: "rounded", label: "AI Training Assessment", pos: "b", h: 48 }
n4@{ icon: "mdi:brain", form: "rounded", label: "OpenAI Chat Engine", pos: "b", h: 48 }
n5@{ icon: "mdi:swap-vertical", form: "rounded", label: "Capture AI Output", pos: "b", h: 48 }
n6["<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/code.svg' width='40' height='40' /></div><br/>Combine Assessment Data"]
n7@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Approval Decision Gate", pos: "b", h: 48 }
n8@{ icon: "mdi:message-outline", form: "rounded", label: "Email Manager Approval", pos: "b", h: 48 }
n9@{ icon: "mdi:message-outline", form: "rounded", label: "Dispatch Rejection Notice", pos: "b", h: 48 }
n10@{ icon: "mdi:message-outline", form: "rounded", label: "Send Employee Acknowledgement", pos: "b", h: 48 }
n11@{ icon: "mdi:database", form: "rounded", label: "Update Training Log Sheet", pos: "b", h: 48 }
n0 --> n1
n4 -.-> n3
n7 --> n8
n7 --> n9
n5 --> n6
n3 --> n5
n9 --> n10
n2 --> n3
n8 --> n10
n1 --> n2
n6 --> n7
n10 --> n11
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 n3 ai
class n4 aiModel
class n7 decision
class n11 database
class n1,n2,n6 code
classDef customIcon fill:none,stroke:none
class n0,n1,n2,n6 customIcon
The Problem: Training Requests Turn Into Inbox Projects
A single training request sounds harmless. Then you multiply it by multiple departments, shifting budgets, different approval styles, and the reality that people forget to reply. Now you’re chasing managers, re-explaining the same justification, and trying to piece together what happened three weeks later. Meanwhile, finance wants numbers, employees want answers, and L&D wants proof the training did anything at all. Honestly, the hardest part is that the work is invisible until something goes wrong.
It adds up fast. Here’s where the friction usually comes from.
- Requests arrive without consistent details, so you spend time clarifying basics like cost, timing, and business impact.
- Budget checks happen late (or not at all), which means approvals feel arbitrary and overruns show up after the fact.
- Approvals live in scattered places like email, DMs, and meeting notes, so audits and reporting become a manual scavenger hunt.
- Completion tracking is unreliable, and certificates or outcomes rarely make it back into a system you can actually report on.
The Solution: Jotform → AI Review → Google Sheets + Emails
This workflow turns every training request into a structured record, then moves it through an approval decision with budget context and an AI-generated assessment. It starts when an employee submits a Jotform request with the skill gap, the “why,” and the practical details (cost, timing, format). n8n normalizes the submission so your data is clean, checks the department’s remaining budget, and asks an AI agent to evaluate ROI, urgency, risks, and better alternatives. Then it routes the request: auto-approve when it fits your rules, or email the manager with a clear summary when a human decision is needed. Finally, everything gets logged to Google Sheets so you can track approvals, spending, and completion status in one place.
The workflow begins with Jotform form submission. From there it validates and enriches the request, runs an OpenAI-powered assessment, and makes an approval decision. Gmail sends the right message to the manager and the employee, and Google Sheets becomes the single source of truth.
What You Get: Automation vs. Results
| What This Workflow Automates | Results You’ll Get |
|---|---|
|
|
Example: What This Looks Like
Say your company processes about 20 training requests a month. Manually, each one often needs 3 touch points: collecting missing details (about 10 minutes), checking budget (about 10 minutes), and drafting approvals or rejections (about 10 minutes). That’s roughly 10 hours a month, and it’s scattered across inboxes. With this workflow, the requester submits once (about 5 minutes), AI assessment and budget checks run automatically, and emails + Google Sheets logging happen in the background. You mostly step in only for exceptions.
What You’ll Need
- n8n instance (try n8n Cloud free)
- Self-hosting option if you prefer (Hostinger works well)
- Jotform to collect structured training requests
- Google Sheets to store requests and approvals log
- Gmail for automated manager/employee notifications
- OpenAI API key (get it from your OpenAI dashboard)
Skill level: Intermediate. You’ll connect accounts, paste in IDs (like your Sheet ID), and tweak a couple of business rules safely.
Don’t want to set this up yourself? Talk to an automation expert (free 15-minute consultation).
How It Works
A training request is submitted in Jotform. The trigger fires the moment someone sends the form, so you’re not waiting for HR to “get around to it.”
The request data gets cleaned up and budget is checked. n8n normalizes fields (names, department, course cost, justification) and runs a budget availability step so the decision isn’t made blind.
AI creates an approval-ready summary. The AI agent evaluates ROI, urgency, risks, and alternatives. It can also score course fit (0–100 style scoring in the workflow’s design) so approvers aren’t guessing.
Emails go out, then Google Sheets is updated. If it’s within budget/rules, the workflow proceeds with the right message. If not, the manager gets an approval email with AI notes, and the employee still gets an acknowledgement so they’re not left hanging.
You can easily modify approval thresholds to match your budget policy based on your needs. See the full implementation guide below for customization options.
Step-by-Step Implementation Guide
Step 1: Configure the Form Submission Trigger
Start by connecting the Jotform trigger that receives each training request submission.
- Add the Form Submission Trigger node and select the form.
- Set Form to
[YOUR_ID]. - Credential Required: Connect your jotFormApi credentials.
Step 2: Connect Google Sheets
Configure the log sheet where each request is appended or updated after processing.
- Add the Update Training Log Sheet node and set Operation to
appendOrUpdate. - Set Document to
[YOUR_ID]and Sheet toSheet1(valuegid=0). - Keep Mapping Mode as
autoMapInputDataso fields from prior nodes map automatically. - Credential Required: Connect your googleSheetsOAuth2Api credentials.
Step 3: Set Up Processing and AI Assessment
Normalize the request data, validate budget availability, and run AI analysis to enrich the request.
- In Normalize Request Data, keep the JavaScript Code as provided to standardize field names and defaults.
- In Verify Budget Availability, keep the budget and training catalog logic intact to calculate
budgetAvailableandbudgetUtilization. - In AI Training Assessment, set the Text prompt to the provided expression that injects request data and budget context.
- Ensure OpenAI Chat Engine is connected as the language model for AI Training Assessment; Credential Required: Connect your openAiApi credentials on OpenAI Chat Engine.
- In Capture AI Output, set aiAnalysis to
{{ $json.output }}to store the LLM response. - In Combine Assessment Data, keep the parsing logic that converts
aiAnalysisinto structured fields and setsrequiresApproval.
Step 4: Configure Decision Logic and Email Actions
Route requests based on approval requirements and send the appropriate notifications.
- In Approval Decision Gate, set the condition to
{{ $json.requiresApproval }}and keep the operator as is true. - Configure Email Manager Approval with Send To set to
{{ $json.managerEmail }}and keep the full message template and subject expression{{ $json.employeeName }} - {{ $json.trainingTopic }}. - Configure Dispatch Rejection Notice with Send To set to
{{ $('Form Submission Trigger').item.json['Employee Email'] }}and keep the rejection message template. - Configure Send Employee Acknowledgement with Send To set to
{{ $('Form Submission Trigger').item.json['Employee Email'] }}and keep the acknowledgement message template. - Credential Required: Connect your gmailOAuth2 credentials for Email Manager Approval, Dispatch Rejection Notice, and Send Employee Acknowledgement.
Step 5: Confirm Execution Flow to the Log Sheet
Validate the node connections to ensure requests end in your Google Sheet.
- Verify the main path connects Form Submission Trigger → Normalize Request Data → Verify Budget Availability → AI Training Assessment → Capture AI Output → Combine Assessment Data → Approval Decision Gate.
- Confirm Approval Decision Gate routes to Email Manager Approval (true) and Dispatch Rejection Notice (false).
- Ensure both Email Manager Approval and Dispatch Rejection Notice connect into Send Employee Acknowledgement.
- Confirm Send Employee Acknowledgement connects to Update Training Log Sheet to record every request outcome.
Step 6: Test and Activate Your Workflow
Run a full test from Jotform through to Gmail and Google Sheets, then activate the workflow for production use.
- Click Test workflow and submit a sample Jotform request.
- Confirm that Email Manager Approval or Dispatch Rejection Notice sends based on
{{ $json.requiresApproval }}, and that Send Employee Acknowledgement is sent. - Verify Update Training Log Sheet appends or updates a row in
Sheet1. - When successful, toggle Active to enable ongoing automation.
Common Gotchas
- Gmail credentials can expire or need specific permissions. If things break, check the Gmail node credential status in n8n (and confirm the right Google account is connected) first.
- Google Sheets failures are often a spreadsheet ID or sheet name mismatch. Confirm the “Training_Requests” tab exists and the workflow points to the correct Google Sheet before you chase anything else.
- OpenAI prompts that are left generic create generic recommendations. Add your company training policy, preferred vendors, and “what good looks like” into the AI Training Assessment step or you’ll be editing every summary.
Frequently Asked Questions
About an hour if your Jotform, Gmail, and Google Sheets are ready.
No. You will connect accounts and adjust a few rules and prompts inside n8n.
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.30-0.60 per request.
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, and it’s a common tweak. You can add another decision branch after the Approval Decision Gate so requests above a threshold (say, high-cost courses) route to a director or VP. Many teams also customize the AI Training Assessment prompt to reflect internal policy, preferred vendors, and what counts as “mandatory” vs “nice to have.” If you want tighter control, log a separate “approval stage” column in Google Sheets so reporting stays clean.
Usually it’s the wrong spreadsheet ID, the “Training_Requests” sheet name doesn’t match, or the connected Google account doesn’t have edit access. Update the credential in n8n and confirm the sheet is shared correctly. If it still fails, check for changed column headers or protected ranges that block writes.
A lot—this is mainly limited by your n8n plan, your server (if self-hosted), and OpenAI rate limits.
For AI-heavy approvals, n8n is usually the better fit because you can keep the logic in one place, branch as much as you need, and self-host if volume grows. Zapier and Make can absolutely do Jotform + Google Sheets, but the moment you want richer decisioning (budget rules, AI summaries, different email paths), costs and complexity tend to rise. Another practical point: n8n workflows are easier to document internally since the logic is visible end-to-end. If your process is a simple “log to a sheet and notify,” you might not need n8n. If you want a repeatable governance trail, n8n shines. Talk to an automation expert if you’re not sure which fits.
Once this is in place, training requests stop being an inbox project and start becoming clean data you can act on. Set it up, tune the rules, and let the workflow do the repetitive part.
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.