Zum Hauptinhalt springen

Admin-Handbuch

Schritt-für-Schritt Anleitung für neue Board-Admins – von der Registrierung bis zum täglichen Betrieb.

1. Einstieg & Registrierung

Ideenkiste ist eine Multi-Tenant-Plattform. Jedes Unternehmen betreibt ein eigenes, isoliertes Board unter einer eigenen URL (ideenkiste.app/org/dein-name). Als Board-Admin hast du vollen Zugriff auf alle Verwaltungsfunktionen deines Boards.

1
Öffne ideenkiste.app und klicke auf Kostenlos starten.
2
Gib den Namen deiner Organisation und eine eindeutige Board-URL (Slug) ein. Der Slug kann später geändert werden, informiere dann deine Nutzer über die neue URL.
3
Trage deine E-Mail-Adresse ein und klicke auf Weiter. Du erhältst einen Bestätigungslink per E-Mail.
4
Klicke auf den Link in der E-Mail. Du wirst automatisch eingeloggt und zum Admin-Panel weitergeleitet.
Tipp: Für zukünftige Anmeldungen nutzt du denselben Magic-Link-Prozess: E-Mail eingeben → Link anklicken. Es gibt keine Passwörter.

2. Admin-Panel: Überblick

Das Admin-Panel erreichst du über /org/[slug]/admin. Die linke Navigation enthält folgende Bereiche:

BereichZweck
DashboardKennzahlen auf einen Blick: Vorschläge, Nutzer, Status-Verteilung, Top-Ideen
VorschlägeAlle Vorschläge verwalten, Status setzen, Bulk-Aktionen
ModerationEingehende Vorschläge prüfen, freigeben oder ablehnen
KategorienThemengruppen anlegen und umbenennen
Audit-LogAlle Admin-Aktionen nachvollziehen
MitgliederTeam einladen, Rollen vergeben, Nutzer sperren
EinstellungenBoard-Name, URL, Farbe, Standardansicht, Pro-Features
Hinweis: Oben im Admin-Panel erscheint ein Warnhinweis, sobald du 80 % deines Plan-Limits erreicht hast (z. B. 40 von 50 Vorschlägen im Free Plan). So hast du rechtzeitig Zeit zum Upgraden.

3. Vorschläge verwalten

Unter Vorschläge siehst du alle eingereichten Ideen deines Boards – inklusive Autor, Votes, Status und Datum. Von hier aus steuerst du den gesamten Feedback-Prozess.

Status setzen

Jeder Vorschlag hat einen Status, der deiner Community zeigt, wie es weitergeht:

OffenIn PrüfungGeplantIn BearbeitungFertigAbgelehnt

Du kannst den Status direkt in der Listenansicht per Dropdown ändern oder über die Detailseite eines Vorschlags. Nutzer, die abgestimmt oder kommentiert haben, erhalten bei Statusänderungen automatisch eine E-Mail-Benachrichtigung.

Bulk-Aktionen

1
Aktiviere die Checkboxen links neben den Vorschlägen.
2
Wähle einen Ziel-Status aus dem Dropdown rechts oben.
3
Klicke Status setzen – alle ausgewählten Vorschläge werden auf einmal aktualisiert.

Detailseite eines Vorschlags

Klicke auf einen Vorschlag, um die Detailseite zu öffnen. Dort kannst du:

  • Titel, Beschreibung, Kategorie und Status bearbeiten (Strg+S zum Speichern)
  • Eine interne Admin-Notiz hinterlegen (nur für Admins sichtbar)
  • Vorschläge zusammenführen (Merge): Doppelte Ideen in einen Vorschlag zusammenführen; Votes werden addiert
  • Vorschlag löschen (nach Bestätigung)
  • Kommentare lesen und schreiben
Tipp: Nutze Merge wenn mehrere Nutzer dieselbe Idee eingereicht haben. Der Ziel-Vorschlag erhält alle Votes der zusammengeführten Einträge.

4. Moderations-Queue

Wenn du dein Board auf „Neue Vorschläge prüfen" gestellt hast (oder Spam-Schutz aktiv ist), landen neue Einreichungen zunächst in der Moderations-Queue und sind öffentlich nicht sichtbar.

1
Öffne Moderation in der Navigation. Ein roter Badge zeigt die Anzahl wartender Vorschläge.
2
Lies Titel, Beschreibung und Kategorie. Ein Neues Konto-Badge warnt dich, wenn der Autor seinen Account weniger als 10 Minuten vor der Einreichung erstellt hat.
3
Entscheide:
  • Freigeben – Vorschlag wird öffentlich sichtbar
  • Spam markieren – Vorschlag wird still abgelehnt
  • Nutzer sperren – Nutzer kann keine neuen Inhalte mehr einreichen
Hinweis: Das Sperren eines Nutzers ist nur für Super-Admins möglich. Als Board-Admin kannst du Vorschläge freigeben oder als Spam markieren.

5. Kategorien

Kategorien helfen deinen Nutzern, Vorschläge thematisch einzuordnen. Lege sie an, bevor du dein Board öffentlich machst.

1
Öffne Kategorien in der Navigation.
2
Tippe einen Namen in das Eingabefeld und klicke Hinzufügen.
3
Zum Umbenennen: Klicke auf den Kategorie-Namen → Bearbeite ihn direkt → Enter zum Speichern,Esc zum Abbrechen.
4
Zum Löschen: Klicke das Papierkorb-Icon. Kategorien mit zugeordneten Vorschlägen können nicht gelöscht werden – weise die Vorschläge zuerst um.
Tipp: Starte mit 4–6 breiten Kategorien (z. B. „Feature-Wunsch", „Bug-Meldung", „Design", „Sonstiges"). Du kannst jederzeit neue hinzufügen.

6. Mitglieder & Rollen

Lade Teammitglieder ein, damit sie dir bei der Verwaltung helfen können.

Rollen

