<!-- Canonical URL: https://www.usebluehill.com/use-cases/support-teams -->
<!-- Source: https://www.usebluehill.com/use-cases/support-teams.md -->

# BlueHill for support teams

> How support teams run reactive ticket queues on BlueHill — SLA tracking, escalation paths, internal notes, CSAT surveys — without buying a separate help desk.

## What support teams need, and why most tools half-deliver

A support team's job is bounded by three things:

1. **Volume** — how many tickets land per agent per day.
2. **Latency** — how fast first-response and resolution happen.
3. **Quality** — CSAT, internal escalation rates, post-resolution churn.

Most support tools optimize one of these well. Few optimize all three without bolt-ons. BlueHill's bet: collapse the help desk, the internal-notes layer, the customer portal, the CSAT survey, and the time tracker into one record per customer — so context-switching disappears.

## The Ticket model in plain English

Every support ticket on BlueHill is a [`Ticket`](/features/ticketing) record with:

- A **status** drawn from a closed enum (OPEN, IN_PROGRESS, PENDING, WAITING_ON_CUSTOMER, RESOLVED, CLOSED)
- A **priority** (low / medium / high / urgent)
- One or more **assignees**
- **SLA fields**: `due_date`, `first_response_at`, `resolved_at`, `sla_breach_at`
- An **email_thread_id** so inbound replies thread cleanly
- **Tags** + **categories** for routing and analytics
- A **source** (email, portal, API, manual)
- A link to the **customer** (auto-enriched on inbound)

The fact that this lives inline next to the customer's onboarding state, time entries, and full interaction history is the whole point — your agent sees the full account context before responding.

## Reactive flow: an email arrives

1. **Inbound** — an email lands at `support@your-domain.com`.
2. **Routing** — BlueHill matches the sender to a customer (or creates one), creates a Ticket if no open thread exists, and attaches the email as an `EMAIL_INBOUND` interaction.
3. **Notification** — the on-call agent gets a webhook + in-app notification. SLA clock starts.
4. **Triage** — agent reads the ticket, adds tags/category, escalates priority if needed.
5. **Response** — agent replies via the ticket interface. The reply goes out as `EMAIL_OUTBOUND` via Resend with the original thread headers preserved.
6. **Internal context** — if the agent needs help, they leave an `INTERNAL_NOTE` and `@mention` a senior agent. The customer never sees it.
7. **Resolution** — agent moves status to RESOLVED. `resolved_at` stamps. A post-resolution CSAT [form](/features/forms) auto-sends.
8. **Activity timeline** — every state change appended to `task_activity` for audit + analytics.

## SLA dashboards that don't lie

The SLA dashboard pulls directly from the activity log:

- **First-response rate** — (tickets where `first_response_at - created_at < SLA target`) / total
- **Resolution rate** — same math against `resolved_at`
- **Breach distribution** — tickets where `sla_breach_at` is set, broken out by priority, by agent, by category

Because the math runs against the actual event log (not a separate SLA tracker), it's audit-proof. You can't fudge first-response by editing a spreadsheet — the event happened, or it didn't.

## Internal notes — the support team's superpower

Support escalations are 50% about coordinating internally, not about talking to the customer. BlueHill's [internal-notes layer](/features/team-collaboration) (`InteractionType.INTERNAL_NOTE`) is filtered out of every customer-facing query.

Real examples support teams cite:

- "Customer is on the legacy billing plan — be careful quoting new pricing"
- "Engineering says this is a known issue, ETA tomorrow's release"
- "This is the third ticket from them this month — let's get on a call"

These never leak. The filter is at the API layer, not the UI — it's not a "don't show this checkbox" toggle; the internal interactions never reach a portal query.

## Escalation paths

Three layers, mapped to the [role tiers](/features/team-collaboration):

1. **Tier-1 agent (Member role)** — handles the ticket, leaves internal notes.
2. **Tier-2 senior agent (Team role)** — `@mention`ed when tier-1 needs help. Has cross-customer visibility within the team.
3. **Manager** — full visibility across the support org, escalation owner for VIP customers, can reassign across teams.

The reassignment is logged. Time-to-escalation becomes a real metric.

## CSAT — from form to analytics

After resolution, a [form](/features/forms) (your CSAT template) is sent. Customer rates 1-5 + free-text. The submission lands as a `FormSubmissions` row linked back to the ticket and customer.

Roll-up views:
- **Agent CSAT** — average per agent
- **Category CSAT** — which categories drive bad reviews
- **Trend** — is CSAT improving month over month
- **Tickets with detractor responses** — automatically flagged for manager review

## A representative day

**9am**: queue review. Open the dashboard. 14 open tickets, 3 in WAITING_ON_CUSTOMER, 1 SLA-at-risk in the next 2 hours. Triage the at-risk one first.

**10am-12pm**: clear the queue. Most tickets resolve in 2-3 interactions. Internal notes capture decisions: "checked logs, reproduced, sent fix steps." Two tickets get `@mention`ed to engineering — the activity timeline records the handoff.

**1pm**: standup. The team dashboard shows yesterday's resolution rate, average first-response time, and any breached tickets. A 5-minute review surfaces the categories driving rework.

**Afternoon**: a customer escalates an outage. The Manager opens the customer record, sees the last six months of tickets, the active subscription, the executive sponsor on file. Calls the customer with full context — not "let me pull up your account."

**End of day**: log time entries (most auto-captured via the auto-stopwatch). The day's tickets are all in the activity log.

## Outcomes teams report

After 90 days on BlueHill (averaged across teams switching from a separate help desk + a separate CSM tool):

- **First-response time**: 4.2h → 1.6h
- **Resolution time (medium priority)**: 18h → 9h
- **CSAT**: 4.1 → 4.5
- **Internal-note ratio** (notes : customer replies): 0.7 → 1.6 (more team coordination, less leakage)
- **Tickets per agent per day**: 22 → 31

## Pricing for support teams

Most support teams land on **Professional** ($79/user/month) for SLA tracking, full status reports, CSAT forms, and the customer portal. Smaller teams (under 10 agents, mostly email-driven) can run on **Starter** ($29/user/month) and add the portal later.

[See pricing](/pricing) · [Read customer stories](/customers)

## What this replaces

Support teams arriving at BlueHill typically replace:
- A help desk (Zendesk, Freshdesk, Intercom, Help Scout)
- A CSAT survey tool (Delighted, SurveyMonkey)
- A separate "internal handoff" channel (Slack DMs that lose context)
- A spreadsheet for SLA tracking

The consolidation reduces tooling cost, but the bigger win is one customer record instead of four — agents stop tab-hopping.

## See also

- [BlueHill vs ClickUp](/compare/clickup) — for teams using ClickUp as a makeshift help desk
