---
title: "Envoyer les événements d’un cercle ou d’un projet vers votre propre URL de webhook"
description: "Envoyer les événements de gouvernance d’un cercle ou les tâches d’un projet en JSON vers une URL à vous : connecter la carte, le contenu de chaque événement, et les événements qui ne sont pas envoyés"
category: integrations
section: native-integrations
type: Reference
lastUpdated: 2026-09-30
locale: fr
canonical: https://support.talkspirit.com/fr/integrations/send-circle-or-project-events-to-your-own-webhook
---

# Envoyer les événements d’un cercle ou d’un projet vers votre propre URL de webhook


> **En résumé :** ouvrez le cercle, allez dans l’onglet **Intégrations** des paramètres du cercle, sélectionnez **Activer** sur la carte **Webhook**, collez votre URL et **Confirmez**. Chaque événement de gouvernance du cercle est alors envoyé à cette URL par un `POST` JSON, au format qu’utilisait l’ancienne plateforme. 25 types d’événements sont envoyés, et un projet peut envoyer ses tâches de la même façon. 12 ne sont jamais envoyés, et cette page les liste.

Ce guide couvre la carte **Webhook** d’un cercle. Ce n’est pas [Webhooks : nouveaux événements](/integrations/partner-api), qui décrit les webhooks prévus pour l’API partenaire, à destination des développeurs. Ce qu’une intégration de cercle envoie, famille par famille, est décrit dans [Intégrations de cercle](/integrations/circle-and-project-integrations-overview).

Contrairement à Slack ou à Microsoft Teams, la destination est un service que vous exploitez, pas une conversation. Personne ne lit le résultat : c’est un programme qui le lit.

## Avant de commencer

- Vous êtes administrateur de l’organisation, ou administrateur du cercle.
- Vous disposez d’un point de réception joignable depuis Internet, qui accepte un `POST` avec un corps JSON.
- Il répond en moins de 10 secondes, avec un statut inférieur à `400`. Les redirections ne sont pas suivies.

## Connecter le cercle

1. Ouvrez les paramètres du cercle, puis l’onglet **Intégrations**.
2. Sur la carte **Webhook**, sélectionnez **Activer**. Un champ **URL du webhook** s’ouvre. Pas de connexion à un compte, pas d’écran de consentement.
3. Collez l’URL et sélectionnez **Confirmer**.

La carte affiche alors **Connecté** : « L’URL du webhook est enregistrée. Les événements y sont envoyés au format JSON. »

L’URL est vérifiée quand vous sélectionnez **Confirmer**, pas au premier envoi. Une adresse mal formée, ou qui pointe vers un réseau interne, est refusée à ce moment-là. La raison s’affiche sous le champ et rien n’est enregistré.

> **Important :** la requête ne porte aucune signature. Quiconque connaît l’URL peut envoyer à votre point de réception un corps qui ressemble au nôtre. Utilisez une URL longue, impossible à deviner, et traitez-la comme un mot de passe.

## Vérifier que ça fonctionne

Rien n’est envoyé quand vous sélectionnez **Confirmer**. Sélectionnez **Tester** sur la carte : votre point de réception reçoit ce corps, et la carte enregistre le résultat.

```json
{
  "object": "connection_test",
  "text": "Talkspirit is connected to this channel. Governance changes in this circle will be posted here."
}
```

Si votre automatisation filtre sur `object`, ignorez `connection_test`.

## Modifier ou retirer l’URL

- **Modifier l’URL du webhook** fait pointer le cercle vers une nouvelle URL. Cela remet aussi le compteur d’échecs à zéro : c’est la réparation quand le point de réception a changé d’adresse.
- **Désactiver** supprime l’URL et les réglages d’événements. Plus rien n’est envoyé.

## Ce que reçoit votre point de réception

Chaque événement est un `POST` avec un corps JSON et l’en-tête `User-Agent` `Holaspirit Client`. Deux clés sont toujours présentes :

- `object`, ce dont parle l’événement, par exemple `role` ou `tension`.
- `text`, l’événement sous forme de phrase, par exemple `New role Facilitator`.

Les autres clés dépendent de `object`. `activity` n’existe que sur les objets qui la portent.

