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
Registrati e crea un widget
Prendi l’ID univoco del tuo widget dalla dashboard
- 2
Copia il codice di installazione
Scegli tra HTML, React, Next.js o WordPress
- 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+)
});| Opzione | Tipo | Descrizione |
|---|---|---|
| widgetId | string | L’ID univoco del tuo widget (obbligatorio) |
| position | string | Posizione 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. |
| color | string | Colore 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.