> ## Documentation Index
> Fetch the complete documentation index at: https://docs.so-me.studio/llms.txt
> Use this file to discover all available pages before exploring further.

# Social-Media-Webhooks für Beitrags- und Posteingangs-Events

> Abonniere signierte Echtzeit-Events von Social media studio, etwa veröffentlichte oder fehlgeschlagene Beiträge und neue Nachrichten, um deine eigenen Automatisierungen anzustoßen.

Mit Webhooks baust oder richtest du Integrationen ein, die Echtzeit-Events in Social media studio abonnieren. Wenn ein Event ausgelöst wird, senden wir eine HTTP-POST-Payload an deine konfigurierte URL, sodass deine Anwendung sofort reagieren kann, ohne zu pollen.

## Grundlagen der Konfiguration

Du kannst Webhooks direkt im Dashboard unter **Einstellungen > Webhooks** oder über unsere API konfigurieren.

Jeder Webhook benötigt:

* Eine gültige **Endpunkt-URL** (HTTPS wird dringend empfohlen).
* Eine oder mehrere **Event-Kategorien**, die du abonnieren möchtest.

| Eigenschaft | Wert |
| - | - |
| **Transport** | HTTP POST |
| **Content-Type** | `application/json` |
| **Timeout** | 10 Sekunden |
| **Maximale Payload-Größe** | 64 KB |

> [!NOTE]
>
> Dein Tarif bestimmt, wie viele aktive Webhook-Abonnements du gleichzeitig unterhalten kannst.

## Beispiele für Payload-Vorlagen

Mit `payloadTemplate` passt du den JSON-Body an, der an deinen Endpunkt gesendet wird. Verfügbare Vorlagenvariablen sind:

* `{{event}}`
* `{{category}}`
* `{{timestamp}}`
* `{{data}}`
* `{{data.any_field}}` (für verschachtelte, eventspezifische Felder)

### 1) Generischer JSON-Umschlag

```json theme={null}
{
  "event": "{{event}}",
  "category": "{{category}}",
  "occurredAt": "{{timestamp}}",
  "payload": {{data}}
}
```

### 2) Discord-taugliche Payload

```json theme={null}
{
  "content": "🚀 {{event}}",
  "username": "Social media studio Webhooks",
  "embeds": [
    {
      "title": "Webhook Event",
      "description": "Post {{data.postId}} on {{data.platform}}",
      "fields": [
        { "name": "Category", "value": "{{category}}" },
        { "name": "Time", "value": "{{timestamp}}" }
      ]
    }
  ]
}
```

### 3) Payload im Slack-Block-Kit-Stil

```json theme={null}
{
  "text": "Social media studio event: {{event}}",
  "blocks": [
    {
      "type": "section",
      "text": {
        "type": "mrkdwn",
        "text": "*Event:* `{{event}}`\n*Category:* `{{category}}`\n*Post:* `{{data.postId}}`\n*Platform:* `{{data.platform}}`\n*At:* `{{timestamp}}`"
      }
    }
  ]
}
```

> [!NOTE]
>
> Fehlt eine Variable in den zugrunde liegenden Event-Daten, bleibt der Platzhalter unverändert (zum Beispiel `{{data.postId}}`).

## Webhook-Limits und Aufbewahrung

Je nach Tarif unterscheiden sich die Aufbewahrungsdauer deiner Webhook-Zustellungsprotokolle und die Anzahl der Webhook-Endpunkte, die du anlegen kannst:

**Limits je Tarif**

| Tarif | Max. Abonnements | Protokollaufbewahrung |
| - | - | - |
| **Lite** | 3 Endpunkte | 30 Tage |
| **Standard** | 10 Endpunkte | 60 Tage |
| **Advanced** | 25 Endpunkte | 90 Tage |

**Wiederholungsrichtlinie**

Wenn dein Endpunkt einen Fehler zurückgibt (HTTP-Status `>= 400`) oder in ein Timeout läuft (nach 10 Sekunden), versucht Social media studio automatisch erneut, das Event zu senden.

