{
  "slug": "shopify-app-flow-trigger-lifecycle-callback-relative-urls-8dcdaa37ce2e",
  "title": "shopify app Flow trigger lifecycle callback relative urls",
  "tools": [
    "shopify"
  ],
  "tags": [
    "agent"
  ],
  "introduced_at": "2026-10-08T13:19:12.000Z",
  "announced_at": "2026-10-08T13:19:12.000Z",
  "effective_at": null,
  "date_basis": "source-publication",
  "status": "unknown",
  "how": {
    "incantation": "When the app hosts the Flow trigger lifecycle callback, set its `url` to a single-slash relative path; Shopify CLI resolves it against the dev tunnel during `app dev` and the HTTPS `application_url` during deploy. Implement the callback route, run `shopify app dev` and create a workflow using the trigger, then run `shopify app deploy`.",
    "examples": [
      "[[extensions]]\nname = \"My lifecycle callback\"\nhandle = \"my-lifecycle-callback\"\ntype = \"flow_trigger_lifecycle_callback\"\nuid = \"<generated-uid>\"\nurl = \"/flow/lifecycle-callback\"",
      "shopify app dev",
      "shopify app deploy"
    ],
    "gotchas": [
      "Version: 4.9.0",
      "url (required): Callback endpoint; use an absolute HTTPS URL or a relative path starting with one `/`. Relative paths resolve against the dev tunnel during `app dev` and `application_url` during deploy; the server must respond within five seconds with a `2xx` status.",
      "application_url (required): App configuration URL. Must be HTTPS when `url` is relative, so the path resolves to an HTTPS URL during deploy.",
      "Prerequisite: For a relative callback path, set an HTTPS `application_url` before deploying.",
      "Prerequisite: Configure the web server to receive the callback, verify its `x-shopify-hmac-sha256` header using the app client secret, and respond within five seconds.",
      "Prerequisite: Run `shopify app dev` from the app directory and select a dev store if prompted.",
      "Applies to Flow trigger lifecycle callback extensions.",
      "A corresponding route file must exist in `/app/routes`."
    ]
  },
  "why_it_matters": "Configure a Flow trigger lifecycle callback extension to call a route in the app during development and deployment.",
  "sources": [
    "https://github.com/Shopify/cli/releases/tag/4.9.0",
    "https://github.com/Shopify/cli/pull/8362",
    "https://shopify.dev/docs/apps/build/flow/track-lifecycle-events",
    "https://shopify.dev/docs/apps/build/cli-for-apps/test-apps-locally"
  ],
  "rank": 0.92024,
  "judge": {
    "publish": true,
    "judge_model": "codex-cli/gpt-6-luna+typesafe/jev-1.13.0",
    "prompt_version": "extract-v7+enrich-v2+judge-v2x3+jev-publish-v1"
  },
  "review_state": "approved",
  "provenance": {
    "run_id": "wave2a-20261017",
    "verdict_id": "wave2a-20261017:wave2a-20261017-ace6dac0a81fcc98-6:gate",
    "evidence_hash": "2be2cd26171dc505b293189ca2260f6b657c87e29250c8d3dad5dbd276d4532c"
  },
  "review": {
    "draft_hash": "11d068d32b405f7308522d17f0f83438188763bab48be2044614d84a29655c92",
    "reviewer": "publication-gate",
    "reviewed_at": "2026-10-08T13:19:12.000Z",
    "decision": "wave2a-20261017:gate",
    "reason": "2 of 3 judge runs approved with p_yes >= 0.9 (mean 0.92 >= 0.9; 2 needed) and Jev gave 0.66 (>= 0.6 needed)."
  }
}