| `object` | Envoyé pour | Autres clés |
| --- | --- | --- |
| `role` | Un rôle ou un cercle créé ou modifié, un rôle transformé en cercle, un cercle transformé en rôle | `id`, `circle`, `purpose`, `url` |
| `role` | Un rôle ou un cercle supprimé | `circle`, et `url`, qui pointe vers le cercle parent |
| `policy` | Une Politique publiée ou modifiée | `id`, `circle`, `description`, `domain`, `url` |
| `policy` | Une Politique supprimée | `circle`, `url` |
| `tension` | Une Proposition adoptée (`activity: accept`) ou rejetée (`activity: refuse`) | `activity`, `id`, `name`, `body`, `circle`, `member` |
| `assignation` | Un membre affecté à un rôle | `assignation`, `circle`, `circle_id`, `role`, `role_id`, `focus`, `member`, `member_id`, `url` |
| `circleAssignation` | Un membre affecté à un cercle | `assignation`, `circle`, `circle_id`, `member`, `member_id`, `url` |
| `unassignation` | Un membre retiré d’un rôle ou d’un cercle | `unassignation`, `circle`, `circle_id`, `member`, `member_id`, `url`, et `role`, `role_id` pour un rôle |
| `objective` | Un Objectif créé (`activity: create`), modifié (`activity: update`) ou supprimé (`activity: delete`) | `activity`, `id`, `title`, `description`, `circle`, `members`, `role`, `status`, `url` |
| `checklist`, `metric` | Une checklist ou une métrique créée ou modifiée | `id`, `title`, `body`, `circle`, `members`, `recurrence`, et `role` s’il y en a un |
| `project` | Une tâche créée (`activity: create`), modifiée (`activity: update`) ou supprimée (`activity: delete`) sur un projet | `activity`, `id`, `title`, `body`, `url`, `board`, `board_id` |

Un cercle est envoyé avec `object: role`, comme le faisait l’ancienne plateforme. L’objet d’une Proposition s’appelle `tension`, et nomme son sujet `name` plutôt que `title` : ce sont les noms de l’ancienne plateforme, conservés tels quels.

Par exemple, un membre affecté à un rôle :

```json
{
  "object": "assignation",
  "text": "Assignation for role: Facilitator",
  "assignation": "Ada Lovelace was assigned to the role: Facilitator",
  "circle": "Commercial",
  "circle_id": "11111111-2222-3333-4444-555555555555",
  "role": "Facilitator",
  "role_id": "r-1",
  "focus": "EMEA",
  "member": "Ada Lovelace",
  "member_id": "u-1",
  "url": "https://…"
}
```

## Les événements qui ne sont pas envoyés

Sur les 37 types d’événements que connaît une intégration, 12 ne sont jamais envoyés à un webhook. Chacun est refusé avant que quoi que ce soit ne quitte Talkspirit. Un événement refusé ne compte pas comme un envoi échoué : les autres événements continuent d’être envoyés.

**l’ancienne plateforme ne les envoyait pas**: `unsupported_event_kind`, 12 événements. Ils ne seront pas ajoutés : il n’existe pas de format l’ancienne plateforme à reproduire.

| Événements | Pourquoi |
| --- | --- |
| Une Proposition soumise ou retirée | l’ancienne plateforme n’envoyait que l’issue : adoptée ou rejetée. |
| Une Tension ouverte ou fermée | l’ancienne plateforme n’avait pas d’équivalent de cet objet. |
| Un rôle ou un cercle déplacé | l’ancienne plateforme n’annonçait jamais un déplacement. |
| Une réunion terminée, une réunion sur le point de commencer, un compte rendu publié | l’ancienne plateforme n’envoyait aucun événement de réunion à un webhook. |
| Un projet créé, modifié ou supprimé | l’ancienne plateforme n’avait pas d’objet projet. |

## Si vous venez de l’ancienne plateforme

**Pour chaque événement qu’elle envoie, cette intégration utilise le format de l’ancienne plateforme.** Les mêmes noms d’`object`, les mêmes clés, la même phrase `text` et le même `User-Agent`. Un point de réception écrit pour le webhook de l’ancienne plateforme les lit sans aucune modification.