Das System unternimmt **bis zu 4 Wiederholungen** mit diesen Wartezeiten:

* **1. Wiederholung:** 30 Sekunden
* **2. Wiederholung:** 2 Minuten
* **3. Wiederholung:** 10 Minuten
* **4. Wiederholung:** 1 Stunde

> [!WARNING]
>
> Schlägt ein Webhook **10 Mal in Folge** fehl, wird er automatisch deaktiviert, um das System nicht zu belasten.

## Verfügbare Events

Wir unterstützen **162 Events in 26 Kategorien**. Wenn du eine Kategorie abonnierst, erhältst du alle zugehörigen Events. Für feinere Kontrolle kannst du auch einzelne Events abonnieren.

> **Beitrag (22 Events)**
>
> | Event | Beschreibung |
> | - | - |
> | `post.created` | Ein neuer Beitrag wurde erstellt |
> | `post.updated` | Inhalt oder Zeitplan eines Beitrags wurde geändert |
> | `post.deleted` | Ein Beitrag wurde gelöscht |
> | `post.bulk_deleted` | Mehrere Beiträge wurden in einem Vorgang gelöscht |
> | `post.published` | Ein Beitrag wurde erfolgreich auf seiner Plattform veröffentlicht |
> | `post.failed` | Ein geplanter Beitrag konnte nicht veröffentlicht werden |
> | `post.retried` | Ein fehlgeschlagener Beitrag wurde wieder in die Warteschlange gestellt |
> | `post.scheduled` | Ein Beitrag wurde zur Veröffentlichungswarteschlange hinzugefügt |
> | `post.unscheduled` | Ein Beitrag wurde aus der Veröffentlichungswarteschlange entfernt |
> | `post.resubmitted` | Ein abgelehnter Beitrag wurde erneut zur Freigabe eingereicht |
> | `post.first_comment_posted` | Der erste Kommentar eines Beitrags wurde veröffentlicht |
> | `post.first_comment_failed` | Der erste Kommentar eines Beitrags konnte nicht veröffentlicht werden |
> | `repurpose.batch_created` | Ein Wiederverwendungsplan wurde aus vorhandenen Inhalten erstellt |
> | `repurpose.variations_generated` | Für einen Wiederverwendungsplan wurden KI-Varianten erzeugt |
> | `repurpose.batch_committed` | Aus einem Wiederverwendungsplan wurden Beiträge geplant |
> | `repurpose.batch_approved` | Die Beiträge eines Wiederverwendungsplans wurden freigegeben |
> | `repurpose.batch_rejected` | Die Beiträge eines Wiederverwendungsplans wurden abgelehnt |
> | `repurpose.batch_paused` | Eine Evergreen-Warteschlange wurde pausiert |
> | `repurpose.batch_resumed` | Eine pausierte Evergreen-Warteschlange wurde fortgesetzt |
> | `repurpose.batch_completed` | Eine Evergreen-Warteschlange hat alles Geplante veröffentlicht |
> | `repurpose.batch_failed` | Einige Beiträge eines Wiederverwendungsplans konnten nicht erstellt werden |
> | `repurpose.cycle_posted` | Eine Evergreen-Warteschlange hat ihren nächsten Beitrag veröffentlicht |

> **Entwurf (4 Events)**
>
> | Event | Beschreibung |
> | - | - |
> | `draft.created` | Ein Entwurf wurde erstellt |
> | `draft.updated` | Ein Entwurf wurde aktualisiert |
> | `draft.deleted` | Ein Entwurf wurde gelöscht |
> | `draft.converted` | Ein Entwurf wurde in einen geplanten/veröffentlichten Beitrag umgewandelt |

