Weekly
Back up your Zendesk tickets every week
Each week you get a CSV of the tickets that changed, so you have your own copy.
- Runs
- Weekly
- Apps
- Zendesk
- AI
- Not needed
- Access
- read (admin for incremental export)
Send this to your assistant
Create a ClickRuntime automation: every Sunday night, export the Zendesk tickets that changed this week to a CSV and email it to me.
First time? Adding ClickRuntime to your assistant takes about two minutes.
Why use it
Why teams use this automation
Zendesk keeps tickets, but plenty of companies still want an independent copy: for an audit, a data migration, a contract requirement or just peace of mind. Full exports are a manual process requiring an admin to click through, download and file the result, so the backup happens every few months, if at all. A closed account or an accidental bulk deletion would leave huge gaps.
Each week, only tickets that changed since the last export are fetched using Zendesk's incremental export, which works from a cursor. They are assembled into a CSV with columns such as ID, subject, status and dates, and the file is emailed or linked to you. The cursor is stored so the next run starts exactly where this one finished.
Good for operations and compliance owners who need a regular archive.
What you get out of it
A copy outside Zendesk
A weekly file means that if a bulk deletion or an account problem happens, you lose at most a week of history. Rebuilding from files is slow, but it is possible, which beats having nothing at all.
Audit requests answered quickly
Auditors and customers ask for ticket history at unpredictable times. With files on hand, a request that would have taken a day of exporting becomes a few minutes of searching your archive.
Small, efficient files
Because the cursor starts each run where the last one ended, each file holds only changed tickets. Files stay small and quick to open, and you avoid storing the same tickets over and over.
No admin chore to forget
A quarterly manual export is the sort of task that gets skipped under pressure. A weekly job runs whether or not anyone remembers, so the archive does not depend on one person's diary.
Smoother migration later
If you ever move to another help desk, the files form a structured history ready to import. You avoid a rushed bulk export during a transition, when time is shortest.
Peace of mind for owners
Knowing a copy of your support history sits outside the vendor reduces risk for compliance owners and makes vendor reviews calmer, because you are not wholly dependent on one system.
How it works
What happens, step by step
Once a week, ClickRuntime collects every Zendesk ticket that changed since the last backup.
It builds a CSV with each ticket's number, subject, status, priority and dates.
You get the CSV by email, and the automation remembers where it stopped so next week's backup picks up from there.
Before it runs live
- Connect Zendesk
What you get
Build your own
Need it to work differently?
Your own rules
Conditions, thresholds, filters and exceptions, written the way you'd explain them to a colleague.
Any number of apps
One automation can read from one app and update several others. Over 248 apps are ready, and anything with an API works too.
AI where it helps
Summaries, classification, extraction and drafts use ClickRuntime's built-in AI, with no extra key.
On a schedule or on each event
Runs as often as every 5 minutes, or the moment an app sends an event, and keeps track of what it already handled.
Changes you can ask for
- Run it at a different time, more or less often, or only on weekdays
- Add an AI step, for example to summarize, sort or draft a reply
- Add another app, for example also send it to Slack
- Combine it with other Zendesk steps into one automation
Under the hood
The code that runs this automation
import csv, io, time
from clickruntime import on_trigger, http, credentials, notify
ZD = "https://yourcompany.zendesk.com/api/v2"
AGENT_EMAIL = "you@yourcompany.com"
def zd(method, path, **kw):
r = http.request(method, f"{ZD}{path}", auth=(f"{AGENT_EMAIL}/token", credentials.secret("ZENDESK_API_TOKEN")), **kw)
r.raise_for_status()
return r.json() if r.content else None
@on_trigger
def run(event):
params = {"start_time": int(time.time()) - 7 * 86400}
tickets = []
while True:
page = zd("GET", "/incremental/tickets/cursor.json", params=params)
tickets += page["tickets"]
if page["end_of_stream"]:
break
params = {"cursor": page["after_cursor"]}
out = io.StringIO()
w = csv.writer(out)
w.writerow(["id", "subject", "status", "priority", "created_at", "updated_at"])
for t in tickets:
w.writerow([t["id"], t["subject"], t["status"], t["priority"], t["created_at"], t["updated_at"]])
notify.email_me(f"Zendesk export: {len(tickets)} tickets changed this week", out.getvalue())
return {"tickets": len(tickets)}FAQ
Common questions
Does the export include comments and attachments?
What if the cursor gets lost?
Which Zendesk plans allow incremental export?
What permissions does it need?
Does it need AI?
How many runs does it use?
Can I change how it works?
Related
You might also like
Get a daily Zendesk ticket report
Each morning you see how many tickets came in and got solved yesterday, and what's still open by priority.
See how it worksGet a morning list of tickets open for over 3 days
Each morning you see which tickets have been waiting too long, grouped by assignee.
See how it worksSolve pending tickets after 2 weeks of silence
Tickets waiting on a customer who never replied are solved automatically, and you get the list.
See how it worksKeep exploring
Set up “Back up your Zendesk tickets every week” from your assistant
Copy the prompt above, or connect your assistant first. Free plan, no credit card.