Ghost-Integration
Fügen Sie Zenovay in zwei Minuten zu jeder Ghost-Publikation (Ghost(Pro), selbst gehostetes Ghost CMS oder Ghost Cloud) hinzu. Ghosts Code Injection ist auf jedem Plan vollständig zugänglich, sodass diese Integration sowohl für kostenlose Ersteller als auch für selbst gehostete Publisher funktioniert.
Code Injection ist auf allen Ghost-Plänen verfügbar, einschließlich selbst gehostetem Ghost CMS. Kein Upgrade erforderlich.
Schnellstart
| Schritt | Wo | Was Sie tun |
|---|---|---|
| 1 | Zenovay Dashboard | Kopieren Sie Ihr Tracking-Snippet |
| 2 | Ghost-Admin → Settings → Code injection → Site Header | Fügen Sie es ein |
| 3 | Speichern | Klicken Sie auf Save |
| 4 | Zenovay Dashboard | Echtzeit-Besucher erscheinen innerhalb von ~30 Sekunden |
Methode 1: Site Header-Injection (Empfohlen)
Das Code Injection-Panel von Ghost schreibt rohes HTML in den <head> jeder von Ihrem Theme gerenderten Seite. Dazu gehören die Startseite, Beiträge, Seiten, Tags, Autoren und der Mitgliedschaftsablauf.
Schritt für Schritt
- Melden Sie sich in Ihrem Ghost-Admin-Panel an (üblicherweise
https://your-site.com/ghost/). - Klicken Sie in der linken Seitenleiste auf Settings (Zahnrad-Symbol).
- Scrollen Sie nach unten zu Site → Code injection.
- Fügen Sie im Feld Site Header Folgendes ein:
<script defer data-tracking-code="YOUR_TRACKING_CODE" src="https://api.zenovay.com/z.js"></script>
- Klicken Sie auf Save.
Überprüfen
Öffnen Sie Ihre Ghost-Website im Inkognito-Modus und zeigen Sie den Quelltext an — Sie sollten <script defer data-tracking-code=...> zwischen <head> und </head> sehen. Ihr Besuch sollte in der Zenovay Echtzeit-Ansicht innerhalb von ~30 Sekunden erscheinen.
Methode 2: Beitrags-/Seitenspezifische Injection
Um nur einen bestimmten Beitrag oder eine Seite zu verfolgen (z. B. eine bezahlte Newsletter-Ankündigung), öffnen Sie den Beitrag im Editor und verwenden Sie die Code Injection auf Beitragsebene:
- Öffnen Sie einen Beitrag oder eine Seite im Editor.
- Klicken Sie auf das Zahnrad-Symbol (Einstellungen) oben rechts.
- Scrollen Sie nach unten und erweitern Sie Code injection.
- Fügen Sie das Snippet in Post Header ein.
- Aktualisieren Sie den Beitrag.
Die beitrags-spezifische Code Injection wird nach der seitenweiten Code Injection angehängt. Fügen Sie den Tracker nicht in beiden Bereichen ein — es kommt zur doppelten Zählung.
Benutzerdefinierte Ereignisse verfolgen
Nachdem der Tracker geladen ist, können Sie window.zenovay() aus jedem Ghost-Theme-Template, Code Injection-Block oder Markdown-HTML-Embed in einem Beitrag aufrufen.
Newsletter-Anmeldungen verfolgen
Ghosts Anmeldeformulare senden bei Erfolg ein benutzerdefiniertes members:signup-Ereignis aus. Fügen Sie dies in Site Header → Code injection ein (nach der Tracker-Zeile):
<script>
document.addEventListener('DOMContentLoaded', () => {
document.addEventListener('submit', (e) => {
const form = e.target;
if (form?.matches('[data-members-form]')) {
if (window.zenovay) {
window.zenovay('track', 'signup', {
form_type: form.dataset.membersForm || 'signup',
page: window.location.pathname,
});
}
}
}, true);
});
</script>
Klicks auf bezahlte Abonnements verfolgen (Subscribe / Upgrade)
Ghost rendert Abonnement-/Portal-Schaltflächen mit data-portal-Attributen. Hören Sie auf Klicks:
<script>
document.addEventListener('DOMContentLoaded', () => {
document.addEventListener('click', (e) => {
const target = e.target.closest('[data-portal]');
if (target && window.zenovay) {
window.zenovay('track', 'portal_opened', {
action: target.dataset.portal,
page: window.location.pathname,
});
}
}, true);
});
</script>
Mitglieder identifizieren
Ghost stellt das aktuelle Mitglied über /members/api/member/ bereit. Rufen Sie es auf und identifizieren Sie auf jeder Seite:
<script>
fetch('/members/api/member/', { credentials: 'include' })
.then(r => r.ok ? r.json() : null)
.then(member => {
if (member && window.zenovay) {
window.zenovay('identify', {
userId: member.uuid,
email: member.email,
name: member.name,
plan: member.subscriptions?.[0]?.plan?.nickname,
});
}
})
.catch(() => {});
</script>
Bezahlte Konversionen verfolgen
Für die Umsatzzuordnung bei bezahlten Mitgliedschaften verwenden Sie die Stripe-Webhook-Integration von Ghost und senden Sie Stripe-Ereignisse über unsere serverseitige Tracking-API an Zenovay. Clientseitiges Tracking verpässt Abonnementereignisse, die abgeschlossen werden, nachdem der Benutzer den Tab geschlossen hat (Ghost sendet die Quittung asynchron per E-Mail).
Kurzbeispiel serverseitig (Node.js auf Ihrem eigenen Webhook-Empfänger):
// Forward Stripe checkout.session.completed → Zenovay
app.post('/webhooks/stripe', async (req, res) => {
const event = req.body;
if (event.type === 'checkout.session.completed') {
const session = event.data.object;
await fetch('https://api.zenovay.com/v1/track', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': `Bearer ${process.env.ZENOVAY_API_KEY}`,
},
body: JSON.stringify({
event: 'purchase',
userId: session.customer_email,
properties: {
transaction_id: session.id,
revenue: session.amount_total / 100,
currency: session.currency,
},
}),
});
}
res.json({ received: true });
});
Arbeiten mit benutzerdefinierten Ghost-Themes
Wenn Sie ein benutzerdefiniertes Ghost-Theme pflegen (z. B. ein Fork von Casper, Source oder Edition), wird Code Injection über den {{ghost_head}}-Helper gerendert. Solange Ihre default.hbs-Datei Folgendes enthält:
{{!-- in default.hbs --}}
{{ghost_head}}
…lädt Zenovay korrekt. Die meisten Ghost-Themes von Drittanbietern enthalten dies standardmäßig. Falls Ihr Theme dies nicht tut, fügen Sie es innerhalb von <head> vor </head> hinzu.
Plan-Voraussetzungen
| Ghost-Edition | Code Injection | Eigene Themes | Serverseitiges Tracking |
|---|---|---|---|
| Ghost(Pro) Starter | ✅ | ❌ (nur Casper) | ✅ via Webhooks |
| Ghost(Pro) Creator | ✅ | ✅ | ✅ |
| Ghost(Pro) Team / Business | ✅ | ✅ | ✅ |
| Selbst gehostetes Ghost CMS | ✅ | ✅ | ✅ |
Häufige Stolpersteine
{{ghost_head}} fehlt in benutzerdefinierten Themes. Dies ist das häufigste Problem bei benutzerdefinierten Themes. Wenn der Tracker nicht im Seitenquelltext erscheint, prüfen Sie, ob Ihre default.hbs den Helper enthält. Ohne ihn hat Code Injection keinen Platz zum Rendern.
AMP-Beiträge. Wenn Sie AMP über die Ghost AMP-Integration aktiviert haben, gilt Code Injection nicht für /your-post/amp/-URLs (AMP entfernt beliebige Skripte). Deaktivieren Sie entweder AMP oder nehmen Sie in Kauf, dass AMP-Traffic nicht verfolgt wird. Ab Ghost 5.x wird AMP zunehmend de-priorisiert; wir empfehlen die Deaktivierung.
Newsletter-E-Mails. Code Injection gilt nur für Ihre Website, nicht für ausgehende Newsletter-E-Mails. E-Mail-Öffnungen werden von Ghost selbst verfolgt; Sie können diese Daten bei Bedarf über die Ghost Admin API in Zenovay synchronisieren, aber dies ist nicht im Umfang der Basisintegration enthalten.
Nur für Mitglieder zugängliche Beiträge. Der Tracker wird bei jedem Seitenrendering ausgelöst, einschließlich Vorschauen mit Paywall. Wenn Sie Beitragsaufrufe erst nach dem Entsperren der Paywall verfolgen möchten, machen Sie Ihr benutzerdefiniertes Ereignis von der obigen /members/api/member/-Antwort abhängig.
Selbst gehostetes Ghost auf Docker / Kubernetes. Keine zusätzliche Konfiguration erforderlich — Code Injection liegt in der Ghost-Datenbank, nicht im Dateisystem. Fügen Sie das Snippet wie gewohnt über die Admin-Oberfläche ein.
Fehlerbehebung
| Symptom | Wahrscheinliche Ursache | Lösung |
|---|---|---|
| Keine Daten | Tracker nicht im Seitenquelltext | Prüfen Sie, ob {{ghost_head}} in default.hbs vorhanden ist |
| Keine Daten bei einigen Beiträgen | Beitragsspezifische Code Injection überschreibt | Snippet in den seitenweiten Header verschieben |
| Doppelte Seitenaufrufe | Snippet sowohl in Site Header als auch in beitragsspezifischer Code Injection | Einen Bereich wählen |
Keine Daten bei /amp/-URLs | AMP entfernt Skripte | AMP deaktivieren oder die Lücke akzeptieren |
| Mitglieder werden nie identifiziert | /members/api/member/ gibt 404 zurück | Sie verwenden eine ältere Ghost-Version (< 4.x) — upgraden Sie |
Datenschutz & Compliance
Für Cookie-freies Tracking fügen Sie data-cookieless="true" hinzu:
<script defer
data-tracking-code="YOUR_TRACKING_CODE"
data-cookieless="true"
src="https://api.zenovay.com/z.js"></script>
Ghosts eigene Mitgliederanalysen verwenden ohnehin First-Party-Cookies, daher ist die Kombination von Zenovay im Cookie-freien Modus ein gängiges Muster: Sie behalten Ghosts E-Mail-basierte Mitgliederdaten und erhalten zusätzlich Cookie-freie Besucheranalysen für den Rest der Website.
Weitere Details finden Sie unter Datenschutz-Compliance.
Weiterführende Ressourcen
- Tracking-Skript-Referenz
- Benutzerdefinierte Ereignisse
- Serverseitiges Tracking
- Umsatzzuordnung
- Ghost-Integrations-Hilfeartikel
Brauchen Sie Hilfe? Kontaktieren Sie [email protected] oder besuchen Sie unser Help Center.