{
  "slug": "shopify-app-toml-webhook-subscriptions-accept-an-optional-name-c5bf7c44ad46",
  "title": "shopify.app.toml webhook subscriptions accept an optional name",
  "tools": [
    "shopify"
  ],
  "tags": [
    "agent"
  ],
  "introduced_at": "2026-01-20T15:20:12.000Z",
  "announced_at": "2026-01-20T15:20:12.000Z",
  "effective_at": null,
  "date_basis": "source-publication",
  "status": "unknown",
  "how": {
    "incantation": "When configuring a webhook subscription in `shopify.app.toml`, add a non-empty `name` to label it; then run `shopify app deploy` to deploy the configuration. [Webhook docs](https://shopify.dev/docs/apps/build/webhooks/subscribe)",
    "examples": [
      "[[webhooks.subscriptions]]\nname = \"products-create\"\ntopics = [\"products/create\"]\nuri = \"https://example.com/webhooks\"\n\nshopify app deploy"
    ],
    "gotchas": [
      "Version: 3.89.0",
      "name: Subscription label; Shopify echoes it in the `X-Shopify-Name` header. The current docs specify alphanumeric characters, hyphens, or underscores, up to 50 characters.",
      "topics (required): One or more webhook topic names to subscribe to.",
      "uri (required): Delivery destination: HTTPS URL, AWS EventBridge ARN, or Google Pub/Sub URI.",
      "Prerequisite: Each subscribed topic requires its corresponding access scope.",
      "The `name` field is optional and must be a non-empty string if provided.",
      "Docs conflict: The current docs limit `name` to 50 characters and allow only alphanumeric characters, hyphens, and underscores; the 3.89.0 release note only specifies a non-empty string. These added constraints are documented for a later/current version and are not applied here."
    ]
  },
  "why_it_matters": "Configure a webhook subscription with a name in an app's `shopify.app.toml`.",
  "sources": [
    "https://github.com/Shopify/cli/releases/tag/3.89.0",
    "https://github.com/Shopify/cli/pull/6576",
    "https://shopify.dev/docs/apps/build/webhooks/subscribe"
  ],
  "rank": 0.94025,
  "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-56523e356e22eeda-2:gate",
    "evidence_hash": "c65af3439d36bd30c56f3f2cba378a1c67d5d3ac353bdac2687bd0f945ab0140"
  },
  "review": {
    "draft_hash": "bc7f342bcfb567f828aa211972e110bb1f5cd66a85821096a9ab22c7cabad7bc",
    "reviewer": "publication-gate",
    "reviewed_at": "2026-10-07T00:00:00.000Z",
    "decision": "wave2a-20261017:gate",
    "reason": "3 of 3 judge runs approved with p_yes >= 0.9 (mean 0.94 >= 0.9; 2 needed) and Jev gave 0.74 (>= 0.6 needed)."
  }
}
