Files
ludikevent_crm/assets/tools/UtmEvent.js
Serreau Jovann bdf1e69860 ```
 feat(Product): Ajoute méthode json pour sérialiser les données du produit.

 feat(analytics): Intègre suivi Umami pour catalogue, contact et produits.

 feat(caddy): Ajoute header Cloudflare et script UTM, améliore config PHP.

 feat(nelmio): Autorise tools-security.esy-web.dev dans CSP.

 feat(template): Ajoute suivi Umami sur pages catalogue, contact et produit.
```
2026-01-21 13:37:26 +01:00

59 lines
2.1 KiB
JavaScript

export class UtmAccount extends HTMLElement {
connectedCallback() {
if (typeof umami === 'undefined') {
console.warn('Umami script non détecté.');
return;
}
const umamiScript = document.querySelector('script[data-website-id]');
const websiteId = umamiScript ? umamiScript.getAttribute('data-website-id') : null;
umami.identify('user_'+this.getAttribute('id'), { name: this.getAttribute('name'), email: this.getAttribute('email') });
}
}
export class UtmEvent extends HTMLElement {
connectedCallback() {
// On attend un court instant pour s'assurer qu'umami est chargé
// ou on vérifie s'il existe déjà
if (typeof umami === 'undefined') {
console.warn('Umami script non détecté.');
return;
}
const event = this.getAttribute('event');
const dataRaw = this.getAttribute('data');
// Extraction dynamique du website-id depuis le script existant
const umamiScript = document.querySelector('script[data-website-id]');
const websiteId = umamiScript ? umamiScript.getAttribute('data-website-id') : null;
if (!websiteId) {
console.error('Impossible de trouver le data-website-id umami.');
return;
}
try {
if (event === "view_catalogue") {
umami.track('Affichage du catalogue');
}
if (event === "view_contact") {
umami.track('Affichage du page contact');
umami.track('Affichage du page contact');
}
if (event === "view_product" && dataRaw) {
const data = JSON.parse(dataRaw);
// Umami track accepte soit un nom seul,
// soit un objet complet pour des propriétés personnalisées
umami.track({
website: websiteId,
name:'Affichage produit',
data: data
});
}
} catch (e) {
console.error('Erreur lors du tracking Umami:', e);
}
}
}