> **Freigabe (6 Events)**
>
> | Event | Beschreibung |
> | - | - |
> | `post.approval.requested` | Ein Beitrag wurde zur Freigabe eingereicht |
> | `post.approval.approved` | Ein ausstehender Beitrag wurde freigegeben |
> | `post.approval.rejected` | Ein ausstehender Beitrag wurde abgelehnt |
> | `post.approval.comment_added` | Ein Prüfer hat einen Kommentar zu einem Beitrag hinzugefügt |
> | `post.approval.comment_updated` | Der Kommentar eines Prüfers wurde bearbeitet |
> | `post.approval.comment_deleted` | Der Kommentar eines Prüfers wurde gelöscht |

> **Social-Konto (3 Events)**
>
> | Event | Beschreibung |
> | - | - |
> | `social.account_connected` | Ein Konto eines sozialen Netzwerks wurde autorisiert |
> | `social.account_disconnected` | Die Verbindung eines Social-Kontos wurde entfernt |
> | `social.account_token_refreshed` | Das OAuth-Token eines Social-Kontos wurde erneuert |

> **Medien (9 Events)**
>
> | Event | Beschreibung |
> | - | - |
> | `media.uploaded` | Eine Datei wurde in die Medienbibliothek hochgeladen |
> | `media.deleted` | Eine Mediendatei wurde gelöscht |
> | `media.bulk_deleted` | Mehrere Mediendateien wurden in einem Vorgang gelöscht |
> | `media.moved` | Eine Mediendatei wurde in einen anderen Ordner verschoben |
> | `media.folder_created` | Ein neuer Medienordner wurde erstellt |
> | `media.folder_renamed` | Ein Medienordner wurde umbenannt |
> | `media.folder_deleted` | Ein Medienordner wurde gelöscht |
> | `media.folder_moved` | Ein Medienordner wurde verschoben |
> | `media.canva_imported` | Ein Design wurde aus Canva in die Bibliothek importiert |

> **Composer (3 Events)**
>
> | Event | Beschreibung |
> | - | - |
> | `composer.reel_created` | Im Composer wurde ein neues Reel/Video erstellt |
> | `composer.reel_updated` | Ein bestehendes Reel/Video wurde aktualisiert |
> | `composer.reel_deleted` | Ein Reel/Video wurde gelöscht |

> **Analysen (1 Event)**
>
> | Event | Beschreibung |
> | - | - |
> | `analytics.report_generated` | Ein geplanter Analyse-Aktualisierungszyklus wurde abgeschlossen (alle 2 Stunden für Mandanten mit verbundenen Social-Konten) |

> **Beste Zeit (2 Events)**
>
> | Event | Beschreibung |
> | - | - |
> | `best_time.recommendation_generated` | Eine Empfehlung für den besten Veröffentlichungszeitpunkt wurde erstmals für ein Konto berechnet |
> | `best_time.recommendation_recomputed` | Eine bestehende Empfehlung für den besten Zeitpunkt wurde aktualisiert (täglicher Cron oder manuelle Neuberechnung) |

> **Posteingang (16 Events)**
>
> | Event | Beschreibung |
> | - | - |
> | `inbox.message_received` | Eine eingehende Direktnachricht wurde empfangen |
> | `inbox.message_sent` | Eine ausgehende Direktnachricht wurde gesendet |
> | `inbox.comment_received` | Ein eingehender Social-Kommentar wurde empfangen |
> | `inbox.comment_sent` | Eine ausgehende Antwort auf einen Social-Kommentar wurde gesendet |
> | `inbox.comment_hidden` | Ein Social-Kommentar wurde ausgeblendet |
> | `inbox.comment_edited` | Ein Social-Kommentar wurde bearbeitet |
> | `inbox.comment_removed` | Ein Social-Kommentar wurde vollständig entfernt |
> | `inbox.conversation_created` | Ein neuer Konversationsverlauf hat begonnen |
> | `inbox.conversation_deleted` | Eine Konversation wurde gelöscht |
> | `inbox.conversation_archived` | Eine Konversation wurde archiviert |
> | `inbox.conversation_resolved` | Eine Konversation wurde als erledigt markiert |
> | `inbox.subscribed` | Der Posteingang wurde für ein verbundenes Konto/eine Plattform abonniert |
> | `inbox.unsubscribed` | Das Abonnement des Posteingangs für ein verbundenes Konto/eine Plattform wurde beendet |
> | `inbox.saved_reply_created` | Eine Vorlage für gespeicherte Antworten wurde erstellt |
> | `inbox.saved_reply_updated` | Eine Vorlage für gespeicherte Antworten wurde aktualisiert |
> | `inbox.saved_reply_deleted` | Eine Vorlage für gespeicherte Antworten wurde gelöscht |

