Evénements standards

 

Avant-propos

L’une des forces du modèle de données de Piano Analytics est qu’il propose des événements, et propriétés, standards et présents par défaut.

Ces événements vous permettront de mesurer la majorité des interactions présentes sur vos périmètres. Il n’y a donc pas besoin de réinventer un événement à partir de zéro lorsque l’on souhaite simplement mesurer le chargement d’une page, ou la consultation d’une page produit ! De plus, l’utilisation des ces événements standards nous permet de mettre à votre disposition des métriques dédiées. Par exemple, le temps passé par page est une métrique liée à l’utilisation de l’événement standard de page vue page.display.

Chaque événement standard peut être lié à des propriétés standards qui lui sont dédiées.

Il n’est cependant pas obligatoire d’utiliser chacune des propriétés renseignées, et il vous est tout à fait possible de rajouter d’autres propriétés (standards ou personnalisées) si vous le désirez.
 

Visiteur identifié

Afin de suivre vos visiteurs identifiés, vous pouvez utiliser les propriétés suivantes:

PropriétésTypeExemple
user_idStringA1192
user_categoryStringPremium
 

Contenu

 

Pages

Event name :

page.display

Propriétés standards associées :

PropriétéTypeExemple
pageStringArticle3
page_chapter1StringNews
page_chapter2StringPolitique
page_chapter3StringElections

La définition des propriétés est disponible au sein de votre modèle de données.

Exemple de marquage :

tag.events.send('page.display',
  {
    'page': 'page name',
    'page_chapter1': 'chapter 1' ,
    'page_chapter2': 'chapter 2' ,
    'page_chapter3': 'chapter 3' 
  }
);
_ = tracker.events.add(name: "page.display", data:
  "page" : "page name",
  "page_chapter1" : "chapter 1",
  "page_chapter2" : "chapter 2",
  "page_chapter3" : "chapter 3"
)
tracker.dispatch()
tracker.Events().add("page.display", new HashMap() {{
  put("page", "page name");
  put("page_chapter1", "chapter 1");
  put("page_chapter2", "chapter 2");
  put("page_chapter3", "chapter 3");
}})
tracker.dispatch();
 

Clics

Event name :

click.navigation click.action click.exit click.download

Propriétés standards associées :

PropriétéTypeExemple
clickStringArticle3
click_chapter1StringNews
click_chapter2StringPolitique
click_chapter3StringElections

La définition des propriétés est disponible au sein de votre modèle de données.

Exemple de marquage :

tag.events.send('click.navigation',
  {
    'click': 'click name',
    'click_chapter1': 'chapter 1',
    'click_chapter2': 'chapter 2',
    'click_chapter3': 'chapter 3' 
  }
);
_ = tracker.events.add(name: "click.navigation", data:
  "click": "click name",
  "click_chapter1": "chapter 1",
  "click_chapter2": "chapter 2",
  "click_chapter3": "chapter 3"
)
tracker.dispatch()
tracker.Events().add("click.navigation", new HashMap() {{
  put("click", "click name");
  put("click_chapter1", "chapter 1");
  put("click_chapter2", "chapter 2");
  put("click_chapter3", "chapter 3");
}})
tracker.dispatch();
 

Moteur de recherche Interne

 

Affichage des résultats

Event name :

internal_search_result.display

Propriétés standards associées :

PropriétéTypeExemple
ise_keywordStringMobile Phone
ise_pageInt2

La définition des propriétés est disponible au sein de votre modèle de données.

Exemple de marquage :

tag.events.send('internal_search_result.display',
  {
    'ise_keyword': 'Mobile Phone',
    'ise_page': 2
  }
);
_ = tracker.events.add(name: "internal_search_result.display", data:
  "ise_keyword": "Mobile Phone",
  "ise_page": 2
)
tracker.dispatch()
tracker.Events().add("internal_search_result.display", new HashMap() {{
  put("ise_keyword", "Mobile Phone");
  put("ise_page", 2);
}})
tracker.dispatch();
 

Clics sur les résultats

Event name :

internal_search_result.click

Propriétés standards associées :

PropriétéTypeExemple
ise_keywordStringMobile Phone
ise_pageInt2
ise_click_rankInt15

La définition des propriétés est disponible au sein de votre modèle de données.

Exemple de marquage :

