Shopify Custom Packaging: The API Read Gap & What It Means For Your Store

A recent Shopify community discussion caught my eye, highlighting a significant challenge for anyone integrating with existing Shopify stores: accessing custom shipping package information via the API.

Developer EdEstes kicked off the conversation, noting a surprising gap: there's no straightforward GraphQL call to simply read custom packaging details configured in the Shopify admin. The community quickly confirmed this isn't just a missing query, but a fundamental API limitation.

The API Gap: No Public Read for Custom Packages

While Shopify's AI help system might mention mutations like shippingPackageCreate, shippingPackageUpdate, and shippingPackageDelete, the reality is stark. The shippingPackageCreate mutation isn't exposed in the public GraphQL Admin API. As Maximus3 pointed out, existing update/delete operations require a package ID, but there's no documented way to discover these IDs.

Lumine further explained that the ShippingPackage object type itself isn't publicly available. This means no public call produces a shipping package ID, making existing update/delete mutations effectively unreachable without an ID from an external source.

Cuongnm_trooix shared confirmation from Shopify staff as recently as June 2026: no public Admin API query lists configured shipping packages, and shippingPackageId remains write-only.

Impact on Existing Stores & App Integrations

EdEstes highlighted the core problem: the desire for "Shopify to be the source of truth." When integrating with an existing store, apps should respect pre-configured custom packages, not force merchants to re-enter data.

The common "Sync & Store Locally" workaround (where an app records packages it creates) fails for onboarding existing stores. As M.Rahman explained, there's "no baseline data to sync from." Shopify's Admin UI uses internal APIs not publicly exposed, hindering integration.

Workarounds & Limitations Today

1. Sync & Store Locally (for new packages)

  • If your app creates custom packages, record their ID, dimensions, and weight in your own database. Ideal for new stores or when your app is the primary manager.

2. Inline Package Info for Label Purchase

  • For purchasing shipping labels, you're not blocked! The ShippingLabelPurchaseInput.packageInfo field allows inline definition of package dimensions and weight. No saved package ID is needed; however, you can't inherit existing merchant settings.

3. Manual Re-entry / Metaobjects (last resort)

  • If you absolutely need to respect existing packing logic, merchants might have to manually re-enter package data into your app. Lumine suggested storing this in a shop metaobject — centralizing data but still involving duplication.

Here's a snippet cuongnm_trooix shared:

{ __type(name: "QueryRoot") { fields { name } } }

Advocating for Change: Your Voice Matters

The community agrees: a supported read/list endpoint for custom shipping packages is crucial. We need a public GraphQL query exposing the shop's configured packages (ID, name, dimensions, weight, type, default status). This would finally establish Shopify as the true source of truth for this data.

M.Rahman outlined steps for prioritizing this feature:

  1. Submit via Partner Dashboard: As a Shopify Partner, raise an API Feature Request via your Partner Dashboard support channel. Specify: "Need a public GraphQL shippingPackages query for existing store onboarding."
  2. Shopify Dev Discord / GitHub Community: Post your specific use case in the official Shopify Developers Discord or the shopify-api-node / GraphQL API GitHub feedback repository for direct visibility.

It's frustrating when critical data exists in Shopify but isn't publicly accessible. By raising our voices collectively, we can help push for these essential API improvements. Let's keep advocating for a more complete and developer-friendly Shopify platform!

Share:

Start with the tools

Explore migration tools

See options, compare methods, and pick the path that fits your store.

Explore migration tools