Evénement Transaction (Sales Insights)

  • iOS
  • watchOS
  • tvOS
 

Avant-propos

Cette documentation de marquage ne s’applique qu’à partir de la version 2.15.0 du Tracker.

Si vous ne voyez pas le menu « Ecommerce » dans Explorer, contactez-nous pour que nous activions la fonctionnalité pour vous.

 

Evénement Transaction

Le tracker met à disposition une instance ecommerce exposant différents objets et méthodes utiles pour la mesure de confirmation de transaction.

Il est possible d’activer en plus un marquage automatique de commande SalesTracker en surchargeant la variable de configuration « autoSalesTracker » :

let tracker: Tracker = ATInternet.sharedInstance.defaultTracker
tracker.ecommerce.setAutoSalesTrackerEnabled(true, sync: true, completionHandler: nil)
Tracker* tracker = [ATInternet sharedInstance].defaultTracker;
[tracker.ecommerce setAutoSalesTrackerEnabled:YES sync:YES completionHandler:nil];

Le domaine de collecte Ecommerce doit être renseigné via la variable de configuration « collectDomain » :

tracker.ecommerce.setCollectDomain("collect-euw1", sync: true, completionHandler: nil)
[tracker.ecommerce setCollectDomain:@"collect-euw1" sync:YES completionHandler:nil];

Voir la liste complète des variables de configuration Ecommerce pouvant être surchargées en bas de page.

 

Confirmation de transaction

La mesure de la confirmation de transaction se fait par la création d’un objet TransactionConfirmation auquel peuvent être associés :

  • un panier de type ECommerceCart,
  • des données de livraison sous la forme d’un objet de type ECommerceShipping,
  • des données de paiement sous la forme d’un objet de type ECommercePayment,
  • des données de transaction sous la forme d’un objet de type ECommerceTransaction,
  • une liste de produits products pouvant contenir un ou plusieurs produits de type ECommerceProduct.

Les propriétés d’un panier se déclarent sous la forme d’une collection de type Dictionary  avec différentes clés :

  • « id » – String: Identifiant du panier.
  • « currency » – String: Devise.
  • « turnovertaxincluded » – Float: Montant total TTC du panier (frais de livraison inclus).
  • « turnovertaxfree » – Float: Montant total HT du panier (frais de livraison inclus).
  • « creation_utc » – Date: Date de creation du panier (timestamp UTC en secondes).
  • « quantity » – Number: Nombre total de produits dans le panier.
  • « nbdistinctproduct » – Number: Nombre de produits distincts dans le panier.

Les propriétés de la transaction se déclarent sous la forme d’une collection de type Dictionary  avec différentes clés :

  • « id » – String : Identifiant de transaction (obligatoire).
  • « promocode » – Array : Tableau de codes promotionnels pouvant contenir un ou plusieurs codes. Un code promotionnel se déclare sous la forme d’un libellé.
  • « firstpurchase » – Boolean : Première commande du client (0 pour non ; 1 pour oui).

Les données de livraison se déclarent sous la forme d’une collection de type Dictionary  avec différentes clés :

  • « delivery » – String : Nom du transporteur.
  • « costtaxincluded » – Float : Montant des frais de livraison TTC.
  • « costtaxfree » – Float : Montant des frais de livraison HT.

Le moyen de paiement se déclare dans une propriété :

  • « mode » – String : Moyen de paiement.

Les propriétés d’un produit se déclarent sous la forme d’une collection de type Dictionary  avec différentes clés :

  • « id » – String : Identifiant du produit (obligatoire).
  • « variant » – String : Variante du produit (taille, couleur, etc.).
  • « $ » – String : Nom du produit.
  • « brand » – String : Marque du produit.
  • « discount » – Boolean : Produit remisé (0 pour non ; 1 pour oui).
  • « pricetaxincluded » – Float : Prix TTC.
  • « pricetaxfree » – Float : Prix HT.
  • « currency » – String : Devise.
  • « stock » – Boolean : Produit en stock (0 pour non ; 1 pour oui).
  • « quantity » – Number : Nombre de produits dans le panier.
  • « category1 » – String : Catégorie de niveau 1 du produit (jusqu’à 6 niveaux d’arborescence possibles ; de « category1 » à « category6 »).

Si vous utilisez le double marquage avec SalesTracker, il sera nécessaire d’ajouter un écran en tant que paramètre à l’initialisation de la transaction. La page devra de plus être déclarée comme objectif principal.

Exemple

