React Quickstart
Integra Zenovay Analytics en tu aplicación React. No se necesita paquete npm, solo una simple etiqueta de script.
Instalación
Añade el script de seguimiento de Zenovay a tu archivo HTML:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>My React App</title>
</head>
<body>
<div id="root"></div>
<script defer data-tracking-code="YOUR_TRACKING_CODE" src="https://api.zenovay.com/z.js"></script>
</body>
</html>
Eso es todo para la configuración básica. Zenovay rastreará automáticamente las vistas de página.
Hook de Configuración Auxiliar
Crea un hook reutilizable para rastrear eventos personalizados:
export function useZenovay() {
const track = (eventName: string, data?: Record<string, any>) => {
if (window.zenovay) {
window.zenovay('track', eventName, data);
}
};
const identify = (userId: string, traits?: Record<string, any>) => {
if (window.zenovay) {
window.zenovay('identify', userId, traits);
}
};
const trackGoal = (goalName: string, data?: Record<string, any>) => {
if (window.zenovay) {
window.zenovay('goal', goalName, data);
}
};
const trackRevenue = (data: { order_id: string; value: number; currency?: string }) => {
if (window.zenovay) {
window.zenovay('revenue', data.value, data.currency || 'USD');
}
};
return { track, identify, trackGoal, trackRevenue };
}Variables de Entorno
# No se necesitan variables de entorno especiales para Zenovay!
# El código de seguimiento está incorporado directamente en la etiqueta de script.
# Reemplaza YOUR_TRACKING_CODE en index.html con tu código
# de seguimiento real del panel de Zenovay (app.zenovay.com).Encuentra tu código de seguimiento en la aplicación bajo Domains (Dominios), selecciona tu sitio y luego abre la pestaña General (la tarjeta de script de seguimiento).
Rastrear Eventos con Hook
Usa el hook useZenovay para rastrear eventos personalizados:
import { useZenovay } from '../hooks/useZenovay';
import { useState } from 'react';
export function SignupForm() {
const { track, identify } = useZenovay();
const [email, setEmail] = useState('');
const handleSubmit = async (e: React.FormEvent) => {
e.preventDefault();
// Tu lógica de registro
const user = await signup(email);
// Rastrear el registro
track('user_signup', {
email,
source: 'signup_form',
plan: 'free',
});
// Identificar al usuario
identify(user.id, {
email: user.email,
created_at: new Date().toISOString(),
});
};
return (
<form onSubmit={handleSubmit}>
<input
type="email"
value={email}
onChange={(e) => setEmail(e.target.value)}
placeholder="Enter your email"
/>
<button type="submit">Sign Up</button>
</form>
);
}Rastrear Clics de Botón
Rastrea las interacciones del usuario con botones:
import { useZenovay } from '../hooks/useZenovay';
export function PricingCard({ plan }: { plan: string }) {
const { track } = useZenovay();
const handleUpgrade = () => {
track('upgrade_clicked', {
plan,
location: 'pricing_page',
});
// Navegar a checkout
window.location.href = '/checkout?plan=' + plan;
};
return (
<div className="pricing-card">
<h3>{plan} Plan</h3>
<button onClick={handleUpgrade}>
Upgrade Now
</button>
</div>
);
}Rastrear Vistas de Página
Rastrea automáticamente las vistas de página con React Router:
import { BrowserRouter, Routes, Route, useLocation } from 'react-router-dom';
import { useEffect } from 'react';
function PageTracker() {
const location = useLocation();
useEffect(() => {
if (window.zenovay) {
window.zenovay('track', 'pageview', {
path: location.pathname,
search: location.search,
});
}
}, [location.pathname]);
return null;
}
function App() {
return (
<BrowserRouter>
<PageTracker />
<Routes>
<Route path="/" element={<Home />} />
<Route path="/dashboard" element={<Dashboard />} />
</Routes>
</BrowserRouter>
);
}Identificar Usuarios
Identifica a los usuarios cuando inicien sesión:
import { useZenovay } from '../hooks/useZenovay';
import { useEffect } from 'react';
export function UserProfile({ user }: { user: User }) {
const { identify } = useZenovay();
useEffect(() => {
if (user) {
identify(user.id, {
email: user.email,
name: user.name,
plan: user.subscription?.plan || 'free',
created_at: user.createdAt,
});
}
}, [user]);
return <div>Welcome, {user.name}!</div>;
}Rastrear Envíos de Formulario
Rastrea las interacciones y completaciones de formularios:
import { useZenovay } from '../hooks/useZenovay';
import { useState } from 'react';
export function ContactForm() {
const { track } = useZenovay();
const [formData, setFormData] = useState({ name: '', email: '', message: '' });
const handleChange = (field: string, value: string) => {
setFormData(prev => ({ ...prev, [field]: value }));
// Rastrear interacciones de campos de formulario
track('form_field_filled', {
form_name: 'contact_form',
field_name: field,
});
};
const handleSubmit = async (e: React.FormEvent) => {
e.preventDefault();
track('form_submitted', {
form_name: 'contact_form',
has_message: formData.message.length > 0,
});
// Lógica de envío de formulario
await submitContact(formData);
};
return (
<form onSubmit={handleSubmit}>
<input
type="text"
value={formData.name}
onChange={(e) => handleChange('name', e.target.value)}
placeholder="Name"
/>
<input
type="email"
value={formData.email}
onChange={(e) => handleChange('email', e.target.value)}
placeholder="Email"
/>
<textarea
value={formData.message}
onChange={(e) => handleChange('message', e.target.value)}
placeholder="Message"
/>
<button type="submit">Send Message</button>
</form>
);
}Compatibilidad con TypeScript
Añade declaraciones de tipo para el objeto global zenovay:
declare global {
interface Window {
zenovay?: (...args: any[]) => void;
}
}
export {};Pruebas en Desarrollo
Puedes verificar que los eventos se están enviando verificando la pestaña Network en las herramientas de desarrollador de tu navegador para las solicitudes a api.zenovay.com. El panel de Zenovay también proporciona monitoreo de eventos en tiempo real.
Asegúrate de reemplazar YOUR_TRACKING_CODE en index.html con tu código de seguimiento real del panel de Zenovay.
Próximos Pasos
¡Tu aplicación React ahora está rastreando con Zenovay! Visualiza tu análisis en el panel.
Continúa aprendiendo:
- Eventos Personalizados - Rastreo avanzado de eventos
- Identificación de Visitantes - Mejores prácticas de rastreo de usuarios
- Cumplimiento de Privacidad - Configuración de GDPR y CCPA