tag.events.send('internal_search_result.click',
  {
    'ise_keyword': 'Mobile Phone',
    'ise_page': 2,
    'ise_click_rank': 15
  }
);
_ = tracker.events.add(name: "internal_search_result.click", data:
  "ise_keyword": "Mobile Phone",
  "ise_page": 2,
  "ise_click_rank": 15
)
tracker.dispatch()
tracker.Events().add("internal_search_result.click", new HashMap() {{
  put("ise_keyword", "Mobile Phone");
  put("ise_page", 2);
  put("ise_click_rank", 15);
}})
tracker.dispatch();
 

Objectifs

Afin de suivre la conversion d’un objectif, vous pouvez utiliser la propriété suivante :

PropriétésTypeExemple
goal_typeStringAccount creation
 

On Site Ads

Event name :

publisher.display  publisher.click self_promotion.display self_promotion.click

Propriétés standards associées :

PropriétéTypeExemple
onsitead_type (obligatoire)StringPublisher | Self promotion
onsitead_campaignStringAcquisition
onsitead_categoryStringGold
onsitead_creationStringBanner_main
onsitead_variantStringBlue
onsitead_formatString400×300
onsitead_general_placementStringSidebar
onsitead_detailed_placementStringSidebar_bottom
onsitead_advertiserStringMy Site
onsitead_urlStringwww.mysite.com

La définition des propriétés est disponible au sein de votre modèle de données.

tag.events.send('publisher.display',
  {
    'onsitead_type': 'Publisher',
    'onsitead_campaign': 'Acquisition',
    'onsitead_category': 'Gold',
    'onsitead_creation': 'Banner_main',
    'onsitead_variant': 'Blue',
    'onsitead_format': '400x300',
    'onsitead_general_placement': 'Sidebar',
    'onsitead_detailed_placement': 'Sidebar_bottom',
    'onsitead_advertiser': 'My Site',
    'onsitead_url': 'www.mysite.com'
  }
);
_ = tracker.events.add(name: "publisher.display", data:
  "onsitead_type": "Publisher",
  "onsitead_campaign": "Acquisition",
  "onsitead_category": "Gold",
  "onsitead_creation": "Banner_main",
  "onsitead_variant": "Blue",
  "onsitead_format": "400x300",
  "onsitead_general_placement": "Sidebar",
  "onsitead_detailed_placement": "Sidebar_bottom",
  "onsitead_advertiser": "My Site",
  "onsitead_url": "www.mysite.com"
)
tracker.dispatch()
tracker.Events().add("publisher.display", new HashMap() {{
  put("onsitead_type", "Publisher",);
  put("onsitead_campaign", "Acquisition",);
  put("onsitead_category", "Gold",);
  put("onsitead_creation", "Banner_main",);
  put("onsitead_variant", "Blue",);
  put("onsitead_format", "400x300",);
  put("onsitead_general_placement", "Sidebar",);
  put("onsitead_detailed_placement", "Sidebar_bottom",);
  put("onsitead_advertiser", "My Site",);
  put("onsitead_url", "www.mysite.com",);
}})
tracker.dispatch();
 

Sales Insights

 

Propriétés

 

Propriétés product

PropriétéDescriptionTypeObligatoireExemple
product_idIdentifiantstringoui'LPTAX174'
productLibelléstringnon'Laptop AX174'
product_variantVariantestringnon'8Go RAM'
product_brandMarquestringnon'Loptap'
product_discountProduit remisé ?booleannonfalse
product_pricetaxincludedPrix du produit taxes inclusesfloatnon1399.90
product_pricetaxfreePrix du produit hors taxesfloatnon1120.90
product_currencyIdentifiant de la devise (ISO 4217)stringnon'EUR'
product_stockProduit en stock ?booleannontrue
product_quantityQuantitéintnon1
product_category1Catégorie de niveau 1stringnon'Hardware'
product_category2Catégorie de niveau 2stringnon'Computer'
product_category3Catégorie de niveau 3stringnon'Gaming'
product_category4Catégorie de niveau 4stringnon'Laptop'
product_cartcreationL’ajout du produit entraîne-t-il la création du panier ?booleannonfalse
product_promocodeCode promotion pour le produitarray of stringnon['BDAY15', 'SUMMER']
 

Propriétés cart