RolleBerechtigungen
AdminVolles Zugriffsrecht auf alle Admin-Funktionen des Boards
MitgliedKann Vorschläge einreichen, abstimmen und kommentieren; kein Admin-Zugriff

Mitglied einladen

1
Öffne Mitglieder in der Navigation.
2
Trage die E-Mail-Adresse ein und wähle die Rolle (Admin oder Mitglied).
3
Klicke Einladen. Die Person erhält einen Einladungslink per E-Mail (gültig für 7 Tage).

Mitglied entfernen oder sperren

Klicke in der Mitglieder-Tabelle auf das Menü rechts neben dem Eintrag:

  • Rolle ändern: Dropdown in der Spalte „Rolle" – sofort wirksam
  • Entfernen: Entfernt die Mitgliedschaft; die Inhalte der Person bleiben erhalten
  • Sperren/Entsperren: Gesperrte Nutzer können sich nicht mehr anmelden (nur Super-Admin)
Hinweis: Du kannst dich nicht selbst entfernen, solange du der einzige Admin bist. Weise zuerst einem anderen Mitglied die Admin-Rolle zu.

7. Einstellungen

Unter Einstellungen passt du das Erscheinungsbild und Verhalten deines Boards an.

Allgemein

  • Board-Name: Der angezeigte Name deines Boards (z. B. der Firmenname)
  • Board-URL (Slug): Die eindeutige URL-Kennung. Nach einer Änderung leitet die alte URL nicht mehr weiter – informiere deine Nutzer.
  • Öffentlich / Privat: Öffentliche Boards sind ohne Login sichtbar. Private Boards erfordern eine Mitgliedschaft.

