Anleitung zur Widget-Installation
TapToChat lässt sich mit einem einzigen Snippet per Copy-and-paste in jede Website einbinden — ganz ohne Programmierkenntnisse.
Schnellstart
3 einfache Schritte:
- 1
Registrieren und ein Widget anlegen
Die eindeutige Widget-ID steht im Dashboard bereit
- 2
Den Installationscode kopieren
Zur Auswahl stehen HTML, React, Next.js und WordPress
- 3
Vor </body> einfügen
Den Code in die Website einfügen — fertig!
Installationsmethoden
HTML / Statische Websites
Für statische Websites, reines HTML oder jede Seite, in die sich Skripte einfügen lassen.
<!-- 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
Für React-Anwendungen (Create React App, Vite usw.).
// 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
Für Next.js 13+ mit 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
Für WordPress-Seiten. Entweder in functions.php eintragen oder ein Plugin wie „Insert Headers and Footers“ verwenden.
// 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');Konfigurationsoptionen
Das Widget lässt sich über zusätzliche Optionen der init-Funktion anpassen:
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+)
});| Option | Typ | Beschreibung |
|---|---|---|
| widgetId | string | Die eindeutige Widget-ID (erforderlich) |
| position | string | Ersatzposition des Widgets: 'bottom-right' oder 'bottom-left'. Ab embed.js 1.1.1 zeigt das Widget die im Dashboard gespeicherte Position, sofern sie gültig ist, und verwendet diesen Wert, wenn keine gültige Dashboard-Einstellung verfügbar ist (leer, ungültig oder nicht ladbar), danach den Standardwert. Bei auf 1.0.x oder 1.1.0 fixierten Installationen überschreibt die Dashboard-Einstellung diesen Wert nicht. |
| color | string | Ersatzfarbe der Startschaltfläche als Hexadezimalwert (z. B. '#3B82F6'). Ab embed.js 1.1.1 zeigt das Widget die im Dashboard gespeicherte Farbe, sofern sie gültig ist, und verwendet diesen Wert, wenn keine gültige Dashboard-Einstellung verfügbar ist (leer, ungültig oder nicht ladbar), danach den Standardwert. Bei auf 1.0.x oder 1.1.0 fixierten Installationen überschreibt die Dashboard-Einstellung diesen Wert nicht. |
Versionen und feste Versionen
Die Snippets oben laden die neueste 1.x-Version des Widget-Skripts. Korrekturen und Verbesserungen erreichen die Website automatisch, innerhalb von etwa fünf Minuten, und ändern nie etwas an Installation oder Konfiguration.
Verlangt die Sicherheitsrichtlinie ein Skript, das sich nie ändert, lässt sich stattdessen eine exakte Version festschreiben. Die Browser der Besucher prüfen die Datei gegen ihren Integritäts-Hash und verweigern sie bei Abweichung. Korrekturen kommen dann erst mit einem aktualisierten 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
Sendet die Website einen Content-Security-Policy-Header, https://cdn.taptochat.io in script-src und https://taptochat.io in frame-src erlauben.
Bewährte Vorgehensweisen
Vor </body> platzieren
Das Skript direkt vor dem schließenden body-Tag einfügen — das sorgt für optimale Performance und dafür, dass das DOM bereits geladen ist.
Asynchrones Laden
Das Widget lädt asynchron und blockiert daher weder das Rendering der Seite noch bremst es die Website aus.
Zuerst in der Staging-Umgebung testen
Das Widget vor dem Deployment in die Produktion in einer Entwicklungs- oder Staging-Umgebung testen.
Widget aktiv lassen
In den Dashboard-Einstellungen muss das Widget auf „Aktiv“ stehen, damit es auf der Website erscheint.
Fehlerbehebung
Das Widget erscheint nicht?
- •Prüfen, ob das Widget im Dashboard auf „Aktiv“ steht
- •Prüfen, ob die Widget-ID im Code mit der im Dashboard übereinstimmt
- •Browser-Cache leeren und einen harten Reload auslösen (Ctrl+Shift+R oder Cmd+Shift+R)
- •Die Browser-Konsole auf JavaScript-Fehler prüfen
Immer noch Probleme?
Das Support-Team ist erreichbar unter hello+support@taptochat.io oder über das Chat-Widget auf dieser Seite.
Bereit für den Start?
Kostenloses Konto anlegen und noch heute Live-Chat zur Website hinzufügen.