Brugerdefinerede udløsere for webshoppen

Brugerdefinerede udløsere for webshoppen

Kopier side

Publicer brugerdefinerede webshop-begivenheder som Shopify Flow-udløsere med én linje JavaScript, f.eks. indkøbskurv-udtræk eller ønskeliste-klik.

De indbyggede udløsere til webshoppen dækker de begivenheder, som Shopify rapporterer. En brugerdefineret udløser til webshoppen dækker alt andet, der sker på din webshop: Du offentliggør en begivenhed fra dit tema med én linje JavaScript, og den bliver til en udløser, du kan bruge i Shopify Flow.

Det tydeligste eksempel er indkøbskurv-udtrækket. Begivenheden »Shopify« udløses på siden /cart, og de fleste moderne temaer navigerer aldrig derhen - i stedet åbner de udtrækket med en glidende bevægelse. Shopify rapporterer intet, så ingen app kan se det. Ved at udløse din egen begivenhed, når udtrækket åbnes, lukkes dette hul.

Andre formål, som butikkerne bruger det til:

  • En tilføjelse til ønskelisten eller et klik på »Giv mig besked« - ingen af delene registreres af Shopify.
  • En størrelsesguide eller returpolitik, der er åbnet, som en indikation om et produkt.
  • En variant i pickeren, som ikke udgør en ny sidevisning (se Udløsere for butiksfacader).
  • Alt, hvad dit tema eller en tredjepartsapp allerede ved, men som Shopify ikke ved.

Sådan fungerer det

  1. Opret udløsere i appen, og giv dem et navn, f.eks. »cart_drawer_opened«. Som alle webshop-udløsere kræver de adgang til »Webshop Behaviour«, som tildeles én gang på siden »Tilladelser«.
  2. Kopier den enkeltlinjede kodestump, som appen viser dig, og indsæt den i dit tema på det sted, hvor det pågældende sker. Hvis du er i tvivl om, hvad du skal indsætte, eller hvor, kan du på Generer triggerkode med AI få genereret kodestumpen til dit tema ud fra en beskrivelse på almindeligt engelsk.
  3. Skriv en transformation, hvis du vil filtrere eller omforme det, der sendes, eller lad feltet stå tomt for at videresende alt.
  4. Tænd for den, tilføj derefter »Custom Storefront Trigger« i Shopify Flow, og opret en forgrening baseret på begivenhedsnavnet.

Dette kodestykke udgør hele integrationen på temasiden:

Redigeringsværktøjet til brugerdefinerede webshop-udløsere med navn, begivenhedsnavn og det kodestykke, der skal tilføjes til temaet
Brugerdefineret udløser for webshoppen: Begivenhedsnavnet er det, dit tema offentliggør, og redigeringsværktøjet giver dig det kodestykke, du skal kopiere.
Publish the event from your themejavascript
Shopify.analytics.publish("cart_drawer_opened", {
  // anything you want the Flow to receive
  itemCount: 3,
  total: "129.90"
});

Begivenhedsnavnet er det, som din Shopify Flow-arbejdsgang forgrener sig ud fra, så vælg et navn, der er let at forstå, og lad det være, når arbejdsgange først bruger det.

Navne må indeholde bogstaver, tal, understregninger og bindestreger, skal begynde med et bogstav eller et tal og må være op til 64 tegn lange. Appen omdanner det, du skriver, til en slug, så Cart drawer opened bliver til cart_drawer_opened.

Navnet er internt placeret i et navneområde, så det aldrig kan komme i konflikt med en »Shopify«-begivenhed eller en brugerdefineret udløser med samme navn.

Filtrering og omformning

De data, du sender som det andet argument, modtages i Shopify Flow som udløseren »output«. Hvis det er alt, hvad du har brug for, er du færdig.

Hvis du kun vil udløse en handling i visse tilfælde eller sende andre felter end dem, der er offentliggjort i temaet, skal du skrive en transform - det samme JavaScript-modul, som bruges af Brugerdefinerede udløsere. Returner et objekt for at udløse handlingen, og returner null for at springe den over:

