Zendesk + Google Sheets: build a living KB list
Your knowledge base doesn’t fall behind because your team is lazy. It falls behind because the raw material is trapped in Zendesk tickets, and nobody has time to copy, clean, and sort them.
Support leads see it when “quick answers” turn into long threads. Ops managers feel it when the same issue keeps resurfacing. And if you run a small SaaS, you’re probably doing this yourself. This Zendesk Sheets sync turns tagged “howto” tickets into a living, searchable list you can actually use.
You’ll learn what the workflow does, how the parts fit together, what you need before you start, and the common places these automations usually break.
How This Automation Works
Here’s the complete workflow you’ll be setting up:
n8n Workflow Template: Zendesk + Google Sheets: build a living KB list
flowchart LR
subgraph sg0["When clicking 'Execute workflow' Flow"]
direction LR
n0@{ icon: "mdi:play-circle", form: "rounded", label: "When clicking 'Execute workf..", pos: "b", h: 48 }
n2@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Filter HowTo Tickets Only1", pos: "b", h: 48 }
n3["<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/zendesk.svg' width='40' height='40' /></div><br/>Get Requester User Info1"]
n4@{ icon: "mdi:database", form: "rounded", label: "Update Knowledge Base Sheet1", pos: "b", h: 48 }
n5["<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/zendesk.svg' width='40' height='40' /></div><br/>Fetch All Zendesk Tickets1"]
n9["<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/>Success Summary1"]
n10@{ icon: "mdi:database", form: "rounded", label: "Log Successful Execution1", pos: "b", h: 48 }
n9 --> n10
n3 --> n4
n5 --> n2
n2 --> n3
n4 --> n9
n0 --> n5
end
subgraph sg1["Error Flow"]
direction LR
n1@{ icon: "mdi:play-circle", form: "rounded", label: "Error Trigger", 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/>Format Error Details1"]
n7@{ icon: "mdi:database", form: "rounded", label: "Log Error to Sheet1", pos: "b", h: 48 }
n8@{ icon: "mdi:message-outline", form: "rounded", label: "Send Error Notification1", pos: "b", h: 48 }
n1 --> n6
n7 --> n8
n6 --> n7
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,n1 trigger
class n2 decision
class n4,n10,n7 database
class n9,n6 code
classDef customIcon fill:none,stroke:none
class n3,n5,n9,n6 customIcon
Why This Matters: Knowledge Base Updates Get Skipped
Support tickets are basically free documentation research. Customers tell you what confused them, what broke, what they tried, and what finally worked. But turning that into a clean knowledge base entry is annoying work. Someone has to find the right tickets, pull out the key details, remove personal info, and keep a running list without duplicates. Do that manually and it steals the time you wanted for improving onboarding, writing real docs, or just clearing the queue. Worse, the KB drifts out of date, so customers submit even more tickets. It’s a loop.
It adds up fast. Here’s where it usually breaks down in real teams:
- Tagged “howto” tickets stay buried in Zendesk views, so you never build a reliable backlog of doc ideas.
- Copy-pasting into a spreadsheet causes messy fields, missing context, and inconsistent naming across rows.
- Duplicates creep in because two agents describe the same issue slightly differently, and nobody notices until later.
- When an automation fails silently, you find out weeks later when the sheet is stale.
What You’ll Build: A “How-To Ticket” Sheet That Updates Itself
This workflow pulls your Zendesk tickets, selects only the ones tagged howto, enriches each ticket with requester details, then saves the result into Google Sheets in a clean, structured format. You can run it manually while you’re setting it up, then switch it to a schedule so it checks daily or weekly without you touching anything. A smart “append or update” approach prevents duplicates by matching on the description, so your sheet stays tidy as tickets evolve. When everything finishes, the workflow compiles a short success summary and logs it. If something fails, it captures the error payload, records an error log to Google Sheets, and sends an email so you don’t miss it.
The workflow starts with a manual run (or a schedule you add later) and fetches all Zendesk tickets. Next, it filters down to the “howto” tag and looks up the requester profile for extra context. Finally, it syncs a row into Google Sheets, then writes a success or failure log so you have a clear audit trail.
What You’re Building
| What Gets Automated | What You’ll Achieve |
|---|---|
|
|
Expected Results
Say you get about 20 “howto” tickets a week. Manually, even a quick pass is maybe 6 minutes per ticket to find it, copy fields, look up the requester, and avoid duplicates, which is roughly 2 hours weekly. With this workflow, you spend about 10 minutes to review the sheet after a run and pick the best topics for documentation. The “work” becomes choosing what to write, not doing data entry.
Before You Start
- n8n instance (try n8n Cloud free)
- Self-hosting option if you prefer (Hostinger works well)
- Zendesk for ticket data and requester profiles.
- Google Sheets to store and dedupe the KB candidate list.
- Zendesk API credentials (create an API token in Zendesk Admin).
Skill level: Beginner. You’ll connect accounts, map a few fields, and test one run end-to-end.
Want someone to build this for you? Talk to an automation expert (free 15-minute consultation).
Step by Step
A manual run (or schedule) starts the sync. In the template, you’ll click “Execute Workflow” to test. In production, most teams switch this to run once per day so the sheet stays fresh.
Zendesk tickets are pulled, then filtered by tag. The workflow retrieves all available tickets and checks each one for the “howto” tag. Tickets that don’t match are ignored, so your sheet isn’t polluted with billing issues, bugs, or internal notes.
Requester context is added. For each “howto” ticket, it fetches the requester profile (name and email), which makes the row more useful when you’re trying to understand who struggled and why.
Google Sheets is updated, then runs are logged. The workflow syncs clean fields like ticket number, description, status, tag, owner name, and requester details, then writes a success log entry. If anything fails, it writes an error log and sends an email notification so you can fix it quickly.
You can easily modify the tag filter to capture other categories (like “bug” or “feature-request”) based on your needs. See the full implementation guide below for customization options.
Step-by-Step Implementation Guide
Step 1: Configure the Manual Trigger
Start the workflow with a manual trigger to validate the sync logic before automating it.
- Add or open Manual Run Starter and leave the default settings (no parameters required).
- Confirm the execution flow starts at Manual Run Starter and routes to Retrieve All Zendesk Tickets.
- Leave Flowpast Branding as-is since it’s a documentation note only.
Step 2: Connect Zendesk
Pull Zendesk tickets and requester profiles to identify knowledge base candidates.
- Open Retrieve All Zendesk Tickets and set Operation to
getAllwith Return All enabled (true). - In Retrieve Requester Profile, set Resource to
user, Operation toget, and ID to{{ $json.requester_id }}. - Credential Required: Connect your zendeskApi credentials in both Retrieve All Zendesk Tickets and Retrieve Requester Profile.
Step 3: Set Up Tag Filtering and Processing
Filter tickets by tag before syncing them to the knowledge base sheet.
- Open Tag Filter Check and confirm the condition compares Left Value
{{ $json.tags[0] }}to Right Valuehowto. - Verify the flow runs Retrieve All Zendesk Tickets → Tag Filter Check → Retrieve Requester Profile.
{{ $json.tags[1] }}).Step 4: Configure Knowledge Base Sync and Success Logging
Write tagged tickets and requester details into Google Sheets and log successful runs.
- Open Sync Knowledge Sheet and set Operation to
appendOrUpdate. - Set Document to
[YOUR_ID]and Sheet to[YOUR_ID](Sheet name resolves toSheet1in the example). - Ensure column mappings use these expressions: Tag
{{ $('Tag Filter Check').item.json.tags[0] || 'No tags' }}, email{{ $json.email }}, owner{{ $json.name }}, Status{{ $('Tag Filter Check').item.json.status }}, Ticket No.{{ $('Tag Filter Check').item.json.id }}, Description{{ $('Tag Filter Check').item.json.description }}. - In Compile Success Summary, keep the default JavaScript to generate the summary payload.
- Open Record Success Log and set Operation to
appendwith fields like Status{{ $json.status }}and Tickets Processed{{ $json.ticketsProcessed }}. - Credential Required: Connect your googleSheetsOAuth2Api credentials in Sync Knowledge Sheet and Record Success Log.
[YOUR_ID] placeholders with your actual Google Sheet document and sheet IDs, or the append/update will fail.Step 5: Add Error Handling
Capture workflow failures, log them to Sheets, and notify via email.
- Ensure Failure Catcher is present and connected to Format Failure Payload.
- In Format Failure Payload, keep the JavaScript that formats the error data for logging.
- Open Record Error Log and set Operation to
appendwith field mappings like Error Message{{ $json.errorMessage }}and Stack Trace{{ $json.stackTrace }}. - Configure Dispatch Error Email with Subject
🚨 Knowledge Base Workflow Error - {{ $json.nodeName }}, To Email[YOUR_EMAIL], and From Email[YOUR_EMAIL]. - Credential Required: Connect your googleSheetsOAuth2Api credentials in Record Error Log.
[YOUR_EMAIL] in Dispatch Error Email or error notifications will not be sent to the intended inbox.Step 6: Test and Activate Your Workflow
Run a full test to validate ticket retrieval, filtering, sheet sync, and logging.
- Click Execute Workflow in Manual Run Starter to run the workflow end-to-end.
- Confirm that tagged tickets appear in the sheet configured in Sync Knowledge Sheet and that Record Success Log appends a summary row.
- If you force an error, verify that Record Error Log appends a row and Dispatch Error Email sends a notification.
- When tests pass, toggle the workflow to Active to use it in production.
Troubleshooting Tips
- Zendesk credentials can expire or lack scopes for reading users. If it fails on requester lookups, check your Zendesk API token and account permissions first.
- Google Sheets updates fail more often than people expect because of sheet name changes or protected ranges. Confirm the spreadsheet, tab name, and sharing access are still correct.
- Error emails sometimes never arrive if your SMTP/Gmail settings are incomplete. Run one forced failure and confirm the email node can send before you rely on it.
Quick Answers
About 30 minutes if your Zendesk and Google accounts are ready.
No. You’ll connect Zendesk and Google Sheets, then map a few fields.
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 Zendesk plan access for API usage.
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 you probably should. You can change the tag filter to “bug,” “feature-request,” or a custom label your team uses in the Tag Filter Check step. You can also expand what gets written to Google Sheets by editing the Sync Knowledge Sheet field mapping (for example, add priority, assignee, or group). Common tweaks include syncing only “solved” tickets, splitting rows by product area, and writing to separate tabs per tag.
Usually it’s an expired or revoked API token. Regenerate your Zendesk API token, then update the credentials in n8n and re-run one ticket fetch to confirm it works. If the ticket pull succeeds but requester enrichment fails, your account may not have permission to read user profiles. Rate limiting can also show up if you’re pulling a very large ticket history, so consider running on a schedule and limiting to recent tickets if needed.
If you self-host n8n, there’s no execution limit (it mostly depends on your server and Zendesk API limits). On n8n Cloud, your monthly executions depend on plan, and this workflow typically runs once per scheduled sync plus any retries. Practically, most teams can process hundreds of “howto” tickets per run without issues, but very large Zendesk accounts may need to filter to a date range.
Often, yes, because this workflow benefits from branching logic (filtering, enrichment, logging, and error handling) that gets clunky in simpler tools. n8n also gives you the option to self-host, which matters when you want predictable costs. Another big win is visibility: logs in Google Sheets plus an error email make failures obvious. Zapier or Make can still be fine if you only need a lightweight “new ticket → add row” automation and you don’t care about dedupe or requester enrichment. If you’re unsure, Talk to an automation expert and we’ll pressure-test the best setup for your volume.
Once this is running, your “what should we document next?” list updates itself. Your team stops guessing and starts writing the answers customers keep asking for.
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.