Aller au contenu principal
Zenovay
Pro Plan10 minutesIntermédiaire

Objectifs d'événements personnalisés

Suivez les conversions avec des événements JavaScript personnalisés — soumissions de formulaires, lectures de vidéos, actions AJAX et interactions complexes.

goalseventsjavascriptcustomtracking
Dernière mise à jour :
Pro Plan

Les objectifs d'événements personnalisés vous donnent un contrôle total sur ce que vous suivez. Déclenchez des événements JavaScript pour suivre n'importe quelle interaction utilisateur.

Quand utiliser les événements personnalisés

Idéal pour suivre :

  • Les soumissions de formulaires (AJAX)
  • Les interactions vidéo (lecture, fin)
  • La navigation dans les applications à page unique
  • Les ajouts au panier
  • L'utilisation de fonctionnalités dans les applications Web
  • Toute action déclenchée par JavaScript

Comment fonctionnent les événements personnalisés

  1. Vous ajoutez du code JavaScript à votre site
  2. Le code se déclenche quand l'action se produit
  3. Zenovay reçoit l'événement
  4. L'objectif est enregistré

Implémentation de base

Suivi d'un événement

// Événement simple
zenovay('goal', 'event_name');

// Événement avec valeur
zenovay('goal', 'purchase', { value: 99.99 });

// Événement avec valeur et devise
zenovay('goal', 'purchase', {
  value: 99.99,
  currency: 'USD'
});

Un appel d'objectif enregistre value et currency. Tous les autres clés que vous transmettez sont envoyés avec la charge utile d'événement sous-jacente, mais l'objectif lui-même est signalé par son nom et sa valeur.

Créer l'objectif

  1. Ouvrez le tableau de bord de votre site Web et sélectionnez l'onglet Journeys
  2. Ouvrez le sous-onglet Objectifs et cliquez sur Ajouter un objectif
  3. Choisissez Événement personnalisé
  4. Entrez le nom de l'événement (par exemple, purchase) pour qu'il corresponde au nom que vous déclenchez dans le code
  5. Activez optionnellement le suivi de la valeur et définissez une valeur par défaut
  6. Enregistrez

Les objectifs d'événements personnalisés se créent également automatiquement la première fois que Zenovay reçoit un nom d'événement qu'il n'a pas vu, vous pouvez donc déclencher les événements en premier et ils apparaîtront dans la liste des objectifs.

Dénomination d'événements

Meilleures pratiques

Bons nomsMauvais noms
signup_completegoal1
purchaseclick
video_50_percentevent
add_to_cart123

Conventions de nommage

Choisissez un modèle cohérent :

  • snake_case : form_submit
  • camelCase : formSubmit
  • kebab-case : form-submit

Catégories avec préfixes

Organisez les événements avec des préfixes :

// Événements e-commerce
zenovay('goal', 'ecom_add_to_cart');
zenovay('goal', 'ecom_checkout_start');
zenovay('goal', 'ecom_purchase');

// Événements d'engagement
zenovay('goal', 'engage_video_play');
zenovay('goal', 'engage_scroll_50');

Implémentations courantes

Soumission de formulaire

document.querySelector('form').addEventListener('submit', function(e) {
  zenovay('goal', 'contact_form');
});

// Ou pour les formulaires AJAX
function onFormSuccess() {
  zenovay('goal', 'contact_form');
}

Interactions vidéo

const video = document.querySelector('video');

video.addEventListener('play', function() {
  zenovay('goal', 'video_play');
});

video.addEventListener('ended', function() {
  zenovay('goal', 'video_complete');
});

// Suivi de la progression à 50%
video.addEventListener('timeupdate', function() {
  if (video.currentTime / video.duration > 0.5) {
    zenovay('goal', 'video_50_percent');
  }
});

Actions e-commerce

// Ajouter au panier
function addToCart(product) {
  // Votre logique de panier...

  zenovay('goal', 'add_to_cart', {
    value: product.price
  });
}

// Achat terminé
function onPurchaseComplete(order) {
  zenovay('goal', 'purchase', {
    value: order.total,
    currency: 'USD'
  });
}

Inscription / Enregistrement

async function handleSignup(formData) {
  try {
    const response = await api.signup(formData);

    if (response.success) {
      zenovay('goal', 'signup_complete', {
        value: 50 // Valeur de prospect estimée
      });
    }
  } catch (error) {
    // Gérer l'erreur
  }
}

Transmission de valeurs

Valeur statique