PropriétéDescriptionTypeObligatoireExemple
cart_idIdentifiantstringoui'HW-8892'
cart_currencyIdentifiant de la devise (ISO 4217)stringnon'EUR'
cart_turnovertaxincludedMontant du panier taxes inclusesfloatnon2900.00
cart_turnovertaxfreeMontant du panier hors taxesfloatnon2340.50
cart_creation_utcDate de création du panier (timestamp UTC en secondes)intnon1501065673
cart_quantityNombre de produitsintnon3
cart_nbdistinctproductNombre de produits distinctsintnon2
cart_versionEn cas de mise à jour du panier en attente de paiement (ajout/retrait d’un produit), il sera nécessaire de générer un nouvel identifiant unique de version (cart_version) associé au panier (cart_id). Cela est nécessaire lors de l’utilisation de paniers/produits en attente (cart.awaiting_payment / product.awaiting_payment)stringnon'v1'
 

Propriétés transaction

PropriétéDescriptionTypeObligatoireExemple
transaction_idIdentifiantstringoui'29984'
transaction_promocodeListe de codes promotionarray of stringnon['BLACKFRIDAY', 'VIP']
transaction_firstpurchasePremière commande du client ?booleannontrue
 

Propriétés shipping

PropriétéDescriptionTypeObligatoireExemple
shipping_deliveryType de livraisonstringnon'Express'
shipping_costtaxincludedMontant de la livraison taxes inclusesfloatnon10.50
shipping_costtaxfreeMontant de la livraison hors taxesfloatnon8.00
 

Propriété payment

PropriétéDescriptionTypeObligatoireExemple
payment_modeMode de paiementstringnon'Credit card'
 

Evénements

 

product.display

Utilisé pour mesurer l’affichage d’un produit (hors page du produit). Par exemple sur une page de listing.

Propriétés recommandées :

product_id, product, product_variant, product_brand, product_discount, product_pricetaxincluded, product_pricetaxfree, product_currency, product_stock, product_category1, product_category2, product_category3, product_category4

 

product.page_display

Utilisé pour mesurer l’affichage d’une page produit.

Propriétés recommandées :

product_id, product, product_variant, product_brand, product_discount, product_pricetaxincluded, product_pricetaxfree, product_currency, product_stock, product_category1, product_category2, product_category3, product_category4

 

product.add_to_cart

Utilisé pour mesurer l’ajout d’un produit au panier.

Propriétés recommandées :

cart_id, product_id, product, product_variant, product_brand, product_discount, product_pricetaxincluded, product_pricetaxfree, product_currency, product_stock, product_category1, product_category2, product_category3, product_category4, product_quantity, product_cartcreation

 

product.remove_from_cart

Utilisé pour mesurer le retrait d’un produit du panier.

Propriétés recommandées :

cart_id, product_id, product, product_variant, product_brand, product_discount, product_pricetaxincluded, product_pricetaxfree, product_currency, product_stock, product_category1, product_category2, product_category3, product_category4, product_quantity

 

product.awaiting_payment

Utilisé pour mesurer un produit en attente de paiement.

Propriétés recommandées :

transaction_id, cart_id, product_id, product, product_variant, product_brand, product_discount, product_pricetaxincluded, product_pricetaxfree, product_currency, product_stock, product_category1, product_category2, product_category3, product_category4, product_quantity

 

product.purchased

Utilisé pour mesurer un produit acheté.

Propriétés recommandées :

transaction_id, cart_id, product_id, product, product_variant, product_brand, product_discount, product_pricetaxincluded, product_pricetaxfree, product_currency, product_stock, product_category1, product_category2, product_category3, product_category4, product_quantity

 

cart.creation

Utilisé pour mesurer la création d’un panier.

Propriétés recommandées :

cart_id, cart_currency, cart_turnovertaxincluded, cart_turnovertaxfree, cart_quantity, cart_nbdistinctproduct

 

cart.update

Utilisé pour mesurer la mise à jour d’un panier.

Propriétés recommandées :

cart_id, cart_currency, cart_turnovertaxincluded, cart_turnovertaxfree, cart_quantity, cart_nbdistinctproduct

 

cart.display

Utilisé pour mesurer l’affichage d’un panier.

Propriétés recommandées :