> **Biolink (17 Events)**
>
> | Event | Beschreibung |
> | - | - |
> | `biolink.created` | Eine Biolink-Seite wurde erstellt |
> | `biolink.updated` | Eine Biolink-Seite wurde aktualisiert |
> | `biolink.deleted` | Eine Biolink-Seite wurde gelöscht |
> | `biolink.published` | Eine Biolink-Seite wurde veröffentlicht |
> | `biolink.unpublished` | Eine Biolink-Seite wurde auf privat gestellt |
> | `biolink.theme_changed` | Ein Biolink wurde auf ein anderes voreingestelltes Design umgestellt |
> | `biolink.custom_theme_set` | Für einen Biolink wurde ein eigenes Design eingerichtet |
> | `biolink.button_added` | Einem Biolink wurde eine Schaltfläche hinzugefügt |
> | `biolink.button_updated` | Eine Biolink-Schaltfläche wurde aktualisiert |
> | `biolink.button_removed` | Eine Biolink-Schaltfläche wurde entfernt |
> | `biolink.button_reordered` | Biolink-Schaltflächen wurden neu angeordnet |
> | `biolink.post_created` | Einem Biolink wurde eine eingebettete Instagram-Beitragsvorschau hinzugefügt |
> | `biolink.post_updated` | Ein eingebetteter Beitrag eines Biolinks wurde aktualisiert |
> | `biolink.post_deleted` | Ein eingebetteter Beitrag wurde aus einem Biolink entfernt |
> | `biolink.post_reordered` | Eingebettete Biolink-Beiträge wurden neu angeordnet |
> | `biolink.profile_image_uploaded` | Ein Biolink-Profilbild wurde hochgeladen |
> | `biolink.profile_image_deleted` | Ein Biolink-Profilbild wurde entfernt |

> **WhatsApp (6 Events)**
>
> | Event | Beschreibung |
> | - | - |
> | `whatsapp.template_created` | Eine WhatsApp-Nachrichtenvorlage wurde zur Genehmigung eingereicht |
> | `whatsapp.template_deleted` | Eine WhatsApp-Nachrichtenvorlage wurde gelöscht |
> | `whatsapp.template_media_uploaded` | Für eine WhatsApp-Vorlage wurden Medien hochgeladen |
> | `whatsapp.message_sent` | Eine WhatsApp-Vorlagennachricht wurde an einen Empfänger gesendet |
> | `whatsapp.template_status_updated` | Meta hat eine Vorlage genehmigt, abgelehnt, pausiert oder deaktiviert |
> | `whatsapp.phone_quality_updated` | Meta hat die Qualitätsbewertung oder das Nachrichtenlimit einer Nummer geändert |

> **KI (8 Events)**
>
> | Event | Beschreibung |
> | - | - |
> | `ai.text_generated` | Eine KI-Textvervollständigung wurde abgeschlossen |
> | `ai.caption_generated` | Eine KI-Beitragsunterschrift wurde generiert |
> | `ai.image_generated` | Eine KI-Bildaufgabe wurde erfolgreich abgeschlossen |
> | `ai.image_failed` | Eine KI-Bildaufgabe ist fehlgeschlagen |
> | `ai.image_deleted` | Ein generiertes KI-Bild wurde gelöscht |
> | `ai.video_generated` | Eine KI-Videoaufgabe wurde erfolgreich abgeschlossen |
> | `ai.video_failed` | Eine KI-Videoaufgabe ist fehlgeschlagen |
> | `ai.video_deleted` | Ein generiertes KI-Video wurde gelöscht |