Design

  • Primärfarbe: Wähle eine der vordefinierten Farben oder gib einen Hex-Code ein (z. B. #0ea5e9). Die Farbe gilt für Buttons, Links und Akzente im gesamten Board.
  • Standardansicht: Lege fest, ob Nutzer beim Öffnen des Boards den Feed (Listenansicht) oder die Roadmap sehen.

Pro-Features Pro

  • Custom Domain: Betreibe dein Board unter deiner eigenen Domain (siehe Abschnitt 15 für die DNS-Einrichtung)
  • White-Label: Blendet das Ideenkiste-Branding aus

Premium-Features Premium

  • API-Token: Externe Anwendungen direkt mit deinem Board verbinden (siehe Abschnitt 11)
  • Webhooks: Sendet HTTP-Events bei Statusänderungen an externe Systeme (siehe Abschnitt 12)
Tipp: Speichere die Einstellungen mit Strg+S oder dem Button unten auf der Seite.

8. Roadmap & Status kommunizieren

Die Roadmap ist die öffentliche Ansicht, die deinen Nutzern zeigt, welche Ideen ihr umsetzen wollt. Vorschläge mit dem Status Geplant, In Bearbeitung oder Fertig erscheinen automatisch in den entsprechenden Spalten der Roadmap.

Offizielle Updates posten

Als Admin kannst du auf der Detailseite eines Vorschlags einen Kommentar als Offizielles Update markieren. Dieser wird optisch hervorgehoben und signalisiert Nutzern, dass du persönlich Stellung nimmst.

1
Öffne einen Vorschlag über die Admin-Vorschlagsliste oder das öffentliche Board.
2
Schreibe deinen Kommentar im Textfeld (Strg+S zum Posten).
3
Aktiviere die Checkbox Als offizielles Update markieren, bevor du sendest.
Tipp: Kombiniere Status-Updates mit offiziellen Kommentaren: Setze einen Vorschlag z. B. auf In Bearbeitung und erkläre im Kommentar, was geplant ist und wann.

9. Audit-Log

Der Audit-Log zeichnet alle Admin-Aktionen lückenlos auf. Er ist nur für Admins einsehbar und nicht veränderbar.

Jeder Eintrag enthält: die ausgeführte Aktion, den ausführenden Admin, das betroffene Objekt (Vorschlag oder Nutzer) und den Zeitstempel. Nutze den Log, um nachzuvollziehen:

  • Wer einen Vorschlag freigegeben oder abgelehnt hat
  • Wer einen Nutzer gesperrt oder entsperrt hat
  • Wer eine Rolle geändert hat
  • Wann und von wem ein Merge durchgeführt wurde
Hinweis: Der Audit-Log kann nicht gelöscht werden. Auch wenn ein Admin seinen Account löscht, bleiben die Einträge mit anonymisierter Kennung erhalten.

10. Plan-Limits & Upgrade

Im Free Plan gelten folgende Limits für dein Board. Pro hebt die Limits auf, Premium fügt zusätzlich API-Token und Webhooks hinzu.

RessourceFreeProPremium
Vorschläge pro Board50UnbegrenztUnbegrenzt
Mitglieder pro Board25UnbegrenztUnbegrenzt
Custom Domain
White-Label
API-Token
Webhooks

Wenn du ein Limit erreichst, erscheint eine entsprechende Meldung. Du kannst jederzeit auf den Pro Plan (29 €/Monat) oder den Premium Plan (59 €/Monat) upgraden – jeweils zzgl. MwSt.

11. API-Token & Automatisierung

Mit API-Token kannst du externe Anwendungen, Skripte oder Integrationen (z. B. Zapier, Make, eigene Tools) mit deinem Board verbinden – ohne dein Passwort zu teilen. Premium

Hinweis: API-Token sind seit dem Premium-Plan-Release nur in Premium (59 €/Monat) verfügbar (#131). Tokens, die du in einer Free- oder Pro-Org erstellt hattest, werden bei einem Downgrade automatisch wirkungslos und liefern 402 Plan limit reached.

Token erstellen

1
Öffne Admin → API-Token.
2
Gib dem Token eine sprechende Bezeichnung (z. B. „Zapier Integration") und klicke auf Erstellen.
3
Kopiere den angezeigten Token sofort – er wird nur einmal angezeigt und kann danach nicht mehr abgerufen werden.
Hinweis: Ein Token hat dieselben Rechte wie ein Board-Admin. Gib ihn nicht weiter und widerrufe ihn sofort unter Admin → API-Token → Widerrufen, wenn er nicht mehr benötigt wird.

Token verwenden

Füge den Token als Authorization-Header in deine API-Anfragen ein:

curl https://ideenkiste.app/org/DEIN-SLUG/api/suggestions \
  -H "Authorization: Bearer ikt_deintoken"

Verfügbare Endpunkte

Methode & PfadBeschreibung
GET /api/suggestionsVorschläge auflisten (paginiert, filterbar)
POST /api/suggestionsNeuen Vorschlag erstellen
GET /api/suggestions/:idEinzelnen Vorschlag abrufen
PATCH /api/suggestions/:idVorschlag aktualisieren (inkl. Status)
POST /api/suggestions/:id/voteAbstimmung ein-/ausschalten
GET /api/suggestions/:id/commentsKommentare eines Vorschlags
POST /api/suggestions/:id/commentsKommentar erstellen
GET /api/suggestions/roadmapRoadmap nach Status gruppiert
GET /api/widget/:slug/roadmapRoadmap für iFrame-/Widget-Einbettungen (CORS-fähig)
GET /api/categoriesKategorien auflisten

Pfade immer unter /org/DEIN-SLUG/ einhängen.

Tipp: Die vollständige interaktive API-Dokumentation mit allen Parametern und Beispielen findest du unter ideenkiste.app/api-docs.

12. Webhooks (Premium)

Mit Webhooks schickt Ideenkiste bei bestimmten Events automatisch eine HTTP-Anfrage an eine URL deiner Wahl – z. B. um Slack zu benachrichtigen, eine Datenbank zu aktualisieren oder eine Automatisierung in Make / Zapier auszulösen. Premium

Hinweis: Webhooks sind nur im Premium-Plan (59 €/Monat) verfügbar (#131). Beim Downgrade auf Free oder Pro werden bestehende Webhooks aufbewahrt, aber nicht mehr ausgeliefert, bis erneut auf Premium umgestellt wird.

Webhook erstellen

1
Öffne Admin → Webhooks und klicke auf Neuer Webhook.
2
Vergib einen Namen (z. B. „Slack #feedback") und trage deine HTTPS-Empfänger-URL ein.
3
Wähle die Events aus, bei denen der Webhook ausgelöst werden soll – du kannst ganze Gruppen auf einmal aktivieren.
4
Klicke auf Webhook erstellen. Das Signing-Secret wird jetzt einmalig angezeigt – kopiere es sofort und speichere es sicher.
Hinweis: Das Secret wird nur einmal angezeigt und danach serverseitig verschlüsselt gespeichert. Wenn du es verlierst, kannst du jederzeit ein neues unter Webhook → Neues Secret generieren erzeugen – das alte wird damit sofort ungültig.

Verfügbare Events

EventWann wird er ausgelöst?
suggestion.createdNeuer Vorschlag eingereicht
suggestion.updatedTitel, Beschreibung oder Kategorie geändert
suggestion.status_changedStatus eines Vorschlags geändert (enthält alten Status als previous)
suggestion.deletedVorschlag gelöscht
vote.createdJemand hat für einen Vorschlag abgestimmt
vote.deletedAbstimmung zurückgezogen
comment.createdNeuer öffentlicher Kommentar (Admin-Notizen werden nicht gefeuert)
comment.deletedKommentar gelöscht
member.invitedEinladung an ein neues Mitglied verschickt
member.removedMitglied aus dem Board entfernt

Payload-Struktur

Jede Anfrage ist ein HTTP POST mit Content-Type: application/json. Das JSON-Objekt hat folgende Struktur:

{
  "id": "evt_01j...",
  "event": "suggestion.status_changed",
  "timestamp": "2025-05-03T10:23:00.000Z",
  "organization": {
    "id": "org_...",
    "name": "Meine Firma",
    "slug": "meine-firma"
  },
  "data": { /* Event-spezifische Daten */ },
  "previous": { "status": "OPEN" }   // nur bei status_changed
}

Signatur prüfen

Jede Anfrage enthält den Header X-Webhook-Signature: sha256=.... Er ist ein HMAC-SHA256-Hash über den rohen Request-Body, berechnet mit deinem Secret. Verifiziere ihn serverseitig, um sicherzustellen, dass die Anfrage wirklich von Ideenkiste stammt:

// Node.js / TypeScript
import crypto from 'crypto';

function verifySignature(body: string, secret: string, header: string) {
  const expected = 'sha256=' + crypto
    .createHmac('sha256', secret)
    .update(body)
    .digest('hex');
  return crypto.timingSafeEqual(
    Buffer.from(expected),
    Buffer.from(header)
  );
}

// body = req.rawBody als String (NICHT geparst)
// header = req.headers['x-webhook-signature']
Hinweis: Verwende immer crypto.timingSafeEqual für den Vergleich – ein normales === ist anfällig für Timing-Angriffe.

Delivery-Verlauf & Retry

Unter Admin → Webhooks → Details siehst du den vollständigen Versandverlauf: HTTP-Statuscode, Antwortzeit, Anzahl der Versuche und die Serverantwort. Bei Fehlern versucht Ideenkiste es automatisch noch bis zu dreimal (5 s → 30 s → 5 min). Du kannst fehlgeschlagene Deliveries auch manuell per Retry erneut auslösen.

Tipp: Nutze Test senden in der Webhook-Detailseite, um deine Integration zu testen, bevor du echte Nutzer hast. Der Test sendet einen echten HTTP-Request mit einem test: true-Flag im Payload.

13. Zapier & Make Integration

Zapier und Make (früher Integromat) sind die zwei populärsten No-Code-Automatisierungsplattformen. In Kombination mit den Premium-Webhooks von Ideenkiste kannst du dein Board ohne eine Zeile Code an mehrere hundert Drittsysteme anbinden – von Slack über Jira bis zu Google Sheets.Premium

Hinweis: Voraussetzung ist ein aktives Premium-Abo, da diese Integrationen auf Webhooks aufsetzen (siehe Abschnitt 12). Zapier- und Make-Konten sind separat zu buchen.

13.1 Zapier Integration

Mit Zapier verbindest du Ideenkiste in wenigen Minuten mit über 6.000 anderen Apps. Pro Webhook reicht ein einzelner Zap.

Schritt für Schritt

1
Logge dich bei zapier.com ein und klicke oben links auf + CreateZaps.
2
Wähle im Trigger-Schritt die App Webhooks by Zapier aus.
3
Als Event wählst du Catch Hook (nicht Retrieve Poll) und klickst Continue.
4
Zapier zeigt dir nun eine Custom Webhook URL (z. B. https://hooks.zapier.com/hooks/catch/123456/abcde/). Kopiere sie.
5
Wechsle zu Ideenkiste: Admin → Webhooks → Neuer Webhook. Trage die kopierte URL ein, wähle die gewünschten Events und klicke Webhook erstellen.
6
Klicke in Ideenkiste auf Test senden. Zapier zeigt im Trigger-Schritt jetzt „We found a request!" – wähle ihn aus und klicke Continue with selected record.
7
Konfiguriere im Action-Schritt die Ziel-App (z. B. Slack, Jira, Gmail) und mappe die Felder aus dem Payload auf die gewünschten Ziel-Felder. Schalte den Zap am Ende auf On.
Tipp: Lege pro Event-Typ einen eigenen Webhook in Ideenkiste an. So kannst du in Zapier sauber filtern und vermeidest, dass ein Zap-Run für jeden Event-Typ einmal teure Aktionen ausführt.

Beispiel-Workflows

Neuer Vorschlag → Slack-Nachricht

Sobald ein Nutzer einen neuen Vorschlag einreicht, wird automatisch eine Nachricht im Slack-Kanal #produkt-feedback gepostet.

Zapier-Setup

  1. Trigger: Webhooks by ZapierCatch Hook
  2. (Optional) Filter: Only continue if…event exactly matches suggestion.created
  3. Action: SlackSend Channel Message
  4. Channel: #produkt-feedback
  5. Message text:
    *Neuer Vorschlag von {{data__author__name}}*
    > {{data__title}}
    {{data__description}}
    
    <{{data__url}}|Im Board ansehen>

Erwarteter Payload

{
  "id": "evt_01j7...",
  "event": "suggestion.created",
  "timestamp": "2026-05-12T09:14:22.000Z",
  "organization": {
    "id": "org_01j...",
    "name": "Meine Firma",
    "slug": "meine-firma"
  },
  "data": {
    "id": "sug_01j...",
    "title": "Dark Mode für die Roadmap",
    "description": "Wäre für lange Sessions am Abend sehr angenehm.",
    "status": "OPEN",
    "category": "Feature-Wunsch",
    "voteCount": 0,
    "author": {
      "id": "usr_01j...",
      "name": "Lara Schmitt",
      "email": "lara@example.com"
    },
    "url": "https://ideenkiste.app/org/meine-firma/suggestions/sug_01j..."
  }
}
Status geändert → Jira-Ticket aktualisieren

Wenn der Status eines Vorschlags auf In Bearbeitung oder Fertig wechselt, wird das verknüpfte Jira-Ticket automatisch aktualisiert. Die Jira-Ticket-Nummer wird aus der internen Admin-Notiz extrahiert.

Zapier-Setup

  1. Trigger: Webhooks by ZapierCatch Hook
  2. Filter: event exactly matches suggestion.status_changed
  3. Filter: data__status is one of IN_PROGRESS,DONE
  4. Action: Jira Software CloudUpdate Issue

Feldmapping

Ideenkiste-FeldJira-FeldTransformation
data.adminNoteIssue KeyRegex-Match [A-Z]+-\d+
data.statusStatus / WorkflowIN_PROGRESS → „In Progress", DONE → „Done"
data.titleSummaryunverändert übernehmen
data.urlDescription (anfügen)„Quelle: {url}"
data.voteCountCustom Field „Votes"als Zahl
previous.statusKommentar„Wechsel von {previous} zu {data.status}"
Neuer Kommentar → E-Mail ans Team

Bei neuen Kommentaren auf Vorschlägen mit Status Geplant oder In Bearbeitungwird eine E-Mail an das Produkt-Team verschickt. Kommentare auf Offen- oder Abgelehnt- Vorschlägen werden bewusst gefiltert, um Rauschen zu vermeiden.

Zapier-Setup

  1. Trigger: Webhooks by ZapierCatch Hook
  2. Filter A: event exactly matches comment.created
  3. Filter B (Boolean OR):
    • data__suggestion__status exactly matches PLANNED
    • data__suggestion__status exactly matches IN_PROGRESS
  4. Action: GmailSend Email (oder Email by Zapier)
  5. To: produkt@firma.de
  6. Subject: Neuer Kommentar: {{data__suggestion__title}}
  7. Body:
    {{data__author__name}} hat einen neuen Kommentar geschrieben:
    
    "{{data__content}}"
    
    Vorschlag: {{data__suggestion__title}}
    Status: {{data__suggestion__status}}
    Link: {{data__suggestion__url}}
Tipp: In Zapier kannst du Filter mit „Only continue if any of these are true" kombinieren – exakt das, was du für die ODER-Verknüpfung der zwei Status-Werte brauchst.

13.2 Make (Integromat) Integration

Make bietet vergleichbare Funktionen wie Zapier, ist aber häufig günstiger und bietet visuelle Szenarien mit beliebig vielen Routen. Statt Zaps sprichst du hier von Scenarios, statt eines Catch Hook-Triggers nutzt du das Modul Webhooks → Custom Webhook.

Schritt für Schritt

1
Logge dich bei make.com ein und klicke oben rechts auf + Create a new scenario.
2
Klicke auf den großen +-Button in der Mitte und wähle das Modul Webhooks.
3
Wähle den Trigger Custom Webhook und klicke Add, um einen neuen Webhook anzulegen. Vergib einen Namen wie „Ideenkiste – Vorschläge".
4
Make zeigt dir nun die Webhook-Adresse (z. B. https://hook.eu2.make.com/abc123…). Klicke auf Copy address to clipboard.
5
Wechsle zu Ideenkiste: Admin → Webhooks → Neuer Webhook. Trage die kopierte URL ein, wähle die gewünschten Events und klicke Webhook erstellen.
6
Klicke in Ideenkiste auf Test senden. Make zeigt im Webhook-Modul „Successfully determined" – das Datenschema wurde anhand des echten Payloads erkannt.
7
Verbinde das Webhook-Modul mit beliebigen Folgemodulen (Slack, Jira, Google Sheets …) und klicke unten links auf den Schalter, um das Scenario auf Active zu stellen.
Tipp: Make verarbeitet Payloads in einem visuellen Mapping-Editor: Die Felder aus dem Webhook-Payload stehen als Bubbles zur Verfügung, die du per Klick in die Felder der Folgemodule ziehst.

Beispiel-Workflows

Neuer Vorschlag → Slack-Nachricht

Postet jeden neuen Vorschlag in den Slack-Kanal #produkt-feedback.

Make-Setup

  1. Modul 1: WebhooksCustom Webhook
  2. Modul 2: Flow ControlFilter mit Bedingung event = suggestion.created
  3. Modul 3: SlackCreate a Message
  4. Channel: #produkt-feedback
  5. Text (mit Make-Mapping-Bubbles):
    *Neuer Vorschlag von {{1.data.author.name}}*
    > {{1.data.title}}
    {{1.data.description}}
    
    <{{1.data.url}}|Im Board ansehen>

Erwarteter Payload

{
  "id": "evt_01j7...",
  "event": "suggestion.created",
  "timestamp": "2026-05-12T09:14:22.000Z",
  "organization": { "id": "org_01j...", "name": "Meine Firma", "slug": "meine-firma" },
  "data": {
    "id": "sug_01j...",
    "title": "Dark Mode für die Roadmap",
    "description": "Wäre für lange Sessions am Abend sehr angenehm.",
    "status": "OPEN",
    "category": "Feature-Wunsch",
    "voteCount": 0,
    "author": { "name": "Lara Schmitt", "email": "lara@example.com" },
    "url": "https://ideenkiste.app/org/meine-firma/suggestions/sug_01j..."
  }
}
Status geändert → Jira-Ticket aktualisieren

Aktualisiert das verknüpfte Jira-Ticket, sobald ein Vorschlag auf In Bearbeitung oder Fertig wechselt. Der Jira-Issue-Key wird aus der internen Admin-Notiz extrahiert.

Make-Setup

  1. Modul 1: WebhooksCustom Webhook
  2. Filter (Modul 1 → Modul 2): event = suggestion.status_changed UND data.status in [IN_PROGRESS, DONE]
  3. Modul 2: ToolsSet variable für jiraKey mit {{ match(1.data.adminNote; "[A-Z]+-\d+") }}
  4. Modul 3: Jira CloudUpdate an Issue, Issue Key = {{2.jiraKey}}

Feldmapping

Ideenkiste (Webhook)Jira-FeldMake-Ausdruck
data.adminNoteIssue Key{{ match(1.data.adminNote; "[A-Z]+-\d+") }}
data.statusWorkflow Transition{{ if(1.data.status = "DONE"; "Done"; "In Progress") }}
data.titleSummary{{1.data.title}}
data.voteCountCustom Field „Votes"{{1.data.voteCount}}
previous.statusAdd CommentWechsel von {{1.previous.status}} zu {{1.data.status}}
Neuer Kommentar → E-Mail ans Team

Sendet eine E-Mail nur dann, wenn der zugehörige Vorschlag im Status Geplant oder In Bearbeitung ist – sonst würde das Team bei jedem Kommentar auf einem alten Vorschlag benachrichtigt.

Make-Setup

  1. Modul 1: WebhooksCustom Webhook
  2. Filter: event = comment.created UND data.suggestion.status in [PLANNED, IN_PROGRESS]
  3. Modul 2: EmailSend an Email
  4. To: produkt@firma.de
  5. Subject: Neuer Kommentar: {{1.data.suggestion.title}}
  6. Content (HTML):
    <p><strong>{{1.data.author.name}}</strong> hat einen neuen Kommentar geschrieben:</p>
    <blockquote>{{1.data.content}}</blockquote>
    <p>
      Vorschlag: <strong>{{1.data.suggestion.title}}</strong><br>
      Status: <code>{{1.data.suggestion.status}}</code><br>
      <a href="{{1.data.suggestion.url}}">Im Board ansehen</a>
    </p>
Tipp: In Make werden Filter direkt auf die Verbindungslinie zwischen zwei Modulen gesetzt (Klick auf den kleinen Schraubenschlüssel auf der Linie). UND-Verknüpfungen kommen automatisch zustande, sobald du mehrere Bedingungen in dieselbe Filter-Group legst.

13.3 Webhook Payload-Referenz

Alle Events folgen derselben Umschlagsstruktur (id, event, timestamp, organization, data) – nur das data-Objekt unterscheidet sich pro Event-Typ. Klappe die jeweiligen Blöcke auf, um den vollständigen JSON-Payload für das Mapping in Zapier oder Make zu sehen.

EventWichtigste Felder im data-Objekt
suggestion.createdid, title, description, status, category, voteCount, author, url
suggestion.updatedid, title, description, category, url + previous
suggestion.status_changedid, title, status, url + previous.status
suggestion.deletedid, title
vote.createdsuggestion, voter, voteCount
vote.deletedsuggestion, voter, voteCount
comment.createdid, content, author, suggestion (id, title, status, url)
comment.deletedid, suggestion
member.invitedemail, role, invitedBy
member.removeduserId, email, removedBy
suggestion.created
{
  "id": "evt_01j7abc...",
  "event": "suggestion.created",
  "timestamp": "2026-05-12T09:14:22.000Z",
  "organization": {
    "id": "org_01j...",
    "name": "Meine Firma",
    "slug": "meine-firma"
  },
  "data": {
    "id": "sug_01j...",
    "title": "Dark Mode für die Roadmap",
    "description": "Wäre für lange Sessions am Abend sehr angenehm.",
    "status": "OPEN",
    "category": "Feature-Wunsch",
    "voteCount": 0,
    "author": {
      "id": "usr_01j...",
      "name": "Lara Schmitt",
      "email": "lara@example.com"
    },
    "url": "https://ideenkiste.app/org/meine-firma/suggestions/sug_01j..."
  }
}
suggestion.updated
{
  "id": "evt_01j...",
  "event": "suggestion.updated",
  "timestamp": "2026-05-12T10:02:00.000Z",
  "organization": { "id": "org_01j...", "name": "Meine Firma", "slug": "meine-firma" },
  "data": {
    "id": "sug_01j...",
    "title": "Dark Mode für Roadmap und Feed",
    "description": "Wäre für lange Sessions sehr angenehm – bitte auch für den Feed.",
    "category": "Feature-Wunsch",
    "url": "https://ideenkiste.app/org/meine-firma/suggestions/sug_01j..."
  },
  "previous": {
    "title": "Dark Mode für die Roadmap",
    "description": "Wäre für lange Sessions am Abend sehr angenehm.",
    "category": "Feature-Wunsch"
  }
}
suggestion.status_changed
{
  "id": "evt_01j...",
  "event": "suggestion.status_changed",
  "timestamp": "2026-05-12T11:24:00.000Z",
  "organization": { "id": "org_01j...", "name": "Meine Firma", "slug": "meine-firma" },
  "data": {
    "id": "sug_01j...",
    "title": "Dark Mode für die Roadmap",
    "status": "IN_PROGRESS",
    "voteCount": 18,
    "adminNote": "FEED-432 angelegt, geplant für Sprint 26.",
    "url": "https://ideenkiste.app/org/meine-firma/suggestions/sug_01j..."
  },
  "previous": {
    "status": "PLANNED"
  }
}
suggestion.deleted
{
  "id": "evt_01j...",
  "event": "suggestion.deleted",
  "timestamp": "2026-05-12T12:00:00.000Z",
  "organization": { "id": "org_01j...", "name": "Meine Firma", "slug": "meine-firma" },
  "data": {
    "id": "sug_01j...",
    "title": "Dark Mode für die Roadmap"
  }
}
vote.created
{
  "id": "evt_01j...",
  "event": "vote.created",
  "timestamp": "2026-05-12T09:18:11.000Z",
  "organization": { "id": "org_01j...", "name": "Meine Firma", "slug": "meine-firma" },
  "data": {
    "suggestion": {
      "id": "sug_01j...",
      "title": "Dark Mode für die Roadmap",
      "url": "https://ideenkiste.app/org/meine-firma/suggestions/sug_01j..."
    },
    "voter": {
      "id": "usr_01j...",
      "name": "Jan Berger",
      "email": "jan@example.com"
    },
    "voteCount": 1
  }
}
vote.deleted
{
  "id": "evt_01j...",
  "event": "vote.deleted",
  "timestamp": "2026-05-12T09:25:42.000Z",
  "organization": { "id": "org_01j...", "name": "Meine Firma", "slug": "meine-firma" },
  "data": {
    "suggestion": {
      "id": "sug_01j...",
      "title": "Dark Mode für die Roadmap",
      "url": "https://ideenkiste.app/org/meine-firma/suggestions/sug_01j..."
    },
    "voter": {
      "id": "usr_01j...",
      "name": "Jan Berger",
      "email": "jan@example.com"
    },
    "voteCount": 0
  }
}
comment.created
{
  "id": "evt_01j...",
  "event": "comment.created",
  "timestamp": "2026-05-12T11:30:00.000Z",
  "organization": { "id": "org_01j...", "name": "Meine Firma", "slug": "meine-firma" },
  "data": {
    "id": "cmt_01j...",
    "content": "Danke für das Update – freue mich!",
    "author": {
      "id": "usr_01j...",
      "name": "Lara Schmitt",
      "email": "lara@example.com"
    },
    "suggestion": {
      "id": "sug_01j...",
      "title": "Dark Mode für die Roadmap",
      "status": "IN_PROGRESS",
      "url": "https://ideenkiste.app/org/meine-firma/suggestions/sug_01j..."
    }
  }
}
comment.deleted
{
  "id": "evt_01j...",
  "event": "comment.deleted",
  "timestamp": "2026-05-12T11:45:00.000Z",
  "organization": { "id": "org_01j...", "name": "Meine Firma", "slug": "meine-firma" },
  "data": {
    "id": "cmt_01j...",
    "suggestion": {
      "id": "sug_01j...",
      "title": "Dark Mode für die Roadmap"
    }
  }
}
member.invited
{
  "id": "evt_01j...",
  "event": "member.invited",
  "timestamp": "2026-05-12T08:00:00.000Z",
  "organization": { "id": "org_01j...", "name": "Meine Firma", "slug": "meine-firma" },
  "data": {
    "email": "neuer-kollege@firma.de",
    "role": "ADMIN",
    "invitedBy": {
      "id": "usr_01j...",
      "name": "Max Mustermann",
      "email": "max@firma.de"
    }
  }
}
member.removed
{
  "id": "evt_01j...",
  "event": "member.removed",
  "timestamp": "2026-05-12T14:10:00.000Z",
  "organization": { "id": "org_01j...", "name": "Meine Firma", "slug": "meine-firma" },
  "data": {
    "userId": "usr_01j...",
    "email": "ehemalig@firma.de",
    "removedBy": {
      "id": "usr_01j...",
      "name": "Max Mustermann",
      "email": "max@firma.de"
    }
  }
}
Tipp: Diese Beispiel-Payloads zeigen die maximale Feldmenge. In der Praxis können einzelne Felder fehlen (z. B. category wenn keine Kategorie gesetzt ist oder adminNote wenn die interne Notiz leer ist). Plane deine Filter und Mappings entsprechend defensiv.

14. Widget & iFrame

Du kannst dein Board direkt in deine eigene Website einbetten – entweder per JavaScript-Widget (Floating-Button mit Modal) oder per iFrame. Beide Varianten sind im Free-Plan verfügbar; im Pro-Plan kommen Domain-Whitelist und das Ausblenden des „Powered by"-Badges hinzu.

Den passenden Code generierst du im Admin-Bereich unter Admin → Widget – inklusive Live-Vorschau und Copy-Button.

Variante 1: JavaScript-Widget (empfohlen)

Das Widget ist ein einzelnes, ca. 2 KB großes JS-Bundle, das einen Floating-Button und ein Modal mit deinem Board ins Shadow DOM rendert – die Styles deiner Website können das Widget also nicht beeinflussen.

<script
  src="https://ideenkiste.app/widget/widget.js"
  data-board="dein-slug"
  data-theme="auto"
  data-lang="de"
  data-position="bottom-right"
  data-primary-color="#4f46e5"
  data-button-text="Idee einreichen"
  async></script>

Konfigurations-Attribute

AttributDefaultBedeutung
data-boardSlug deiner Organisation (Pflicht).
data-themeautolight · dark · auto (folgt prefers-color-scheme).
data-langdede · en.
data-positionbottom-rightbottom-right · bottom-left.
data-primary-color#4f46e5Hex-Farbe des Floating-Buttons.
data-button-textIdee einreichenBeschriftung des Floating-Buttons.
data-hide-buttonfalsetrue → kein Button, nur per JS-API steuerbar.

JavaScript-API

Das Widget legt einen einzigen Global window.Ideenkiste an:

Ideenkiste.open();             // Modal öffnen
Ideenkiste.close();            // schließen
Ideenkiste.toggle();           // togglen
Ideenkiste.setTheme('dark');   // 'light' | 'dark'

// Eingeloggten Nutzer vorausfuellen (verhindert Magic-Link-Schritt)
Ideenkiste.identify({
  email: 'max@firma.de',
  name:  'Max Mustermann',
});

// Events
Ideenkiste.on('open',      () => {});
Ideenkiste.on('close',     () => {});
Ideenkiste.on('submitted', (data) => {
  // data = { id, title, ... }
});
Tipp: identify() kann auch vor dem Oeffnen aufgerufen werden – die Daten werden gepuffert und an das Widget weitergegeben, sobald das Modal geladen ist.

Variante 2: iFrame

Falls du keine zusätzliche Skript-Tag-Anbindung möchtest, kannst du das Board auch direkt als iFrame einbetten:

<iframe
  src="https://ideenkiste.app/embed/dein-slug"
  width="100%"
  height="600"
  frameborder="0"
  id="ideenkiste-iframe"
  style="border-radius:12px;border:1px solid #e5e7eb;"
></iframe>

Optionale Query-Parameter:

  • ?theme=dark – erzwingt Dark-Mode
  • ?category=Bug – nur Vorschläge dieser Kategorie
  • ?lang=en – englische Oberfläche

Roadmap als iFrame einbetten

Statt der Vorschlagsliste kannst du auch deine öffentliche Roadmap einbetten – drei Spalten Geplant · In Arbeit · Fertig nach Status sortiert. Ideal für „Was kommt als nächstes?"-Seiten oder Changelog-Bereiche deiner Website.

<iframe
  src="https://ideenkiste.app/embed/dein-slug/roadmap"
  width="100%"
  height="700"
  frameborder="0"
  id="ideenkiste-roadmap"
  title="Ideenkiste Roadmap"
  style="border-radius:12px;border:1px solid #e5e7eb;"
></iframe>

Es gelten dieselben Query-Parameter ?theme=dark und ?lang=en sowie der gleiche Auto-Resize-Mechanismus (ideenkiste:resize). Den fertigen Code generierst du im Admin-Bereich unter Admin → Widget → iFrame über die Ansicht-Auswahl.

Auto-Resize-Helper

Das iFrame meldet seine tatsächliche Höhe über postMessage. Mit ein paar Zeilen JavaScript kannst du den iFrame automatisch mitwachsen lassen:

<script>
  window.addEventListener('message', function (e) {
    if (e.data && e.data.type === 'ideenkiste:resize') {
      var f = document.getElementById('ideenkiste-iframe');
      if (f) f.style.height = e.data.data.height + 'px';
    }
  });
</script>

postMessage-Kontrakt

RichtungTypeDaten
iFrame → Parentideenkiste:readyWird einmal nach dem Laden gesendet.
iFrame → Parentideenkiste:resize{ height: number } – auto-resize.
iFrame → Parentideenkiste:submittedVorschlag wurde eingereicht.
Parent → iFrameideenkiste:identify{ email, name } – User vorausfüllen.
Parent → iFrameideenkiste:setTheme{ theme: 'light' | 'dark' }.

Domain-Whitelist Pro

Im Pro-Plan kannst du unter Admin → Widget → Erweitert eine Liste erlaubter Hosts hinterlegen. Anfragen aus anderen Domains liefern 403. Subdomains sind automatisch eingeschlossen – ein Eintrag firma.de deckt also auch www.firma.de und app.firma.de mit ab.

„Powered by"-Badge

Im Free-Plan erscheint am unteren Rand der Embed-Ansicht ein dezentes „Powered by Ideenkiste"-Badge. Im Pro-Plan kannst du es unter Admin → Einstellungen → White-Label ausblenden.

Hinweis: Die Widget-API hat ein eigenes Rate-Limit von 20 Anfragen pro Minute pro IP – das schützt dich vor versehentlichen Endlosschleifen oder Bot-Traffic auf der einbettenden Seite.

15. Custom Domain einrichten

Statt deiner Board-URL ideenkiste.app/org/dein-slug kannst du dein Board unter einer eigenen Domain wie feedback.firma.de betreiben. Pro

Dafür legst du beim Anbieter deiner Domain (z. B. IONOS, Strato, Cloudflare, GoDaddy, …) einen CNAME-Eintrag an, der auf unsere Server zeigt. Sobald der Eintrag aktiv ist, klickst du im Admin-Panel auf „Jetzt prüfen" – wir kümmern uns dann automatisch um TLS-Zertifikat (Let's Encrypt) und Routing.

Was du brauchst

  • Ein aktives Pro-Abo für dein Board
  • Eine eigene Subdomain, z. B. feedback.firma.de oder ideen.firma.de
  • Zugriff auf die DNS-Verwaltung bei deinem Domain-Anbieter

Schritt 1 – Domain im Admin-Panel hinterlegen

1
Öffne Admin → Einstellungen → Custom Domain.
2
Gib deine gewünschte Subdomain ein (z. B. feedback.firma.de) und klicke Speichern.
3
Ideenkiste zeigt dir nun den genauen DNS-Eintrag an, den du bei deinem Domain-Anbieter setzen musst.

Schritt 2 – CNAME-Eintrag setzen

Logge dich bei deinem Domain-Anbieter ein und öffne die DNS-Verwaltung für deine Domain. Lege einen neuen Eintrag an:

FeldWert
TypCNAME
Name / Hostfeedback (nur der Subdomain-Teil ohne .firma.de)
Ziel / Wertboards.ideenkiste.app
TTL3600 (1 Stunde) – oder Standard belassen
Hinweis: Manche Anbieter erwarten den vollen Domain-Namen im Feld „Name" (z. B. feedback.firma.de), andere nur den Subdomain-Teil (feedback). Im Zweifel hilft die Hilfe deines Anbieters. Falls dein Anbieter ein Punkt-Anhängen verlangt, schreibe das Ziel als boards.ideenkiste.app. (mit Punkt am Ende).

Schritt 3 – Verifizieren

1
Warte ein paar Minuten, bis dein Domain-Anbieter den Eintrag übernommen hat (in der Regel unter 5 Minuten, in Ausnahmefällen bis zu 24 Stunden).
2
Klicke im Admin-Panel auf „Jetzt prüfen". Wir machen einen DNS-Lookup und bestätigen den Eintrag.
3
Sobald die Verifikation erfolgreich war, ist dein Board unter deiner Domain erreichbar. Das TLS-Zertifikat (HTTPS) wird automatisch ausgestellt – du musst dich um nichts kümmern.
Tipp: Du kannst den DNS-Eintrag auch von der Kommandozeile prüfen:
dig CNAME feedback.firma.de +short
# erwartet: boards.ideenkiste.app.

Was nicht unterstützt wird

  • Apex-Domain (also firma.de ohne Subdomain). RFC-konforme CNAMEs sind auf der Apex-Ebene nicht erlaubt; nutze stattdessen eine Subdomain wie feedback.firma.de. Manche Anbieter (Cloudflare, Route 53) bieten ALIAS- oder ANAME-Records an, die das umgehen – das wird derzeit jedoch nicht offiziell unterstützt.
  • A-Record auf eine feste IP: Bitte ausschließlich CNAME verwenden – sonst kann Ideenkiste das TLS-Zertifikat nicht automatisch ausstellen oder verlängern.

Tägliche Re-Verifikation

Wir prüfen jeden Tag, ob dein CNAME-Eintrag noch korrekt auf boards.ideenkiste.app zeigt. Wird er geändert oder gelöscht, markieren wir die Domain als unverifiziert und schicken dir eine E-Mail – dein Board ist dann nur noch unter der Standard-URL erreichbar, bis der DNS-Eintrag wiederhergestellt ist.

Beispiele bei populären Anbietern

AnbieterWo trägst du den CNAME ein?
IONOSDomains & SSL → Domain auswählen → DNS → Eintrag hinzufügen → Typ CNAME
StratoPaket-Verwaltung → Domain → DNS-Verwaltung → Subdomain anlegen → CNAME-Ziel
CloudflareDNS → Add record → Type CNAMEProxy-Status auf „DNS only" (graue Wolke) setzen
GoDaddyMein Konto → DNS verwalten → Hinzufügen → Typ CNAME
All-InklKAS → Domains → DNS SettingsNeuer Eintrag → Typ CNAME
Hinweis: Bei Cloudflare unbedingt den Proxy-Status auf „DNS only" stellen (graue Wolke). Mit aktivem Proxy (orange Wolke) sieht unser DNS-Lookup nicht den eigentlichen CNAME, sondern eine Cloudflare-IP – die Verifikation schlägt dann fehl.

Häufige Fehler

  • „CNAME nicht gefunden": DNS-Eintrag noch nicht propagiert – ein paar Minuten warten und erneut prüfen.
  • Domain ist bereits einem anderen Board zugeordnet: Eine Domain kann immer nur ein einziges Board bedienen.
  • Browser zeigt Zertifikatsfehler: Erste Ausstellung dauert nach erfolgreicher Verifikation einige Minuten – falls nach 30 Minuten noch ein Fehler erscheint, melde dich bei uns.
Fragen nicht beantwortet? Schreib uns – wir helfen gerne weiter.