Zendesk + Google Sheets: track pending ticket follow ups
Pending Zendesk tickets don’t usually explode. They just quietly age until a customer chases you, someone scrambles, and the “quick check” turns into a messy thread hunt.
This is where support leads lose evenings, but CS managers and ops-minded founders feel it too. With Zendesk follow up automation, you get a dependable log in Google Sheets plus ready-to-send emails, so nothing gets forgotten.
Below you’ll see exactly how the workflow runs each day, what it produces, and what changes once you stop tracking pending tickets by memory.
The Problem: Pending Tickets Don’t Manage Themselves
“Pending” is a weird Zendesk status. It’s not new, so it doesn’t show up in the same fire-drill views. It’s not solved either, which means customers still expect progress. And because pending tickets often need a follow-up (a status update, a missing detail, a “we’re still on it”), they quietly pile up. After a few days, you’re scanning views, sorting by age, opening tabs, copying ticket links, and trying to remember who owns what. Multiply that by a team, a weekend, or a holiday. You can guess what happens next.
It adds up fast. Here’s where it breaks down in real teams.
- Someone “will get to it tomorrow,” and tomorrow becomes next week because there’s no daily accountability.
- Ticket ownership gets fuzzy, so the same customer gets two different updates or none at all.
- Manual reporting takes about 1 hour a day once you include checking views, copying data, and updating a spreadsheet.
- Follow-up emails are inconsistent, which means more back-and-forth and more time spent rewriting the basics.
How This Automation Works
The full n8n workflow, from trigger to final output:
n8n Workflow Template: Zendesk + Google Sheets: track pending ticket follow ups
flowchart LR
subgraph sg0["Flow 1"]
direction LR
n0@{ icon: "mdi:cog", form: "rounded", label: "Schedule Trigger", pos: "b", h: 48 }
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/zendesk.svg' width='40' height='40' /></div><br/>Get Pending Tickets"]
n2@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Filter Pending Tickets", 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/code.svg' width='40' height='40' /></div><br/>Format Ticket Data"]
n4@{ icon: "mdi:database", form: "rounded", label: "Log to Google Sheets", 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/clickup.svg' width='40' height='40' /></div><br/>Create ClickUp Task"]
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/>Generate Follow-up Emails"]
n7@{ icon: "mdi:message-outline", form: "rounded", label: "Send Follow-up Email", pos: "b", h: 48 }
n0 --> n1
n3 --> n4
n3 --> n6
n1 --> n2
n4 --> n5
n2 --> n3
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 n2 decision
class n4 database
class n3,n6 code
classDef customIcon fill:none,stroke:none
class n1,n3,n5,n6 customIcon
The Solution: Daily Zendesk Follow-Ups Logged, Assigned, and Sent
This workflow runs on a schedule (Mon–Fri at 8 PM) and checks Zendesk for tickets that are still sitting in “pending.” It filters out everything else, then cleans and transforms the ticket records so they’re actually useful in a review: ticket age, priority, attention flags, links, tags, and the fields your team cares about. Next, it logs those tickets into a Google Sheet so you have a running history instead of a one-time screenshot of a view. From there, it creates ClickUp tasks so each pending ticket has an owner and a reminder. Finally, it composes professional HTML follow-up emails, groups them by customer, and sends them via Gmail with the right ticket context included.
The workflow starts with a scheduled trigger and a Zendesk pull. After processing, it splits into two useful outputs: a clean Google Sheets log for tracking and reporting, plus customer-friendly follow-up emails that go out without you rebuilding the message every time.
What You Get: Automation vs. Results
| What This Workflow Automates | Results You’ll Get |
|---|---|
|
|
Example: What This Looks Like
Say your team ends each day with 25 pending tickets that need some kind of follow-up. Manually, if you spend maybe 5 minutes per ticket to open it, grab details, update a tracker, and draft an email, that’s about 2 hours nightly. With this workflow, you spend a couple minutes checking the Google Sheet and the ClickUp task list, then only jump into the tickets that truly need human judgment. The rest (logging and the “status update” email) is already handled.
What You’ll Need
- n8n instance (try n8n Cloud free)
- Self-hosting option if you prefer (Hostinger works well)
- Zendesk to fetch pending tickets daily
- Google Sheets to store a clean ticket log
- ClickUp API credentials (get it from ClickUp Settings → Apps)
Skill level: Intermediate. You’ll connect accounts, add IDs (Sheet and ClickUp list), and test with real tickets.
Don’t want to set this up yourself? Talk to an automation expert (free 15-minute consultation).
How It Works
Daily schedule trigger. The workflow runs automatically on weekdays at 8 PM, so you get a consistent end-of-day sweep without anyone remembering to do it.
Zendesk pending ticket pull and filtering. n8n retrieves tickets from Zendesk, then keeps only the ones in pending status. That means you’re working from the actual backlog, not a noisy export.
Ticket cleanup and enrichment. The workflow transforms each record by standardizing fields and calculating the practical signals your team uses to prioritize (age and attention flags). This is also where you can align the output with your process.
Sheets log, ClickUp tasks, and Gmail follow-ups. Every pending ticket is written to Google Sheets for visibility, then a ClickUp task is created so there’s ownership. Finally, Gmail sends a grouped, professional follow-up email per customer with ticket details included.
You can easily modify the schedule and the email wording to match your support hours and brand voice based on your needs. See the full implementation guide below for customization options.
Step-by-Step Implementation Guide
Step 1: Configure the Scheduled Trigger
Set when the workflow runs to pull pending tickets automatically.
- Add the Scheduled Run Trigger node as your trigger.
- Set Trigger Times to a custom cron schedule and use
0 0 20 * * 1-5to run at 8:00 PM on weekdays. - Connect Scheduled Run Trigger to Retrieve Pending Tickets as shown in the workflow.
Step 2: Connect Zendesk and Filter Pending Tickets
Fetch pending Zendesk tickets and only pass through items with a pending status.
- Open Retrieve Pending Tickets and set Operation to
getAlland Return All totrue. - Set Options → Status to
pending. - Credential Required: Connect your zendeskApi credentials.
- In Validate Pending Status, set the condition Left Value to
{{ $json.status }}, Operation toequals, and Right Value topending. - Connect Retrieve Pending Tickets → Validate Pending Status → Transform Ticket Records.
pending.Step 3: Set Up Ticket Transformation and Parallel Processing
Format ticket data and branch into logging and email generation.
- In Transform Ticket Records, keep the provided JavaScript code to format tickets, build URLs, and calculate
ticket_age_hoursandneeds_attention. - Confirm the output includes fields like
ticket_id,ticket_url,subject, andpriority_levelfor downstream nodes. - Transform Ticket Records outputs to both Update Sheet Log and Compose Follow-up Emails in parallel.
Step 4: Configure Logging and Task Creation
Log each ticket in Google Sheets and create ClickUp tasks for operational tracking.
- Open Update Sheet Log and set Operation to
appendOrUpdate. - Set Document to
[YOUR_ID]and Sheet togid=0(Pending Tickets). - Map columns to expressions such as Ticket ID =
{{ $json.ticket_id }}, Ticket URL ={{ $json.ticket_url }}, and Needs Attention ={{ $json.needs_attention }}. - Credential Required: Connect your googleSheetsOAuth2Api credentials.
- Configure Generate ClickUp Task with List, Team, and Space set to
[YOUR_ID], and set Name to{{ $json.subject }}. - In Generate ClickUp Task, set Additional Fields → Tags to
{{ $json.tags }}, Status toto do, Due Date to{{ $json.created_timestamp }}, and Priority to{{ $json.priority_level }}. - Credential Required: Connect your clickUpApi credentials.
Step 5: Generate and Send Follow-up Emails
Build HTML follow-up emails and send them via Gmail.
- In Compose Follow-up Emails, keep the JavaScript that groups pending tickets by requester and generates HTML content.
- Update placeholders in the code like
[YOUR_EMAIL]andhttps://[YOUR_ID].zendesk.com/hc/en-usto your real values. - In Dispatch Follow-up Email, set To to
{{ $json.to }}, Subject to{{ $json.subject }}, and HTML Message to{{ $json.html }}. - Enable Include HTML and keep the plain text Message as a fallback.
- Credential Required: Connect your gmailOAuth2 credentials.
{{ $json.html }}.Step 6: Test and Activate Your Workflow
Validate data flow end-to-end and enable the scheduled run.
- Click Execute Workflow to run a manual test.
- Confirm Retrieve Pending Tickets returns items and Validate Pending Status passes them through.
- Verify Update Sheet Log appends/updates rows and Generate ClickUp Task creates tasks.
- Check that Dispatch Follow-up Email sends messages with populated HTML content.
- Toggle the workflow to Active to enable the scheduled automation.
Common Gotchas
- Zendesk credentials can expire or need specific permissions. If things break, check your Zendesk API token status and role 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.
- Default prompts in AI nodes are generic. Add your brand voice early or you’ll be editing outputs forever.
Frequently Asked Questions
About 45 minutes if your Zendesk, Sheets, ClickUp, and Gmail accounts are already ready to connect.
No. You’ll mainly connect credentials and paste in a few IDs (like your Google Sheet and ClickUp list).
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 ClickUp and Zendesk plan limits, plus Gmail sending limits on your Google account.
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 should. You can edit the “Compose Follow-up Emails” step to match your tone, add your signature, and include company-specific next steps; many teams also add a short “what we need from you” block to reduce replies that don’t move the ticket forward. If you want AI-written wording, swap in an AI Agent step to draft the email text per ticket, then keep the HTML wrapper consistent for branding. Common customizations include changing the schedule, routing VIP customers to a different sender, and only emailing tickets older than a certain age.
Usually it’s an expired API token or a permission issue on the Zendesk side. Regenerate the token, confirm the integration user has read access to tickets, then re-save the credentials in n8n. If it fails only on busy days, you may be hitting rate limits, so reduce the number of tickets pulled per run or add brief delays between requests.
For most small teams, hundreds per day is fine, assuming your Zendesk and Gmail limits allow it and your n8n instance has enough resources.
For this workflow, n8n has a few advantages: more complex logic with unlimited branching at no extra cost, a self-hosting option for unlimited executions, and easier handling of multi-step transformations (like grouping tickets by customer for one email). Zapier or Make can absolutely do parts of it, but grouped HTML emails plus a clean Sheets log plus ClickUp tasks often turns into multiple zaps/scenarios and higher run costs. Honestly, the biggest difference is control: n8n lets you shape the data exactly once and reuse it across Sheets, tasks, and email. If you’re not sure which fits your setup, Talk to an automation expert.
Once this is running, pending tickets stop being a vague worry in the back of your mind. The workflow keeps the log, the reminders, and the follow-ups moving so your team can focus on actual problem-solving.
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.