cart_id, cart_currency, cart_turnovertaxincluded, cart_turnovertaxfree, cart_quantity, cart_nbdistinctproduct

 

cart.delivery

Utilisé pour mesurer l’étape de choix du mode de livraison.

Propriétés recommandées :

cart_id, cart_currency, cart_turnovertaxincluded, cart_turnovertaxfree, cart_quantity, cart_nbdistinctproduct

 

cart.payment

Utilisé pour mesurer l’étape de paiement.

Propriétés recommandées :

cart_id, cart_currency, cart_turnovertaxincluded, cart_turnovertaxfree, cart_quantity, cart_nbdistinctproduct, shipping_delivery, shipping_costtaxincluded, shipping_costtaxfree

 

cart.awaiting_payment

Utilisé pour mesurer un panier en attente de paiement.

Propriétés recommandées :

cart_id, cart_version, cart_currency, cart_turnovertaxincluded, cart_turnovertaxfree, cart_quantity, cart_nbdistinctproduct, shipping_delivery, shipping_costtaxincluded, shipping_costtaxfree

Un événement transaction.confirmation portant le même cart_id et une propriété offsite_confirmation (boolean, true) permet de confirmer ce panier à posteriori. Un délai de 24h est laissé pour l’arrivée de cette confirmation.

 

transaction.confirmation

Utilisé pour mesurer une transaction terminée.

Propriétés recommandées :

cart_id, cart_currency, cart_turnovertaxincluded, cart_turnovertaxfree, cart_creation_utc, cart_quantity, cart_nbdistinctproduct, transaction_id, transaction_promocode, transaction_firstpurchase, shipping_delivery, shipping_costtaxincluded, shipping_costtaxfree, payment_mode

 

Audio / Vidéo

 

Fonctionnement

 

Notions importantes

Afin de suivre correctement la mesure de vos contenus AV, certaines notions sont importantes à connaître.

 
play vs playbackStart

Les événements av.play (play) représentent le premier clic sur le bouton de lecture, qui lance le chargement de la vidéo.

Les événements av.start (playbackStart) représentent la lecture de la première frame du contenu.

L’enchaînement classique des événements est donc av.play suivi de av.start. Entre les deux, le temps de chargement de la vidéo peut être mesuré avec des événements av.buffer.start suivi de av.buffer.heartbeat.

Si vous n’êtes pas en mesure de différencier ces deux temps, il est nécessaire d’envoyer av.start (playbackStart).

 
start vs resume

Si la lecture est reprise (après une pause ou un temps de chargement (rebuffer) par exemple), il sera nécessaire d’envoyer un événement av.resume (playbackResumed) plutôt que av.play.

 
Gestion des positions

Lors de l’utilisation des méthodes liées à le lecture du contenu, la position du curseur est nécessaire.

Cette position permet de connaître l’avancement réel de la lecture.

 
Gestion de la vitesse de lecture

Afin de mesurer la position de la tête de lecture, les librairies calculent le temps effectivement passée en lecture. Par défaut, une seconde réelle correspondra à une seconde de lecture.

Cependant, vous avez la possibilité de modifier cette vitesse de lecture via la méthode setPlaybackSpeed, en indiquant le facteur de vitesse.

 

Exemples de suivis

 
Lecture totale
 
Mesure d’un seek
 

Traitements automatiques

Certains traitements automatiques sont gérés par les librairies de marquage.

Il est cependant nécessaire de les connaître et de les prendre en compte lors d’un marquage n’utilisant pas les librairies.

 
seek (seek start, forward/backward)

Lors de l’appel à une méthode de seek (seek), plusieurs événements sont levés :

  • av.seek.start, indiquant le début de seek, et portant la position du curseur avant le déplacement
  • av.forward ou av.backward, selon les positions de début et de fin de déplacement du curseur
 
session id

Chaque session de lecture porte un identifiant unique (propriété av_session_id ).

Une session de lecture est définie par la lecture d’un contenu. Elle s’arrête donc si le contenu change, ou si la vidéo est arrêtée (av.stop).

 
buffer vs rebuffer

Deux types de temps de chargement sont identifiables :

  • buffer (av.buffer.start (bufferStart) et av.buffer.heartbeat), pour le chargement avant le début de lecture (entre av.play et av.start)
  • rebuffer (av.rebuffer.start (bufferStart) et av.rebuffer.heartbeat), pour le chargement pendant la lecture (après av.start)

