# Suivre les clics et les actions

Un événement mesure une action précise : un clic sur un bouton, un formulaire envoyé, un téléchargement. Chaque événement devient automatiquement un objectif, avec son taux de conversion (voir [Lire les objectifs](/docs/guides/lire-les-objectifs/)).

**Avant de commencer** : le script de mesure installé sur le site (voir [Installer le script de mesure](/docs/guides/installer-le-script/)).

## Avec un attribut HTML

Ajoute `data-hgdc-event` à l’élément cliqué :

```html
<a href="/devis" data-hgdc-event="demande-de-devis">Demander un devis</a>
```

Un clic sur l’élément, ou sur un élément qui le contient, envoie l’événement. Le nom doit suivre les règles de [Événements et propriétés](/docs/reference/evenements/).

## Avec JavaScript

Appelle `window.hgdc.track` depuis ton code :

```js
window.hgdc.track("demande-envoyee", { formulaire: "contact" });
```

Le deuxième argument est facultatif. Appelle la fonction après le chargement du script, par exemple dans un gestionnaire d’événement ou après `DOMContentLoaded`. Avant cela, `window.hgdc` n’existe pas encore.

## Ajouter des propriétés

Les propriétés donnent du détail à un événement : le formulaire, la page d’origine, la catégorie d’un produit. Elles sont limitées à 20 par événement.

Ne mets jamais de données personnelles dans une propriété : pas d’adresse e-mail, de nom, de numéro de téléphone ni de contenu libre saisi par le visiteur.

## Si ça ne marche pas

- **L’événement n’apparaît pas** : le délai de traitement est de quelques secondes, mais l’objectif n’apparaît dans la carte qu’à partir de la période choisie. Vérifie aussi la période.
- **Un nom est refusé** : un nom qui ne respecte pas les règles (caractères interdits, plus de 50 caractères) n’est pas enregistré. Le visiteur n’en voit rien. Remplace les caractères spéciaux par des tirets.
- **`hgdc.track` lève une erreur** : le script n’est pas encore chargé. Déplace l’appel après le chargement, ou attends le clic de l’utilisateur.
- **Le clic sur un lien ne compte pas** : vérifie que l’attribut est bien sur l’élément cliqué ou sur un parent. Un attribut ajouté après coup par un script tiers n’est pris en compte qu’à partir de ce moment.
