Udvikler-API og MCP
Alt, hvad du administrerer i appen, kan du også administrere via din egen kode eller via en AI-assistent. Workflow Webhooks stiller to grænseflader til rådighed: et REST-API og en MCP-server. Begge findes på udviklersiden.
API-nøgler
Begge tjenester bruger en API-nøgle til autentificering. På siden »Udvikler« skal du under »API-nøgler« oprette en nøgle og vælge dens adgangsniveau:
- Skrivebeskyttet - vis webhooks, se historik over aktiveringer og statistikker.
- Læs og skriv - samt opret, opdater og slet webhooks.
- Læs, skriv og udfør - du kan også køre en testkørsel eller gentage en tidligere kørsel.
Den fulde nøgle vises én gang, når den oprettes. Kopier den derefter, og opbevar den sikkert; du kan ikke se den igen. Nøgler gemmes i hashform, aldrig i klartekst, og du kan til enhver tid tilbagekalde en nøgle.
Send nøglen som et »Bearer«-token ved hver anmodning:
Authorization: Bearer fwk_your_key_hereHvorfor »execute« er et separat niveau
Når du udløser en webhook, udløser det faktisk dine Shopify Flow-arbejdsgange, og disse arbejdsgange kan ændre din butik - f.eks. ved at mærke ordrer, sende e-mails eller opdatere lagerbeholdningen. Ved at holde dette på et separat niveau sikrer du, at en nøgle, du giver til et script eller en AI-assistent til det daglige arbejde, ikke ved et uheld kan udløse dine automatiseringer. Uddel som standard læsenøgler, og opret kun en eksekveringsnøgle, hvor du virkelig har brug for en.
Basis-URL
API’en og MCP-serveren hostes fra et dedikeret værtsnavn:
https://shopify.workflow-webhooks.appREST-API’en findes altså på https://shopify.workflow-webhooks.app/api/v1, og MCP-serveren på https://shopify.workflow-webhooks.app/api/mcp. På udviklersiden vises begge med en knap til kopiering.
Dette værtsnavn betjener udelukkende /api - den indlejrede administrationsgrænseflade forbliver på sin egen Shopify-registrerede URL. Ved at holde dem adskilt sikres det, at den adresse, du indsætter i et script, en CI-opgave eller en AI-klient, er stabil og uafhængig af appens indlejring.
REST-API
Basis-URL’en vises på siden »Udvikler«. De vigtigste slutpunkter:
| Metode | Sti | Niveau | Formål |
|---|---|---|---|
| HENT | /api/v1 |
ingen | API-indeks - bekræfter, at API’en er oppe |
| HENT | /api/v1/me |
læs | Kontroller godkendelsen, og se, hvilket niveau din nøgle har |
| HENT | /api/v1/webhooks |
læs | List of webhooks |
| INDLÆG | /api/v1/webhooks |
skrive | Opret een webhook |
| HENT | /api/v1/webhooks/:id |
læs | Få en webhook |
| PUT / PATCH | /api/v1/webhooks/:id |
skrive | Opdater en webhook |
| SLET | /api/v1/webhooks/:id |
skrive | Slet en webhook |
| INDLÆG | /api/v1/webhooks/:id/test |
udføre | Udfør en testkald |
| HENT | /api/v1/history |
læs | Listeoverblik |
| HENT | /api/v1/history/:id |
læs | Hent én anrop med payloaden |
| INDLÆG | /api/v1/history/:id/replay |
udføre | Gengiv en tidligere påkaldelse |
| HENT | /api/v1/stats |
læs | Samlet antal, succesrate, daglige serier |
| HENT | /api/v1/templates |
læs | Indbyggede webhook-skabeloner |
En hurtig kontrol af, om din nøgle virker:
curl https://shopify.workflow-webhooks.app/api/v1/me \
-H "Authorization: Bearer fwk_your_key_here"{ "authenticated": true, "shop": "your-store.myshopify.com", "level": "READ" }MCP-server
MCP-serveren gør det muligt for en AI-assistent (Claude, Cursor, VS Code, Gemini CLI og andre) at arbejde med dine webhooks i en samtale. På siden »Udvikler« viser fanen »MCP« serverens URL og en forbindelseskommando, der er klar til at blive kopieret, for hver klient, hvor din nøgle allerede er indsat.
Værktøjerne afspejler REST-endpunkterne, og værktøjssættet afspejler dit nøgleniveau: En skrivebeskyttet nøgle har slet ikke adgang til de værktøjer, der opretter, sletter eller udløser webhooks. Al godkendelse og datahåndtering foregår på serversiden.
Sådan beskyttes dine data
Der er to ting, du bør vide, før du bruger en automatiseringsløsning eller en AI-assistent til at tilgå denne API.
Din webhooks godkendelsestoken kan aldrig læses. Det token eller den signeringsnøgle, du har angivet for en webhook, kan på intet niveau læses via API’et eller MCP. Svarene angiver kun, om der er angivet et token (hasToken), men aldrig dets værdi. Du kan angive et nyt; du kan aldrig hente det gamle.
Personoplysninger i payloads er maskeret. Webhook-payloads stammer fra eksterne systemer og indeholder ofte oplysninger om kunder. Inden en invokationspayload forlader serveren, erstattes værdier, der ligner personoplysninger, med ***: e-mailadresser, telefonnumre, kortnumre og felter opkaldt efter en person (customerName, shippingAddress og lignende). Anmodningsheadere renses på samme måde som på appens historikskærm.
Denne maskering er omhyggelig, men udgør ingen garanti. Den virker på feltnavne og værdimønstre, så personoplysninger, der findes i et fritekstfelt - en note, en kommentar eller en meddelelsestekst - kan stadig komme frem. Betragt API-svar som potentielt indeholdende kundedata, og opbevar dem i overensstemmelse hermed.
Test og gentagelser tæller ikke med i din kvote. De anmodninger, du sender via API’et, registreres som test, så de tæller ikke med i dit abonnements månedlige kvote. Gentagelser tæller heller ikke med, da den oprindelige anmodning allerede er talt med.
Næste skridt
- Introduktion til »Workflow Webhooks« - hvordan webhooks og payload-mapping fungerer.
Hastighedsbegrænsninger
REST-API’et og MCP-serveren deler ét budget pr. API-nøgle.
- 300 anmodninger pr. 60 sekunder pr. nøgle, som et fast tidsvindue.
- Opkald på eksekveringsniveau tildeles et sekundært, strammere budget på 60 pr. time. Begge dele forbruges, så en bølge af eksekveringer trækker også på den fælles kvote. For denne app betyder det, at man tester et webhook og afspiller en historikpost - begge dele kører faktisk dine Shopify Flow-arbejdsgange.
- Det er det samme på alle planer. Dit abonnement tæller antallet af invokationer, ikke API-kald, så en opgradering øger ikke disse tal.
- Ved gennemgang af svar returneres HTTP 429. Vent lidt, og prøv igen - helst med eksponentiel ventetid.
- Hvis vores cache kortvarigt er utilgængelig, fungerer begrænsningsmekanismen på en måde, så den åbner i stedet for at blokere din integration.
Indgående webhooks er ikke underlagt nogen hastighedsbegrænsning
Det er værd at præcisere, da det er det spørgsmål, vi oftest får stillet: Vi begrænser ikke indgående webhook-leverancer. Vi sender dem videre, så snart de ankommer, uanset hvilke bølger dit kildesystem genererer - der er ingen begrænsning pr. sekund eller pr. minut fra vores side.
Den eneste begrænsning er din plans tilladte antal opkald på 30 dage. Når denne kvote er opbrugt, behandles yderligere opkald ikke længere, indtil perioden starter forfra, eller du opgraderer. Derudover gælder de begrænsninger, der er fastsat af Shopify: Shopify Flow har sine egne udførelsesbegrænsninger, og en trigger-payload er begrænset til 50 KB.
Shopify
Dette er Shopifys begrænsninger for Shopifys API’er, ikke vores. De gælder for, hvad denne app (og dine arbejdsgange) kan udføre på Shopify-siden, og du kan støde på dem i en stor butik, selvom du holder dig godt inden for vores begrænsninger.
- Indgangsarrayer er begrænset til 250 elementer på tværs af alle API’er på Shopify. En anmodning med et større array afvises.
- Paginering stopper ved 25.000 objekter. Tællingerne er nøjagtige op til 25.000; derover returnerer
Shopify25001, hvilket betyder »mere end 25.000«. Hvis du har brug for at gå dybere, skal du først filtrere. - GraphQL Admin API måles ud fra den beregnede forespørgselsomkostning, angivet i point pr. sekund, og det maksimale forbrug afhænger af butikkens »Shopify«-abonnement:
| Shopify plan | Point pr. sekund |
|---|---|
| Standard | 100 |
| Avanceret | 200 |
| Plus | 1000 |
| Enterprise (handelskomponenter) | 2000 |
Webshop API er ikke underlagt nogen hastighedsbegrænsning.
Alle detaljer: Shopify API-begrænsninger