La méthode bufferStart vérifie si un playbackStart a été appelé sur la session en cours, afin d’envoyer le type de chargement correspondant.

 
heartbeat

Au cours de la lecture, afin de mesurer de manière plus fine les durées, les événements de heartbeat permettent de renseigner sur l’état du lecteur.
Plusieurs types de heartbeat sont disponibles :

  • av.heartbeat, se déclenche après un playbackStart ou playbackResumed, permet de mesurer la lecture du contenu
  • av.(re)buffer.heartbeat, se déclenche après un bufferStart, permet de mesurer la durée des temps de chargement

Le temps entre deux heartbeats est défini au moment de l’instanciation du media. Il peut être fixe pour l’ensemble de la lecture, ou bien évolutif via un objet JSON.

Pour les média courts, nous recommandons de renseigner 5 secondes entre chaque heartbeats, afin d’avoir une mesure assez fine sans surcharger le réseau de l’utilisateur et les serveurs de collecte. Sur les media plus long, vous devez espacer les heartbeats avec plus de temps, jusqu’à 30 minutes, afin de maintenir la session de lecture active.

 
duration

Le temps réellement passé devant le contenu est renseigné dans la propriété av_duration, via un timer.

Il s’agit du temps écoulé en millisecondes entre l’événement précédent et l’actuel.

 
previous event/position

Sur chacun des événements, il est nécessaire de renseigner la position (av_previous_position) et le nom (av_previous_event) de l’événement précédemment envoyé.

 

Format

 

Propriétés standard communes

PropriétéDescriptionTypeObligatoireExemple
av_content_idID du contenustringOui'bc35'
av_session_idID de session AVstringOui'799d9f3b-7307-4113-a260-2e1371e35fe6'
av_contentLibellé du contenustring 'Broadchurch 3.5'
av_content_typeType de contenustring 'TV Show'
av_content_durationDurée du contenu (en millisecondes)int 2760000
av_content_linkedLibellé du contenu liéstring 'myLinkedContent'
av_publication_dateDate de publication (timestamp)date 1501065673
av_content_genreGenre(s) du contenuarray of string ["Crime","Drama","Mystery"]
av_showLibellé de l’émissionstring 'Broadchurch'
av_show_seasonSaison de l’émissionstring '3'
av_episode_idID de l’épisodestring '5'
av_episodeLibellé de l’épisodestring 'Episode #3.5'
av_channelChaîne de diffusionstring 'ITV'
av_authorNom de l’auteurstring 'Chris Chibnall'
av_content_versionVersion du contenu (complet, …)string 'Full length'
av_content_duration_rangeCréneau de duréestring '0-10'
av_broadcasting_typeType de diffusionstring 'Live'
av_broadcasterNom du diffuseurstring 'ITV'
av_ad_typeType de publicitéstring 'Mid-roll'
av_playerLibellé du lecteurstring 'Main'
av_player_versionVersion du lecteurstring '1.55'
av_player_positionPosition du lecteurstring 'Homepage'
av_auto_modeLecture automatiquebooleantrue
av_languageLangue du contenustring'fr'
av_subtitlesSous-titresstring'en'
av_launch_reasonRaison du lancementstring'auto'

* le type uuid requiert un UUID respectant la RFC 4122 version 4 (aléatoire) ou version 5 (nommé), sinon, notre moteur remplacera la valeur marquée par un UUID généré.

 

Evénements

 
av.heartbeat
PropriétéDescriptionTypeObligatoireExemple
av_durationTemps depuis le dernier événement (ms)intOui5000
av_positionPosition actuelle de la tête de lectureintOui15000
av_previous_eventNom de l’événement précédentstringOui'av.heartbeat'
av_previous_position Position de la tête de lecture de l’événement précédentintOui10000
 
av.buffer.heartbeat
PropriétéDescriptionTypeObligatoireExemple
av_durationTemps depuis le dernier événement (ms)intOui5000
av_positionPosition actuelle de la tête de lectureintOui15000
av_previous_eventNom de l’événement précédentstringOui'av.heartbeat'
av_previous_position Position de la tête de lecture de l’événement précédentintOui10000
 
