Build your own Zammad plugin — integrations, API, and webhooks

2026-09-30 · Open ITSM Hub

Develop a Zammad plugin without a marketplace: native integrations, webhooks, REST API, and n8n. A practical guide for admins and developers.

Build your own Zammad plugin — integrations, API, and webhooks

Searches for Zammad plugins, Zammad integrations, or “install a Zammad add-on” often hit a wall: there is no plugin store like OTOBO or Znuny. Teams still extend Zammad every day — through built-in modules, webhooks, and their own API services.

This article maps that search intent and the shortest path to a custom plugin. The full developer checklist lives in Build your own Zammad plugin.

Why so many people search for Zammad plugins

Zammad is a standalone Ruby helpdesk (AGPL-3.0), not an OTRS fork. Anyone coming from Znuny or OTOBO expects .opm packages. In Zammad, an extension means:

  1. A native integration in core (GitHub, GitLab, Slack, Teams, LDAP, CTI, Checkmk, …)
  2. Configuration (triggers, schedulers, core workflows, object manager)
  3. An external integration via the REST API or webhooks

Open ITSM Hub collects those community projects in the Zammad plugin directory — n8n nodes, MCP servers, PHP/Python clients, Slack bridges, LDAP sync.

Which plugin type do you actually need?

“We want Slack / Teams / GitHub.” Check Admin → Integrations first. Many “plugins” are product features. Setup and tokens are in the admin documentation.

“When a ticket becomes X, system Y should do something.” Webhook plus trigger. Zammad sends X-Zammad-Trigger and X-Zammad-Delivery; optional HMAC via X-Hub-Signature. No deploy into the Zammad container.

“We are building a portal, ERP sync, or AI agent.” Your plugin is a service with an access token against /api/v1. Building blocks: n8n Zammad nodes, zammad-mcp-server, zammad_py.

“The UI must change in the core.” That is a fork, not a plugin. High cost on every Zammad upgrade — only with your own release process.

Mini example: create a ticket via API (your first “plugin”)

bash
curl -X POST https://helpdesk.example.com/api/v1/tickets \
  -H "Authorization: Token token=YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "title": "Request from the shop",
    "group": "Users",
    "customer": "customer@example.com",
    "article": {
      "subject": "Order 1042",
      "body": "Customer asks about delivery status.",
      "type": "note",
      "internal": false
    }
  }'

Agents create tokens in personal preferences. Avoid basic auth; restrict permissions to what you need.

Curated integrations to learn from

Before starting from scratch, browse existing packages — filterable by category in the directory:

Year overview: Best Zammad plugins 2026.

Operations and privacy

A plugin that sends ticket text to n8n, an LLM, or a CRM processes personal data. Settle processing agreements, storage location, and logs before the webhook goes live. Technical guardrails (staging, least privilege, idempotency) are in the developer docs.

Next steps

  1. Check a native integration or a no-code webhook
  2. Otherwise sketch an API service and token scopes
  3. Test against staging, then list it in the directory

Zammad stays upgradeable — and you still get the integration admins are searching for.