Défini dans les paramètres de l'objectif :

  • Activer le suivi de la valeur
  • Saisir une valeur par défaut (par exemple, 50)
  • Chaque achèvement compte vers cette valeur

Valeur dynamique

Transmettez à partir de votre code :

// Valeur de commande
zenovay('goal', 'purchase', {
  value: orderTotal
});

// Valeur calculée
const leadValue = isPremium ? 100 : 25;
zenovay('goal', 'lead', { value: leadValue });

Valeur à partir de la page

Lire à partir du DOM :

const price = parseFloat(
  document.querySelector('.price').textContent.replace('$', '')
);
zenovay('goal', 'purchase', { value: price });

Champs de valeur d'objectif

Une réalisation d'objectif enregistre ces champs :

PropriétéTypeExemple
valuenumber99.99
currencystring"USD"

Transmettez value comme un nombre ordinaire (sans symbole de devise ni chaîne). currency est un code de devise ISO et par défaut USD.

Intégrations de frameworks

React

import { useCallback } from 'react';

function SignupForm() {
  const handleSubmit = useCallback((data) => {
    // Logique de soumission...

    window.zenovay('goal', 'signup');
  }, []);

  return <form onSubmit={handleSubmit}>...</form>;
}

Vue

<script>
export default {
  methods: {
    handleSubmit() {
      // Logique de soumission...

      window.zenovay('goal', 'signup');
    }
  }
}
</script>

Next.js

// Suivi côté client dans un composant
'use client';

export default function CheckoutButton() {
  function handleSuccess() {
    if (typeof window !== 'undefined') {
      window.zenovay('goal', 'purchase');
    }
  }

  return <button onClick={handleSuccess}>Terminer</button>;
}

Applications à page unique (SPAs)

Suivi des changements de route

Pour les pages virtuelles :

// React Router
history.listen(() => {
  zenovay('page');
});

// Vue Router
router.afterEach(() => {
  zenovay('page');
});

Objectif après navigation

// Naviguer puis suivre
router.push('/success').then(() => {
  zenovay('goal', 'signup_complete');
});

Suivi conditionnel

Suivre en fonction de conditions

// Suivre uniquement si les conditions sont remplies
if (user.isNewUser && !user.hasConvertedBefore) {
  zenovay('goal', 'first_conversion');
}

// Variante de test A/B
if (experimentVariant === 'B') {
  zenovay('goal', 'variant_b_conversion');
}

Débouncing d'événements

Prévenir les déclenchements en doublon :

let hasTracked = false;

function trackOnce(eventName) {
  if (!hasTracked) {
    zenovay('goal', eventName);
    hasTracked = true;
  }
}

Gestion des erreurs

Suivi sûr

Gérer les cas où Zenovay n'est pas chargé. L'extrait de suivi définit une petite file d'attente de commandes, donc les appels effectués avant la fin du chargement du script sont toujours traités :

function safeTrackGoal(eventName, properties) {
  if (typeof zenovay === 'function') {
    zenovay('goal', eventName, properties);
  } else {
    console.warn('Zenovay not loaded');
  }
}

Tester les événements

Mode débogage

Activer la journalisation de la console :

zenovay('debug');

// Maintenant suivre quelque chose
zenovay('goal', 'test_event');
// Vérifier la console pour la sortie

Vérifier dans le tableau de bord

  1. Déclencher un événement de test
  2. Ouvrir le tableau de bord de votre site Web et sélectionner l'onglet Live View pour surveiller l'activité en temps réel, ou ouvrir Journeys → Objectifs pour voir le nombre d'achèvement de l'objectif
  3. Vérifier que l'objectif apparaît et le nombre augmente
  4. Vérifier la valeur de l'objectif

Onglet Réseau

  1. Ouvrez DevTools → Réseau
  2. Déclencher l'événement
  3. Rechercher une demande à api.zenovay.com
  4. Vérifier la charge utile

Dépannage

Les événements ne sont pas enregistrés

Vérifier que le script est chargé :

console.log(typeof zenovay); // Devrait être 'function'

Vérifier que le nom de l'événement correspond :

  • Objectif : signup
  • Code : zenovay('goal', 'signup')
  • Code : zenovay('goal', 'Signup')

Vérifier les erreurs :

  • Console du navigateur pour les erreurs
  • Onglet Réseau pour les demandes échouées

Valeur non enregistrée

Assurer que la valeur est un nombre :

// Incorrect
zenovay('goal', 'purchase', { value: "$99.99" });

// Correct
zenovay('goal', 'purchase', { value: 99.99 });

Prochaines étapes

Cet article vous a-t-il aidé ?