Things I Wish I Knew Before Picking a Help Desk System

Things I Wish I Knew Before Picking a Help Desk System

Why your shared Gmail inbox isn’t a ticketing system (even if you color-coded it)

I used to work at a startup that had 3 support reps, all replying out of a single Gmail inbox. We used stars, labels, and color flags like they were some kind of sacred ritual. One guy even wrote a Chrome extension to auto-forward emails by keyword — which broke the day Gmail UI updated. That’s the moment I realized: we had built a house of cards with Sharpies and emoji.

A shared inbox gives you zero accountability. No ticket IDs, no audit trail, no SLAs. If someone says “I replied on Monday,” what are you gonna do, Ctrl+F “Monday” and hope for the best?

And try integrating that with anything? Good luck getting Zapier triggers that don’t randomly re-fire when a label is removed and re-added. I once had a tagging automation loop trigger 85 threads to all reassign back to tier 1 after closure. Felt like Whack-A-Mole with brain damage.

“Lightweight” tools become landmines when your team hits 5+ people

There’s this honeymoon phase with tools like HelpNinja, Groove, or even Trello “for support” where, at 2 or 3 agents, things kind of work. Internal notes stay readable, tagging makes sense, and SLA timers are more aspirational than enforced. But once scheduling gets messy — say one person goes on PTO and another switches to part-time — queue ownership chaos rolls in.

Suddenly nobody knows who’s on first, reply duplication goes up, and if you’re unlucky, someone starts replying from the wrong inbox logins (ask me how I know). Even worse, many of these tools don’t do sane escalation logic, so you end up with weird iframes feeding back into Slack DMs to track urgency. Please don’t do this. Just don’t.

Zendesk’s logic layers are powerfully flexible — and also a trap

Zendesk is like a Swiss Army chain saw. It’ll do anything, sure. After a while, though, you start to notice that maybe it’s doing too many things a bit too abstractly. You need to grok triggers, automations, macros, views, and business rules — all of which have subtle overlap and none of which tell you when they conflict.

One time, we had a bot close tickets for inactivity but also another workflow re-open tickets if a certain tag existed. Guess what happened when a user re-replied after 7 days: both rules fired, but in the wrong order. Ticket closed, re-opened, closed again. Three agents got the alert and started working it independently. It lived in triage purgatory for two weeks until someone opened the audit log.

Hard-won tips from the Zendesk mines:

  • Color-code your views, but also robot-name them (” Urgent – CSAT Under 80″) so nobody ignores filters
  • Never delete fields — retire and hide them, or you’ll kill historical views
  • Watch multi-brand setups like a hawk; miss one group permission, and agents quietly lose access until payday
  • Check the order of automations monthly — Zendesk doesn’t warn you on execution clashes
  • Deploy dummy tickets via API to test changes — don’t count on the sandbox matching prod

There’s actually a behavior gap where conditional fields render in agent view but don’t persist unless selected and deselected. Zendesk devs won’t admit this, but you can capture it happening by watching the JSON edit trail — sudden nulls for unclicked fields.

Freshdesk tries to be charming but loves to hide critical options

I weirdly liked Freshdesk at first. It’s prettier than most, and it lets you feel productive fast. But then you try to do something slightly nerdy like trigger a webhook when a tag is added and — surprise, that toggle lives three menus deep and names the action completely differently. There’s a dropdown labeled “Dispatch’r” (apostrophe and all) that controls part of your ticket routing logic. Great UI naming, gang.

Even the time tracking module has weird caveats. If two agents are editing the same ticket note, the timer freezes for one of them — but doesn’t notify either. Ask me how I learned that while reconciling a 14-hour log that should’ve been 3. That bug’s been quietly lingering since a 2021 update and, as far as I can tell, only shows up on Firefox when certain Grammarly extensions are running.

Jira Service Management: when developers run support tickets

If your dev team already worships Atlassian, then Jira Service Management (formerly Jira Service Desk) looks like the safe choice. But be aware: it inherits both the power and the user-hostility of Jira proper. You get SLAs, automations, and detailed logs — but admin work is… not novice-friendly.

