Orders Webhooks Now Deliver Subscription Selling Plan IDs Directly

Shopify’s latest webhook update adds a selling_plan_id field to order line items, letting developers identify subscription plans without extra API calls. Learn what changed, who it impacts, and how to adapt your apps today.

Orders Webhooks Now Deliver Subscription Selling Plan IDs Directly
7 sections

If you’ve built apps that react to new orders, you’ll appreciate the newest tweak to Shopify’s Orders webhook payloads. Starting with API version 2026-10, each line item now includes a selling_plan_id field that tells you exactly which subscription selling plan was applied—no extra Admin API lookup required.

What Changed

Previously, when an order contained a subscription line item, the webhook only sent basic line‑item data. To discover the selling plan (for example, a weekly delivery or a discounted tier), developers had to fire a second request to the Admin API, parse the subscription resource, and then match it back to the order. The new selling_plan_id field arrives straight in the webhook JSON, eliminating that round‑trip.

Who Is Affected

*Developers* – Any private or public app that subscribes to the Orders/create, Orders/updated, or Orders/delete webhooks and processes subscription data will see immediate benefits. The change is transparent for merchants; they continue to receive the same order information in their storefront or admin UI.

Version Requirements

The enhancement is only present in API version 2026-10 and later. If your app is still on an older version (e.g., 2026-07 or earlier), the webhook payload will not contain selling_plan_id and you’ll need to keep the existing lookup logic. Upgrading your app’s API version is the recommended path to take advantage of the new field.

Payload Example

A minimal snippet of the updated payload looks like this:

{\n "line_items": [\n {\n "id": 123456789,\n "selling_plan_id": 987654321\n }\n ]\n}

If the line item isn’t part of a subscription, selling_plan_id will be null, so you can safely check for truthiness before applying subscription‑specific logic.

Actionable Steps for Developers

  • Confirm API version – Verify that your webhook subscription is using 2026-10 or newer. You can set the version in the GraphQL or REST webhook registration call.
  • Update payload parsing – Replace any code that makes a secondary Admin API call for selling_plan_id with a simple property read, e.g., const planId = lineItem.selling_plan_id;.
  • Handle null values – Guard against null when the line item is a one‑time purchase. This prevents runtime errors in apps that assume a plan ID always exists.
  • Test in a sandbox – Trigger an order that includes a subscription product in a development store, inspect the webhook payload, and ensure your downstream logic behaves as expected.
  • Communicate to merchants – If your app surfaces subscription details to store owners (e.g., in an analytics dashboard), let them know the data will now appear faster and more reliably.
  • Why This Matters

    Reducing API calls not only speeds up order processing but also lowers your app’s rate‑limit consumption—crucial for high‑volume merchants. Faster data access translates to more timely notifications, accurate reporting, and a smoother customer experience for subscription buyers.

    Conclusion & Next Steps

    The addition of selling_plan_id to Orders webhook payloads is a small change with a big payoff. Update your webhook version, trim the extra lookup, and you’ll deliver leaner, faster integrations for merchants running subscription models. Need help migrating your app or testing the new payload? Reach out in the Shopify Community forums or drop a comment below—let’s get your integration humming.

    Tags
    Sources

    Related Articles

    Unlocking Fiscal Compliance: New fiscalDeviceIdentifier Field on PointOfSaleDevice

    Unlocking Fiscal Compliance: New fiscalDeviceIdentifier Field on PointOfSaleDevice

    Shopify’s 2026-10 API adds a fiscalDeviceIdentifier to PointOfSaleDevice, giving developers a reliable way to access a device’s tax‑registered identifier for in‑person fiscal workflows. Learn what changed, who it impacts, and how to implement it today.

    October 1, 20264 min
    Why metafieldInteger Is Gone: Migrating to metafieldInt in API 2027‑01

    Why metafieldInteger Is Gone: Migrating to metafieldInt in API 2027‑01

    Shopify’s 2027‑01 API drops the metafieldInteger collection condition in favor of metafieldInt. Learn what changed, who’s affected, and step‑by‑step how to update your queries, mutations, and value types before the upgrade.

    October 1, 20264 min
    Unlocking Rollout Visibility: New Admin GraphQL Queries and Webhooks for Shopify Apps

    Unlocking Rollout Visibility: New Admin GraphQL Queries and Webhooks for Shopify Apps

    Shopify’s latest Developer Changelog introduces Rollout queries and webhooks in the Admin GraphQL API, letting apps discover, monitor, and react to coordinated launches, experiments, and temporary events. Learn what changed, who needs to act, and how to integrate the new capabilities today.

    October 1, 20264 min
    How Discount Rollouts Change Your Shopify Discount Strategy

    How Discount Rollouts Change Your Shopify Discount Strategy

    Shopify’s 2026‑10 API now lets merchants bundle discounts into Rollouts, giving you granular control over launch timing, buyer allocation, and channel availability. Learn what changed, who is affected, and how to update your apps and stores to take full advantage.

    October 1, 20264 min