> ## 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.

# Webhooks de réseaux sociaux pour les événements de publication et de boîte de réception

> Abonnez-vous aux événements signés en temps réel de Social media studio, comme les publications réussies ou en échec et les nouveaux messages, pour alimenter vos propres automatisations.

Les webhooks vous permettent de créer ou de configurer des intégrations qui s'abonnent aux événements en temps réel de Social media studio. Lorsqu'un événement se déclenche, nous envoyons une charge utile HTTP POST à l'URL que vous avez configurée, ce qui permet à votre application de réagir instantanément sans interrogation périodique.

## Notions de base de la configuration

Vous pouvez configurer les webhooks directement depuis le tableau de bord, sous **Paramètres > Webhooks**, ou via notre API.

Chaque webhook nécessite :

* Une **URL d'endpoint** valide (HTTPS fortement recommandé).
* Une ou plusieurs **catégories d'événements** auxquelles vous souhaitez vous abonner.

| Propriété | Valeur |
| - | - |
| **Transport** | HTTP POST |
| **Content-Type** | `application/json` |
| **Délai d'expiration** | 10 secondes |
| **Taille maximale de la charge utile** | 64 Ko |

> [!NOTE]
>
> Votre offre détermine le nombre d'abonnements webhook actifs que vous pouvez maintenir simultanément.

## Exemples de modèles de charge utile

Utilisez `payloadTemplate` pour personnaliser le corps JSON envoyé à votre endpoint. Les variables de modèle disponibles sont :

* `{{event}}`
* `{{category}}`
* `{{timestamp}}`
* `{{data}}`
* `{{data.any_field}}` (pour les champs imbriqués propres à chaque événement)

### 1) Enveloppe JSON générique

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

### 2) Charge utile adaptée à Discord

```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) Charge utile de style Slack Block Kit

```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]
>
> Si une variable est absente des données de l'événement, le marqueur reste inchangé (par exemple, `{{data.postId}}`).

## Limites et conservation des webhooks

Selon votre offre, la durée de conservation des journaux de livraison de vos webhooks et le nombre d'endpoints que vous pouvez créer varient :

**Limites par offre**

| Offre | Abonnements max. | Conservation des journaux |
| - | - | - |
| **Lite** | 3 endpoints | 30 jours |
| **Standard** | 10 endpoints | 60 jours |
| **Advanced** | 25 endpoints | 90 jours |

**Politique de nouvelles tentatives**

Si votre endpoint renvoie une erreur (statut HTTP `>= 400`) ou expire (après 10 secondes), Social media studio réessaie automatiquement d'envoyer l'événement.

Le système effectue **jusqu'à 4 nouvelles tentatives** avec les délais suivants :

* **1re tentative :** 30 secondes
* **2e tentative :** 2 minutes
* **3e tentative :** 10 minutes
* **4e tentative :** 1 heure

> [!WARNING]
>
> Si un webhook échoue **10 fois** consécutives, il est désactivé automatiquement pour éviter de surcharger le système.

## Événements disponibles

Nous prenons en charge **162 événements répartis en 26 catégories**. Lorsque vous vous abonnez à une catégorie, vous recevez tous les événements associés. Vous pouvez aussi vous abonner à des événements individuels pour un contrôle plus fin.

> **Publication (22 événements)**
>
> | Événement | Description |
> | - | - |
> | `post.created` | Une nouvelle publication a été créée |
> | `post.updated` | Le contenu ou la programmation d'une publication a été modifié |
> | `post.deleted` | Une publication a été supprimée |
> | `post.bulk_deleted` | Plusieurs publications ont été supprimées en une seule opération |
> | `post.published` | Une publication a été publiée avec succès sur sa plateforme |
> | `post.failed` | La publication d'un post programmé a échoué |
> | `post.retried` | Une publication en échec a été remise dans la file d'attente |
> | `post.scheduled` | Une publication a été ajoutée à la file de publication |
> | `post.unscheduled` | Une publication a été retirée de la file de publication |
> | `post.resubmitted` | Une publication rejetée a été soumise à nouveau pour approbation |
> | `post.first_comment_posted` | Le premier commentaire d'une publication a été publié |
> | `post.first_comment_failed` | Le premier commentaire d'une publication n'a pas pu être publié |
> | `repurpose.batch_created` | Un plan de réutilisation a été créé à partir de contenu existant |
> | `repurpose.variations_generated` | Des variantes IA ont été générées pour un plan de réutilisation |
> | `repurpose.batch_committed` | Des publications ont été programmées à partir d'un plan de réutilisation |
> | `repurpose.batch_approved` | Les publications d'un plan de réutilisation ont été approuvées |
> | `repurpose.batch_rejected` | Les publications d'un plan de réutilisation ont été refusées |
> | `repurpose.batch_paused` | Une file evergreen a été mise en pause |
> | `repurpose.batch_resumed` | Une file evergreen en pause a repris |
> | `repurpose.batch_completed` | Une file evergreen a publié tout ce qui était prévu |
> | `repurpose.batch_failed` | Certaines publications d'un plan de réutilisation n'ont pas pu être créées |
> | `repurpose.cycle_posted` | Une file evergreen a publié sa publication suivante |

