Skip to main content

Guide d’installation du widget

Ajoutez TapToChat à votre site web avec un seul extrait à copier-coller. Aucune compétence en développement requise.

Démarrage rapide

3 étapes simples :

  1. 1

    Créez un compte et un widget

    Récupérez votre identifiant de widget unique dans le tableau de bord

  2. 2

    Copiez votre code d’installation

    Choisissez HTML, React, Next.js ou WordPress

  3. 3

    Collez-le avant </body>

    Ajoutez le code à votre site web et c’est terminé !

Méthodes d’installation

HTML / Sites statiques

Pour les sites statiques, le HTML brut ou tout site où vous pouvez ajouter des scripts.

<!-- TapToChat Widget -->
<script>
  (function(w,d,s,o,f,js,fjs){
    w['TapToChat']=o;w[o] = w[o] || function () { (w[o].q = w[o].q || []).push(arguments) };
    js = d.createElement(s), fjs = d.getElementsByTagName(s)[0];
    js.id = o; js.src = f; js.async = 1; fjs.parentNode.insertBefore(js, fjs);
  }(window, document, 'script', 'taptochat', 'https://cdn.taptochat.io/widget/v1/embed.js'));
  taptochat('init', { widgetId: 'YOUR_WIDGET_ID' });
</script>
<!-- End TapToChat Widget -->

React

Pour les applications React (Create React App, Vite, etc.).

// Add to your App.js or main component
import { useEffect } from 'react';

function App() {
  useEffect(() => {
    const config = { widgetId: 'YOUR_WIDGET_ID' };

    // Set the config BEFORE injecting the script: embed.js reads
    // window.TapToChatConfig as soon as it loads, so there is no onload
    // callback to race against.
    window.TapToChatConfig = config;

    if (window.TapToChat) {
      // Already loaded (a remount, or another component mounted it).
      window.TapToChat.init(config);
    } else if (!document.getElementById('taptochat')) {
      // Guarded by id so StrictMode's double-invoked effect cannot inject
      // the script twice.
      const script = document.createElement('script');
      script.src = 'https://cdn.taptochat.io/widget/v1/embed.js';
      script.async = true;
      script.id = 'taptochat';
      document.body.appendChild(script);
    }

    return () => {
      // destroy() removes the widget and detaches its listeners and timers.
      // The <script> stays on the page and cached, so a remount re-initialises
      // immediately via the branch above.
      if (window.TapToChat) window.TapToChat.destroy();
    };
  }, []);

  return <div className="App">{/* Your app */}</div>;
}

Next.js

Pour Next.js 13+ avec l’App Router.

// Create app/components/TapToChatWidget.tsx
'use client'

import { useEffect } from 'react'

declare global {
  interface Window {
    TapToChatConfig?: Record<string, unknown>
    TapToChat?: {
      init: (config?: Record<string, unknown>) => void
      open: () => void
      close: () => void
      toggle: () => void
      isOpen: () => boolean
      destroy: () => void
    }
  }
}

export function TapToChatWidget() {
  useEffect(() => {
    const config = { widgetId: 'YOUR_WIDGET_ID' }

    // Config first: embed.js auto-initialises from window.TapToChatConfig the
    // moment it loads, so nothing has to race an onload handler.
    window.TapToChatConfig = config

    if (window.TapToChat) {
      window.TapToChat.init(config)
    } else if (!document.getElementById('taptochat')) {
      // StrictMode runs this effect twice in development; the id guard keeps
      // the second pass from injecting a duplicate script.
      const script = document.createElement('script')
      script.src = 'https://cdn.taptochat.io/widget/v1/embed.js'
      script.async = true
      script.id = 'taptochat'
      document.body.appendChild(script)
    }

    return () => {
      window.TapToChat?.destroy()
    }
  }, [])

  return null
}

// Then in your app/layout.tsx:
import { TapToChatWidget } from './components/TapToChatWidget'

export default function RootLayout({ children }) {
  return (
    <html>
      <body>
        {children}
        <TapToChatWidget />
      </body>
    </html>
  )
}

WordPress

Pour les sites WordPress. Ajoutez-le à functions.php ou utilisez une extension comme « Insert Headers and Footers ».

// Add to functions.php
function taptochat_widget() {
  ?>
  <!-- TapToChat Widget -->
  <script>
    (function(w,d,s,o,f,js,fjs){
      w['TapToChat']=o;w[o] = w[o] || function () { (w[o].q = w[o].q || []).push(arguments) };
      js = d.createElement(s), fjs = d.getElementsByTagName(s)[0];
      js.id = o; js.src = f; js.async = 1; fjs.parentNode.insertBefore(js, fjs);
    }(window, document, 'script', 'taptochat', 'https://cdn.taptochat.io/widget/v1/embed.js'));
    taptochat('init', { widgetId: 'YOUR_WIDGET_ID' });
  </script>
  <?php
}
add_action('wp_footer', 'taptochat_widget');

