Pixelspårning på sidan för efterköp

Om din butik har installerat en app som lägger till en sida för efterköp i din butiks kassa kanske eventuell anpassad pixelspårning som du använder i din butik inte hämtar vissa spårningshändelser. Anpassade spårningspixlar som läggs till i din butiks ruta för Ytterligare skript spårar endast händelser på orderstatussidan, som kommer efter sidan för efterköp i kassan. Om en kund lämnar din butik på sidan för efterköp spåras inga händelser på orderstatussidan.

För att säkerställa att du hämtar konverteringshändelser korrekt kan du lägga till ett skript som spårar händelser på sidan för efterköp. Detta skript kan även spåra ytterligare inköp som görs från sidan för efterköp, till exempel merförsäljning. När du har lagt till ett skript för sidan för efterköp måste du justera ditt skript för orderstatussidan för att ignorera händelser som redan hämtats av skriptet för sidan för efterköp.

Du behöver bara ändra hur din butik spårar händelser om du använder en anpassad spårningspixel. Om du till exempel ställer in Google Analytics via Webbutik > Inställningar hämtar det redan händelser korrekt på din sida för efterköp.

Överväganden

Ytterligare skript på sidan för efterköp liknar ytterligare skript på orderstatussidan, men har några viktiga skillnader:

  • Skriptet läggs till på sidan för efterköp, inte på orderstatussidan.
  • Fältet tillåter endast JavaScript. Liquid-kod accepteras inte.
  • Den enda HTML-taggen som tillåts är <script>.
  • Skriptet körs i en sandbox och ingår inte på huvudsidan.
  • Du kan endast lägga till ett skript för sidan för efterköp om din butik har installerat en app som lägger till en sida för efterköp i din kassa.

Om du kör skriptet i en sandbox säkerställer du att skriptet är säkert och används för sitt avsedda ändamål.

Shopify-supporten kan inte hjälpa till med skript för sidor för efterköp. Om du behöver hjälp kan du lägga till ett inlägg i Shopifys community eller anlita en Shopify-expert.

Kompatibilitet med skript på orderstatussidan

Konfigurera spårningsskript på både sidan för efterköp och orderstatussidan för att säkerställa att dina pixlar spårar alla konverteringshändelser korrekt. Du kan använda Liquid-variabeln post_purchase_page_accessed i skript som körs på orderstatussidan för att undvika att konverteringshändelser räknas två gånger.

Om en kund landar på sidan för efterköp och sedan navigerar till orderstatussidan returneras variabeln post_purchase_page_accessed som sann. Variabeln returneras som falsk om en kund inte kommer fram till sidan för efterköp.

Du kan till exempel använda följande format för dina skript på orderstatussidan:

{% if first_time_accessed == true and post_purchase_page_accessed == false %}
<script>
   // insert your tracking script
</script>
{% endif %}

Tillgängliga API:er

Du kan använda globala JavaScript för att ge spårningsskript åtkomst till de uppgifter som de behöver. Tillgängliga uppgifter finns tillgängliga under window.Shopify.

Spåra inköp som gjorts på sidan för efterköp

För att spåra ytterligare inköp som görs via sidan för efterköp kan du prenumerera på händelsen Shopify.on.

När du prenumererar sker följande åtgärder när en ändring för efterköp har tillämpats:

  • Din hanterare anropas med två Order-typargument: order och outdated order.
  • De globala filerna under window.Shopify uppdateras så att skripten kan använda de uppdaterade uppgifterna.

Hanterare som prenumererar på denna händelse kan ha så lite som 500 ms för utförandet. Se till att du läser in alla beroenden som du behöver i tid.

Lägg till skript för sidan för efterköp

  1. Från din Shopify-administratör går du till inställningar > kassa.
  2. Ange ditt skript i fältet Ytterligare skript för efterköp.
  3. Klicka på Spara.

Skriptexempel

Du kan använda följande grundläggande skriptmall för att få hjälp att bygga ditt eget skript för sidan för efterköp. Det här skriptexemplet använder Google Analytics för att spåra den ursprungliga konverteringen och förklarar hur du spårar ytterligare inköp. Det här exemplet är väldigt enkelt och ditt slutgiltiga skript kommer troligtvis skilja sig från det.

