All specs
operationsmedium complexity

Help Desk & Customer Support

Capture, route, and resolve customer issues across email, chat, and knowledge base with SLA enforcement, CSAT measurement, and agent tooling.

Options

Platform Approach*

A commercial help-desk SaaS handles ticketing, routing, macros, reporting, and agent UI.
Run an OSS help desk yourself — same feature shape as managed platforms, no per-seat fees.
Tickets live as first-class entities in your own database; support UI is part of the product.

Support Channels*

Inbound email creates tickets; replies thread by Message-ID / References headers.
Embedded messenger with context about the signed-in user, current page, and plan.
Searchable articles for self-serve answers, indexed by Google.
Dedicated subdomain (help.example.com) with KB + ticket submission — not embedded in product.

Ticket Routing Strategy*

Classifier (rule-based or ML) assigns tickets to billing, technical, onboarding queues.
Tickets distributed evenly regardless of content.
Enterprise customers routed to senior agents or dedicated queue; free users into shared pool.

Quality & Governance

Per-priority response and resolution targets; auto-escalate or notify managers on breach.
One-click survey sent after ticket close; aggregate scores per agent and topic.
Attach the user session, recent events, and feature-flag state to each ticket.
Agent-managed library of templated replies with variables.
LLM drafts a reply from ticket + KB context; agent edits and sends.

Decision Points

Bundled platform (Intercom, Zendesk) or build in-app?

If yes

Start on a managed platform — you will not beat Zendesk on ticketing UX in under a year. Revisit only when seat cost or product-integration needs dominate.

If no

Build in-app only when support is a core product workflow (Plain/Linear model). Budget accordingly for macros, SLAs, CSAT, and reporting.

Email-based, chat-based, or both channels?

If yes

Ship both: email for async B2B, in-app chat for logged-in users hitting issues. They serve different personas and you will need both within six months.

If no

Start with email if you cannot staff chat response during business hours. A slow chat widget is worse than no chat widget.

Public knowledge base alongside tickets?

If yes

Ship a public KB early — it doubles as SEO and deflects the FAQ tier of tickets. Seed it from macros and resolved-ticket summaries.

If no

Skip only if your product is in early private beta and every support interaction is a learning opportunity worth a human reply.

In-product chat widget or separate support site?

If yes

In-product is the higher-conversion choice — session context is free and users never context-switch. Use the separate site only as a fallback for logged-out users.

If no

Separate support site makes sense when logged-out issues (billing, access) are a meaningful share of volume.

Route tickets by topic, team, or round-robin?

If yes

Topic/team routing as soon as agents specialize. A classifier on subject + body (rule-based works) routes to billing, technical, onboarding queues.

If no

Round-robin is fine when all agents are cross-trained and volume is low. Graduates to topic routing once specialization emerges.

Enforce SLAs with auto-escalation on breach?

If yes

Required for any plan sold with a response-time commitment. Escalate on breach to a manager channel, not just a label change.

If no

Internal-only soft targets are fine for self-serve products. Revisit once enterprise contracts appear.

CSAT / NPS survey after resolution?

If yes

One-click CSAT on ticket close. Aggregate per agent (coaching signal) and per topic (product signal). NPS quarterly on active users is separate.

If no

Only skip if volume is too low for statistical signal — below ~50 tickets/week CSAT is noise.

Agents see user session context (replays, logs)?

If yes

Attach session replay, recent events, plan, and feature flags to each ticket. Cuts the 'what did you click?' loop that dominates first-response time.

If no

Agents will ask for reproduction steps manually — acceptable for low-volume B2B, painful at consumer scale.

Tiered priority by plan (enterprise first)?

If yes

Separate enterprise queue with dedicated senior agents; free-tier queue handled on best-effort. Enforce via routing rules, not agent discretion.

If no

Flat queue is fair and simpler — viable until enterprise SLAs exist.

AI-assisted reply drafts for agents?

If yes

Draft-with-human-review is the safe pattern — LLM suggests a grounded reply using your KB, agent edits. Never auto-send on policy questions (refunds, warranties).

If no

Canned responses alone cover most volume and carry no hallucination risk.

Shared inbox or per-agent queues?

If yes

Shared inbox with assignment on pickup — scales better, prevents tickets from rotting in a vacationing agent queue. Track ownership via assignment events.

If no

Per-agent queues only make sense for named-account coverage (named CSM per enterprise account).

Canned responses / macros managed by agents?

If yes

Let agents propose macros; a lead reviews and publishes. Review the macro library monthly — stale macros ship wrong policy.

If no

Pure ad-hoc replies are fine below ~20 tickets/day. Past that, repetition is costing you real time.

Multi-language ticket routing?

If yes

Detect language on inbound (Google Cloud Translate or CLD3) and route to language-matched agent pools. Fall back to machine translation with a disclosure banner.

If no

English-only with a canned "we only support English" response is acceptable for B2B early on — revisit once >10% of inbound is non-English.

Integrate with public status page?

If yes

Link the status page in the chat widget and ticket submission form. During incidents, an acknowledged status page deflects 50%+ of duplicate tickets.

If no

Acceptable only if you have no incidents worth broadcasting — every production service should eventually have one.

Export ticket data for analytics / BI?

If yes

Use the platform API or a Fivetran connector to pipe tickets into your warehouse. Support metrics (CSAT, time-to-resolve, topic volume) belong next to product metrics.

If no

The platform dashboards are sufficient at early stage — revisit when cross-team reporting (support x product x revenue) matters.

Tradeoffs

CostManaged platform chosen

Fast time-to-value but per-seat cost balloons past 20 agents and macros/workflows are vendor-locked

UXIn-app chat widget enabled

Expected response latency drops to minutes — implies live staffing during business hours

CostPublic KB published

Ticket volume drops 30-60% as self-serve answers deflect questions

ComplexitySession-context handoff enabled

First-response latency drops but requires ingesting replays/logs into the ticket platform

Dependencies

user-system

Implementation Examples

Intercom

In-app messenger + help desk with strong session context and AI-assist (Fin) built in.

Zendesk

Incumbent ticketing platform — deepest reporting, SLA, and workflow capabilities.

Plain

Developer-first support built around a customer-request object model — tight product integration.

Chatwoot

Open-source help desk; self-host for data residency or seat-cost reasons.

Freshdesk

Mid-market ticketing with tiered pricing — common choice for SMB and mid-size support teams.