Utvikler-API, MCP, GitHub og utløsersimulering
Simuler utløsere, administrer nøkler og koble til GitHub for å bruke tilpasset utløserkode via REST API eller MCP for Shopify Flow.
Du kan se gjennom utløserne dine, slå dem på eller av, lese hendelseshistorikken og simulere en utløser fra din egen kode eller fra en AI-assistent. Workflow Trigger Extensions stiller et REST-API og en MCP-server til rådighet, og kan kobles til et GitHub-repositorium slik at den tilpassede utløserkoden din blir underlagt versjonskontroll. Alle tre administreres på utviklersiden.
Simulering av en utløser
Å teste en Shopify Flow-arbeidsflyt innebærer vanligvis å gjennomføre den virkelige handlingen i butikken din - å redigere et produkt, legge inn en bestilling eller vente på en avstemning. Simulering eliminerer denne ventetiden: Velg en utløser, pek den mot en ressurs, så utløses den som om den virkelige hendelsen nettopp hadde funnet sted.
To måter å kjøre den på:
- I appen. Åpne en hvilken som helst hendelse i Hendelseshistorikk og velg Simuler på nytt. Da utløses akkurat den samme hendelsen på nytt.
- Via API eller MCP, ved hjelp av en ressurs-ID eller en tidligere hendelse.
Simuleringen er bevisst tro mot virkeligheten. Den oppretter ikke en «snarvei»-payload - den går gjennom den samme prosessen som en ekte Shopify-webhook gjør, så det arbeidsflyten din mottar, er nøyaktig det samme som den ville ha mottatt i produksjonsmiljøet.
curl -X POST https://shopify.workflow-trigger-extensions.app/api/v1/triggers/product-update-trigger/simulate \
-H "Authorization: Bearer ftk_your_key_here" \
-H "Content-Type: application/json" \
-d '{"resourceId":"gid://shopify/Product/123456789","dryRun":true}'En testkjøring validerer utløseren, løser emnet og viser nyttelasten - uten å utløse noe. Fjern dryRun for å utløse hendelsen på ordentlig. Du kan også sende inn {"fromHistoryId":"456"} for å utløse en tidligere hendelse på nytt, i stedet for å opprette en ny.
Utløsere som styres av polling i stedet for en webhook, kan ikke simuleres; de rapporterer simulatable: false i utløserlisten.
API-nøkler
Opprett en nøkkel på utviklersiden og velg tilgangsnivå:
- Skrivebeskyttet - vise utløsere og deres status, lese hendelseshistorikk, statistikk og tillatelser.
- Lese og skrive - samt slå utløsere på og av.
- Les, skriv og kjør - du kan også simulere utløsere og teste tilpasset utløserkode.
Den fullstendige nøkkelen vises én gang, ved opprettelsen. Nøklene lagres i hashform og kan tilbakekalles når som helst. Send den som et «Bearer»-token:
Authorization: Bearer ftk_your_key_here
Simulering ligger på et eget nivå av den ovennevnte grunnen: den kjører automatiseringene dine i virkeligheten, så en nøkkel som brukes til vanlige avlesninger kan ikke utløse dem.

