Notifications externes
Enregistrez les e-mails que votre propre système a envoyés à un client, pour que les collaborateurs les retrouvent dans Tillor
Dernière mise à jour le
Votre système envoie lui-même des e-mails aux clients (newsletter, confirmation de réservation, rappel) ? Enregistrez-les alors dans Tillor. Les collaborateurs les voient sur la fiche du client, sur la facture et dans l'aperçu Notifications, à côté des notifications que Tillor envoie lui-même.
Tillor n'envoie rien : vous enregistrez un message déjà envoyé. Dans l'application, les notifications externes portent toujours l'étiquette Externe avec le nom de votre source, afin de ne jamais passer pour une notification Tillor.
Accès
L'utilisateur derrière la clé API a besoin de l'une de ces permissions dans l'organisation. Un administrateur les attribue dans les permissions des utilisateurs de l'organisation, dans le groupe Notifications (Enregistrer des notifications externes et Gérer les notifications externes des autres).
| Permission | Ce que vous pouvez faire |
|---|---|
notifications:external:write | Enregistrer des notifications et mettre à jour ou supprimer vos propres enregistrements |
notifications:external:manage-others | Mettre à jour ou supprimer aussi les enregistrements d'autres utilisateurs ou intégrations |
Un utilisateur par intégration
La propriété est rattachée à l'utilisateur de la clé API. Utilisez un utilisateur (de service) distinct par intégration, ainsi une intégration ne pourra jamais modifier les notifications d'une autre.
Endpoints
Tous les chemins se trouvent sous /api/orgs/:orgId. Schémas exacts : OpenAPI, tag notifications.
| Méthode | Chemin | Description |
|---|---|---|
| POST | /notifications/external | Enregistrer une notification |
| PATCH | /notifications/external/{id} | Mettre à jour le statut, les horaires ou le contenu |
| DELETE | /notifications/external/{id} | Supprimer définitivement |
| GET | /notifications?source=EXTERNAL | Lister les notifications enregistrées (filtrez aussi sur externalSource, externalReference, customerId, invoiceId) |
| GET | /notifications/{id} | Récupérer une notification |
Vous ne pouvez ni modifier ni supprimer via ces endpoints les notifications que Tillor a envoyées lui-même ; elles renvoient 404.
Enregistrer
curl -X POST "https://tillor.eu/api/orgs/org_abc123/notifications/external" \
-H "x-api-key: tkn_xxx" \
-H "Content-Type: application/json" \
-d '{
"externalSource": "mailchimp",
"externalReference": "campaign-42:member-9f3a",
"name": "Boekingsbevestiging",
"customerId": "clx789...",
"channel": "EMAIL",
"status": "SENT",
"sentAt": "2026-09-19T08:15:00Z",
"email": {
"to": "jan@voorbeeld.nl",
"from": "Recreatiepark Het Meer <info@recreatiepark-het-meer.be>",
"subject": "Je boeking is bevestigd",
"htmlBody": "<p>Dag Jan, ...</p>",
"attachments": [{ "filename": "bevestiging.pdf", "contentType": "application/pdf", "size": 48211 }]
}
}'Tous les champs et limites figurent dans OpenAPI. Ces champs ont des règles à connaître à l'avance :
| Champ | Règle |
|---|---|
externalSource | Nom de votre système en minuscules, chiffres, ., _ ou - (par ex. mailchimp). Les collaborateurs voient ce nom sur la notification |
externalReference | Votre propre identifiant pour ce message, unique au sein de externalSource |
name | Court libellé pour les collaborateurs (par ex. « Confirmation de réservation »). Il peut servir à la recherche |
customerId / invoiceId | Au moins l'un des deux. Détermine où la notification apparaît. Si vous n'envoyez que invoiceId, Tillor rattache aussi le client de cette facture. Un identifiant inconnu, ou une facture d'un autre client, renvoie 400 |
status | SENT, FAILED, BOUNCED ou COMPLAINED. Sans sentAt avec SENT, Tillor utilise le moment de l'enregistrement |
sentAt, readAt, clickedAt | ISO 8601 avec fuseau horaire, par ex. 2026-09-19T08:15:00Z. Les autres valeurs sont refusées |
email.attachments | Uniquement des métadonnées (filename, contentType, size). Les fichiers eux-mêmes ne sont pas stockés |
Réessayer en toute sécurité
POST est idempotent sur externalSource + externalReference. Si vous renvoyez la même combinaison (par exemple après un délai d'expiration), vous récupérez la notification existante et rien n'est modifié. Pour changer quelque chose, utilisez PATCH.
Pas de données personnelles dans externalReference ou name
externalSource, externalReference et name sont stockés non chiffrés car ils servent à la recherche. Utilisez un identifiant technique, pas une adresse e-mail ni un nom. Une externalReference contenant @ est refusée. Le destinataire, l'objet, le contenu et les pièces jointes, eux, sont stockés chiffrés.
Mettre à jour et supprimer
Avec PATCH, n'envoyez que les champs qui changent, par exemple quand un e-mail rebondit après coup :
curl -X PATCH "https://tillor.eu/api/orgs/org_abc123/notifications/external/NOTIFICATION_ID" \
-H "x-api-key: tkn_xxx" \
-H "Content-Type: application/json" \
-d '{ "status": "BOUNCED", "errorMessage": "Mailbox bestaat niet" }'DELETE supprime définitivement la notification, contenu compris. Utilisez-le aussi pour répondre à une demande de suppression (RGPD).
Un PATCH qui ne change rien ne fait rien : ni modification, ni événement. Si vous modifiez le contenu (libellé, destinataire, expéditeur, objet, texte, HTML ou pièces jointes) ou supprimez une notification, cela figure dans le journal d'activité du client ou de la facture, avec l'utilisateur qui l'a fait. Les mises à jour du statut, de readAt ou de clickedAt n'y figurent pas, pour que vous puissiez continuer à synchroniser les ouvertures et les clics.
HTML et confidentialité
Tillor affiche le HTML aux collaborateurs tel que le client l'a reçu, mais le traite comme un contenu non fiable :
- Lors de l'enregistrement, les scripts, formulaires, iframes, éléments intégrés et attributs d'événement (
onclick, ...) sont supprimés. Les liens s'ouvrent dans un nouvel onglet - L'aperçu s'exécute dans un cadre isolé, sans scripts et sans accès à la session Tillor
- Les images et polices externes ne se chargent pas automatiquement, de sorte qu'ouvrir une notification n'active aucun pixel de suivi. Le collaborateur peut charger les images notification par notification
Ne comptez donc pas sur le déclenchement du suivi « ouvert » dans votre système lorsqu'un collaborateur consulte la notification.
Ce que Tillor ne fait pas avec les notifications externes
- Ne les (ré)envoie pas et ne les réessaie pas automatiquement
- Ne récupère pas de mises à jour de statut chez votre fournisseur de messagerie : c'est vous qui tenez le statut à jour avec
PATCH - Ne les compte pas dans les listes Notifications échouées, Notifications rejetées et Notifications en attente ni dans les compteurs en haut de l'aperçu des notifications, car Tillor ne peut pas vérifier votre statut. Elles figurent bien sous Communications récentes
Webhooks et SSE
| Événement | Quand |
|---|---|
notification-delivery:updated | À l'enregistrement et à chaque PATCH qui modifie quelque chose. Contient la notification complète |
notification-delivery:deleted | Lors d'un DELETE. Contient uniquement id, source, externalSource, externalReference, customerId et invoiceId |
Le champ source vaut EXTERNAL pour vos enregistrements et INTERNAL pour les notifications de Tillor. Filtrez dessus si vous voulez ignorer vos propres événements. Voir Webhooks et SSE.