Only fire for drawers worth acting onjavascript
export async function transform(payload, topic, shop, ctx) {
  // Anything you published is on `payload`.
  if ((payload.itemCount || 0) < 2) return null;

  return {
    itemCount: payload.itemCount,
    total: payload.total,
    // Present only when the shopper is signed in.
    customerId: payload.customerId,
  };
}

Brug af det i Shopify Flow

Alle brugerdefinerede Storefront-udløsere vises i Shopify Flow som den samme udløser: Brugerdefineret Storefront-udløser. Føj den til en arbejdsgang, og tilføj derefter en betingelse, hvor eventName skal svare til det navn, du har valgt.

Det er netop det, der gør, at én Shopify Flow-udløser kan udløse alle dine begivenheder i webshoppen. Udløseren indeholder også det navn, du har givet den i appen, samt output fra din transformation.

Den er bevidst adskilt fra »Brugerdefineret udløser«, som understøtter den webhook-baserede »Brugerdefinerede udløsere«. Der er en vigtig forskel mellem de to, som det er værd at kende til: En webhook-baseret udløser kører på vores servere og er pålidelig, mens en »Webshop Event« afhænger af, at en kunders browser når frem til os, samt af kundens samtykke til analyse.

Hvad man ikke bør sende

Det andet argument til publish er helt under din kontrol, hvilket betyder, at det er dit ansvar at sikre, at der ikke indgår personoplysninger i det.

Send identifikatorer og oplysninger: produkt- og variant-id’er, mængder, priser samt en beskrivelse af, hvad der er sket. Den indloggede kundes id tilføjes automatisk, når der er et, så du behøver aldrig selv at angive det.

Send ikke navne, e-mailadresser, telefonnumre eller postadresser. Din arbejdsgang kan hente alle disse oplysninger ud fra kunde-id’et i Shopify Flow, så der er ingen fordel ved at indsætte dem i en webshop-begivenhed, og det vil desuden gøre en analysebegivenhed til en begivenhed, der indeholder personoplysninger.

Tæller det med i min datapakke?

Ja. Alle hændelser, der når frem til os, tæller med, herunder også dem, som din transform-funktion springer over ved at returnere null - det er den samme regel som Brugerdefinerede udløsere. Hændelser, der frasorteres i browseren på grund af manglende samtykke, når aldrig frem til os og tæller derfor aldrig med.

Da det er dig, der bestemmer, hvor uddraget skal placeres, styrer du selv mængden direkte. En begivenhed, der udløses, når en skuffe åbnes, forekommer langt sjældnere end en produktvisning.

Kan jeg oprette den samme begivenhed fra mere end ét sted?

Ja. Det er navnet, der tæller, ikke hvor det er udgivet fra. Det er en god idé at medtage en oplysning i Payloaden om, hvor det stammer fra, hvis man ønsker, at arbejdsgangen skal kunne skelne mellem dem.

Tæller det som én hændelse, hvis to skuffer åbnes?

Nej. Bevidste hændelser behandles separat, fordi en dobbelt offentliggørelse som regel betyder, at det rent faktisk skete to gange. Dette adskiller sig fra de indbyggede udløsere, som sammenlægger gentagelser af den samme sidevisning.

Kan jeg ændre navnet på begivenheden senere?

Det kan du godt, men din Shopify Flow-arbejdsgang filtrerer efter det, så hvis du ændrer navnet, stopper den arbejdsgang, indtil du opdaterer betingelsen - og du skal også opdatere kodestykket i dit tema, så det stemmer overens. Betragt navnet som fast, når en arbejdsgang først bruger det.

Hvordan tester jeg det, før det går live i min webshop?

Triggerens side i appen indeholder en test, der kører din transformation og udløser din Shopify Flow-arbejdsgang, så du kan følge processen fra start til slut uden at røre ved dit tema. Testen trækker ikke på din kvote.

Når kodestykket er indsat i dit tema, viser siden »Begivenhedshistorik« de aktuelle begivenheder, efterhånden som de kommer ind.

Fungerer det på checkout-siderne?

Når du offentliggør fra din egen temakode, dækker dette din webshop. Betalingssiden vises via Shopify, og du kan ikke tilføje temakode her, så brug i stedet de indbyggede udløsere »Checkout Error Shown« og »Checkout Discount Code Rejected« der.

Næste skridt