> **Brouillon (4 événements)**
>
> | Événement | Description |
> | - | - |
> | `draft.created` | Un brouillon a été créé |
> | `draft.updated` | Un brouillon a été mis à jour |
> | `draft.deleted` | Un brouillon a été supprimé |
> | `draft.converted` | Un brouillon a été converti en publication programmée ou publiée |

> **Approbation (6 événements)**
>
> | Événement | Description |
> | - | - |
> | `post.approval.requested` | Une publication a été soumise pour approbation |
> | `post.approval.approved` | Une publication en attente a été approuvée |
> | `post.approval.rejected` | Une publication en attente a été rejetée |
> | `post.approval.comment_added` | Un relecteur a ajouté un commentaire à une publication |
> | `post.approval.comment_updated` | Le commentaire d'un relecteur a été modifié |
> | `post.approval.comment_deleted` | Le commentaire d'un relecteur a été supprimé |

> **Compte social (3 événements)**
>
> | Événement | Description |
> | - | - |
> | `social.account_connected` | Un compte de réseau social a été autorisé |
> | `social.account_disconnected` | La connexion d'un compte social a été supprimée |
> | `social.account_token_refreshed` | Le jeton OAuth d'un compte social a été renouvelé |

> **Médias (9 événements)**
>
> | Événement | Description |
> | - | - |
> | `media.uploaded` | Un fichier a été importé dans la médiathèque |
> | `media.deleted` | Un fichier média a été supprimé |
> | `media.bulk_deleted` | Plusieurs fichiers médias ont été supprimés en une seule opération |
> | `media.moved` | Un fichier média a été déplacé vers un autre dossier |
> | `media.folder_created` | Un nouveau dossier de médias a été créé |
> | `media.folder_renamed` | Un dossier de médias a été renommé |
> | `media.folder_deleted` | Un dossier de médias a été supprimé |
> | `media.folder_moved` | Un dossier de médias a été déplacé |
> | `media.canva_imported` | Un design a été importé de Canva dans la médiathèque |

> **Compositeur (3 événements)**
>
> | Événement | Description |
> | - | - |
> | `composer.reel_created` | Un nouveau reel ou une nouvelle vidéo a été créé dans le compositeur |
> | `composer.reel_updated` | Un reel ou une vidéo existant a été mis à jour |
> | `composer.reel_deleted` | Un reel ou une vidéo a été supprimé |

> **Analyses (1 événement)**
>
> | Événement | Description |
> | - | - |
> | `analytics.report_generated` | Un cycle planifié d'actualisation des analyses s'est terminé (toutes les 2 heures pour les organisations ayant des comptes sociaux connectés) |

> **Meilleur moment (2 événements)**
>
> | Événement | Description |
> | - | - |
> | `best_time.recommendation_generated` | Une recommandation du meilleur moment pour publier a été calculée pour la première fois pour un compte |
> | `best_time.recommendation_recomputed` | Une recommandation existante du meilleur moment a été actualisée (tâche quotidienne ou recalcul manuel) |

> **Boîte de réception (16 événements)**
>
> | Événement | Description |
> | - | - |
> | `inbox.message_received` | Un message privé entrant a été reçu |
> | `inbox.message_sent` | Un message privé sortant a été envoyé |
> | `inbox.comment_received` | Un commentaire social entrant a été reçu |
> | `inbox.comment_sent` | Une réponse sortante à un commentaire social a été envoyée |
> | `inbox.comment_hidden` | Un commentaire social a été masqué |
> | `inbox.comment_edited` | Un commentaire social a été modifié |
> | `inbox.comment_removed` | Un commentaire social a été entièrement supprimé |
> | `inbox.conversation_created` | Un nouveau fil de conversation a commencé |
> | `inbox.conversation_deleted` | Une conversation a été supprimée |
> | `inbox.conversation_archived` | Une conversation a été archivée |
> | `inbox.conversation_resolved` | Une conversation a été marquée comme résolue |
> | `inbox.subscribed` | La boîte de réception a été activée pour un compte ou une plateforme connecté |
> | `inbox.unsubscribed` | La boîte de réception a été désactivée pour un compte ou une plateforme connecté |
> | `inbox.saved_reply_created` | Un modèle de réponse enregistrée a été créé |
> | `inbox.saved_reply_updated` | Un modèle de réponse enregistrée a été mis à jour |
> | `inbox.saved_reply_deleted` | Un modèle de réponse enregistrée a été supprimé |