Exempel på skriptfiler

Exempelskript för orderstatussidan:

<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>

Exempelskript för sidan för efterköp:

<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>

Referenser

Följande tabell innehåller typdefinitioner för de attribut som exponeras för ytterligare skript för efterköp via window.Shopify:

Fält Definition
window.Shopify
shop uppgifter om butiken där ordern lades.
order orderuppgifterna.
pageUrl URL:en för den aktuella sidan.
wasPostPurchasePageSeen Huruvida kunden tittade på sidan efter köp i kassan. Det är falskt vid den första återgivningen och sant i annat fall, till exempel om sidan laddas om.
on(event: string, handler: function): void Prenumererar på en händelse. För närvarande stöds endast händelsen CheckoutAmended.
off(event: string, handler: function): void Avregistrerar hanterare från given händelse. För närvarande stöds endast händelsen CheckoutAmended.
Shop
id Butikens ID.
currency Butikens valuta i ISO 4217-format. Till exempel USD. Se shop.currency för mer information.
Order
id Orderns interna identifierare.
number Heltalsrepresentationen av ordernamnet. Till exempel 1025.
checkoutToken Kassans interna identifierare.
customer Den kund som är kopplad till ordern.
lineItem Posterna för ordern.
subtotalPrice Delsumman för alla artiklar i ordern efter att både post- och varukorgsrabatter har tillämpats. Delsumman inkluderar inte skatter (om inte skatt ingår i priserna), leveranskostnader eller dricks.
totalPrice Orderns totalsumma.
currency ISO 4217-koden för orderns valuta.
discounts Summan av rabatterna som tillämpats på ordern.
Customer
id Kundens ID.
email Kundens e-postadress.
acceptsMarketing Huruvida kunden har accepterat marknadsföring. Detta kommer att vara sant om kunden accepterar marknadsföring och falskt om kunden inte accepterar.
hasAccount Huruvida kundens e-postadress är kopplad till ett kundkonto. Detta kommer att vara sant om e-postadressen är listad på ett kundkonto och falskt om den inte är listad. Se customer.has_account för mer information.
firstName Kundens förnamn.
lastName Kundens efternamn.
ordersCount Det totala antalet ordrar som kunden har lagt.
totalSpent Det totala belopp som kunden har spenderat på alla ordrar.
LineItem
finalLinePrice Det kombinerade priset för alla artiklar i posten. Detta är lika med line_item.final_price multiplicerat med line_item.quantity.
finalPrice Priset för radartikeln, inklusive alla rabattbelopp på radnivå.
lineLevelTotalDiscount Det totala beloppet för alla rabatter som tillämpats specifikt på posten. Detta inkluderar inte rabatter som läggs till i varukorgen.
optionsWithValues En rad valda värden från artikelns produktalternativ. Se line_item.options_with_values för mer information.
originalLinePrice Det sammanlagda priset för antalet artiklar som ingår i raden, innan rabatter tillämpats. Detta är lika med line_item.original_price multiplicerat med line_item.quantity.
originalPrice Det ursprungliga priset för posten innan rabatter tillämpats.
price Enhetspriset för posten. Priset återspeglar alla rabatter som tillämpas på posten. Endast tillgängligt för butiker i Tyskland eller Frankrike.
product Postens produkt.
properties En rad anpassad information för en artikel som har lagts till i varukorgen. Se line_item.properties för mer information.
quantity Postens kvantitet.
title Postens namn. Se line_item.title för mer information.
variant Postens variant.
Product
id Produktens ID.
type Typ av produkt.
ProductVariant
id Variantens ID.
sku Variantens SKU.
CartDiscount
id Rabattillämpningens interna identifierare.
code Rabattens kod, om den har en.
type Typ av rabatt. Möjliga värden är: automatic, discount_code, manual och script.
amount Det totala beloppet som priset för ordern minskas med av rabatten.

Är du redo att börja sälja med Shopify?

Prova gratis