Att veta att något har förändrats räcker sällan. Ett arbetsflöde behöver oftast veta hur det såg ut tidigare: gick priset ner eller upp, med hur mycket, vilken tagg lades till, vad metafältet visade igår. Den här versionen gör det möjligt att se både det gamla och det nya värdet i hela appen, och låter en anpassad utlösare starta ett arbetsflöde även när ingenting alls har hänt.
Gamla och nya värderingar, överallt
- Metafältutlösare innehåller nu det tidigare värdet. Varje metafältutlösare (generisk, produkt, variant, order, kund) överför Shopify Flow
Metafield.previousValue tillsammans med Metafield.value. Det är tomt när metafältet just har skapats. Se Metafältutlösare.
- Förändringar i pris, enhetspris och kostnad åtföljs av siffror. Villkoren i Shopify Flow kan inte utföra aritmetiska beräkningar, så ”Variantpris ändrat”, ”Variantenhetspris ändrat” och ”Produktvariantkostnad ändrad” levererar nu även
delta (nytt minus gammalt), percentChange och direction (ökning, minskning, oförändrat). ”Priset har sjunkit med mer än 10 %” är nu ett villkor, utan kod.
- Produktuppdatering, orderuppdatering och kunduppdatering visar vad som har ändrats. Tidigare angav de endast att posten hade uppdaterats. Nu innehåller de
changes: en lista över ändrade fält samt det gamla och det nya värdet för varje fält. Fält som spåras är titel, beskrivning, status, taggar, leverantör, typ och hanteringskod för produkter; betalningsstatus, leveransstatus, orderrader, taggar, anteckning och ytterligare detaljer för beställningar; taggar, anteckning och kontostatus för kunder. Långa värden förkortas. Listan är tom när uppdateringen inte gällde dessa fält, till exempel vid en lagerförändring.
- ”Ändringar i utkast till orderrader” visar nu samma radvisa jämförelse som orderutlösaren: vad som har lagts till, tagits bort eller ändrats vad gäller antal, pris eller variant.
- Din egen anpassade triggarkod ser också både det gamla och det nya värdet. En anpassad trigger vid produktuppdatering, orderuppdatering eller kunduppdatering tar nu emot
payload._changes: varje spårat fält som har ändrats, med oldValue och newValue för respektive fält. På så sätt kan din kod utlösas vid en övergång snarare än vid ett tillstånd - ”status gick från utkast till aktiv”, ”ordern blev betald” - vilket ett villkor baserat på det aktuella värdet inte kan uttrycka. Exempelhändelsen som du fångar upp i redigeraren visar fältet.
Allt är additivt. De arbetsflöden du redan har skapat fortsätter att fungera som vanligt. Den fullständiga fältlistan för varje utlösare finns i utlösarreferensen.
Välj vilka ändringar som ska utlösa en uppdateringsutlösare
”Produktuppdatering”, ”Orderuppdatering” och ”Kunduppdatering” har en ny inställning, som nås via kugghjulet bredvid respektive växlingsknapp på sidan Triggers: Vilka ändringar utlöser detta.
- Inget är markerat: utlösaren aktiveras vid varje uppdatering, precis som den alltid har gjort.
- Markerade fält: utlöses endast när något av dem ändras. Alla övriga uppdateringar hoppas över och räknas inte in i ditt abonnemang.
Detta är också ett smidigt sätt att förhindra att ett arbetsflöde utlöser sig själv. Ett arbetsflöde som startar vid en produktuppdatering och sedan skriver till ett produktmetafält som används för att starta om sig själv. Begränsa utlösaren till de fält som är relevanta för dig, så utlöses inte den andra uppdateringen längre.
Dina övriga utlösare påverkas inte av detta val. Att begränsa ”Orderuppdatering” till betalningsstatus påverkar inte när händelsen ”Orderetiketter tillagda” utlöses.
Anpassade utlösare som körs enligt ett schema
Shopify Flows reagerar när något händer. Det kan inte reagera när inget händer, och det kan inte se något utanför din butik. En anpassad utlösare kan nu göra det. Redigeraren frågar: ”Vad får detta att köras: En Shopify-händelse eller enligt ett schema?” Enligt ett schema körs din kod var 30:e sekund, upp till en gång om dagen. Den kommer ihåg vad den såg vid förra körningen, kan läsa av din butik och anropa vad som helst på det offentliga internet, och avgör själv vad som räknas som en förändring.
Börja med en mall och redigera siffrorna högst upp:
- Produkt, order eller kund som inte har uppdaterats på N dagar - inaktuella kataloggranskningar, fastnade order, återvinningskampanjer. Varje post utlöses en gång per inaktivitetsperiod; poster som redan var försenade när funktionen aktiverades utlöses inte alla på en gång.
- Ett värde utanför Shopify har ändrats - ett lagerflöde från en leverantör, en växelkurs, en prislista. Visar värdet före och efter, samt skillnaden och procentandelen för siffror.
- Nyhet i ett RSS- eller Atom-flöde - leverantörsnyheter, ett produktlista-flöde, en statussida.
- Inga beställningar på N timmar - en pulsmätare för din butik. Aktiveras en gång när beställningarna upphör och en gång när de återkommer.
Det första körningen av en schemalagd utlösare lagrar endast den information den tar emot, så att du aldrig överbelastar dina arbetsflöden när du aktiverar en sådan. Den visas i Shopify Flow som ”Anpassad utlösare”, filtrerad efter sitt handtag, och posten anges som dess ID. Varje körning räknas in i din plan, oavsett om den utlöses eller inte - redigeraren visar hur många körningar ett intervall omfattar. Test kör din kod en gång utan att utlösa någonting.
Mallar för händelsebaserade anpassade utlösare
Anpassade utlösare som reagerar på en Shopify-händelse har nu också mallar. Välj en mall under ”Börja med en mall” så väljs händelsen ut och koden fylls i automatiskt. Varje mall läser av värdet före och efter ändringen:
- Ett fält för en produkt, en order eller en kund har ändrats från ett värde till ett annat - till exempel har statusen ändrats från utkast till aktiv, eller så har en order markerats som betald.
- Priset sjönk med mer än N procent - en verklig prisnedsättning, inte vilken prisjustering som helst.
- Lagernivån sjönk under en tröskel - utlöses en gång, i det ögonblick då lagernivån passerar gränsen, inte vid varje försäljning när den redan är låg.
- Värdet för ett produktmetafält har överskridit ett tröskelvärde - ett betyg har sjunkit under 3, en marginal har överskridit 40.
- Beställning som betalats av en högvärdig kund - hämtar kundens totala köpbelopp i din butik med
ctx.shopify() och utlöses endast när beloppet överstiger det värde du har angett.
En postens utlösande händelser på dess egen administrationssida
Nya adminblock visar de senaste utlösande händelserna för den post du tittar på, direkt på sidan i Shopify-admin, var och en med en kort rad som visar ”gammalt -> nytt”, till exempel price: 100.00 -> 85.00. Därifrån kan du öppna händelsen eller en översikt över händelsehistoriken för just den posten.
Finns tillgängligt för produkter, varianter, order, orderutkast, kunder, inkassoförfaranden, företag och företagsplatser. Lägg till blocket en gång från sidans anpassningsmeny. Triggers som hanterar personuppgifter listas utan sina värden. Så här lägger du till det, med ett exempel på en produkt-, order- och kundsida: Triggerhändelser på en postens administrationssida.
Fler AI-leverantörer för Generate with AI
Skapa med AI fungerar nu med Google Gemini och OpenRouter, utöver Anthropic och OpenAI. OpenRouter ger dig tillgång till modeller från många företag med en enda nyckel, inklusive vilket modell-ID du än anger. Anslut en nyckel under Utvecklare -> Anslutningar: skaffa en Gemini API-nyckel eller skaffa en OpenRouter API-nyckel. Precis som tidigare sker genereringen på ditt eget leverantörskonto och nyckeln krypteras och visas aldrig igen.
Ett snabbare gränssnitt, byggt på Shopifys webbkomponenter
Varje sida i appen har byggts om med hjälp av Shopifys nya webbkomponenter för administratörsgränssnittet - samma byggstenar som används i själva Shopify-administratörsgränssnittet.
- Snabbare att ladda. Appen levereras inte längre med en egen kopia av ett gränssnittsbibliotek. Komponenterna kommer från Shopify, delas med resten av din administratörsmiljö och finns oftast redan i webbläsarens cache, vilket innebär att varje sida har betydligt mindre att ladda ner innan den visas.
- Det känns som admin-gränssnittet. Knappar, tabeller, reglage, dialogrutor och formulär ser ut och fungerar precis som de du använder överallt annars i Shopify, inklusive tangentbordsnavigering och skärmläsare.
- Håller sig uppdaterad. När Shopify förbättrar sina komponenter anpassar sig appen automatiskt till förbättringarna utan att vi behöver göra någon uppdatering.
Ingenting har förändrats: alla sidor, inställningar och länkar finns kvar där de var.
Dessutom i den här versionen
- ”Bevilja alla” och ”Återkalla alla” på sidan Behörigheter. Med ”Bevilja alla” begärs alla behörigheter som saknas i en enda Shopify-dialogruta istället för en per kort. Med ”Återkalla alla” ombeds du att bekräfta först och får information om vad det innebär: dina utlösare förblir aktiverade, men de kan inte utlösas förrän du beviljar åtkomst igen.
- Anpassad triggerkod kan hämta data från det öppna internet med
ctx.fetch(), inte bara från din butik med ctx.shopify(). Interna adresser tillåts inte.
- Dina anpassade utlösare och dina butiksutlösare fungerar nu på samma sätt: klicka på raden för att redigera, status visas till höger.
- På sidan ”Triggers” visas antalet aktiva triggers bredvid rubriken, och de fyra metafälttriggers som har angetts manuellt har nu egna aktiveringsknappar i listan.
- Obligatoriska fält är markerade i formulären för anpassade utlösare, butiksutlösare och anslutningar.
- Åtgärdat: Det gick inte att rensa ett datumfilter i händelsehistoriken. När man tog bort datumrutan eller valde ”Rensa allt” förblev datumen kvar. Nu rensas de i båda fallen.
- Raderna i händelsehistoriken består av ren text istället för blå länkar. Hela raden går fortfarande att klicka på.