- Loader
- déclenché
- Rendu
- confirmé
Verdict
Sain
Le widget s'est chargé et il s'est affiché. Vous récupérez le volume et le p95 de rendu, par domaine et par version.
Supervision des widgets embarqués
Vigie regarde votre widget depuis les sites de vos clients, pas depuis les vôtres. Quel client, quelle version, quelle page, depuis quelle heure — avant que le client ne vous écrive.
Loader de 1,8 ko gzip, chargé en async. Aucune URL à saisir : l'inventaire se découvre tout seul.
fenêtre de la dernière heure
Le problème
Votre code s'exécute chez quelqu'un d'autre. Un CSP resserré un mardi soir, une extension de blocage, une refonte qui supprime le conteneur, un CMS qui réécrit la balise script : le widget ne démarre jamais. Il ne lève aucune exception, parce qu'il n'y a aucun code en mémoire pour en lever une. Votre télémétrie reste verte. La page de votre client, elle, a un trou dedans.
Vos logs serveur
Ne voient rien. La panne est dans un navigateur, sur un domaine qui ne vous appartient pas.
Votre outil d'erreurs
Ne voit rien. Aucune erreur n'a été levée : rien ne s'est exécuté.
Votre support
Voit tout, en dernier. Le ticket arrive des jours après la panne, et parfois jamais.
L'absence est le signal. Et l'absence ne peut pas s'envoyer elle-même.
Le modèle
La balise se charge en deux temps. Le loader se déclenche avant votre widget ; le reporter confirme que le rendu est allé au bout. C'est l'écart entre les deux qui porte toute l'information.
Verdict
Sain
Le widget s'est chargé et il s'est affiché. Vous récupérez le volume et le p95 de rendu, par domaine et par version.
Verdict
Cassé
Le loader a démarré, le rendu n'est jamais venu. Vous savez quel client, quelle version, quelle page, depuis quelle heure. C'est l'alerte qui justifie le produit.
Verdict
Jamais vu
Soit la page n'a pas été visitée, soit tout est bloqué en amont. Vigie tranche avec l'historique du domaine — jamais sur une seule fenêtre horaire.
L'inventaire
Vous ne savez probablement pas lister les domaines sur lesquels votre widget tourne. Vos clients l'installent, le déplacent en sous-domaine, le revendent en marque blanche, l'oublient sur une page de recette. Vigie n'a pas besoin de la liste : chaque exécution la déclare.
Depuis votre propre CDN, dans le snippet que vos clients collent déjà. 1,8 ko gzip, async, zéro dépendance.
Chaque origine qui exécute votre code apparaît dans la flotte, avec sa version, en quelques minutes. Y compris celles que vous aviez oubliées.
Au bout de sept jours d'historique par domaine, le silence devient interprétable et les alertes s'activent.
Le snippet que collent vos clients
<script src="https://cdn.your-company.example/vigie-loader.js"
data-vigie-key="pk_live_8f3c…"
data-vigie-version="2.14.0" async></script>Puis, dans votre widget, une ligne au moment où il a peint : markRendered(). Le reporter retrouve le loader dans la page, adopte ses compteurs, et il ne part qu'une requête par heure.
Widget en iframe ? Le loader est dans la page parente et passe l'origine du client au reporter par handshake : location y est votre domaine à vous, et le referrer n'est pas fiable.
Dans le produit
Un mur de domaines, trié par sessions touchées, pas par ordre alphabétique.
Le seul signal qu'aucun outil d'erreurs ne peut produire, par construction.
Quelle version tourne chez qui, et laquelle casse en arrivant.
Le temps de rendu au 95e centile, par domaine et par version, par heure.
L'alerte nomme le client concerné. Pas un taux d'erreur agrégé.
L'API d'ingestion répond 204 à tout le monde et ne confirme jamais qu'une clé existe.
Ce que ce n'est pas
Vigie ne trace pas votre backend, n'ouvre pas de span et ne mesure pas vos requêtes. Gardez l'outil qui le fait.
Un moniteur vérifie qu'une page répond, et il est acheté par le propriétaire de cette page. Vigie est acheté par vous, l'éditeur du widget, et regarde des centaines de pages que vous ne contrôlez pas.
Ces outils-là protègent un site de scripts comme le vôtre. Même acheteur : le site hôte. Aucun ne vous dit sur combien de vos clients votre propre widget ne démarre pas.
La comparaison honnête
Un éditeur sérieux a déjà Sentry ou équivalent, et nous n'allons pas prétendre le contraire. Voici précisément la frontière.
| La question | Un outil d'erreurs | Vigie |
|---|---|---|
| Mon widget vient de lever une exception | Oui, avec la stack et le breadcrumb | Oui, mais agrégé par domaine client |
| Mon widget n'a jamais démarré sur ce site | Rien. Aucun code en mémoire, donc aucune erreur | État cassé, client nommé, heure de début |
| Sur combien de mes clients suis-je cassé ? | Un taux d'erreurs global, sans dénominateur de clients | Une liste de domaines, avec leur historique |
| Quels clients n'ont jamais donné signe de vie ? | Question non représentable | Résolu par l'historique, après la ligne de base |
Tarifs
Pas au volume d'événements. Vous connaissez votre nombre de clients ; personne ne connaît son nombre d'événements à l'avance, et personne n'aime une facture qui suit le trafic d'autrui.
Jusqu'à 100 domaines clients
199 €/ mois
Un premier widget en production, un parc que vous pourriez encore lister à la main.
Jusqu'à 500 domaines clients
349 €/ mois
Le parc a dépassé ce que le support peut suivre de tête, et les versions cohabitent.
Jusqu'à 2 000 domaines clients
499 €/ mois
Plusieurs widgets, plusieurs marques blanches, une équipe qui vit dans le tableau de bord.
HT, facturation mensuelle, sans engagement.
Écrivez-nous en indiquant votre nombre de domaines et vos versions en circulation. Nous répondons avec un prix, pas avec un formulaire de qualification.
Nous écrireQuestions
4,0 ko minifié, 1,8 ko gzip, chargé en async et sans dépendance. Le reporter, qui vit à l'intérieur de votre widget, pèse 6,5 ko gzip. Ni l'un ni l'autre n'ajoute de requête bloquante : le trafic sort une fois par heure, agrégé.
L'origine, le chemin de la page tronqué à 120 caractères et vidé de sa query string, la version de votre widget, l'heure arrondie à l'heure pleine, et des compteurs : chargements, rendus, erreurs, blocages, p95. Aucun cookie, aucun identifiant de visiteur, aucun contenu de page, aucune donnée saisie par un utilisateur.
L'API d'ingestion répond 204 à toute requête, valide ou non, et ne confirme donc jamais qu'une clé existe. Une clé volée permet d'envoyer du bruit sur votre compte ; elle ne permet de lire strictement rien. Les clés se révoquent et se remplacent depuis le tableau de bord.
Pas la première semaine, et c'est volontaire. Il faut sept jours d'historique par domaine pour distinguer « silencieux » de « pas visité ». Pendant cette période le tableau de bord affiche la construction de la ligne de base, et un domaine jamais entendu n'est jamais peint en vert.
C'est le cas normal. Vigie regroupe par origine, pas par nom de client : vous rapprochez ensuite les origines de vos comptes. Un widget servi en iframe fonctionne aussi, via le handshake entre le loader de la page parente et le reporter.
Non, et ce n'est pas le but. Gardez-le pour les exceptions, les stacks et les breadcrumbs. Vigie répond à une question que cet outil ne peut pas poser : sur combien de mes clients mon widget ne tourne pas du tout.
Alors le domaine passe en silence, et Vigie le dit comme tel plutôt que de le peindre en vert. C'est exactement la raison pour laquelle l'état « jamais vu » existe séparément de l'état « sain ».
Servez le loader dans le snippet que vos clients collent déjà. Les premiers domaines apparaissent dans l'heure ; la ligne de base est prête en sept jours.
Sans engagement. Sans appel de qualification.