Pixeltracking op de post-purchasepagina
Als je winkel een app heeft geïnstalleerd die een post-purchasepagina toevoegt aan de checkout van je winkel, kan elke aangepaste pixeltracking die je in je winkel gebruikt, bepaalde tracking-events mogelijk niet vastleggen. Aangepaste trackingpixels die zijn toegevoegd aan de Extra scripts van je winkel, volgen alleen events op de bestelstatuspagina, die wordt weergegeven na de post-purchasepagina in de checkout. Als een klant je winkel verlaat op de post-purchasepagina, worden er geen events op de bestelstatuspagina bijgehouden.
Om ervoor te zorgen dat je conversie-events correct vastlegt, kun je een script toevoegen dat events bijhoudt op de post-purchasepagina. Dit script kan ook aanvullende aankopen volgen die worden gedaan vanaf de post-purchasepagina, zoals upsells. Nadat je een script voor een post-purchasepagina hebt toegevoegd, moet je het script van de bestelstatuspagina aanpassen om events te negeren die al zijn vastgelegd door het script van de post-purchasepagina.
Je hoeft de manier waarop je winkel events bijhoudt alleen te wijzigen als je een aangepaste trackingpixel gebruikt. Als je bijvoorbeeld Google Analytics instelt via Onlinewinkel > Voorkeuren, worden events al correct vastgelegd op je post-purchasepagina.
Op deze pagina
Overwegingen
Het extra script op de post-purchasepagina is vergelijkbaar met aanvullende scripts voor de bestelstatuspagina, maar met een paar belangrijke verschillen:
- Het script wordt toegevoegd aan de post-purchasepagina, niet aan de bestelstatuspagina.
- In het veld kan alleen JavaScript worden gebruikt. Liquid-code wordt niet geaccepteerd.
- De enige HTML-tag die is toegestaan, is
<script>
. - Het script wordt in een sandbox uitgevoerd en is niet opgenomen op de hoofdpagina.
- Je kunt een script voor je post-purchasepagina alleen toevoegen als je winkel een app heeft geïnstalleerd waarmee een post-purchasepagina aan je checkout wordt toegevoegd.
Als je het script in een sandbox uitvoert, zorg er dan voor dat het script veilig is en voor het beoogde doel wordt gebruikt.
Shopify Support kan niet helpen met scripts voor post-purchasepagina's. Als je hulp nodig hebt, kun je in de Shopify Community posten of een Shopify-partner inhuren.
Compatibiliteit met scripts op de bestelstatuspagina
Om ervoor te zorgen dat je pixels alle conversie-events correct volgen, stel je trackingscripts in op zowel de post-purchasepagina als de bestelstatuspagina. Om te voorkomen dat conversie-events twee keer worden geteld, kun je de Liquid-variabele post_purchase_page_accessed
gebruiken in scripts die op de bestelstatuspagina worden uitgevoerd.
Als een klant op de post-purchasepagina landt en vervolgens naar de bestelstatuspagina navigeert, retourneert de variabele post_purchase_page_accessed
true
. Als een klant niet op de post-purchasepagina aankomt, wordt de variabele false
geretourneerd.
Je kunt bijvoorbeeld de volgende indeling gebruiken voor je scripts op de bestelstatuspagina:
{% if first_time_accessed == true and post_purchase_page_accessed == false %}
<script>
// insert your tracking script
</script>
{% endif %}
Beschikbare API's
Je kunt JavaScript Globals gebruiken om trackingscripts toegang te geven tot de gegevens die ze nodig hebben. De toegankelijke gegevens zijn beschikbaar onder window.Shopify
.
Aankopen volgen die op de post-purchasepagina zijn gemaakt
Als je extra aankopen wilt volgen die worden gedaan via de post-purchasepagina, kun je het event Shopify.on
aanroepen.
Na het aanroepen van het event, vinden de volgende acties plaats, telkens wanneer een wijzigingenset voor de post-purchasepagina is toegepast:
- Je handler wordt aangeroepen met twee argumenten van het type
Bestelling
:order
enoutdated order
. - De globals onder
window.Shopify
worden bijgewerkt, zodat de scripts de bijgewerkte gegevens kunnen gebruiken.
Handlers die zijn toegekend aan dit event, kunnen maar 500 ms hebben om uit te voeren. Zorg ervoor dat je van tevoren eventuele afhankelijkheden laadt die je nodig hebt.
Het script voor de post-purchasepagina toevoegen
Voordat je het post-purchasepaginascript toevoegt, stel je het Google- en YouTube-kanaal in of download je een externe post-purchase-app, als je het post-purchaseveld wilt weergeven in het Shopify-beheercentrum.
Stappen:
- Ga in het Shopify-beheercentrum naar Instellingen > Checkout.
- Voer in het veld Aanvullende scripts voor post-purchsepagina je script in.
- Klik op Opslaan.
Voorbeeldscript
Je kunt het volgende basisscripttemplate gebruiken om je te helpen je eigen script voor je bedankpagina te maken. Dit voorbeeldscript gebruikt Google Analytics om de eerste conversie bij te houden en legt uit hoe je aanvullende aankopen kunt bijhouden. Dit voorbeeld is erg eenvoudig en je uiteindelijke script zal er waarschijnlijk van verschillen.
Voorbeeld scriptbestanden
Voorbeeldscript voor de bestelstatuspagina:
<script async src="https://www.googletagmanager.com/gtag/js?id=G-FYNQ742HTX"></script>
<script>
(function() {
// make sure the initial conversion isn't tracked twice
{% if first_time_accessed == false or post_purchase_page_accessed == true %}
return;
{% endif %}
// set up google analytics
window.dataLayer = window.dataLayer || [];
function gtag() {
dataLayer.push(arguments);
}
gtag('js', new Date());
gtag('config', 'G-FYNQ742HTX');
// track initial conversion
var order = window.Shopify.order;
gtag('event', 'purchase', {
affiliation: 'My Shopify Store',
transaction_id: Number(order.id).toString(),
value: order.totalPrice,
currency: order.currency,
items: order.lineItems.map((item) => ({
id: Number(item.id).toString(),
name: item.title,
category: item.product.type,
price: item.price,
quantity: item.quantity,
variant: Number(item.variant.sku).toString(),
})),
});
})();
</script>
Voorbeeldscript voor de post-purchasepagina:
<script async src="https://www.googletagmanager.com/gtag/js?id=G-FYNQ742HTX"></script>
<script>
(function() {
// set up google analytics
window.dataLayer = window.dataLayer || [];
function gtag() {
dataLayer.push(arguments);
}
gtag('js', new Date());
gtag('config', 'G-FYNQ742HTX');
// make sure the initial conversion isn't tracked twice
if (!Shopify.wasPostPurchasePageSeen) {
var order = window.Shopify.order;
// track initial conversion
gtag('event', 'purchase', {
affiliation: 'My Shopify Store',
transaction_id: Number(order.id).toString(),
value: order.totalPrice,
currency: order.currency,
items: order.lineItems.map(function(item) {
return {
id: Number(item.id).toString(),
name: item.title,
category: item.product.type,
price: item.price,
quantity: item.quantity,
variant: Number(item.variant.sku).toString(),
};
}),
});
}
// set up additional conversion tracking
Shopify.on('CheckoutAmended', function(newOrder, previousOrder) {
// identify which items were recently added, if any
var oldItems = previousOrder.lineItems.map(function (line) { return line.id; });
var addedItems = newOrder.lineItems.filter(
function (line) { return oldItems.indexOf(line.id) < 0; }
);
// no new items were added, so we skip conversion tracking
if (addedItems.length === 0) {
return;
}
// track additional purchase
gtag('event', 'purchase', {
affiliation: 'My Shopify Store',
transaction_id: Number(order.id).toString(),
value: order.totalPrice,
currency: order.currency,
items: addedItems.map(function (item) {
return {
id: Number(item.id).toString(),
name: item.title,
category: item.product.type,
price: item.price,
quantity: item.quantity,
variant: Number(item.variant.sku).toString(),
};
}),
});
});
})();
</script>
Naslag
De volgende tabel bevat de typedefinities voor de attributen die zijn blootgesteld aan aanvullende scripts voor bedankpagina's via window.Shopify
:
Veld | Definitie |
---|---|
window.Shopify | |
shop | De gegevens van de winkel van waar de bestelling is geplaatst. |
order | De gegevens van de bestelling. |
pageUrl | De URL van de huidige pagina. |
wasPostPurchasePageSeen | Of de klant bij de checkout de post-purchasepagina heeft bekeken. Voor de eerste keer wordt false weergegeven, en in andere gevallen wordt true weergegeven, bijvoorbeeld wanneer de pagina opnieuw wordt geladen. |
on(event: string, handler: function): void | Is toegekend aan event . Momenteel wordt alleen het event CheckoutAmended ondersteund. |
off(event: string, handler: function): void | Verwijdert handler van het opgegeven event . Momenteel wordt alleen het event CheckoutAmended ondersteund. |
Shop | |
id | De ID van de winkel. |
currency | De valuta van de winkel in de indeling ISO 4217. Bijvoorbeeld USD. Raadpleeg shop.currency voor meer informatie. |
Order | |
id | De interne identifier van de bestelling. |
number | De integere weergave van de bestellingsnaam. Bijvoorbeeld 1025. |
checkoutToken | De interne ID van de checkout. |
customer | De klant die aan de bestelling is gekoppeld. |
lineItem | De orderregels voor de bestelling. |
subtotalPrice | De subtotaalprijs van alle artikelen in de bestelling nadat zowel regelitem- als winkelwagenkortingen zijn toegepast. Het subtotaal omvat geen belastingen (tenzij belastingen zijn inbegrepen in de prijzen), verzendkosten of tips. |
totalPrice | De totale prijs van de bestelling. |
currency | De ISO 4217-code van de valuta van de bestelling. |
discounts | De som van het bedrag van de kortingen dat op de bestelling wordt toegepast. |
Customer | |
id | De ID van de klant. |
Het e-mailadres van de klant. | |
acceptsMarketing | Of de klant marketing heeft geaccepteerd. Dit is true als de klant marketing accepteert, en false als dat niet zo is. |
hasAccount | Of het e-mailadres van de klant is gekoppeld aan een klantaccount. Dit is true als het e-mailadres wordt vermeld op een klantaccount, en false als dat niet zo is. Raadpleeg voor meer informatie de customer.has_account. |
firstName | De voornaam van de klant. |
lastName | De achternaam van de klant. |
ordersCount | Het totale aantal bestellingen dat de klant heeft geplaatst. |
totalSpent | Het totale bedrag dat de klant aan alle bestellingen heeft uitgegeven. |
LineItem | |
finalLinePrice | De gecombineerde prijs van alle artikelen in de orderregel. Dit is gelijk aan line_item.final_price vermenigvuldigd met line_item.quantity . |
finalPrice | De prijs van de orderregel, inclusief alle kortingsbedragen op regelniveau. |
lineLevelTotalDiscount | Het totale bedrag van alle kortingen dat specifiek op de regel wordt toegepast. Dit omvat geen kortingen die aan de winkelwagen zijn toegevoegd. |
optionsWithValues | Een matrix met geselecteerde waarden uit de productopties van het artikel. Raadpleeg voor meer informatie line_item.options_with_values. |
originalLinePrice | De gecombineerde prijs van het aantal artikelen dat is opgenomen in de regel, voordat kortingen zijn toegepast. Dit is gelijk aan line_item.original_price vermenigvuldigd met line_item.quantity . |
originalPrice | De oorspronkelijke prijs van de orderregel voordat kortingen zijn toegepast. |
price | De eenheidsprijs van de orderregel. De prijs weerspiegelt eventuele kortingen die worden toegepast op de orderregel. Alleen beschikbaar voor winkels in Duitsland of Frankrijk. |
product | Het product van de orderregel. |
properties | Een matrix met aangepaste gegevens voor een artikel dat aan de winkelwagen is toegevoegd. Raadpleeg voor meer informatie line_item.properties. |
quantity | De hoeveelheid van de orderregel. |
title | De titel van de orderregel. Raadpleeg voor meer informatie line_item.title. |
variant | De variant van de orderregel. |
Product | |
id | De ID van het product. |
type | Het type product. |
ProductVariant | |
id | De ID van de variant. |
sku | De SKU van de variant. |
CartDiscount | |
id | De interne ID van de kortingstoepassing. |
code | De code van de korting, als deze er een heeft. |
type | Het type korting. Mogelijke waarden zijn: automatic , discount_code , manual en script . |
amount | Het totale bedrag aan korting waarmee de prijs van de bestelling is verminderd. |