Select Page

Heycommerce integration

Sådan opsætter du Heycommerce integrationen.

Step-by-step guide

Dokumentation

Det generiske trackingscript ser sådan ud:

<script type=”text/javascript” language=”javascript”>
var hlt;
var BiTrackingLoaded = function (BiTracking) {
hlt=BiTracking;
BiTracking.initialize(‘INSERTAPIKEYHERE’, INSERTSESSIONTIMEHERE, ‘INSERTTRACKINGID’);
}
</script>
<script>
(function (d, t) {
var g = d.createElement(t),
s = d.getElementsByTagName(t)[0];
h = “https:” == document.location.protocol ? “https://” : “http://”;
g.src = h + ‘bi.heyloyalty.com/hlbi.js’;
s.parentNode.insertBefore(g, s);
}
(document, ‘script’));
</script>

Fremhævet med fed er der tre parametre.

INSERTPAIKEYHERE skal erstattes med din API-nøgle. Den finder du ved at logge ind i Heyloyalty (app.heyloyalty.com) og vælge ‘Kontooplysninger’ via menu øverst i højre hjørne. Herfra finder du API nøglen nederst på siden.
API nøglen indsætter du i stedet for INSERTAPIKEYHERE. Husk at der stadig skal være ‘ rundt om API nøglen.

