Etkö ehdi seurata digimarkkinoinnin uusimpia käänteitä? Uutiskirjeemme auttaa sinua pysymään kärryillä

Tuottaako digimarkkinointisi? Varaa maksuton auditointi

ChatGPT Ads Pixel Shopify – Asennusohje

ChatGPT Ads Pixel Shopify – Asennusohje
Erik Back |

Sisällysluettelo

    ChatGPT-pikselin saa asennettua Shopifyyn ilman sovellusta, ilman GTM:ää ja ilman teemamuokkauksia – suoraan Shopifyn omaan Custom Pixel -järjestelmään. Tässä ohjeessa käymme läpi asennuksen vaihe vaiheelta ja annamme valmiin pikselikoodin suoraan kopioitavaksi.

    Mitä tarvitset ennen asennusta

    Tarvitset vain Pixel ID:n – löytyy OpenAI Ads Managerista kohdasta Tools → Conversions → Pixel – sekä Shopify-kaupan admin-oikeudet. Conversions API -avainta (CAPI) ei tarvita tähän asennukseen.

    Asennus: Shopify Customer Events

    1. Mene kohtaan Settings → Customer events
    2. Klikkaa Add custom pixel ja anna nimeksi esim. ChatGPT Ads Pixel
    3. Aseta Customer Privacy -asetuksiksi: Permission = Required, kategoriat Marketing ja Analytics
    4. Kopioi alla oleva koodi editoriin ja vaihda YOUR_PIXEL_ID omaksesi
    5. Klikkaa Save

    Permission = Required tarkoittaa, että Shopifyn oma suostumusbanneri hallitsee pikselin aktivoitumista automaattisesti. Erillistä consent-logiikkaa koodiin ei tarvita.

    Pikselikoodi

    Kopioi koko koodi Customer Events -editoriin. Muista vaihtaa YOUR_PIXEL_ID.

    Näytä pikselikoodi ↓
    // ── 1. Lataa OpenAI Pixel SDK ─────────────────────────────────────
    (function (w, d, s, u) {
      if (w.oaiq) return;
      var q = function () { q.q.push(arguments); };
      q.q = [];
      w.oaiq = q;
      var js = d.createElement(s);
      js.async = true;
      js.src = u;
      var f = d.getElementsByTagName(s)[0];
      f.parentNode.insertBefore(js, f);
    })(window, document, "script", "https://bzrcdn.openai.com/sdk/oaiq.min.js");
    
    oaiq("init", {
      pixelId: "YOUR_PIXEL_ID",
    });
    
    // ── 2. Standardit e-commerce-tapahtumat ──────────────────────────
    analytics.subscribe("all_standard_events", (event) => {
      switch (event.name) {
    
        case "page_viewed":
          oaiq("measure", "page_viewed", { type: "contents" });
          break;
    
        case "product_viewed":
          var p = event.data && event.data.productVariant;
          oaiq("measure", "contents_viewed", {
            type: "contents",
            contents: [{ id: p && p.sku || p && p.id, name: p && p.product && p.product.title, content_type: "product" }],
          });
          break;
    
        case "product_added_to_cart":
          var line = event.data && event.data.cartLine;
          var m = line && line.merchandise;
          oaiq("measure", "items_added", {
            type: "contents",
            amount: Math.round(((line && line.cost && line.cost.totalAmount && line.cost.totalAmount.amount) || 0) * 100),
            currency: (line && line.cost && line.cost.totalAmount && line.cost.totalAmount.currencyCode) || "EUR",
            contents: [{ id: m && m.sku || m && m.id, name: m && m.product && m.product.title, content_type: "product", quantity: (line && line.quantity) || 1 }],
          });
          break;
    
        case "checkout_started":
          var cs = event.data && event.data.checkout;
          oaiq("measure", "checkout_started", {
            type: "contents",
            amount: Math.round(((cs && cs.totalPrice && cs.totalPrice.amount) || 0) * 100),
            currency: (cs && cs.totalPrice && cs.totalPrice.currencyCode) || "EUR",
            contents: ((cs && cs.lineItems) || []).map(function(i) {
              return { id: (i && i.variant && i.variant.sku) || (i && i.variant && i.variant.id), name: i && i.title, content_type: "product", quantity: i && i.quantity };
            }),
          });
          break;
    
        case "checkout_completed":
          var co = event.data && event.data.checkout;
          oaiq("measure", "order_created", {
            type: "contents",
            amount: Math.round(((co && co.totalPrice && co.totalPrice.amount) || 0) * 100),
            currency: (co && co.totalPrice && co.totalPrice.currencyCode) || "EUR",
            contents: ((co && co.lineItems) || []).map(function(i) {
              return { id: (i && i.variant && i.variant.sku) || (i && i.variant && i.variant.id), name: i && i.title, content_type: "product", quantity: i && i.quantity };
            }),
          });
          break;
      }
    });
    
    // ── 3. Lomakelähetykset ───────────────────────────────────────────
    analytics.subscribe("form_submitted", (event) => {
      var element = event.data.element;
      var action = element.action || "";
      var formId = element.id || "";
      var keywords = ["contact", "newsletter", "email", "subscribe"];
      var isLead = keywords.some(function(k) {
        return action.includes(k) || formId.includes(k);
      });
      if (isLead) {
        oaiq("measure", "lead_created", { type: "customer_action" });
      } else {
        oaiq("measure", "custom", { type: "custom" }, { custom_event_name: "form_submitted_other" });
      }
    });
    
    // ── 4. Mailto- ja tel-linkkien klikkaukset ────────────────────────
    analytics.subscribe("clicked", (event) => {
      var href = event.data.element.href || "";
      if (href.startsWith("mailto:")) {
        oaiq("measure", "custom", { type: "custom" }, { custom_event_name: "mailto_click" });
      } else if (href.startsWith("tel:")) {
        oaiq("measure", "custom", { type: "custom" }, { custom_event_name: "tel_click" });
      }
    });

    Mitä tapahtumia seurataan

    Koodi seuraa kahdeksan tapahtumaa automaattisesti:

    • page_viewed – sivulataukset
    • contents_viewed – tuotesivun katselut
    • items_added – lisäykset ostoskoriin
    • checkout_started – kassan avaaminen
    • order_created – osto suoritettu (tärkein konversiotapahtuma)
    • lead_created – yhteydenotto- tai uutiskirjelomakkeen lähetys
    • mailto_click – sähköpostilinkin klikkaus (custom event)
    • tel_click – puhelinnumeron klikkaus (custom event)

    Testaus

    1. Avaa kauppa incognito-ikkunassa ilman mainosblokkereita
    2. Avaa Network-välilehti ja suodata bzrcdn – pyyntöjen pitäisi näkyä muutaman sekunnin kuluessa
    3. OpenAI Ads Managerissa: Tools → Conversions → Event Stream → Start Polling – tapahtumat näkyvät 5–15 min viiveellä

    Kampanjaoptimointi: mikä tapahtuma valita

    oCPC-kampanjat tukevat yhtä optimointitapahtumaa per kampanja. Valitse sen mukaan mikä on tavoitteesi:

    • Verkkokauppa → order_created
    • Liidigenerointi → lead_created

    Muut tapahtumat näkyvät dashboardissa datana, mutta niitä ei käytetä optimoinnissa. mailto_click ja tel_click ovat custom-tapahtumia – ne eivät kelpaa oCPC-konversiotavoitteeksi.

    Jos haluat apua asennuksessa tai ChatGPT Ads -kampanjan käynnistämisessä, varaa maksuton auditointi tai tutustu ChatGPT-mainonta-palvelusivuumme.