Documentation d'intégration
Le widget de dépistage auditif s'intègre en une ligne : le script
widget.js insère une iframe sécurisée dans votre page, sans
dépendance ni framework. L'iframe se redimensionne automatiquement et
remonte les coordonnées captées dans votre espace partenaire.
Démarrage rapide
Copiez ce code juste avant la balise </body> de votre
page, en remplaçant VOTRE-SLUG par l'identifiant fourni à la
création de votre compte partenaire :
<script src="https://leguideauditif.fr/widget.js" data-partner="VOTRE-SLUG" async></script> C'est tout : le widget apparaît à l'emplacement du script. Pour le placer ailleurs, voir Placement.
Attributs disponibles
| Attribut | Requis | Rôle |
|---|---|---|
data-partner | Oui | Votre identifiant partenaire (lettres minuscules, chiffres, tirets ; 1 à 64 caractères). |
data-target | Non | Sélecteur CSS du conteneur où insérer le widget (ex. #depistage-auditif). Absent : le widget s'insère à l'emplacement du script. |
async | Recommandé | Charge le script sans bloquer le rendu de votre page. |
Exemple avec un conteneur cible :
<script src="https://leguideauditif.fr/widget.js" data-partner="VOTRE-SLUG" data-target="#depistage-auditif" async></script> Placement et dimensionnement
Sans data-target, le widget s'insère immédiatement après la
balise <script>. Avec data-target, il est
ajouté dans le conteneur indiqué. La largeur occupe 100 % de l'espace
disponible ; prévoyez donc un conteneur à la largeur souhaitée.
La hauteur est gérée automatiquement : l'iframe
communique sa hauteur à votre page (via postMessage) et
s'ajuste à chaque étape du parcours. Vous n'avez aucune hauteur à fixer.
Événements JavaScript
Pour les intégrations avancées, le loader émet des événements sur l'objet
window que vous pouvez écouter :
lga-widget:widget.ready: le widget est chargé et prêt.lga-widget:widget.resize: la hauteur a changé.
window.addEventListener('lga-widget:widget.ready', function (e) {
console.log('Widget pret, hauteur :', e.detail.height);
}); Intégration selon votre CMS
Le widget est un simple bloc de code : collez le snippet là où votre CMS accepte du HTML personnalisé.
- WordPress : bloc « HTML personnalisé » (éditeur de blocs) ou widget « HTML ».
- Wix : élément « Incorporer un code » (Embed / HTML iframe).
- Squarespace : bloc « Code ».
- Shopify : section personnalisée ou bloc de code dans le thème.
- Webflow : élément « Embed » (HTML personnalisé).
Sur un site sur mesure, placez le snippet dans le gabarit de la page concernée.
Où arrivent les leads
Lorsqu'un visiteur laisse ses coordonnées, le lead est enregistré et consultable dans votre espace partenaire (le point de capture est configurable : après le résultat, à côté du résultat, etc.). Les offres Pro, Réseau et Enterprise peuvent en plus recevoir chaque lead en temps quasi réel via un webhook.
Webhook (Pro, Réseau, Enterprise)
Si votre offre inclut le webhook et que vous avez renseigné une URL de
réception, chaque lead capté est envoyé en POST à cette URL,
au format JSON :
{
"id": "f1e2d3c4-...",
"partner_slug": "votre-slug",
"session_id": "a1b2c3...",
"email": "patient@exemple.fr",
"fields": { "nom": "Dupont", "telephone": "0600000000" },
"verdict": "perte_legere",
"reliability": 0.92,
"capture_point": "post_result",
"consent_given": true,
"consent_text": "J'accepte d'être recontacté...",
"consent_given_at": "2026-05-27T10:12:00.000Z",
"created_at": "2026-05-27T10:11:58.000Z"
} En-têtes
Content-Type: application/jsonX-LGA-Signature: sha256=<empreinte>X-LGA-Webhook-Id: <identifiant du lead>X-LGA-Timestamp: <horodatage en millisecondes>
Vérifier la signature
La signature est un HMAC-SHA256 calculé sur la chaîne
<timestamp>.<corps brut> avec votre clé secrète,
préfixé par sha256=. Recalculez-la et comparez en temps
constant :
import { createHmac, timingSafeEqual } from 'node:crypto';
// secret = votre cle de signature webhook (espace partenaire)
function verifierSignature(corpsBrut, signatureRecue, timestamp, secret) {
const attendu =
'sha256=' + createHmac('sha256', secret)
.update(`${timestamp}.${corpsBrut}`)
.digest('hex');
const a = Buffer.from(signatureRecue);
const b = Buffer.from(attendu);
return a.length === b.length && timingSafeEqual(a, b);
} Accusé de réception et réessais
Répondez avec un statut 2xx pour accuser réception. En cas
d'échec (statut non-2xx, ou délai dépassé : 8 secondes), l'envoi
est réessayé automatiquement, jusqu'à 5 tentatives, avant abandon.
Origines autorisées et quota
Vous pouvez restreindre l'affichage du widget à une liste de domaines (origines autorisées) depuis votre espace partenaire. Laissée vide, la liste est permissive : le widget fonctionne partout.
Chaque offre comporte un quota mensuel de tests. Le dépassement n'interrompt jamais un test en cours (priorité à l'usager) : les tests au-delà du quota sont comptabilisés et facturés en supplément selon votre offre. Le détail est visible dans votre tableau de bord.
Dépannage
Le widget ne s'affiche pas, que vérifier ?
data-partner est présent et valide (lettres minuscules, chiffres et tirets uniquement). Ouvrez la console du navigateur : le loader y écrit un avertissement [lga-widget] si le slug manque ou si l'origine du script est introuvable. Assurez-vous enfin qu'aucun bloqueur de scripts n'empêche le chargement de widget.js. La hauteur du widget est coupée ou figée.
postMessage. Si la hauteur reste figée, vérifiez qu'aucune règle CSS du conteneur parent ne force une hauteur fixe ou un overflow: hidden. La largeur est de 100 % par défaut. Le test affiche un message de domaine non autorisé.
https://www.votresite.fr). Une liste vide est permissive : le widget fonctionne sur tous vos domaines. Puis-je placer le widget dans une modale ou un onglet ?
data-target en pointant un conteneur de la page (par exemple data-target="#depistage-auditif"). Le widget se dimensionne correctement lorsqu'il devient visible. Aller plus loin
Besoin de prendre en main votre tableau de bord (leads, quota, personnalisation) ? Consultez le guide de l'espace partenaire. Pas encore partenaire ? Découvrez les offres.
Accéder à mon espace partenaire