Shopify integration
Sådan opsætter du integrationen mellem Shopify og Heyloyalty.
Step-by-step guide
Installer Heyloyalty i AppStore
Søg efter Heyloyalty i Shopify Appstore og tryk på “installer” for at gøre Heyloyalty tilgængelig i din webshop.
Forbind din Shopify med Heyloyalty
Nu skal din Shopify forbindes med Heyloyalty. Under punkt 1 kan du vælge at bruge en eksisterende Heyloyalty-konto eller oprette en ny konto. Hvis du allerede har en Heyloyalty-konto, skal du gå ind på den for at finde API-oplysningerne.
Shopify API
Du finder API-oplysningerne ved at klikke på manden med tandhjulet oppe i øverste højre hjørne og vælge ”kontooplysninger”. Her ser du din API-nøgle og API-secret, som begge skal kopieres over i Shopify under punkt 1: ”Connection info”.
Aktivér webhooks
Under punkt 2 i Shopify skal du aktivere webhooks. Hvis du vil have størst værdi ud af integrationen, bør du under punkt 3 vælge at importere den historiske købsdata på dine modtagere. Du skal kun gøre det én gang, for fremadrettet sker synkroniseringen automatisk. Vær opmærksom på, at importen kommer i kø, når du klikker på knappen. Tryk på “get tracking script”.
Find trackingscript
Når du integrerer din Shopify-shop med Heyloyalty, får du automatisk adgang til vores Heycommerce Light-løsning. Det vil sige, at du kan sende tabt-kurv- og winback-automations. For at kunne sende tabt-kurv-automations, skal du nu vælge en sessionstid. Sessionstiden angiver hvor lang tid, der skal gå, fra at en kunde interagerer med et produkt i sin kurv (uden at gennemføre et køb), før Shopify sender en tabt-kurv-besked til Heyloyalty. Du har desuden mulighed for at indsætte et integrations-id. Dette er kun relevant, hvis du bruger Shopify Multisites. Tryk på ”get tracking script”. Et stykke kode kopieres automatisk til din udklipsholder.
Indsæt trackingscript
Koden skal nu indsættes to steder i din webshop. Det første sted er i bunden af footer.liquid i din webshops tema. For at komme derhen, skal du trykke på ”online store”, ”themes” og ”customize”.
Indsæt trackingscript
Tryk på de tre prikker øverst og vælg ”edit code”. Søg på ”footer.liquid” og klik dig ind på den side.
Indsæt trackingscript
Scroll helt ned i bunden og indsæt den kode, du har kopieret, under alt det kode, der allerede ligger der. Klik på ”save”.
Gå til admin
Gå tilbage til din shop og tryk på tandhjulet (settings) til venstre. Scroll ned til du finder checkout i menuen og klik på den lille pil ved siden af. Scroll ned i bunden af menuen ud for checkout, så du får mulighed for at klikke på ”visit the admin”. Et nyt vindue åbner.
Indsæt additional scripts
Scroll ned til overskriften ”additional scripts” og indsæt den samme kode, som du indsatte før, her. - Klik på ”save”.
”Indsæt
”Marker
”Indsæt
”Marker
Integrationen er nu sat op
Ovre i Heyloyalty bør du nu kunne se en liste, der indeholder de medlemmer, som kommer fra din Shopify. Integrationen er dermed færdig.
Dokumentation
<script>
var HlObject = window.HlObject = {
getProductId: function() {
var productId = ‘{{ product.selected_variant.id }}’;
if (productId == ”) {
{% for variant in product.variants %}
{% if forloop.first %}
var productId = ‘{{ variant.id }}’;
{% endif %}
{% endfor %}
}
return productId;
},
getCategoryId: function() {
{% assign categoryId = product.tags | join: ‘, ‘ %}
return ‘{{ categoryId }}’;
},
getProductsInBasket: function() {
var productsArray = [];
{% for product in cart.items %}
productsArray.push(‘{{ product.variant_id }}’);
{% endfor %}
return productsArray;
},
addEventToAddToCart: function() {
var elements = document.getElementsByName(‘add’);
for (var i = 0; i < elements.length; i++) {
elements[i].addEventListener(‘click’, HlObject.handleAddToBasket, false);
}
},
handleAddToBasket: function(e) {
var form = e.target.closest(‘form’),
productId = form.elements.namedItem(‘id’).value,
amount = (form.elements.namedItem(‘quantity’) != null) ? form.elements.namedItem(‘quantity’).value : 1,
basketId = undefined;
{% if product %}
var categoryId = HlObject.getCategoryId(),
categoryName = (‘{{ product.type}}’ != ”) ? ‘{{ product.type }}’ : undefined;
{% else %}
var categoryId = ”,
categoryName = undefined;
{% endif %}
hlt.addToBasket(productId, amount, categoryId, basketId, categoryName);
},
addEventToRemoveFromCart: function() {
var elements = document.querySelectorAll(‘a[href^=’/cart/change’]’);
for (var i = 0; i < elements.length; i++) {
elements[i].addEventListener(‘click’, HlObject.handleRemoveFromBasket, false);
}
},
handleRemoveFromBasket: function(e) {
var clickTarget = e.target,
elements = document.querySelectorAll(‘a[href^=’/cart/change’]’),
linkTarget;
for (var i = 0; i < elements.length; i++) {
if (elements[i].contains(clickTarget) || elements[i] == clickTarget) {
linkTarget = elements[i];
}
}
if (linkTarget == undefined) {
return;
}
var str = linkTarget.getAttribute(‘href’).match(/line=./)[0],
lineNo = str.split(‘=’)[1] – 1,
products = HlObject.getProductsInBasket();
hlt.removeFromBasket(products[lineNo]);
},
addEventToUpdateCart: function() {
var elements = document.getElementsByName(‘update’);
for (var i = 0; i < elements.length; i++) {
if (elements[i].tagName != ‘A’) {
elements[i].addEventListener(‘click’, HlObject.handleUpdateBasket, false);
}
}
},
handleUpdateBasket: function(e) {
var products = HlObject.getProductsInBasket(),
quantatieInputs = document.getElementsByName(‘updates[]’),
data = [];
for (var i = 0; i < products.length; i++) {
data.push({
productId : products[i],
amount : quantatieInputs[i].value
});
}
hlt.updateBasket(data);
}
};
(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’));
window.addEventListener(‘load’, function() {
{% if product %}
var productId = HlObject.getProductId(),
categoryId = HlObject.getCategoryId(),
categoryName = (‘{{ product.type}}’ != ”) ? ‘{{ product.type }}’ : undefined;
hlt.visit(productId, categoryId, categoryName);
{% else %}
hlt.heartbeat();
{% endif %}
HlObject.addEventToAddToCart();
if (window.location.href.indexOf(‘/cart’) != -1) {
HlObject.addEventToRemoveFromCart();
HlObject.addEventToUpdateCart();
}
});
document.onsubmit = function(e) {
if (e.target.id == ‘contact_form’) {
// for newsletter signup section
var form = document.getElementById(‘contact_form’),
permission = document.getElementsByName(‘contact[tags]’)[0];
if (form.contains(permission) && permission.value == ‘newsletter’) {
var email = document.getElementById(‘Email’).value;
if (email != ”) {
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’));
window.addEventListener(‘load’, function() { hlt.purchasedBasket();
{% if checkout.buyer_accepts_marketing %} hlt.pairEmail(‘{{checkout.email}}’); {% endif %} });
</script>