Sådan forbinder du Sanity med Shopify Flow
Sanity senderen af en GROQ-baseret webhook, hver gang der oprettes, opdateres eller slettes indhold, der matcher din søgning. Workflow Webhooks omdanner dette opkald til en Shopify Flow-udløser, så din butik kan reagere på det: mærke en kunde, tilføje en ordrekommentar, sende en intern e-mail, opdatere et metafelt - alt, hvad Shopify Flow kan gøre.
Denne vejledning beskriver hele forløbet - Sanity sender, Workflow Webhooks modtager og verificerer, Shopify Flow udfører - hvor Sanitys HMAC-signatur kontrolleres ved hver eneste anmodning, så kun Sanity kan starte din arbejdsgang.
Hvad du kan bygge
- Opdater metafeltet »Shopify«, når den tilhørende CMS-post ændres, så webshoppen forbliver synkroniseret.
- Send en e-mail til dit merchandising-team, når en landingsside bliver offentliggjort.
- Start en cache-opvarmningsarbejdsgang efter en indholdsudgivelse.
Typiske begivenheder, der skal sendes: et dokument offentliggøres, et dokument opdateres, et dokument slettes.
Før du går i gang
- Workflow Webhooks installeret på din Shopify-butik.
- Shopify Flow installeret, som kan hentes gratis fra App Store på Shopify.
- En konto på Sanity med tilladelse til at oprette webhooks.
Trin 1 - Opret webhook på Workflow Webhooks
- Åbn Workflow Webhooks -> Webhooks -> Opret webhook, og giv den et navn, du kan genkende i Shopify Flow, f.eks.
Sanity events. - Vælg HMAC under »Autentificering«.
- Vælg »Sanity« under »Signaturudbyder«. Appen udfylder overskriften, algoritmen, den signerede Payload og replay-vinduet for dig - der er ikke andet, du skal konfigurere.
- Lad feltet »Secret« være tomt foreløbig, og klik på »Gem«. Kopier den webhook-URL, der vises på siden.
Se Godkendelse for de øvrige godkendelsesmetoder og Kortlægning af payload og strømningsvariabler for at vælge, hvilke felter der skal sendes til Shopify Flow.
Trin 2 - Tilføj endpointet i Sanity
I Sanity skal du åbne API → Webhooks, oprette en GROQ-baseret webhook med den URL, du har kopieret, og indstille Secret.
Sådan finder du din Sanity-signeringsnøgle
Indstillingen »Secret« på den GROQ-baserede webhook.
Sanitys egen dokumentation om webhook-signaturer indeholder den nøjagtige ordlyd og skærmbilleder til din konto.
Indsæt den hemmelige nøgle i feltet »Secret« for webhooken på Workflow Webhooks og gem. Fra det øjeblik bliver hver eneste Sanity-levering verificeret, inden den når frem til Shopify Flow.
Hvad dette kontrollerer
| Hvad | Værdi |
|---|---|
| Signaturhoved | sanity-webhook-signature |
| Hvor underskriften er placeret | I værdien »v1« i den pågældende header, som indeholder »key=value«-par adskilt af kommaer |
| Hvad der er underskrevet | {timestamp}.{body} |
| Underskrift | HMAC-SHA256, base64url-kodet |
| Tidspunkt | Værdien »t« i signaturhovedet, angivet i Unix-millisekunder |
| Beskyttelse mod gentagelse | Ingen - denne afsender underskriver ikke et tidsstempel, så alle gyldige underskrifter forbliver gyldige |
| Hemmeligheden | Bruges som almindelig tekst. Indsæt den nøjagtigt, som afsenderen har angivet den |
I den signerede payload er {body} den rå anmodningstekst, byte for byte, og {timestamp} er ovenstående tidsstempel.
En anmodning, der ikke opfylder et af disse kriterier, afvises med fejlmeddelelsen »401«, registreres i »Historik og fejlfinding« og udløser aldrig en arbejdsgang.
Trin 3 - Opret arbejdsgangen »Shopify Flow«
- I »Shopify Flow« skal du oprette en arbejdsgang og vælge udløseren »Workflow Webhooks«.
- Tryk på »Optag begivenheder«, og send derefter en testbegivenhed fra Sanity (eller brug »Send test« i Workflow Webhooks), så Shopify Flow lærer, hvordan dine data ser ud.
- Hver eneste webhook, du ejer, udløser den samme Shopify Flow-trigger, så tilføj en første betingelse baseret på webhook-id’et for at sikre, at denne arbejdsgang kun omfatter Sanity. Id’et vises på webhook-siden.
- Tilføj dine handlinger - tag en kunde, tilføj en note, send en intern e-mail, opdater et metafelt.



Trin 4 - Test det fra start til slut
Udløs en reel begivenhed i Sanity. Under »Workflow Webhooks« → »History« bør du kunne se opkaldet med status »Success«. Hvis signaturen var forkert, får du i stedet en fejlmeddelelse med årsagen, og under »Bekræftelse af signerede webhooks« finder du en forklaring på signaturtesteren, der viser dig præcis, hvilket trin der mislykkedes.

Underskriften stemmer ikke overens▾
I denne ordre: hemmeligheden (den mest almindelige årsag - et ekstra mellemrum eller en nøgle fra det forkerte miljø), om afsenderen bruger en anden endpunkts hemmelighed, og om noget mellem Sanity og appen omskriver brødteksten. Signaturerne dækker de rå bytes, så en proxy, der omformaterer JSON, ødelægger dem. Signaturtesteren på webhook-siden viser den nøjagtige tekst, der blev signeret.
Jeg får en 401-fejl ved hver eneste forespørgsel▾
Kontroller, at webhookens autentificering er indstillet til HMAC med Sanity valgt som udbyder, at den hemmelige nøgle er udfyldt, og at Sanity sender data til URL’en nøjagtigt som angivet i appen, inklusive koden i slutningen.
Der vises intet under »Historik«▾
Anmodningen blev aldrig modtaget. Tjek URL’en igen i Sanity, og se i Sanitys egen leveringslog, hvilket svar systemet modtog. En fejlmeddelelse af typen »404« betyder, at webhooken er forkert eller slettet, mens en fejlmeddelelse af typen »429« betyder, at du har overskredet din abonnements grænse for antallet af opkald - se Planer og anvendelse.
Arbejdsgangen kører for de forkerte begivenheder▾
Hver eneste webhook i din butik udløser den samme Shopify Flow-trigger. Tilføj en betingelse baseret på webhook-id’et som det første trin i arbejdsgangen, eller indsnæv de begivenheder, du sender fra Sanity.
Relateret
- Bekræftelse af signerede webhooks - alle udbydere, vi verificerer, og hvordan man beskriver en, som vi ikke verificerer.
- Kortlægning af payload og strømningsvariabler - at udtrække de rigtige felter fra Payloaden og overføre dem til Shopify Flow.
- Beskyttelse mod dobbeltlevering - hvad der sker, når Sanity forsøger at levere igen.
- Historik og fejlfinding - loggen over alle forespørgsler, med mulighed for afspilning.