> **Biolink (17 événements)**
>
> | Événement | Description |
> | - | - |
> | `biolink.created` | Une page biolink a été créée |
> | `biolink.updated` | Une page biolink a été mise à jour |
> | `biolink.deleted` | Une page biolink a été supprimée |
> | `biolink.published` | Une page biolink a été rendue publique |
> | `biolink.unpublished` | Une page biolink a été rendue privée |
> | `biolink.theme_changed` | Un biolink est passé à un autre thème prédéfini |
> | `biolink.custom_theme_set` | Un thème personnalisé a été configuré pour un biolink |
> | `biolink.button_added` | Un bouton a été ajouté à un biolink |
> | `biolink.button_updated` | Un bouton de biolink a été mis à jour |
> | `biolink.button_removed` | Un bouton de biolink a été supprimé |
> | `biolink.button_reordered` | Les boutons d'un biolink ont été réorganisés |
> | `biolink.post_created` | Un embed de publication Instagram a été ajouté à un biolink |
> | `biolink.post_updated` | L'embed d'une publication de biolink a été mis à jour |
> | `biolink.post_deleted` | L'embed d'une publication de biolink a été supprimé |
> | `biolink.post_reordered` | Les embeds de publications d'un biolink ont été réorganisés |
> | `biolink.profile_image_uploaded` | Une image de profil de biolink a été importée |
> | `biolink.profile_image_deleted` | Une image de profil de biolink a été supprimée |

> **WhatsApp (6 événements)**
>
> | Événement | Description |
> | - | - |
> | `whatsapp.template_created` | Un modèle de message WhatsApp a été soumis pour approbation |
> | `whatsapp.template_deleted` | Un modèle de message WhatsApp a été supprimé |
> | `whatsapp.template_media_uploaded` | Un média a été importé pour illustrer un modèle WhatsApp |
> | `whatsapp.message_sent` | Un message modèle WhatsApp a été envoyé à un destinataire |
> | `whatsapp.template_status_updated` | Meta a approuvé, rejeté, suspendu ou désactivé un modèle |
> | `whatsapp.phone_quality_updated` | Meta a modifié la note de qualité ou la limite d'envoi d'un numéro |

> **IA (8 événements)**
>
> | Événement | Description |
> | - | - |
> | `ai.text_generated` | Une génération de texte par IA est terminée |
> | `ai.caption_generated` | Une légende de publication a été générée par IA |
> | `ai.image_generated` | Une tâche d'image IA s'est terminée avec succès |
> | `ai.image_failed` | Une tâche d'image IA a échoué |
> | `ai.image_deleted` | Une image générée par IA a été supprimée |
> | `ai.video_generated` | Une tâche de vidéo IA s'est terminée avec succès |
> | `ai.video_failed` | Une tâche de vidéo IA a échoué |
> | `ai.video_deleted` | Une vidéo générée par IA a été supprimée |

> **Base de connaissances (4 événements)**
>
> | Événement | Description |
> | - | - |
> | `knowledge.created` | Un document a été ajouté à la base de connaissances RAG |
> | `knowledge.updated` | Les métadonnées ou le corps de la note d'un document de connaissances ont été mis à jour |
> | `knowledge.deleted` | Un document de connaissances a été supprimé |
> | `knowledge.reprocessed` | L'extraction de texte d'un document de connaissances a été relancée |

> **Équipe (6 événements)**
>
> | Événement | Description |
> | - | - |
> | `team.invitation_sent` | Une invitation d'équipe a été envoyée |
> | `team.invitation_cancelled` | Une invitation d'équipe en attente a été annulée |
> | `team.member_joined` | Un nouveau membre a accepté son invitation |
> | `team.member_left` | Un membre a quitté l'organisation volontairement |
> | `team.member_removed` | Un membre a été retiré par un propriétaire |
> | `team.permission_updated` | Le rôle d'un membre a été modifié |

> **Organisation (8 événements)**
>
> | Événement | Description |
> | - | - |
> | `organization.created` | Une nouvelle organisation a été créée |
> | `organization.deleted` | Une organisation a été supprimée |
> | `organization.member_left` | Un membre a quitté l'organisation |
> | `organization.name_updated` | Le nom de l'organisation a été mis à jour |
> | `organization.logo_updated` | Le logo de l'organisation a été mis à jour |
> | `organization.description_updated` | La description de l'organisation a été mise à jour |
> | `organization.theme_updated` | Le thème d'interface de l'organisation a été mis à jour |
> | `organization.timezone_updated` | Le fuseau horaire par défaut de l'organisation a été mis à jour |

