Shopify Custom Packaging: The Hidden API Gap Impacting Developers & Merchants
Hey everyone! As your friendly Shopify migration expert and community analyst at Shopping Cart Mover, I spend a lot of time sifting through discussions that truly matter to store owners and developers alike. Recently, a fascinating thread popped up on the Shopify forums that really hit home for anyone building apps or custom integrations, especially around shipping and fulfillment. It was titled “REQUEST: GraphQL call for Custom Packaging” – and boy, did it unpack a lot more than just a simple request!
The original post, kicked off by EdEstes, highlighted a pretty significant challenge: the inability to programmatically read a store’s pre-configured custom packaging dimensions and weights via the Shopify Admin API. Think about it – if you’re building an app that helps merchants manage shipping, calculate rates, or print labels, you’d naturally want to pull the packaging info they’ve already set up in their Shopify Admin, right? You’d want Shopify to be the “source of truth.”
The Elusive Custom Packaging Data: A Developer's Dilemma
Merchants using Shopify often define custom package sizes in their “Shipping and Delivery” settings. These custom packages are crucial for accurate shipping rate calculations, efficient packing, and streamlined fulfillment. For developers building apps that integrate with Shopify’s shipping ecosystem – from advanced shipping calculators to label printing services – the logical first step is to access this existing data.
EdEstes initially noted that even Shopify’s own AI help system seemed to confirm what many suspected: while there are GraphQL mutations for managing shipping packages, there’s no dedicated query to list or fetch these saved packages. This means if a merchant has already defined their “Small Box” or “Custom Poly Mailer” in their Shopify settings, your app can’t simply ask Shopify, “Hey, what packages does this store have?”
Diving Deep into Shopify's GraphQL Admin API: The Missing Piece
This led to a fantastic discussion where community members like lumine, cuongnm_trooix, and Maximus3 really dug into the nitty-gritty of the Admin GraphQL API. And what they found was even more intriguing – and frankly, a bit more problematic – than just a simple read operation.
The Mutation Mirage: Operations Without Discovery
The current Admin GraphQL API does expose mutations like shippingPackageUpdate, shippingPackageDelete, and shippingPackageMakeDefault. These operations are designed to modify or remove existing shipping packages. However, there's a critical catch: all three require the ID of an existing shipping package as a mandatory argument.
The Missing ‘Create’ and ‘Read’
Contrary to what some AI systems might suggest, a public shippingPackageCreate mutation does not exist in the Shopify Admin GraphQL API. More importantly, there is no corresponding query to retrieve or enumerate the shipping packages already configured on a shop. This creates an odd and frustrating situation: the API provides ways to interact with shipping packages, but no apparent documented way to discover the merchant’s existing packages and their IDs.
As confirmed by Shopify staff in June 2026 (as referenced in the forum thread), there is still no public Admin API query to list a shop’s configured shipping packages, and shippingPackageId remains write-only. This means the IDs required for updates, deletions, or making a package default cannot be programmatically obtained from Shopify itself.
Why This API Gap Creates Real-World Headaches
This limitation isn't just a minor inconvenience; it presents significant challenges for developers and merchants alike, especially in the context of app integrations and store migrations.
For App Developers: Onboarding and Data Integrity
-
Onboarding Existing Stores: Many apps integrate with existing Shopify stores that already have years of operational data, including custom packaging. The common “Sync & Store Locally” strategy – where an app records data it creates or updates – completely fails here. If an app can’t read the baseline data, it cannot sync it, forcing merchants to manually re-enter information.
-
Maintaining Source of Truth: Shopify is designed to be the central hub for merchant data. This API gap forces apps to maintain a separate, duplicate list of packaging data, leading to potential inconsistencies, errors, and increased complexity in data management.
-
Complex Integrations: Shipping rate calculators, fulfillment services, and advanced label printing solutions rely heavily on accurate package dimensions and weights. Without access to the merchant’s configured packages, these apps either have to make assumptions, require manual input, or simply cannot function optimally.
For Merchants: Frustration and Inefficiency
-
Redundant Data Entry: Merchants expect their apps to “just work” with their existing store setup. Having to re-enter packaging dimensions into an app that should be able to read them from Shopify is a frustrating and inefficient experience.
-
Inconsistent Workflows: If an app can’t respect the merchant’s saved packages, it can lead to discrepancies in shipping calculations or packing instructions, potentially causing overcharging, undercharging, or fulfillment errors.
Impact on Migrations and Integrations
For businesses undergoing a Shopify migration or integrating new systems with their existing Shopify store, this data gap becomes a significant hurdle. Seamless data transfer and synchronization are paramount for a smooth transition. If custom packaging data cannot be programmatically exported or imported, it adds a manual, error-prone step to an otherwise automated process.
Navigating the Limitations: Current Workarounds (and their Flaws)
Given the API limitations, developers have resorted to less-than-ideal workarounds:
-
Manual Re-entry: The most basic and least desirable option, requiring merchants to manually input their package dimensions into each integrating app.
-
App-Managed Metaobjects: Some developers store package data within their app’s own Shopify metaobjects. While this keeps the data within Shopify, it still duplicates information that already exists in the Admin settings and requires the merchant to enter it twice.
-
Direct
PackageInfoInputfor Labels: For the specific use case of purchasing shipping labels, theShippingLabelPurchaseInput.packageInfomutation allows developers to providePackageInfoInputdirectly (dimensions, weight, or carrier package codes). This means you can buy labels without needing a saved package ID, but it doesn't solve the general problem of respecting a merchant's pre-configured settings for packing logic. -
The “Virgin Store” Exception: The “Sync & Store Locally” strategy is only viable if the app is the sole creator of packaging data from scratch, typically with new stores that have no existing custom packages defined.
Advocating for Change: How to Push for This Feature
The consensus from the community thread is clear: a supported query that exposes a shop’s configured shipping packages – including ID, name, dimensions, weight, type, and default status – is a critical missing piece. This would allow Shopify to truly be the source of truth for this vital data.
If you’re a developer or merchant impacted by this, here’s how you can help get this feature prioritized by the Shopify engineering team:
-
Submit via Partner Dashboard: If you are a registered Shopify Partner, raise an API Feature Request directly via your Partner Dashboard support channel, specifying the use case: “Need a public GraphQL shippingPackages query for existing store onboarding.”
-
Shopify Dev Discord / GitHub Community: Posting this specific use case in the official Shopify Developers Discord or the shopify-api-node / GraphQL API GitHub feedback repo often gets direct visibility from Shopify Developer Advocates.
Conclusion: A Call for a More Complete API
The ability to programmatically read custom packaging data is not just a “nice-to-have”; it’s essential for building robust, seamless integrations that truly respect a merchant’s existing setup and streamline their operations. A comprehensive API is the backbone of a thriving e-commerce ecosystem, and this particular gap highlights an area where Shopify can significantly empower its developer community and enhance the merchant experience.
At Shopping Cart Mover, we understand the intricacies of Shopify development and the challenges developers face. We’re committed to staying on top of these issues and helping businesses navigate the complexities of e-commerce. If you're considering starting your own e-commerce journey or migrating to a more robust platform, Shopify offers an unparalleled foundation, and we're here to help you make the most of it.