Jira has this delightfully broken trait where, if a user edits the ticket summary mid-thread, it doesn’t notify agents unless you specifically set up automation to watch the field. I had a bug report that went stale for 10 days because someone added “URGENT – PROD DOWN” mid-title and we didn’t catch it. Technically it was ‘updated,’ but no alerts fired.

The workaround? Use a custom field for urgency, and never rely on pseudo-priority indicators in text. You can also abuse the API to trigger a Slack bot when certain RegEx matches hit ticket titles — but that’s definitely a hack, not a feature.

Re: threading in email-based help desks — HTML is lying to you

All roads lead to threading bugs eventually. Most help desks pretend to “thread” based on Ticket ID, Message-ID, or some magic combination of headers. But once you throw Outlook replies or forwarded Gmail chains into the mix, threading logic becomes fuzzy at best.

I had a client with a POP3-to-Zendesk connector where multiple replies got split into new tickets — despite identical headers. The actual problem? Their signature block had a sneaky image attachment that mutated the MIME boundary ever so slightly. It wasn’t until I compared raw headers over 50 tickets (ugh) that I caught it.

“Same message-id, different boundary hash — ticket becomes unthreaded. Zendesk shrugs.”

There’s no fix except to use inbox connectors that decode and normalize MIME parts, and even then you’re beholden to the client (Outlook 2019 on Windows is especially cursed). Emojis in subject lines can also split threads if the UTF handling isn’t locked — I’ve had cause ticket bifurcations. Skip the fireworks.

Bridge tools like Zapier or Workato work — until rate limits revenge

If you’re duct-taping your help desk into marketing or dev workflows, eventually someone sets up a Zap. Maybe it triggers on ticket tags. Maybe it posts CSAT feedback to Slack. Seems chill — until your API token starts getting 429s and you realize you’ve been polling every ticket field on a 1-minute cron for three months.

Rate limits are real. Zendesk has opaque limits based on plan tier, and Freshdesk flat out halts integrations after unknown burst levels. Worse, they don’t send clear error logs — your Zaps “run” but return blank payloads. Found that one out by watching timing drift in webhook response headers from the outbound logs.

Better practices if you’re hooking into other tools:

  • Batch updates instead of per-ticket calls (e.g. daily digest style)
  • Use ticket filters to limit trigger scope; don’t catch ALL new tickets
  • Log Zapier outputs to a Google Sheet with timestamps for sanity-checking
  • For Slack alerts, build your own listener that buffers events into summaries, not individual pings
  • Consider passing ticket state via URL params, not body JSON — faster to debug in logs

Undocumented edge: CSAT surveys often break if users reply too fast

There’s this weird quirk I’ve seen on both Zendesk and Freshdesk where, if a CSAT email is sent immediately after closure, and the user replies with feedback rapidly (like within 10 seconds), their score might not register. Some kind of email threading misfire — the system either prematurely logs the ticket back to “open” or counts the reply as a continuation rather than a survey response.

I replicated it once by setting up an alias email and replying with emoji CSAT responses via mobile Gmail. Out of 10 responses, 2 went missing — the logs just showed “update received, no state change.” CSAT never triggered. No official notes explain this behavior, but holding the CSAT send for even 30 seconds fixed it every time.

This might matter less if your volumes are low, but if you’re handpicking CSAT for QA or comp purposes, this kind of silent failure is brutal. Buffer your sends.

That time we lost access to our actual help desk (yes, really)

Last year someone accidentally removed our only admin from our own help desk system while cleaning up unused accounts. No admin, no password reset access, and of course no OAuth fallback because the backup login email was tied to a domain we’d already decommissioned.

Fun fact: Many platforms don’t let you promote users to admin unless an existing admin invites them. Catch-22. Zendesk requires a ticket submission from a verified domain email. Ours bounced. We ended up verifying our domain anew with DNS records, then begging support through the sales channel. It took four days.

Take a cold minute today and check:

  • Your non-primary admins — do they really still work there?
  • Whether an active admin has a backup email tied to a live domain
  • If you’re using OAuth-only (Google, Okta, etc), can you add a password login just in case?

This was the admin equivalent of locking your keys in your car while it’s running — during a live SaaS outage ticket surge weekend. Never again.

Similar Posts