> **Wissensdatenbank (4 Events)**
>
> | Event | Beschreibung |
> | - | - |
> | `knowledge.created` | Ein Wissensdokument wurde dem RAG-Hub hinzugefügt |
> | `knowledge.updated` | Metadaten oder Notiztext eines Wissensdokuments wurden aktualisiert |
> | `knowledge.deleted` | Ein Wissensdokument wurde entfernt |
> | `knowledge.reprocessed` | Die Textextraktion eines Wissensdokuments wurde erneut ausgeführt |

> **Team (6 Events)**
>
> | Event | Beschreibung |
> | - | - |
> | `team.invitation_sent` | Eine Team-Einladung wurde gesendet |
> | `team.invitation_cancelled` | Eine ausstehende Team-Einladung wurde zurückgezogen |
> | `team.member_joined` | Ein neues Mitglied hat seine Einladung angenommen |
> | `team.member_left` | Ein Mitglied hat die Organisation freiwillig verlassen |
> | `team.member_removed` | Ein Mitglied wurde von einem Inhaber entfernt |
> | `team.permission_updated` | Die Rolle eines Mitglieds wurde geändert |

> **Organisation (8 Events)**
>
> | Event | Beschreibung |
> | - | - |
> | `organization.created` | Eine neue Organisation wurde erstellt |
> | `organization.deleted` | Eine Organisation wurde gelöscht |
> | `organization.member_left` | Ein Mitglied hat die Organisation verlassen |
> | `organization.name_updated` | Der Name der Organisation wurde aktualisiert |
> | `organization.logo_updated` | Das Logo der Organisation wurde aktualisiert |
> | `organization.description_updated` | Die Beschreibung der Organisation wurde aktualisiert |
> | `organization.theme_updated` | Das UI-Design der Organisation wurde aktualisiert |
> | `organization.timezone_updated` | Die Standardzeitzone der Organisation wurde aktualisiert |

> **Konto und Profil (8 Events)**
>
> | Event | Beschreibung |
> | - | - |
> | `account.updated` | Die Einstellungen eines Social-Kontos wurden aktualisiert |
> | `account.token_expired` | Das Sitzungstoken eines Social-Kontos wurde als abgelaufen erkannt |
> | `account.token_expiring` | Der Zugriff eines Social-Media-Kontos läuft bald ab; verbinde es neu, um weiter zu posten |
> | `profile.updated` | Ein Benutzerprofil wurde aktualisiert |
> | `profile.email_updated` | Die E-Mail-Adresse eines Benutzers wurde geändert |
> | `profile.password_changed` | Das Passwort eines Benutzers wurde geändert |
> | `profile.avatar_uploaded` | Ein Benutzer hat ein Profilbild hochgeladen |
> | `profile.avatar_deleted` | Ein Benutzer hat sein Profilbild entfernt |

> **Authentifizierung (8 Events)**
>
> | Event | Beschreibung |
> | - | - |
> | `auth.registered` | Ein Benutzer hat die Registrierung abgeschlossen |
> | `auth.login` | Ein Benutzer hat sich angemeldet |
> | `auth.logout` | Ein Benutzer hat sich abgemeldet |
> | `auth.email_verified` | Ein Benutzer hat seine E-Mail-Adresse bestätigt |
> | `auth.password_reset_requested` | Eine E-Mail zum Zurücksetzen des Passworts wurde gesendet |
> | `auth.password_reset_completed` | Ein Benutzer hat das Zurücksetzen des Passworts abgeschlossen |
> | `auth.verification_resent` | Eine Bestätigungs-E-Mail wurde erneut gesendet |
> | `auth.refresh_token_issued` | Ein neues Refresh-Token wurde ausgestellt |

