[{"data":1,"prerenderedAt":398},["ShallowReactive",2],{"blog-post-zammad-plugin-selber-bauen-de":3},{"id":4,"title":5,"author":6,"body":7,"date":386,"description":387,"draft":388,"extension":389,"image":390,"imageAlt":390,"meta":391,"navigation":393,"path":394,"seo":395,"stem":396,"__hash__":397},"blog\u002Fblog\u002Fzammad-plugin-selber-bauen.md","Zammad Plugin selber bauen — Integrationen, API und Webhooks","Open ITSM Hub",{"type":8,"value":9,"toc":378},"minimark",[10,14,31,40,45,53,87,95,99,114,132,154,160,164,287,290,294,297,335,342,346,352,356,371,374],[11,12,5],"h1",{"id":13},"zammad-plugin-selber-bauen-integrationen-api-und-webhooks",[15,16,17,18,22,23,26,27,30],"p",{},"Die Suche nach ",[19,20,21],"strong",{},"Zammad Plugins",", ",[19,24,25],{},"Zammad Integrationen"," oder „Zammad Addon installieren“ führt oft ins Leere: Es gibt ",[19,28,29],{},"keinen"," Plugin-Store wie bei OTOBO oder Znuny. Trotzdem erweitern Teams Zammad täglich — über eingebaute Module, Webhooks und eigene API-Dienste.",[15,32,33,34,39],{},"Dieser Artikel ordnet die Suchintention ein und zeigt den kürzesten Weg zu einem eigenen Plugin. Die ausführliche Entwickler-Checkliste steht in der Doku ",[35,36,38],"a",{"href":37},"\u002Fdocs\u002Fzammad-plugin-entwickeln","Eigenes Zammad Plugin entwickeln",".",[41,42,44],"h2",{"id":43},"warum-so-viele-nach-zammad-plugins-suchen","Warum so viele nach Zammad Plugins suchen",[15,46,47,48,52],{},"Zammad ist ein eigenständiger Ruby-Helpdesk (AGPL-3.0), kein OTRS-Fork. Wer aus der Znuny-\u002FOTOBO-Welt kommt, erwartet ",[49,50,51],"code",{},".opm","-Pakete. Bei Zammad heißt Erweiterung:",[54,55,56,63,69],"ol",{},[57,58,59,62],"li",{},[19,60,61],{},"Native Integration"," im Kern (GitHub, GitLab, Slack, Teams, LDAP, CTI, Checkmk …)",[57,64,65,68],{},[19,66,67],{},"Konfiguration"," (Trigger, Scheduler, Core Workflows, Objektmanager)",[57,70,71,74,75,81,82],{},[19,72,73],{},"Externe Integration"," über die ",[35,76,80],{"href":77,"rel":78},"https:\u002F\u002Fdocs.zammad.org\u002Fen\u002Flatest\u002Fapi\u002Fintro.html",[79],"nofollow","REST API"," oder ",[35,83,86],{"href":84,"rel":85},"https:\u002F\u002Fadmin-docs.zammad.org\u002Fen\u002Flatest\u002Fmanage\u002Fwebhook\u002Fadd.html",[79],"Webhooks",[15,88,89,90,94],{},"Open ITSM Hub sammelt genau diese Community-Projekte im ",[35,91,93],{"href":92},"\u002Fzammad-plugins","Zammad Plugin Verzeichnis"," — n8n-Nodes, MCP-Server, PHP-\u002FPython-Clients, Slack-Bridges, LDAP-Sync.",[41,96,98],{"id":97},"welchen-plugin-typ-brauchen-sie-wirklich","Welchen Plugin-Typ brauchen Sie wirklich?",[15,100,101,104,105,108,109,39],{},[19,102,103],{},"„Wir wollen Slack \u002F Teams \u002F GitHub.“","\nZuerst unter ",[19,106,107],{},"Admin → Integrationen"," nachsehen. Viele „Plugins“ sind bereits Produktfunktionen. Einrichtung und Tokens stehen in der ",[35,110,113],{"href":111,"rel":112},"https:\u002F\u002Fadmin-docs.zammad.org\u002Fen\u002Flatest\u002Fsystem\u002Fintegrations\u002Findex.html",[79],"Admin-Dokumentation",[15,115,116,119,120,123,124,127,128,131],{},[19,117,118],{},"„Wenn ein Ticket X wird, soll System Y etwas tun.“","\nWebhook plus Trigger. Zammad schickt u. a. ",[49,121,122],{},"X-Zammad-Trigger"," und ",[49,125,126],{},"X-Zammad-Delivery","; optional HMAC über ",[49,129,130],{},"X-Hub-Signature",". Kein Deploy in den Zammad-Container nötig.",[15,133,134,137,138,141,142,22,146,22,150,39],{},[19,135,136],{},"„Wir bauen ein Portal, ERP-Sync oder KI-Agenten.“","\nEigenes Plugin = eigener Dienst mit Access Token gegen ",[49,139,140],{},"\u002Fapi\u002Fv1",". Fertige Bausteine: ",[35,143,145],{"href":144},"\u002Fpackages\u002Fdigital-bossn8n-nodes-zammad","n8n Zammad Nodes",[35,147,149],{"href":148},"\u002Fpackages\u002Fzammad-mcp-server","zammad-mcp-server",[35,151,153],{"href":152},"\u002Fpackages\u002Fzammadpy","zammad_py",[15,155,156,159],{},[19,157,158],{},"„Die UI muss sich im Kern ändern.“","\nDas ist ein Fork, kein Plugin. Hohe Folgekosten bei jedem Zammad-Upgrade — nur mit eigenem Release-Prozess.",[41,161,163],{"id":162},"mini-beispiel-ticket-per-api-ihr-erstes-plugin","Mini-Beispiel: Ticket per API (Ihr erstes „Plugin“)",[165,166,171],"pre",{"className":167,"code":168,"language":169,"meta":170,"style":170},"language-bash shiki shiki-themes one-dark-pro","curl -X POST https:\u002F\u002Fhelpdesk.example.com\u002Fapi\u002Fv1\u002Ftickets \\\n  -H \"Authorization: Token token=IHR_TOKEN\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\n    \"title\": \"Anfrage aus dem Shop\",\n    \"group\": \"Users\",\n    \"customer\": \"kunde@example.com\",\n    \"article\": {\n      \"subject\": \"Bestellung 1042\",\n      \"body\": \"Kunde fragt nach Lieferstatus.\",\n      \"type\": \"note\",\n      \"internal\": false\n    }\n  }'\n","bash","",[49,172,173,197,208,218,227,233,239,245,251,257,263,269,275,281],{"__ignoreMap":170},[174,175,178,182,186,190,193],"span",{"class":176,"line":177},"line",1,[174,179,181],{"class":180},"sVbv2","curl",[174,183,185],{"class":184},"sVC51"," -X",[174,187,189],{"class":188},"subq3"," POST",[174,191,192],{"class":188}," https:\u002F\u002Fhelpdesk.example.com\u002Fapi\u002Fv1\u002Ftickets",[174,194,196],{"class":195},"sjrmR"," \\\n",[174,198,200,203,206],{"class":176,"line":199},2,[174,201,202],{"class":184},"  -H",[174,204,205],{"class":188}," \"Authorization: Token token=IHR_TOKEN\"",[174,207,196],{"class":195},[174,209,211,213,216],{"class":176,"line":210},3,[174,212,202],{"class":184},[174,214,215],{"class":188}," \"Content-Type: application\u002Fjson\"",[174,217,196],{"class":195},[174,219,221,224],{"class":176,"line":220},4,[174,222,223],{"class":184},"  -d",[174,225,226],{"class":188}," '{\n",[174,228,230],{"class":176,"line":229},5,[174,231,232],{"class":188},"    \"title\": \"Anfrage aus dem Shop\",\n",[174,234,236],{"class":176,"line":235},6,[174,237,238],{"class":188},"    \"group\": \"Users\",\n",[174,240,242],{"class":176,"line":241},7,[174,243,244],{"class":188},"    \"customer\": \"kunde@example.com\",\n",[174,246,248],{"class":176,"line":247},8,[174,249,250],{"class":188},"    \"article\": {\n",[174,252,254],{"class":176,"line":253},9,[174,255,256],{"class":188},"      \"subject\": \"Bestellung 1042\",\n",[174,258,260],{"class":176,"line":259},10,[174,261,262],{"class":188},"      \"body\": \"Kunde fragt nach Lieferstatus.\",\n",[174,264,266],{"class":176,"line":265},11,[174,267,268],{"class":188},"      \"type\": \"note\",\n",[174,270,272],{"class":176,"line":271},12,[174,273,274],{"class":188},"      \"internal\": false\n",[174,276,278],{"class":176,"line":277},13,[174,279,280],{"class":188},"    }\n",[174,282,284],{"class":176,"line":283},14,[174,285,286],{"class":188},"  }'\n",[15,288,289],{},"Tokens legt ein Agent in den persönlichen Einstellungen an. Basic Auth vermeiden; Rechte auf das Nötigste beschränken.",[41,291,293],{"id":292},"kuratierte-integrationen-zum-anschauen","Kuratierte Integrationen zum Anschauen",[15,295,296],{},"Statt bei null zu starten, lohnt der Blick auf bestehende Pakete — nach Kategorie filterbar im Verzeichnis:",[298,299,300,311,314,321,328],"ul",{},[57,301,302,303,22,307],{},"ChatOps: ",[35,304,306],{"href":305},"\u002Fpackages\u002Fslack2zammad","slack2zammad",[35,308,310],{"href":309},"\u002Fpackages\u002Fmatrix-zammad","matrix-zammad",[57,312,313],{},"Automation: n8n-Nodes, Entra-User-Sync",[57,315,316,317],{},"KI: MCP-Server (Softoft-Orga vs. Community) — Vergleich im ",[35,318,320],{"href":319},"\u002Fblog\u002Fzammad-mcp-server-vergleich","MCP-Artikel",[57,322,323,324],{},"Identity: ",[35,325,327],{"href":326},"\u002Fpackages\u002Fldap2zammad","zammad-ldap-sync",[57,329,330,331],{},"CMS: ",[35,332,334],{"href":333},"\u002Fpackages\u002Fzammad-wp","zammad-wp",[15,336,337,338,39],{},"Jahresüberblick: ",[35,339,341],{"href":340},"\u002Fblog\u002Fbeste-zammad-plugins-2026","Beste Zammad Plugins 2026",[41,343,345],{"id":344},"betrieb-und-datenschutz","Betrieb und Datenschutz",[15,347,348,349,39],{},"Ein Plugin, das Tickettexte an n8n, ein LLM oder ein CRM schickt, verarbeitet personenbezogene Daten. Klären Sie Auftragsverarbeitung, Speichort und Logs, bevor der Webhook in Produktion hängt. Technische Leitplanken (Staging, Least Privilege, Idempotenz) stehen in der ",[35,350,351],{"href":37},"Entwickler-Doku",[41,353,355],{"id":354},"nächste-schritte","Nächste Schritte",[54,357,358,361,364],{},[57,359,360],{},"Native Integration oder No-Code-Webhook prüfen",[57,362,363],{},"Sonst API-Dienst skizzieren und Token-Rechte festlegen",[57,365,366,367,370],{},"Gegen Staging testen, dann im ",[35,368,369],{"href":92},"Verzeichnis"," sichtbar machen",[15,372,373],{},"Zammad bleibt so upgrade-fähig — und Sie bekommen trotzdem genau die Integration, nach der Admins suchen.",[375,376,377],"style",{},"html pre.shiki code .sVbv2, html code.shiki .sVbv2{--shiki-default:#61AFEF}html pre.shiki code .sVC51, html code.shiki .sVC51{--shiki-default:#D19A66}html pre.shiki code .subq3, html code.shiki .subq3{--shiki-default:#98C379}html pre.shiki code .sjrmR, html code.shiki .sjrmR{--shiki-default:#56B6C2}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}",{"title":170,"searchDepth":199,"depth":199,"links":379},[380,381,382,383,384,385],{"id":43,"depth":199,"text":44},{"id":97,"depth":199,"text":98},{"id":162,"depth":199,"text":163},{"id":292,"depth":199,"text":293},{"id":344,"depth":199,"text":345},{"id":354,"depth":199,"text":355},"2026-09-30","Zammad Plugin entwickeln ohne Marketplace: native Integrationen, Webhooks, REST-API und n8n. Praxisleitfaden für Admins und Entwickler.",false,"md",null,{"language":392},"de",true,"\u002Fblog\u002Fzammad-plugin-selber-bauen",{"title":5,"description":387},"blog\u002Fzammad-plugin-selber-bauen","dK_hGgDat-zxMVmrAsCoCdtFfNNiJvHLjcIVXvzL_mg",1793464489869]