# Frappe Helpdesk

AGPL ticketing with agent and customer portals, SLAs, assignment rules and a knowledge base, all reachable over the Frappe REST API.

Ticket management with dual portals, customisable SLAs, auto-assignment, saved replies and a knowledge base. Same Frappe bench stack and Frappe Cloud hosting as Frappe CRM; every HD DocType (tickets, comments, SLAs, articles, canned responses) is a REST resource with token auth.

Alternative to: Zendesk, Freshdesk

- Capabilities: adaptable, operable
- Vertical: smb-ops-crm
- Shape: business-app
- Form factor: web-app
- Execution model: deterministic
- Provenance: human-written (recorded, never ranked)
- Repo: https://github.com/frappe/helpdesk (AGPL-3.0), 3353 stars, last commit 2026-09-02
- Last activity: 2026-09-02
- Page: apps/frappe--helpdesk.html
- JSON: apps/frappe--helpdesk.json

## Use it when

- I want a support desk with SLAs and a customer portal on our own server, no per-agent fees
- I already run Frappe apps and want tickets in the same bench

## Gotchas

- Same bench footprint as Frappe CRM (MariaDB, Redis, Node, Python)
- AGPL-3.0
- DocType names above (HD Ticket, HD Article, HD Canned Response) are from the app's data model; verify field names against your version

## Editions

- Self-hosted: Free, open source
  - source: https://github.com/frappe/helpdesk
  - container: python3 ./easy-install.py deploy --image=ghcr.io/frappe/helpdesk --version=stable --app=helpdesk
- Frappe Cloud: Free, closed source
  - hosted: https://frappecloud.com

## Adaptable: make it yours

Effort: config-only (4 things to edit)

Site settings in sites/&lt;site>/site_config.json; SLAs, assignment rules, teams, canned responses and portal branding are records you set in the UI or over REST; docker/docker-compose.yml and docker/init.sh bring up a dev stack. New behavior is a companion Frappe app; the AGPL fork path is rarely needed.

- Env vars: none
- Config files: sites/&lt;site>/site_config.json, helpdesk/hooks.py, docker/docker-compose.yml, docker/init.sh
- Prompt files: none
- Accounts you'll need: SMTP/IMAP mailbox; Frappe Cloud account (hosted edition)

## Operable: what an agent can drive

Operability: official. Interface: api at https://docs.frappe.io/framework/user/en/api/rest (published by the builder, both).

### Reach (partial coverage)

- Create, assign and resolve tickets: reachable. HD Ticket DocType through /api/resource; assignment through frappe.desk.form.assign_to
- Reply to customers and add internal comments: reachable. Communication and HD Ticket Comment DocTypes
- Define SLAs: reachable. HD Service Level Agreement DocType
- Assignment rules: reachable. Frappe Assignment Rule DocType
- Knowledge base articles: reachable. HD Article and HD Article Category DocTypes
- Saved (canned) replies: reachable. HD Canned Response DocType
- Manage agents and teams: reachable. HD Agent and HD Team DocTypes
- Customer portal self-service: not reachable. Portal is a UI for customers; API serves the data but not the experience
- Set up inbound email accounts: reachable. Email Account is a standard DocType, creatable through POST /api/resource/Email Account with password-based IMAP/SMTP per the framework REST docs; OAuth-linked mailboxes still need the UI consent step

## Code stack

- Languages: Python, JavaScript
- Frameworks: Frappe Framework, Frappe UI, Vue.js
- Package manager: bench + pip + yarn
- Database: MariaDB, Redis
- Hosting target: Docker (easy-install.py, docker-compose), Frappe Cloud

## Evidence and confidence

- formFactor: README: Frappe web app with Vue portals (confidence 0.95)
- executionModel: No model SDK in README (confidence 0.8)
- operability: docs.frappe.io/framework/user/en/api/rest: 'Authorization: token api_key:api_secret' header (keys generated per User), plus /api/method/login password login and OAuth Bearer; /api/resource/:doctype gives CRUD over every DocType including the HD Ticket, HD Article, HD Canned Response types shipped by frappe/helpdesk. (confidence 0.95)
- effort: README Development Setup: docker/docker-compose.yml and init.sh; site_config.json (confidence 0.8)
- editions: README: Frappe Cloud managed hosting, self-host easy-install; AGPL (confidence 0.8)
- active: GitHub pushedAt 2026-09-02
- reach:  (confidence 0.7)

## Open questions

- Frappe Cloud prices for Helpdesk
- Does Helpdesk ship an AI reply or summary feature that would make executionModel hybrid?

## Sources

- https://github.com/frappe/helpdesk (sourcing:smb-ops-crm:curated)
- https://docs.frappe.io/framework/user/en/api/rest (sourcing:smb-ops-crm:curated)