Options de configuration

Personnalisez votre widget en passant des options supplémentaires à la fonction init :

taptochat('init', {
  widgetId: 'YOUR_WIDGET_ID',  // Required
  position: 'bottom-right',     // Optional; a valid dashboard setting wins (embed.js 1.1.1+)
  color: '#3B82F6'              // Optional; a valid dashboard setting wins (embed.js 1.1.1+)
});
OptionTypeDescription
widgetIdstringVotre identifiant de widget unique (obligatoire)
positionstringPosition de secours du widget : 'bottom-right' ou 'bottom-left'. À partir d’embed.js 1.1.1, le widget affiche la position valide enregistrée dans votre tableau de bord et utilise cette valeur lorsqu’aucun réglage valide du tableau de bord n’est disponible (vide, invalide ou impossible à charger), puis la position par défaut. Pour les installations figées sur la version 1.0.x ou 1.1.0, le réglage du tableau de bord ne remplace pas cette valeur.
colorstringCouleur de secours du bouton d’ouverture au format hexadécimal (par ex. '#3B82F6'). À partir d’embed.js 1.1.1, le widget affiche la couleur valide enregistrée dans votre tableau de bord et utilise cette valeur lorsqu’aucun réglage valide du tableau de bord n’est disponible (vide, invalide ou impossible à charger), puis la couleur par défaut. Pour les installations figées sur la version 1.0.x ou 1.1.0, le réglage du tableau de bord ne remplace pas cette valeur.

Versions et épinglage

Les extraits ci-dessus chargent la dernière version 1.x du script du widget. Les correctifs et améliorations arrivent automatiquement sur votre site, en cinq minutes environ, sans jamais changer la façon d’installer ou de configurer le widget.

Si votre politique de sécurité exige un script qui ne change jamais, épinglez plutôt une version précise. Le navigateur de vos visiteurs compare le fichier à son empreinte d’intégrité et le refuse s’il diffère. Pour recevoir les correctifs, mettez à jour l’extrait vous-même.

<!-- TapToChat Widget -->
<script>
  (function(w,d,s,o,f,js,fjs){
    w['TapToChat']=o;w[o] = w[o] || function () { (w[o].q = w[o].q || []).push(arguments) };
    js = d.createElement(s), fjs = d.getElementsByTagName(s)[0];
    js.id = o; js.src = f; js.async = 1;
    js.integrity = 'sha384-Hzg8SyhG1oeTZdlxq12ixNKuS1aGiMmxQ3kpToMVROmqA1er0EcPHWPMtzX9Nuv+'; js.crossOrigin = 'anonymous'; fjs.parentNode.insertBefore(js, fjs);
  }(window, document, 'script', 'taptochat', 'https://cdn.taptochat.io/widget/1.1.8/embed.js'));
  taptochat('init', { widgetId: 'YOUR_WIDGET_ID' });
</script>
<!-- End TapToChat Widget -->

Content Security Policy

Si votre site envoie un en-tête Content-Security-Policy, autorisez https://cdn.taptochat.io dans script-src et https://taptochat.io dans frame-src.

Bonnes pratiques

À placer avant </body>

Ajoutez le script juste avant la balise body fermante, pour des performances optimales et pour garantir que le DOM est bien chargé.

Chargement asynchrone

Le widget se charge de façon asynchrone : il ne bloque pas le rendu de votre page et ne ralentit pas votre site.

Testez d’abord en préproduction

Testez le widget dans un environnement de développement ou de préproduction avant de le déployer en production.

Gardez le widget actif

Vérifiez que votre widget est bien réglé sur « Actif » dans les paramètres du tableau de bord pour qu’il s’affiche sur votre site.

Dépannage

Le widget ne s’affiche pas ?

  • •Vérifiez que votre widget est réglé sur « Actif » dans le tableau de bord
  • •Vérifiez que l’identifiant de widget de votre code correspond à celui du tableau de bord
  • •Videz le cache de votre navigateur et forcez le rechargement (Ctrl+Shift+R ou Cmd+Shift+R)
  • •Consultez la console du navigateur à la recherche d’erreurs JavaScript

Toujours un problème ?

Contactez notre équipe support à hello+support@taptochat.io ou utilisez le widget de chat de cette page.

Prêt à vous lancer ?

Créez votre compte gratuit et ajoutez le chat en direct à votre site web dès aujourd’hui.