Customer support ticketing. Replaces Zendesk / Freshdesk / Intercom. Email-in, chat, full-text search, SLA tracking. PMA's primary external-facing ticketing system (Redmine handles internal engineering tickets).
| Field | Value |
|---|---|
| Containers | ${CONTAINER_PREFIX}zammad (web + worker + scheduler), ${CONTAINER_PREFIX}zammad-postgres, ${CONTAINER_PREFIX}zammad-elasticsearch, ${CONTAINER_PREFIX}zammad-redis |
| Image | zammad/zammad |
| Internal port | 8080 |
| External port | ${ZAMMAD_PORT} (default 8081) |
| Database | PostgreSQL |
| Search | Elasticsearch |
| Cache | Redis + Memcached |
| Storage | zammad-data + zammad-postgres + zammad-elasticsearch |
| Backup type | database + volume |
| Classification | enterprise |
| Profiles | enterprise, support, full |
| Default SSO | saml |
| Recipe | What it does |
|---|---|
just zammad-status / -logs / -restart |
Lifecycle |
just zammad-rails |
Open Rails console (Zammad is Rails) |
just zammad-list-users |
List users |
just zammad-create-user EMAIL [args] |
Create user |
just zammad-list-groups |
List groups (Zammad's permission concept) |
Zammad has the broadest MCP surface of any PMA service. See /pma/reference/cli/mcp for the full list. Highlights:
zammad_tickets / zammad_ticket ID / zammad_search QUERY — readzammad_create_ticket / zammad_update_ticket / zammad_add_article — writezammad_users / zammad_user ID / zammad_groups — directoryzammad_states / zammad_priorities / zammad_organizations / zammad_tags — reference datazammad_ticket_history / zammad_ticket_overview — audit + aggregateUse case: AI agent monitors inbound support tickets, drafts replies, escalates priority based on customer tier.
Configure inbound email channel via Zammad admin UI:
Admin UI → Channels → Email → Inbound
- IMAP / POP3 server + credentials
- Folder (e.g. Inbox)
- Group to assign new tickets to
PMA's Postal service (if installed) can be the SMTP backend for outbound; configure under "Outbound".
just sso-add zammad # if sso.configured was false
just sso-check zammad # verify
Zammad uses SAML (not OAuth) because its plugin model favours SAML. The flow:
just zammad-rails
# In console:
> Organization.create!(name: "ACME Corp", domain: "acme.com")
Or via the MCP gateway:
agent → zammad_create_ticket(organization_id=42, ...)
Zammad has a built-in Zendesk importer (Admin UI → Settings → System → Import). Maps tickets, comments, users, organisations. See /pma/cookbook/migrate-from-cloud-saas.
Elasticsearch is required. Zammad's full-text search depends on it. The container is heavy (1-2 GB RAM minimum). If you want to reduce footprint, you can disable search (Admin UI → Settings → System → Search) but you lose ticket search functionality.
First boot indexes everything. When the Elasticsearch index is empty (fresh install or post-restore), Zammad re-indexes all tickets. For a large dataset this can take an hour. Watch via just zammad-logs.
SAML metadata refresh. If Authentik's signing keys rotate (major Authentik upgrade), Zammad's SAML metadata needs to be re-fetched. just sso-fix zammad handles this.
Email channel password storage. IMAP credentials are stored encrypted in Zammad's DB. Use bench secret_rotate (Rails console) if you ever need to change the encryption key.
Postgres extension dependency. Zammad's DB uses pg_trgm for some queries. The Postgres image PMA pins has this enabled by default. Don't substitute with a generic Postgres without the extension.
| Symptom | First check |
|---|---|
| Search returns "no results" for things you know exist | Elasticsearch re-indexing: just zammad-logs | grep -i 'reindex\|search' |
| Login redirects but fails with SAML error | just sso-check zammad — likely metadata staleness |
| New emails not appearing as tickets | Channel config in Admin UI; check IMAP credentials + folder |
| Slow web UI | Memcached or Redis unhealthy; just status zammad |
| 502 from Caddy | Zammad container unhealthy; just zammad-logs |
/pma/services/redmine — sister ticketing for internal engineering tickets./pma/reference/cli/mcp — full MCP tool list./pma/cookbook/migrate-from-cloud-saas — Zendesk → Zammad walked.