> **Abonnement und Abrechnung (8 Events)**
>
> | Event | Beschreibung |
> | - | - |
> | `subscription.created` | Ein neues Abonnement hat begonnen |
> | `subscription.plan_changed` | Der Tarif des Abonnements wurde angewendet |
> | `subscription.canceled` | Ein Abonnement wurde gekündigt |
> | `subscription.payment_failed` | Die Zahlung einer wiederkehrenden Rechnung ist fehlgeschlagen |
> | `subscription.expired` | Ein unbezahltes oder gekündigtes Abonnement ist abgelaufen |
> | `subscription.upgraded` | Ein Abonnement wurde auf einen höheren Tarif umgestellt |
> | `subscription.downgrade_requested` | Ein Downgrade wurde zum Ende der Laufzeit eingeplant |
> | `subscription.downgrade_cancelled` | Ein ausstehendes Downgrade wurde storniert |

> **API-Schlüssel (2 Events)**
>
> | Event | Beschreibung |
> | - | - |
> | `api_key.created` | Ein neuer Entwickler-API-Schlüssel wurde erzeugt |
> | `api_key.revoked` | Ein API-Schlüssel wurde widerrufen |

> **Webhook (5 Events)**
>
> | Event | Beschreibung |
> | - | - |
> | `webhook.created` | Ein neues Webhook-Abonnement wurde erstellt |
> | `webhook.updated` | Der Endpunkt oder die Kategorien eines Webhooks wurden geändert |
> | `webhook.deleted` | Ein Webhook-Abonnement wurde gelöscht |
> | `webhook.enabled` | Ein Webhook-Abonnement wurde aktiviert |
> | `webhook.disabled` | Ein Webhook-Abonnement wurde deaktiviert |

> **Integration (2 Events)**
>
> | Event | Beschreibung |
> | - | - |
> | `integration.connected` | Eine Drittanbieter-Integration wurde verbunden |
> | `integration.disconnected` | Eine Drittanbieter-Integration wurde getrennt |

> **Support (8 Events)**
>
> | Event | Beschreibung |
> | - | - |
> | `support.ticket_created` | Ein neues Support-Ticket wurde erstellt |
> | `support.ticket_updated` | Ein Support-Ticket wurde aktualisiert |
> | `support.ticket_closed` | Ein Support-Ticket wurde geschlossen |
> | `support.ticket_assigned` | Ein Support-Ticket wurde einem Mitarbeiter zugewiesen |
> | `support.ticket_reply` | Ein Support-Mitarbeiter hat auf ein Ticket geantwortet |
> | `support.ticket_message_received` | Eine eingehende Ticket-Nachricht wurde empfangen |
> | `support.ticket_message_sent` | Eine ausgehende Ticket-Nachricht wurde gesendet |
> | `support.ticket_reopened` | Ein geschlossenes Ticket wurde wieder geöffnet |

> **Vorlage (1 Event)**
>
> | Event | Beschreibung |
> | - | - |
> | `template.rendered` | Eine Inhaltsvorlage wurde mit Feldersetzung gerendert |

> **MCP (1 Event)**
>
> | Event | Beschreibung |
> | - | - |
> | `mcp.usage_logged` | Ein MCP-Tool-Aufruf wurde protokolliert und abgerechnet |

> **Kontingent (1 Event)**
>
> | Event | Beschreibung |
> | - | - |
> | `quota.limit_reached` | Ein Kontingent auf Tarifebene (z. B. KI-Credits, API-Aufrufe) wurde erreicht |

> **Empfehlung (3 Events)**
>
> | Event | Beschreibung |
> | - | - |
> | `referral.code_created` | Der Empfehlungscode eines Benutzers wurde erstellt |
> | `referral.code_used` | Eine neue Registrierung hat den Code des Empfehlenden verwendet |
> | `referral.reward_earned` | Eine Empfehlung wurde abgeschlossen und Credits wurden gutgeschrieben |

> **[Payloads prüfen?](/de/webhooks/payloads.md)**
>
> Webhooks liefern Events immer gemäß unserem offiziellen Schema. Erfahre, wie du Signaturen verifizierst, und sieh dir Beispiel-Payloads für jede Event-Kategorie an.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.