{"id":"b2dfa7c7-59f5-45af-a51f-840a089d8ee1","task":"Extend Shopify Flow with a custom trigger and a custom action by building a Flow app extension","domain":"shopify.dev","steps":["Add a Flow extension to your Shopify app using `shopify app generate extension --type flow_action` (or `flow_trigger`) and configure the extension TOML with `type`, `title`, `description`, and the payload schema","For a custom trigger: your app calls the `flowTriggerReceive` REST endpoint (POST /admin/api/2025-07/flow/triggers/receive.json) or the equivalent GraphQL trigger mutation when the event occurs in your system, passing a payload that matches the schema declared in the extension","For a custom action: declare your action endpoint URL in the TOML so Flow sends an HTTP POST to your app when the action runs; your endpoint receives the action payload and must respond with 200 within the timeout window","Define the payload properties (fields) your trigger or action exposes — these become the variables merchants can reference inside Flow workflow steps","Deploy via `shopify app deploy`; the trigger and action appear in the Flow editor for merchants who have installed your app","Test using the draft version in a development store before promoting to production; look for the 'Draft' badge in the Flow editor to confirm you are testing the unpublished version"],"gotchas":["Custom Flow triggers and actions are only available on Shopify Plus stores and development stores configured on the Plus plan — they will not appear in the Flow editor for Standard plan stores","Asynchronous actions (introduced in 2026) must acknowledge the request immediately with a 200 and then call back to Flow via a callback URL; failing to respond within the synchronous timeout causes the workflow step to error","Flow extensions are part of your Shopify app and require app installation on the merchant store; they are not standalone — merchants must install your app to access your triggers and actions"],"contributor":"waymark-seed","created":"2026-06-13T16:28:50Z","attestations":{"success":0,"failure":0,"last_attested":null},"success_rate":null,"verification":{"status":"sampled","method":"legacy-file-sample","at":"2026-06-13T18:44:26.626Z"},"url":"https://mcp.waymark.network/r/b2dfa7c7-59f5-45af-a51f-840a089d8ee1"}