Certaines valeurs ne sont pas encore remplies, et un point de réception qui les lit voit la différence :

- `body` sur `tension`, `checklist` et `metric`, `description` et `members` sur `objective`, et `members` et `recurrence` sur `checklist` et `metric` valent `null`.
- Sur `policy`, `description` est vide, et `domain` contient toujours le texte prévu pour une Politique sans domaine : `All functions and activities within the cercle`.
- Sur `checklist` et `metric`, `last_checked` n’est jamais présent.
- Sur `policy`, `url` pointe vers la page de la Politique elle-même, là où l’ancienne plateforme pointait vers son cercle.

Les tâches arrivent du webhook d’un projet avec `object: project`, accompagnées de `board` et `board_id`. Les clés que l’ancienne plateforme ajoutait à une tâche, `context`, `circle`, `members`, `role` et `status`, sont absentes, pas `null`.

## Sur un projet

Un projet connecte le webhook depuis son les paramètres du projet, onglet **Notifications**, avec la même carte. Vous devez être propriétaire ou éditeur du projet.

- Un projet n’a qu’une destination webhook. Coller une nouvelle URL remplace la précédente.
- Un projet envoie ses tâches : une tâche créée ou supprimée, et une tâche dont le statut, la priorité ou l’échéance change. Les sous-tâches, les tâches privées et les tâches créées sur un projet privé ou secret ne sont pas envoyées.

Par exemple, une tâche créée sur un projet :

```json
{
  "object": "project",
  "activity": "create",
  "id": "t-1",
  "text": "New project Ship v2",
  "title": "Ship v2",
  "body": null,
  "url": "https://…",
  "board": "Roadmap",
  "board_id": "66666666-7777-8888-9999-aaaaaaaaaaaa"
}
```

## Plusieurs destinations sur un cercle

Un cercle peut avoir plusieurs destinations webhook, comme dans l’ancienne plateforme. Chaque événement est alors envoyé à chacune d’elles.

La carte, en revanche, n’en gère qu’une. Sur un cercle qui en a plusieurs, elle affiche **Ce cercle a plusieurs destinations** et ne propose rien : ni **Activer**, ni **Modifier l’URL du webhook**, ni **Désactiver**, ni interrupteurs, ni **Tester**. L’envoi continue vers chaque destination. Pour les modifier, contactez le support Talkspirit.

## Quand l’envoi s’arrête

L’URL est le seul identifiant : coller une URL qui fonctionne, c’est la réparation. Il n’y a pas de bouton **Reconnecter**.

| Ce que dit la carte | Ce que ça veut dire | Quoi faire |
| --- | --- | --- |
| **L’envoi a été interrompu** | Cinq envois d’affilée ont échoué : votre point de réception les a refusés ou n’a pas répondu à temps. | Corrigez la cause, puis sélectionnez **Tester**, ou **Modifier l’URL du webhook**. Le premier succès remet le compteur à zéro. |
| **Connecté, mais rien n’a jamais été envoyé** | L’URL a été enregistrée, et toutes les tentatives depuis ont échoué. | Vérifiez que votre point de réception accepte un `POST` depuis Internet et répond avec un statut inférieur à `400`. |
| **Les dernières notifications ne sont pas parties** | L’envoi fonctionnait auparavant et échoue maintenant. | Consultez les journaux de votre point de réception. |
| **Les notifications sont interrompues de notre côté** | Une panne chez Talkspirit, pas dans votre configuration. | Rien. Notre équipe est alertée automatiquement et vos réglages sont intacts. |

Une réponse `429` de votre point de réception ne compte pas comme un échec : Talkspirit la lit comme une demande de ralentir.

## Et ensuite ?

- [Intégrations de cercle](/integrations/circle-and-project-integrations-overview), ce qui est envoyé, les familles d’événements, et la lecture de la carte
- [Connecter un cercle à un canal Slack](/integrations/connect-a-circle-or-a-project-to-slack)
- [Connecter un cercle à un canal Microsoft Teams](/integrations/connect-a-circle-or-a-project-to-microsoft-teams)