let tracker: Tracker = ATInternet.sharedInstance.defaultTracker
// With SalesTracker
tracker.ecommerce.setAutoSalesTrackerEnabled(true, sync: true, completionHandler: nil)
let tc: TransactionConfirmation = tracker.ecommerce.transactionConfirmations.add(screenLabel: "transaction")
// Without SalesTracker
//tracker.ecommerce.setAutoSalesTrackerEnabled(false, sync: true, completionHandler: nil)
//let tc: TransactionConfirmation = tracker.ecommerce.transactionConfirmations.add(screenLabel: nil)
_ = tc.cart.setAll(obj:
    [
        "id": "34",
        "creation_utc": 1514973161, //UTC timestamp in seconds
        "turnovertaxfree": 447.76, //Shipping fees included + discount 8€44
        "turnovertaxincluded": 547.4, //Shipping fees included + discount 10€
        "nbdistinctproduct": 1,
        "quantity": 1,
        "currency": "EUR"
    ]
)
_ = tc.transaction.setAll(obj:
    [
        "id": "27",
        "promocode": ["DQQYRZSJ", "UN1ENE27"],
        "firstpurchase": 0
    ]
)
_ = tc.shipping.setAll(obj:
    [
        "costtaxfree": 7,
        "costtaxincluded": 8.4,
        "delivery": "My carrier"
    ]
)
_ = tc.payment.set(key: "mode", value: "Credit card")
_ = tc.products.append(ECommerceProduct(obj:
    [
        "id": "1",
        "variant": "1",
        "$": "laptop_A56",
        "brand": "ACER",
        "discount": 1,
        "pricetaxincluded": 549,
        "pricetaxfree": 456.2,
        "currency": "EUR",
        "stock": 1,
        "quantity": 1,
        "category1": "Computers_and_Networking",
        "category2": "Computers",
        "category3": "Laptops"
    ]
))
tracker.dispatch()

Vous pouvez si vous le souhaitez utiliser la méthode indépendante « tracker.events.send() » pour envoyer exclusivement vos données Ecommerce.

Tracker* tracker = [ATInternet sharedInstance].defaultTracker;
// With SalesTracker
[tracker.ecommerce setAutoSalesTrackerEnabled:YES sync:YES completionHandler:nil];
TransactionConfirmation *tc = [[tracker.ecommerce transactionConfirmations] addWithScreenLabel:@"transaction"];
// Without SalesTracker
//[tracker.ecommerce setAutoSalesTrackerEnabled:NO sync:YES completionHandler:nil];
//TransactionConfirmation *tc = [[tracker.ecommerce transactionConfirmations] addWithScreenLabel:nil];
NSMutableArray *tcproducts = [tc.products mutableCopy];
(void)[tc.cart setAllWithObj:@{
    @"id": @"34",
    @"creation_utc": @1514973161, //UTC timestamp in seconds
    @"turnovertaxfree": @447.76, //Shipping fees included + discount 8€44
    @"turnovertaxincluded": @547.4, //Shipping fees included + discount 10€
    @"nbdistinctproduct": @1,
    @"quantity": @1,
    @"currency": @"EUR"
}];
(void)[tc.transaction setAllWithObj:@{
    @"id": @"27",
    @"promocode": @[@"DQQYRZSJ", @"UN1ENE27"],
    @"firstpurchase": @0
}];
(void)[tc.shipping setAllWithObj:@{
    @"costtaxfree": @7,
    @"costtaxincluded": @8.4,
    @"delivery": @"My carrier"
}];
(void)[tc.payment setWithKey:@"mode" value: @"Credit card"];
[tcproducts addObject:[[ECommerceProduct alloc] initWithObj:@{
    @"id": @"1",
    @"variant": @"1",
    @"$": @"laptop_A56",
    @"brand": @"ACER",
    @"discount": @1,
    @"pricetaxincluded": @549,
    @"pricetaxfree":@ 456.2,
    @"currency": @"EUR",
    @"stock": @1,
    @"quantity": @1,
    @"category1": @"Computers_and_Networking",
    @"category2": @"Computers",
    @"category3": @"Laptops"
}]];
[tc setProducts: tcproducts];
[tracker dispatch];

Vous pouvez si vous le souhaitez utiliser la méthode indépendante « [tracker.events send]; » pour envoyer exclusivement vos données Ecommerce.

 

Confirmation de transaction côté serveur

Vous pouvez valider un événement de panier en attente de paiement en générant un appel HTTP GET côté serveur :

https://collect-euw1.ati-host.net/hit.xiti?s=XXXXX&col=2&events=[{"name":"transaction.confirmation","data":{"cart_id":"XXXXX", "transaction_id":"XXXXX", "offsite_confirmation":true}]&rdt=off

Dans cet appel, vous devez remplacer les valeurs XXXXX par :

  • le numéro de site concerné par la transaction :
    ?s=XXXXX
  • l’identifiant du panier à valider :
    "cart_id":"XXXXX"
  • l’identifiant de la transaction :
    "transaction_id":"XXXXX"
 

Annexes

 

Variables de configuration

Nom Valeur par défaut Description Version
collectDomain «  » Domaine de collecte Sales Insights  >= 2.12.0
autoSalesTracker false Activer la mesure automatique de contenu de commande SalesTracker sur un événement de confirmation de transaction  >= 2.12.0
 

Cet article vous a-t-il été utile ?

Dernière mise à jour : 10/09/2019