> **Compte et profil (8 événements)**
>
> | Événement | Description |
> | - | - |
> | `account.updated` | Les paramètres d'un compte social ont été mis à jour |
> | `account.token_expired` | Le jeton de session d'un compte social a été détecté comme expiré |
> | `account.token_expiring` | L'accès d'un compte social expire bientôt ; reconnectez-le pour continuer à publier |
> | `profile.updated` | Un profil utilisateur a été mis à jour |
> | `profile.email_updated` | L'adresse e-mail d'un utilisateur a été modifiée |
> | `profile.password_changed` | Le mot de passe d'un utilisateur a été modifié |
> | `profile.avatar_uploaded` | Un utilisateur a importé une photo de profil |
> | `profile.avatar_deleted` | Un utilisateur a supprimé sa photo de profil |

> **Authentification (8 événements)**
>
> | Événement | Description |
> | - | - |
> | `auth.registered` | Un utilisateur a terminé son inscription |
> | `auth.login` | Un utilisateur s'est connecté |
> | `auth.logout` | Un utilisateur s'est déconnecté |
> | `auth.email_verified` | Un utilisateur a vérifié son adresse e-mail |
> | `auth.password_reset_requested` | Un e-mail de réinitialisation du mot de passe a été envoyé |
> | `auth.password_reset_completed` | Un utilisateur a terminé une réinitialisation de mot de passe |
> | `auth.verification_resent` | Un e-mail de vérification a été renvoyé |
> | `auth.refresh_token_issued` | Un nouveau jeton d'actualisation a été émis |

> **Abonnement et facturation (8 événements)**
>
> | Événement | Description |
> | - | - |
> | `subscription.created` | Un nouvel abonnement a démarré |
> | `subscription.plan_changed` | L'offre de l'abonnement a été appliquée |
> | `subscription.canceled` | Un abonnement a été annulé |
> | `subscription.payment_failed` | Le paiement d'une facture récurrente a échoué |
> | `subscription.expired` | Un abonnement impayé ou annulé a expiré |
> | `subscription.upgraded` | Un abonnement est passé à une offre supérieure |
> | `subscription.downgrade_requested` | Un passage à une offre inférieure a été programmé pour la fin de la période |
> | `subscription.downgrade_cancelled` | Un passage à une offre inférieure en attente a été annulé |

> **Clé d'API (2 événements)**
>
> | Événement | Description |
> | - | - |
> | `api_key.created` | Une nouvelle clé d'API développeur a été générée |
> | `api_key.revoked` | Une clé d'API a été révoquée |

> **Webhook (5 événements)**
>
> | Événement | Description |
> | - | - |
> | `webhook.created` | Un nouvel abonnement webhook a été créé |
> | `webhook.updated` | L'endpoint ou les catégories d'un webhook ont été modifiés |
> | `webhook.deleted` | Un abonnement webhook a été supprimé |
> | `webhook.enabled` | Un abonnement webhook a été activé |
> | `webhook.disabled` | Un abonnement webhook a été désactivé |

> **Intégration (2 événements)**
>
> | Événement | Description |
> | - | - |
> | `integration.connected` | Une intégration tierce a été connectée |
> | `integration.disconnected` | Une intégration tierce a été déconnectée |

> **Support (8 événements)**
>
> | Événement | Description |
> | - | - |
> | `support.ticket_created` | Un nouveau ticket de support a été créé |
> | `support.ticket_updated` | Un ticket de support a été mis à jour |
> | `support.ticket_closed` | Un ticket de support a été fermé |
> | `support.ticket_assigned` | Un ticket de support a été attribué à un agent |
> | `support.ticket_reply` | Un agent du support a répondu à un ticket |
> | `support.ticket_message_received` | Un message entrant a été reçu sur un ticket |
> | `support.ticket_message_sent` | Un message sortant a été envoyé sur un ticket |
> | `support.ticket_reopened` | Un ticket fermé a été rouvert |

> **Modèle (1 événement)**
>
> | Événement | Description |
> | - | - |
> | `template.rendered` | Un modèle de contenu a été généré avec substitution des champs |

> **MCP (1 événement)**
>
> | Événement | Description |
> | - | - |
> | `mcp.usage_logged` | L'appel d'un outil MCP a été journalisé et facturé |

> **Quota (1 événement)**
>
> | Événement | Description |
> | - | - |
> | `quota.limit_reached` | Un quota lié à l'offre (par ex. crédits IA, appels d'API) a été atteint |

> **Parrainage (3 événements)**
>
> | Événement | Description |
> | - | - |
> | `referral.code_created` | Le code de parrainage d'un utilisateur a été créé |
> | `referral.code_used` | Une nouvelle inscription a utilisé le code du parrain |
> | `referral.reward_earned` | Un parrainage a abouti et des crédits ont été attribués |

> **[Besoin d'inspecter les charges utiles ?](/fr/webhooks/payloads.md)**
>
> Les webhooks livrent toujours des événements conformes à notre schéma officiel. Découvrez comment vérifier les signatures et consultez des exemples de charges utiles pour chaque catégorie d'événements.


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