Integración con Ghost
Añada Zenovay a cualquier publicación de Ghost (Ghost(Pro), Ghost CMS autoalojado o Ghost Cloud) en dos minutos. El Code Injection de Ghost está completamente disponible en todos los planes, por lo que esta integración funciona tanto para creadores en el nivel gratuito como para publicadores autoalojados.
Code Injection está disponible en todos los planes de Ghost, incluido Ghost CMS autoalojado. No se requiere actualización.
Inicio rápido
| Paso | Dónde | Qué hacer |
|---|---|---|
| 1 | Panel de Zenovay | Copie su fragmento de seguimiento |
| 2 | Admin de Ghost → Settings → Code injection → Site Header | Péguelo |
| 3 | Guardar | Haga clic en Save |
| 4 | Panel de Zenovay | Los visitantes en tiempo real aparecen en ~30 segundos |
Método 1: Inyección en el Site Header (Recomendado)
El panel Code Injection de Ghost escribe HTML sin procesar en el <head> de cada página renderizada por su tema. Esto incluye la página de inicio, entradas, páginas, etiquetas, autores y el flujo de membresía.
Paso a paso
- Inicie sesión en su panel de administración de Ghost (normalmente
https://su-sitio.com/ghost/). - En la barra lateral izquierda, haga clic en Settings (icono de engranaje).
- Desplácese hacia abajo hasta Site → Code injection.
- En el campo Site Header, pegue:
<script defer data-tracking-code="YOUR_TRACKING_CODE" src="https://api.zenovay.com/z.js"></script>
- Haga clic en Save.
Verificar
Abra su sitio Ghost en incógnito y vea el código fuente — debería ver <script defer data-tracking-code=...> entre <head> y </head>. Su visita debería aparecer en la vista en tiempo real de Zenovay en ~30 segundos.
Método 2: Inyección por entrada / por página
Para rastrear solo una entrada o página específica (p. ej., un anuncio de boletín de pago), abra la entrada en el editor y use el Code Injection a nivel de entrada:
- Abra una entrada o página en el editor.
- Haga clic en el icono de engranaje (configuración) en la parte superior derecha.
- Desplácese hacia abajo y expanda Code injection.
- Pegue el fragmento en Post Header.
- Update la entrada.
El Code Injection por entrada se añade después del Code Injection de todo el sitio. No pegue el rastreador en ambos — contará doble.
Seguimiento de eventos personalizados
Una vez que el rastreador se carga puede llamar a window.zenovay() desde cualquier plantilla de tema de Ghost, bloque de Code Injection o incrustación HTML en Markdown de una entrada.
Rastrear suscripciones al boletín
Los formularios de suscripción de Ghost emiten un evento personalizado members:signup al completarse con éxito. Añada esto en Site Header → Code injection (después de la línea del rastreador):
<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>
Rastrear clics en suscripciones de pago (Subscribe / Upgrade)
Ghost renderiza los botones de suscripción / activadores del portal con atributos data-portal. Escuche los clics:
<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>
Identificar miembros
Ghost expone el miembro actual a través de /members/api/member/. Identifique en cada página:
<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>
Seguimiento de conversiones de pago
Para la atribución de ingresos en membresías de pago, use la integración de webhook de Stripe de Ghost y envíe los eventos de Stripe a Zenovay a través de nuestra API de seguimiento del lado del servidor. El seguimiento del lado del cliente pierde los eventos de suscripción que se completan después de que el usuario ha cerrado la pestaña (Ghost envía el recibo de forma asíncrona).
Ejemplo rápido del lado del servidor (Node.js en su propio receptor de webhooks):
// 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 });
});
Trabajo con temas de Ghost personalizados
Si mantiene un tema de Ghost personalizado (p. ej., bifurcado de Casper, Source o Edition), el Code Injection se renderiza a través del helper {{ghost_head}}. Siempre que su default.hbs incluya:
{{!-- in default.hbs --}}
{{ghost_head}}
…Zenovay se carga correctamente. La mayoría de los temas de Ghost de terceros incluyen esto por defecto. Si el suyo no lo tiene, añádalo dentro de <head> antes de </head>.
Requisitos del plan
| Edición de Ghost | Code Injection | Temas personalizados | Seguimiento del lado del servidor |
|---|---|---|---|
| Ghost(Pro) Starter | ✅ | ❌ (solo Casper) | ✅ vía webhooks |
| Ghost(Pro) Creator | ✅ | ✅ | ✅ |
| Ghost(Pro) Team / Business | ✅ | ✅ | ✅ |
| Ghost CMS autoalojado | ✅ | ✅ | ✅ |
Problemas comunes
{{ghost_head}} faltante en temas personalizados. Este es el problema n.º 1 en sitios con temas personalizados. Si el rastreador no aparece en el código fuente de la página, verifique que su default.hbs incluya el helper. Sin él, el Code Injection no tiene dónde renderizarse.
Entradas AMP. Si ha habilitado AMP a través de la integración Ghost AMP, el Code Injection no se aplica a las URLs /su-entrada/amp/ (AMP elimina los scripts arbitrarios). Desactive AMP o acepte que el tráfico AMP no se rastrea. A partir de Ghost 5.x, AMP está siendo desenfatizado; recomendamos desactivarlo.
Correos electrónicos del boletín. El Code Injection solo se aplica a su sitio web, no a los correos electrónicos del boletín salientes. Las aperturas de correo las rastrea el propio Ghost; puede sincronizar esos datos a través de la Ghost Admin API en Zenovay si lo desea, pero está fuera del alcance de la integración básica.
Entradas solo para miembros. El rastreador se ejecuta en cada renderizado de página, incluidas las vistas previas con acceso restringido. Si solo desea rastrear las vistas de entrada después de que se desbloquee el muro de pago, condicione su evento personalizado a la respuesta de /members/api/member/ mencionada anteriormente.
Ghost autoalojado en Docker / Kubernetes. No se necesita configuración adicional — el Code Injection vive en la base de datos de Ghost, no en el sistema de archivos. Simplemente pegue el fragmento a través de la UI de administración como de costumbre.
Resolución de problemas
| Síntoma | Causa probable | Solución |
|---|---|---|
| Sin datos | Rastreador no está en el código fuente de la página | Verifique que {{ghost_head}} esté presente en default.hbs |
| Sin datos en algunas entradas | Code Injection por entrada anulando | Mueva el fragmento al Header de todo el sitio |
| Vistas de página duplicadas | Fragmento en Site Header y en Code Injection por entrada | Elija un solo ámbito |
Sin datos en URLs /amp/ | AMP elimina los scripts | Desactive AMP o acepte la brecha |
| Los miembros nunca se identifican | /members/api/member/ devuelve 404 | Está usando una versión antigua de Ghost (< 4.x) — actualice |
Privacidad y cumplimiento normativo
Para el seguimiento sin cookies, añada data-cookieless="true":
<script defer
data-tracking-code="YOUR_TRACKING_CODE"
data-cookieless="true"
src="https://api.zenovay.com/z.js"></script>
Las propias analíticas de miembros de Ghost usan cookies first-party de todos modos, por lo que combinar Zenovay en modo sin cookies es un patrón habitual: conserva los datos de miembros basados en correo electrónico de Ghost, además de obtener analíticas de visitantes sin cookies en el resto del sitio.
Consulte Cumplimiento de Privacidad para un análisis completo.
Recursos relacionados
- Referencia del script de seguimiento
- Eventos personalizados
- Seguimiento del lado del servidor
- Atribución de ingresos
- Artículo de ayuda sobre la integración con Ghost
¿Necesita ayuda? Contacte a [email protected] o visite nuestro Centro de ayuda.