INSERTSESSIONTIMEHERE er sessionstiden. Det tal finder du under din Heycommerce listeintegration (Integrationer –> Listeintegraioner –> Heycommerce –> Rediger integration. Du kan nu se et nummer i kolonnen “Sessionstid”.
Hvis du har snakket med os, så vil det formentlig være 45, da det som oftest er vores anbefaling. Typisk er det et sted mellem 1-180.

INSERTTRACKINGID er id’et på din integration. Det id finder du under din Heycommerce listeintegration (Integrationer –> Listeintegraioner –> Heycommerce –> Rediger integration). Du kan nu se et femcifret nummer i kolonnen “Tracking id”. Dette nummer indsætter du i scriptet ovenfor i stedet for INSERTTRACKINGID

Foruden det generiske trackingscript ovenfor, så skal Heycommerce-scriptet også vide noget om, hvad brugeren har lavet på siden. Altså har brugeren set på noget (visit event), lagt noget i kurven (addToBasket event) eller købt (purchasedBasket event).

Det skal tilføjes til scriptet ovenfor.

De tre eventtyper skal bruge forskellige parametre.

Visit events (en bruger har set et produkt) skal som minimum bruge et PRODUKT-ID. Produkt id er altså obligatorisk.

Det er dog en fordel, hvis du også kan sende KATEGORI-ID og KATEGORI-NAVN.
Det er umuligt for os at vide, hvordan du automatisk får flettet disse informationer fra produktet ind, da det varierer fra webshopsystem til webshopsystem, og endda kan webshops på samme system også have forskellige måder at få fat i disse parametre på.

Ofte vil PRODUKT-ID blive flettet ind med et flettefelt/merge tag som f.eks. $product_id, $pid, $productid el.lign. Det kan Heyloyalty hverken undersøge eller vide på vegne af din webshop, så det er du nødt til selv at finde ud af, hvordan du gør. Måske din du har en IT-guru i huset eller et eksternt bureau, der kan hjælpe med det. Alternativt kan din webshops support måske hjælpe dig.

Det samme er gældende for både KATEGORI-ID og KATEGORI-NAVN – altså produktets kategori (både som nummer/id og som navn).

Når du har fundet det flettefelt du skal bruge for automatisk at kunne flette produkt id ind, så skal visiteventet tilføjes til scriptet ovenfor.

Det skal se sådan ud (husk at erstatte alle 6 flettefelter markeret med fed):

OBS: Det er kun linjen der ikke er markeret med kursiv, der skal tilføjes til hovedscriptet som du indsatte/genererede i første step.

<script type=”text/javascript” language=”javascript”>
var hlt;
var BiTrackingLoaded = function (BiTracking) {
hlt=BiTracking;
BiTracking.initialize(‘INSERTAPIKEYHERE‘, INSERTSESSIONTIMEHEREINSERTINTEGRATIONIDHERE);

hlt.visit(“PRODUCTID”,”CATEGORYID“,”CATEGORYNAME“) }
</script>
<script>
(function (d, t) {
var g = d.createElement(t),
s = d.getElementsByTagName(t)[0];
h = “https:” == document.location.protocol ? “https://” : “http://”;
g.src = h + ‘tracking.heycommerce.dk/hlbi.js’;
s.parentNode.insertBefore(g, s);
}
(document, ‘script’));
</script>

addToBasket events (en bruger lægger noget i kurven) kræver foruden produkt id også amount. Både produkt id og amount er altså obligatorisk.

Rækkefølgen på parametrene i addToBasket events er:

  1. Produkt id
  2. Amount
  3. Kategori id
  4. Basket id
  5. Kategori navn

Produkt id er det samme som ved visit events. Det skal flettes ind på samme måde.

Amount er antallet af det givne produkt, der lægges i kurven.

Kategori id er det samme som ved visit events. Det skal flettes ind på samme måde.

Basket id er kurvens unikke id. Det dannes forskelligt fra webshops til webshop, men skal også automatisk indsættes via et flettefelt som alle andre parametre. Det er umuligt for Heyloyalty at vejlede dig i, hvordan du får fingrene i det, da det varierer fra webshopsystem til webshopsystem, og endda kan webshops på samme system også have forskellige måder at få fat i dette parameter på.

Kategori navn er det samme som ved visit events. Det skal flettes ind på samme måde.

Selve eventet skal erstatte hlt.visit-linjen fra scriptet ovenfor med visit event eksemplet.
Hvis basket id fx ikke genereres, så sender du bare en tom værdi med ved at indsætte det sådan her: ” (bemærk at det ikke er gåseøjne, der findes ved at trykke Shift+2, men derimod to tryk på.

Et eksempel på scriptet med et tomt basket id kunne være (bemærk den tomme plads i scriptet efter “CATEGORYID” og inden “CATEGORYNAME”):

OBS: Det er kun linjen der ikke er markeret med kursiv, der skal tilføjes til hovedscriptet som du indsatte/genererede i første step.

<script type=”text/javascript” language=”javascript”>
var hlt;
var BiTrackingLoaded = function (BiTracking) {
hlt=BiTracking;
BiTracking.initialize(‘INSERTAPIKEYHERE‘, INSERTSESSIONTIMEHEREINSERTINTEGRATIONIDHERE);

hlt.addToBasket(“PRODUCTID“,”AMOUNT“,”CATEGORYID“,”,”CATEGORYNAME“) }
</script>
<script>
(function (d, t) {
var g = d.createElement(t),
s = d.getElementsByTagName(t)[0];
h = “https:” == document.location.protocol ? “https://” : “http://”;
g.src = h + ‘tracking.heycommerce.dk/hlbi.js’;
s.parentNode.insertBefore(g, s);
}
(document, ‘script’));
</script>

purchasedBasket event (bruger færdiggør sit køb).

Scriptet skal loade på “Tak for dit køb”-siden. Vær opmærksom på, at denne side kan variere alt efter om der er betalt med MobilePay, kreditkort eller noget helt tredje. Det er essentielt, at scriptet bliver loadet, da Heyloyalty ellers vil kunne komme til at sende en “tabt kurv”-mail til en bruger, der reelt set har færdiggjort sin ordre, hvis ikke scriptet placeres på alle udgaver af “tak for dit køb”-siden.

Som med de to andre eventtyper skal dette event sættes ind på en linje for sig selv.
Der er to parametre, der kan sendes med her:

  1. Basketprice
  2.  Ordernumber

Bemærk at ingen af de to er obligatoriske, men specielt basketprice er en god idé at sende med hvis muligt. Basketprice er kurvens totale pris. Det flettes ind forskelligt fra webshops til webshop, men skal også automatisk indsættes via et flettefelt som alle andre parametre.

Det er umuligt for Heyloyalty at vejlede dig i, hvordan du får fingrene i det, da det varierer fra webshopsystem til webshopsystem, og endda kan webshops på samme system også have forskellige måder at få fat i dette parameter på.

Det vil sige, at scriptet med purchasedBasket eventet ser sådan ud:

OBS: Det er kun linjen der ikke er markeret med kursiv, der skal tilføjes til hovedscriptet som du indsatte/genererede i første step.

<script type=”text/javascript” language=”javascript”>
var hlt;
var BiTrackingLoaded = function (BiTracking) {
hlt=BiTracking;
BiTracking.initialize(‘INSERTAPIKEYHERE‘, INSERTSESSIONTIMEHEREINSERTINTEGRATIONIDHERE);

hlt.purchasedBasket(“BASKETPRICE“,”ORDERNUMBER“}
</script>
<script>
(function (d, t) {
var g = d.createElement(t),
s = d.getElementsByTagName(t)[0];
h = “https:” == document.location.protocol ? “https://” : “http://”;
g.src = h + ‘tracking.heycommerce.dk/hlbi.js’;
s.parentNode.insertBefore(g, s);
}
(document, ‘script’));
</script>

pairEmail event (Sammenkobling af medlemmets e-mailadresse, cookie id og Heyloyalty id)

Før du kan sende adfærdsbaserede automations, så skal der være en parring mellem medlemmets e-mail, cookie id og Heyloyalty id. Dette sker automatisk, når et medlem klikker i en mail, en sms eller en webpush besked sendt via Heyloyalty.

Det kan dog være en fordel, hvis du også sørger for at implementere dette event på knapperne, hvor brugerne tilmelder sig.

Har du eksempelvis en formular i footeren på dit website, så bør du fyre nedenstående event, når der bliver klikket på “Tilmeld”-knappen.

Dermed får du din parring ifm. tilmelding og kan sende fx. tabt kurv i samme session, hvis medlemmet ikke færdiggør sit køb.

<script type=”text/javascript” language=”javascript”>

var hlt;

var BiTrackingLoaded = function (BiTracking) {

hlt=BiTracking;

BiTracking.initialize(‘INSERTAPIKEYHERE’, INSERTSESSIONTIMEHERE, INSERTINTEGRATIONIDHERE);

hlt.pairEmail(EMAIL); }

</script>

<script>

(function (d, t) {

var g = d.createElement(t),

s = d.getElementsByTagName(t)[0];

h = “https:” == document.location.protocol ? “https://” : “http://”;

g.src = h + ‘tracking.heycommerce.dk/hlbi.js’;

s.parentNode.insertBefore(g, s);

}

(document, ‘script’));

</script>

<script>
  var currentDomain = window.location.hostname;
    switch(currentDomain) {
    case 'webshopno1':
      trackingId = 'integrationID1';
      break;
    case 'webshopno2':
      trackingId = 'integrationID2';
      break;
    case 'webshopno3':
      trackingId = 'integrationID3';
      break;
    default:
      trackingId = 'integrationID1'
   }
</script>
<script type="text/javascript" language="javascript">
  var hlt;
  var BiTrackingLoaded = function (BiTracking) {
  hlt=BiTracking;
    BiTracking.initialize('INSERTAPIKEYHERE', INSERTSESSIONTIMEHERE, String(trackingId));
    hlt.visit("PRODUCTID”,"CATEGORYID","CATEGORYNAME") }
</script>
<script>
  (function (d, t) {
  var g = d.createElement(t),
  s = d.getElementsByTagName(t)[0];
  h = "https:" == document.location.protocol ? "https://" : "http://";
  g.src = h + 'tracking.heycommerce.dk/hlbi.js';
  s.parentNode.insertBefore(g, s);
  }
  (document, 'script'));
</script>
<script> 
var currentDomain = window.location.hostname;    
  switch(currentDomain) {    
    case 'webshopno1':      
      trackingId = 'integrationID1';      
      break;    
    case 'webshopno2':      
      trackingId = 'integrationID2';      
      break;    
    default:      
      trackingId = 'integrationID1';   
  }
</script>
<script> 
  var hlt; 
  var HLTrackingLoaded = function (HLTracking) {    
    hlt=HLTracking;    
    HLTracking.initialize('INSERTAPIKEYHERE', INSERTSESSIONTIMEHERE, String(trackingId));    
    HLTracking.trackEvent('Visit'); 
  }
</script>
<script> 
  (function (d, t) {    
    var g = d.createElement(t),    
    s = d.getElementsByTagName(t)[0];    
    h = "https:" == document.location.protocol ? "https://" : "http://";    
    g.src = h + 'bi.heyloyalty.com/smartweb.js';    
    s.parentNode.insertBefore(g, s); 
  }(document, 'script')); 
  document.onsubmit = function(e) {    
    hlt.trackClick(e); 
  }
</script>
<script> 
var currentDomain = window.location.hostname;    
  switch(currentDomain) {    
    case 'webshopno1':      
      trackingId = 'integrationID1';      
      break;    
    case 'webshopno2':      
      trackingId = 'integrationID2';      
      break;    
    default:      
      trackingId = 'integrationID1';   
  }
</script>
<script>    
  var hlt;    
  var orderNumber = '[[OrderID]]';    
  var basketPrice = '[[SubTotalInclVATUSNoCur]]';    
  var HLTrackingLoaded = function (HLTracking) {        
    hlt=HLTracking;        
    HLTracking.initialize('INSERTAPIKEYHERE', INSERTSESSIONTIMEHERE, String(trackingId));        
    HLTracking.trackEvent('Visit', orderNumber, basketPrice);    
  }
</script>
<script>    
  (function (d, t) {        
    var g = d.createElement(t),            
    s = d.getElementsByTagName(t)[0];            
    h = 'https:' == document.location.protocol ? 'https://' : 'http://';            
    g.src = h + 'bi.heyloyalty.com/dandomain.js';        
    s.parentNode.insertBefore(g, s);    
  } (document, 'script'));    
  document.onsubmit = function(e) {        
    if (e.target.id != 'mpoform' || hlt !== undefined) {            
      hlt.trackClick(e);        
    }    
  }
</script>