REST-API
| Metode | Sti | Nivå | Formål |
|---|---|---|---|
| HENT | /api/v1 |
ingen | API-indeks - bekrefter at API-et er oppe og går |
| HENT | /api/v1/me |
les | Sjekk autorisasjonen og se nivået på nøkkelen din |
| HENT | /api/v1/triggers |
les | Hver utløser, med tilstanden for nettbutikken din |
| HENT | /api/v1/triggers/:handle |
les | En utløser i detalj |
| PUT | /api/v1/triggers/:handle |
skrive | Slå en utløser på eller av |
| PUT | /api/v1/triggers |
skrive | Slå mange på eller av i ett oppkall |
| INNLEGG | /api/v1/triggers/:handle/simulate |
utføre | Simulere en utløser |
| HENT | /api/v1/triggers/custom |
les | Dine egne tilpassede utløsere, med tilhørende kode |
| HENT | /api/v1/triggers/custom/:handle/test |
les | Hendelsen «Innhentet prøve» for en tilpasset utløser |
| INNLEGG | /api/v1/triggers/custom/:handle/test |
utføre | Kjør tilpasset utløserkode uten å lagre eller utløse den |
| HENT | /api/v1/history |
les | Liste over utløsende hendelser |
| HENT | /api/v1/history/:id |
les | Hent én hendelse, med tilhørende nyttelast |
| HENT | /api/v1/stats |
les | Totaltall, suksessrate, fordeling etter status |
| HENT | /api/v1/permissions |
les | Hvilke datatillatelser du har gitt, og hva hver av dem gir tilgang til |
GET /api/v1/triggers er nyttig når du skal konfigurere: For hver utløser viser den hvilken tillatelse den trenger, om tillatelsen er gitt, om utløseren er aktivert, og hvor i appen du kan administrere den.
Slå utløsere på og av
PUT brukes i stedet for PATCH fordi anropet er idempotent - å gjenta det etter en tidsavbrudd vil ikke føre til at noe blir anvendt to ganger, noe som er viktig når en assistent styrer API-et.
curl -X PUT https://shopify.workflow-trigger-extensions.app/api/v1/triggers/order-tags-added-trigger \
-H "Authorization: Bearer ftk_your_key_here" \
-H "Content-Type: application/json" \
-d '{"enabled":true}'Å aktivere gir aldri en tillatelse. Hvis utløseren trenger en tillatelse du ikke har gitt, gjennomføres anropet likevel, og du får vite nøyaktig hva som mangler og hvor du skal gi tillatelsen:
{
"enabled": true,
"scopeGranted": false,
"missingScopeLabels": ["Order Data Access"],
"permissionsUrl": "https://admin.shopify.com/store/.../app/permissions?permission=read_orders",
"warning": "Enabled, but this trigger cannot fire until Order Data Access is granted."
}
Den lenken åpner siden «Tillatelser» og ruller direkte til det kortet du trenger.
Legg til "sync": true for også å starte en datasynkronisering, slik at utløseren virker på poster som allerede finnes, i stedet for bare på de som opprettes fra nå av.
For å endre flere på en gang, godtar PUT /api/v1/triggers enten en eksplisitt liste eller en hel kategori:
{ "enabled": true, "handles": ["order-tags-added-trigger", "order-note-changed-trigger"] }
{ "enabled": true, "category": "orders" }
Koble til GitHub
På utviklersiden kan du under fanen Tilkoblinger koble til et GitHub-repositorium for koden din Tilpassede utløsere. Endringene blir tilgjengelige for gjennomgang i en pull-forespørsel, du kan se hvem som har endret hva, og du kan tilbakestille en transformasjon som har sluttet å fungere.
Når du klikker på «Koble til», installeres GitHub-appen vår på den kontoen du velger. Du bestemmer selv hvilke repositorier appen skal ha tilgang til, og du kan når som helst trekke tilbake denne tilgangen via GitHub. Når du velger et repositorium, blir alle tilpassede utløsere du allerede har, umiddelbart lagt inn der, slik at det fra starten av samsvarer med appen, i stedet for at det fylles ut etter hvert.
| Hva du gjør | Hva skjer? |
|---|---|
| Opprett, rediger eller dupliser en utløser i appen | Filen er lagt inn i depotet ditt |
| Slette en utløser i appen | Filen blir fjernet fra arkivet ditt |
| Send inn en endring til den tilkoblede grenen | Koden for utløseren oppdateres i appen |
Hver utløser er én fil som er oppkalt etter sitt håndtak, og som inneholder nøyaktig den modulen du ser i redigeringsprogrammet - uten noe ekstra rundt den. Du kan altså åpne den i ditt eget redigeringsprogram, kjøre den og sjekke den med lint akkurat som enhver annen JavaScript-fil, og deretter bruke /test-endepunktet ovenfor til å kjøre den mot en ekte, registrert hendelse før du lagrer endringene.
Gå tilbake til en tidligere versjon
Du trenger ikke å kunne bruke Git for å angre en endring. Når et arkiv er koblet til, viser utløserredigereren en «Versjon»-rullegardinmeny som viser alle tidligere versjoner av den aktuelle filen, med dato og forfatter. Velg en av dem, så lastes den inn i redigereren som en ulagret endring, slik at du kan lese den først - det er først når du lagrer den at den blir gjenopprettet som en ny commit.
Endring eller frakobling
Endre repositorium fører deg tilbake til valgmenyen uten å endre installasjonen. Koble fra opphever installasjonen på GitHub og fjerner den også her - navnet sier altså alt. Administrer tillatelser åpner installasjonsinnstillingene på GitHub, der du kan legge til eller fjerne repositorier.
Testing av tilpasset utløserkode
Hvis du lagrer den tilpassede utløserkoden i et arkiv og redigerer den i din egen editor, kan du kjøre den på den innsamlede eksempelhendelsen uten å lagre den i appen først.
curl -X POST https://shopify.workflow-trigger-extensions.app/api/v1/triggers/custom/my-trigger/test \
-H "Authorization: Bearer ftk_your_key_here" \
-H "Content-Type: application/json" \
-d "$(jq -Rn --rawfile c flow-triggers/my-trigger.js '{code:$c}')"Du får tilbake det som vises på appens «Test»-knapp: om den ville blitt utløst, utdataobjektet, linjene i ctx.log og kjøretiden.
Ingenting utløses og ingenting lagres - ingen arbeidsflyt kjører, ingen hendelser registreres, ingen kvoter brukes, og den lagrede koden forblir uendret. Det er trygt å kjøre denne ved hver lagring fra en filovervåker. Se Tilpassede utløsere for den fullstendige arbeidsflyten.
MCP-server
Fanen MCP på utviklersiden viser serverens URL og en tilkoblingskommando som er klar til å kopieres, for Claude, Cursor, VS Code, Gemini CLI og andre. Verktøyene speiler REST-endepunktene, og verktøysettet avhenger av nøkkelens nivå - en skrivebeskyttet nøkkel gir ikke tilgang til verktøyene for skriving eller kjøring i det hele tatt.
| Verktøy | Nivå | Hva den gjør |
|---|---|---|
list_triggers |
les | Hver utløser og dens tilstand |
list_custom_triggers |
les | Dine egne tilpassede utløsere, med tilhørende kode |
get_custom_trigger_sample |
les | Den registrerte hendelsen som en tilpasset utløser tester mot |
list_history |
les | Nylige utløsende hendelser |
get_event |
les | En hendelse, inkludert dens nyttelast |
get_stats |
les | Samlet statistikk |
get_permissions |
les | Tildelte tillatelser og hva de gir tilgang til |
get_trigger |
skrive | En utløser i detalj |
set_trigger |
skrive | Slå en utløser på eller av |
set_triggers_bulk |
skrive | Slå flere på eller av samtidig |
simulate_trigger |
utføre | Utløs en trigger når det er behov for det |
test_custom_trigger |
utføre | Kjør tilpasset utløserkode uten å lagre eller utløse den |
Det er dette som gjør en assistent virkelig nyttig: den kan gi en oversikt over hva som finnes, forklare hva en utløser trenger, slå den på, utløse en testhendelse, lese opp resultatet - og for tilpassede utløsere, omskrive koden og teste den - uten at du trenger å forlate samtalen.
Hvordan opplysningene dine beskyttes
Hendelsesdata returneres med personopplysninger maskert: e-postadresser, telefonnumre, kortnumre og felt med personnavn erstattes med ***. Shopify-ressurs-ID-er og forretningsfelt beholdes uendret, slik at dataene fortsatt er brukbare.
Maskeringen gjelder feltnavn og verdimønstre, så den gir en viss beskyttelse, men er ikke en garanti - personopplysninger i et fritekstfelt kan fortsatt komme gjennom. Feilmeldinger blir også renset for interne diagnostiske opplysninger før de sendes ut fra serveren.
GitHub-tilkoblingen lagrer ingen påloggingsopplysninger som kan lekke: kun installasjons-ID-en lagres, og tilgang til repositoriet skjer via et token som genereres ved behov og utløper innen en time.
Neste trinn
- Tilpassede utløsere - lag din egen utløser med noen få linjer JavaScript.
- Planer og bruk - hva som regnes som en hendelse, og hvordan kvoten fungerer.
- Introduksjon til Workflow Trigger Extensions - hvordan utløsere fungerer og hvordan man aktiverer dem.
Ratebegrensninger
REST-API-et og MCP-serveren deler ett budsjett per API-nøkkel.
- 300 forespørsler per 60 sekunder per nøkkel, som et fast tidsvindu.
- Kall på utførelsesnivå tildeles et sekundært, strammere budsjett på 60 per time. De bruker begge deler, så en serie utførelser tærer også på den felles kvoten. For denne appen betyr det å simulere en utløser og kjøre tilpasset utløserkode - begge deler setter virkelig i gang arbeidsflytene dine.
- Det er det samme for alle abonnementer. Det er målingene i abonnementet ditt som utløser hendelser, ikke API-anrop, så en oppgradering fører ikke til at disse tallene øker.
- Ved behandling av svar returneres HTTP 429. Vent litt og prøv på nytt, helst med eksponentiell ventetid.
- Hvis cachen vår er midlertidig utilgjengelig, vil begrenseren gå i åpen stilling i stedet for å blokkere integrasjonen din.
Innkommende Shopify-webhooks er ikke underlagt noen hastighetsbegrensning
Vi begrenser ikke antallet webhooks som Shopify sender oss - de mottas slik de kommer inn og settes i kø. Grensen er antall hendelser som er inkludert i abonnementet ditt i løpet av en 30-dagers periode.
En ting det er verdt å vite hvis du skriver egendefinerte utløsere: Koden din kjøres for hver hendelse i emnet den lytter til, og hver kjøring teller som én hendelse - også de du filtrerer bort ved å returnere null. Det koster like mye som den innebygde utløseren ville gjort for den samme hendelsen.
Shopify
Dette er Shopifys begrensninger for Shopifys API-er, ikke våre. De gjelder hva denne appen (og arbeidsflytene dine) kan gjøre på Shopify-siden, og du kan komme til å støte på dem i en stor nettbutikk, selv om du holder deg godt innenfor våre egne begrensninger.
- Inndatamatriser er begrenset til 250 elementer i alle Shopify-API-er. En forespørsel med en større matrise blir avvist.
- Paginering stopper ved 25 000 objekter. Antallene er nøyaktige opp til 25 000; over dette tallet returnerer Shopify
25001, som betyr «mer enn 25 000». Hvis du trenger å gå dypere, må du filtrere først. - GraphQL Admin API måles ut fra den beregnede kostnaden per forespørsel, i poeng per sekund, og taket avhenger av butikkens Shopify-abonnement:
| Shopify-abonnement | Poeng per sekund |
|---|---|
| Standard | 100 |
| Avansert | 200 |
| I tillegg | 1000 |
| Enterprise (handelskomponenter) | 2000 |
Storefront-API-et har ingen begrensninger på antall forespørsler.
Fullstendig informasjon: Begrensninger på Shopify-API
