Built-in helpdesk • SLA aware • 100% Free

A helpdesk that lives next to your CRM data

Support tickets that already know who the customer is, what they bought, and which deals they're in. SLA timers with business-hours awareness. Approvals before close. A solutions library that builds itself from real resolutions.

SLA aware
Business-hours calendar, auto-escalation
Approvals
Two-eyes close where it matters
Solutions library
Resolve once, answer forever
How it works

From inbox to insight.

A ticket's job isn't just to get closed — it's to leave the team smarter than it started.

1

Receive

A ticket lands — email, form, API, or the support widget — linked to the right account and contact

  • Email → ticket gateway
  • Web form embed
  • API endpoint
  • Manual creation
2

Triage

Assign owner, set priority and severity, configure SLA timer

  • Round-robin assignment
  • Priority + severity
  • SLA timer auto-derived
  • Tag for category
3

Resolve

Work the issue inside the ticket — internal notes, customer replies, attachments, all on one timeline

  • Internal vs customer-facing notes
  • Attachments
  • Approvals before close
  • Full audit trail
4

Capture

Save the resolution to the solutions library — future tickets surface it inline as you type

  • Promote ticket → solution
  • Inline match-on-type
  • Versioned articles
  • Per-org library
Capabilities

A grown-up helpdesk, included.

Status workflow with rules

new → assigned → pending → closed. Transitions are validated server-side: a ticket can't jump straight from new to closed, and re-opening an old closed ticket needs admin role.

  • Enforced state machine
  • Role-gated transitions
  • Re-open guards
  • Per-status default views

SLA & escalation

Priority + severity derive an SLA target. A timer ticks down on every ticket; escalation rules fire when it's about to expire.

  • Auto-derived SLA
  • Priority × severity matrix
  • Auto-escalation on breach
  • SLA hit-rate analytics

Approval workflows

Some orgs need a second pair of eyes before close. /tickets/approvals queues tickets awaiting sign-off; one click records the decision with timestamp and rationale.

  • Per-org approval policy
  • Approver assignment
  • Rationale capture
  • Audit-friendly log

Solutions library

A write-once knowledge base built from real ticket resolutions. /solutions is searchable; new tickets surface matching articles automatically as the subject is typed.

  • Promote ticket → solution
  • Markdown body
  • Versioned with history
  • Cross-tenant isolation

Analytics dashboard

First-response time, resolution time, SLA hit rate per assignee, volume by tag, backlog age distribution. /tickets/analytics is the on-call manager's morning page.

  • First-response & resolution times
  • Per-assignee SLA hit rate
  • Volume by tag, source, severity
  • Backlog age histogram

Custom fields per org

Add the columns your team needs — environment, product version, customer plan, escalation level — without code. Filterable in list view, available in API and mobile.

  • Text / number / dropdown / date / checkbox
  • Filterable
  • Per-org schema
  • Soft-delete preserves history

Connected to your stack.

Tickets share the same data plane as leads, deals, and invoices — and the same API for everything outside it.

Mobile app
Tickets are first-class in Flutter
Webhooks
case.created, .escalated, .closed
Tags
Cross-cut by topic, product, region
Teams
Assign to a group, not just a person
Attachments
Logs, screenshots, repro files
Paging
Bridge to PagerDuty / Opsgenie via webhook

Questions, answered.

How does the SLA timer handle business hours?

SLA timers respect an org-level business-hours calendar. Time spent outside business hours doesn't count toward the SLA, and the calendar can include public holidays. The settings live under /settings/support.

Can customers see their own tickets?

Yes — a customer portal exposes tickets owned by the requesting contact via a tokenised public URL. Customers can read updates, post replies, and attach files; staff-only notes are filtered server-side.

How do auto-escalations work?

A Celery beat task scans open tickets every minute. When a ticket's SLA is within an org-configured warning threshold, it fires the case.escalated webhook and (optionally) re-assigns to a senior responder per the escalation policy.

Is the solutions library full-text searchable?

Yes — solutions are indexed on title, body, and tags. The inline-match feature on ticket creation hits the same index. PostgreSQL's full-text search powers it; no external Elasticsearch needed for typical loads.

Stop paying $15/agent/month.

Self-hosted, open source, and right next to your CRM data. Spin it up in five minutes with Docker.