Skip to main content

Guida all’installazione del widget

Aggiungi TapToChat al tuo sito web con un solo snippet da copiare e incollare. Nessuna esperienza di programmazione richiesta.

Guida rapida

3 semplici passaggi:

  1. 1

    Registrati e crea un widget

    Prendi l’ID univoco del tuo widget dalla dashboard

  2. 2

    Copia il codice di installazione

    Scegli tra HTML, React, Next.js o WordPress

  3. 3

    Incollalo prima di </body>

    Aggiungi il codice al tuo sito web e hai finito!

Metodi di installazione

HTML / siti statici

Per siti statici, HTML semplice o qualsiasi sito in cui puoi aggiungere script.

<!-- 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

Per applicazioni React (Create React App, Vite, ecc.).

// 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

Per Next.js 13+ con 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

Per siti WordPress. Aggiungilo a functions.php o usa un plugin come “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');

Opzioni di configurazione

Personalizza il widget passando opzioni aggiuntive alla funzione 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+)
});
OpzioneTipoDescrizione
widgetIdstringL’ID univoco del tuo widget (obbligatorio)
positionstringPosizione di riserva del widget: 'bottom-right' o 'bottom-left'. Con embed.js 1.1.1 o successivo, il widget mostra la posizione salvata nella dashboard se è valida, e usa questo valore quando non è disponibile un’impostazione valida della dashboard (vuota, non valida o impossibile da caricare), poi quella predefinita. Nelle installazioni fissate alla versione 1.0.x o 1.1.0, l’impostazione della dashboard non sostituisce questo valore.
colorstringColore di riserva del pulsante di apertura in formato esadecimale (ad es. '#3B82F6'). Con embed.js 1.1.1 o successivo, il widget mostra il colore salvato nella dashboard se è valido, e usa questo valore quando non è disponibile un’impostazione valida della dashboard (vuota, non valida o impossibile da caricare), poi quello predefinito. Nelle installazioni fissate alla versione 1.0.x o 1.1.0, l’impostazione della dashboard non sostituisce questo valore.

Versioni e blocco della versione

Gli snippet qui sopra caricano l’ultima release 1.x dello script del widget. Correzioni e miglioramenti arrivano sul tuo sito automaticamente, in circa cinque minuti, e non cambiano mai il modo in cui installi o configuri il widget.

Se la tua policy di sicurezza richiede uno script che non cambi mai, blocca invece una release precisa. I browser dei tuoi visitatori verificano il file con il suo hash di integrità e lo rifiutano se è diverso. Per ricevere le correzioni, aggiorni tu lo snippet.

<!-- 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

Se il tuo sito invia un header Content-Security-Policy, consenti https://cdn.taptochat.io in script-src e https://taptochat.io in frame-src.

Buone pratiche

Inseriscilo prima di </body>

Aggiungi lo script subito prima del tag di chiusura del body, per prestazioni ottimali e per essere sicuro che il DOM sia caricato.

Caricamento asincrono

Il widget si carica in modo asincrono e non blocca il rendering della pagina né rallenta il tuo sito.

Provalo prima in staging

Prova il widget in un ambiente di sviluppo o di staging prima di pubblicarlo in produzione.

Mantieni il widget attivo

Assicurati che il widget sia impostato su “Attivo” nelle impostazioni della dashboard, perché compaia sul tuo sito.

Risoluzione dei problemi

Il widget non compare?

  • •Verifica che il widget sia impostato su “Attivo” nella dashboard
  • •Verifica che l’ID del widget nel tuo codice corrisponda a quello nella dashboard
  • •Svuota la cache del browser e ricarica forzatamente la pagina (Ctrl+Shift+R o Cmd+Shift+R)
  • •Controlla la console del browser per eventuali errori JavaScript

Hai ancora problemi?

Contatta il nostro team di assistenza all’indirizzo hello+support@taptochat.io oppure usa il widget di chat in questa pagina.

Pronto per iniziare?

Crea il tuo account gratuito e aggiungi la live chat al tuo sito web oggi stesso.