av.rebuffer.heartbeat
PropriétéDescriptionTypeObligatoireExemple
av_durationTemps depuis le dernier événement (ms)intOui5000
av_positionPosition actuelle de la tête de lectureintOui15000
av_previous_eventNom de l’événement précédentstringOui'av.heartbeat'
av_previous_position Position de la tête de lecture de l’événement précédentintOui10000
 
av.play
PropriétéDescriptionTypeObligatoireExemple
av_durationTemps depuis le dernier événement (ms)intOui5000
av_positionPosition actuelle de la tête de lectureintOui15000
av_previous_eventNom de l’événement précédentstringOui'av.heartbeat'
av_previous_position Position de la tête de lecture de l’événement précédentintOui10000
 
av.buffer.start
PropriétéDescriptionTypeObligatoireExemple
av_durationTemps depuis le dernier événement (ms)intOui5000
av_positionPosition actuelle de la tête de lectureintOui15000
av_previous_eventNom de l’événement précédentstringOui'av.heartbeat'
av_previous_position Position de la tête de lecture de l’événement précédentintOui10000
 
av.rebuffer.start
PropriétéDescriptionTypeObligatoireExemple
av_durationTemps depuis le dernier événement (ms)intOui5000
av_positionPosition actuelle de la tête de lectureintOui15000
av_previous_eventNom de l’événement précédentstringOui'av.heartbeat'
av_previous_position Position de la tête de lecture de l’événement précédentintOui10000
 
av.start
PropriétéDescriptionTypeObligatoireExemple
av_durationTemps depuis le dernier événement (ms)intOui5000
av_positionPosition actuelle de la tête de lectureintOui15000
av_previous_eventNom de l’événement précédentstringOui'av.heartbeat'
av_previous_position Position de la tête de lecture de l’événement précédentintOui10000
 
av.resume
PropriétéDescriptionTypeObligatoireExemple
av_durationTemps depuis le dernier événement (ms)intOui5000
av_positionPosition actuelle de la tête de lectureintOui15000
av_previous_eventNom de l’événement précédentstringOui'av.heartbeat'
av_previous_position Position de la tête de lecture de l’événement précédentintOui10000
 
av.pause
PropriétéDescriptionTypeObligatoireExemple
av_durationTemps depuis le dernier événement (ms)intOui5000
av_positionPosition actuelle de la tête de lectureintOui15000
av_previous_eventNom de l’événement précédentstringOui'av.heartbeat'
av_previous_position Position de la tête de lecture de l’événement précédentintOui10000
 
av.stop
PropriétéDescriptionTypeObligatoireExemple
av_durationTemps depuis le dernier événement (ms)intOui5000
av_positionPosition actuelle de la tête de lectureintOui15000
av_previous_eventNom de l’événement précédentstringOui'av.heartbeat'
av_previous_position Position de la tête de lecture de l’événement précédentintOui10000
 
av.forward
PropriétéDescriptionTypeObligatoireExemple
av_durationTemps depuis le dernier événement (ms)intOui5000
av_positionPosition actuelle de la tête de lectureintOui15000
av_previous_eventNom de l’événement précédentstringOui'av.heartbeat'
av_previous_position Position de la tête de lecture de l’événement précédentintOui10000
 
av.backward
PropriétéDescriptionTypeObligatoireExemple
av_durationTemps depuis le dernier événement (ms)intOui5000
av_positionPosition actuelle de la tête de lectureintOui15000
av_previous_eventNom de l’événement précédentstringOui'av.heartbeat'
av_previous_position Position de la tête de lecture de l’événement précédentintOui10000
 
av.seek.start
PropriétéDescriptionTypeObligatoireExemple
av_durationTemps depuis le dernier événement (ms)intOui5000
av_positionPosition actuelle de la tête de lectureintOui15000
av_previous_eventNom de l’événement précédentstringOui'av.heartbeat'
av_previous_position Position de la tête de lecture de l’événement précédentintOui10000
 
av.ad.click
 
av.ad.skip
 
av.error
PropriétéDescriptionTypeObligatoireExemple
av_player_errorMessage d’erreurint'Content not available'
 
av.display
 
av.close
 
av.volume
 
av.subtitle.on
 
av.subtitle.off
 
av.fullscreen.on
 
av.fullscreen.off
 
av.quality
 
av.speed
 
av.share
Dernière mise à jour : 14/09/2022