Building a Shopify integration in 2026 means GraphQL Admin API — no exceptions. The product and variant REST endpoints are deprecated, new API versions require GraphQL, and the GraphQL API surface is richer and better documented than REST ever was.
Key mutations for product operations
productUpdate (base product fields)
metafields array for custom attributes. Safe on existing products.productVariantsBulkUpdate (variant fields)
productVariantUpdate per variant.metafieldsSet (custom attributes)
Shopify API stack
| Operation | Correct mutation | Common mistake |
|---|---|---|
| Update product title + meta | productUpdate | productSet (destructive) |
| Update variant price | productVariantsBulkUpdate | productVariantUpdate (serial calls) |
| Set custom attributes | metafieldsSet | productUpdate.metafields (only for simple cases) |
| Update inventory | inventorySetOnHandQuantities | inventoryAdjustQuantities (relative) |
| Add product to collection | collectionAddProducts | Smart collection rules (async) |
| Upload product image | productCreateMedia | fileCreate (different object type) |
productSet on an existing product. This mutation replaces the entire product including variants — it can delete variant data that is not included in the input. Use productUpdate for existing products.Rate limit best practices
For bulk product operations:
- Use
bulkOperationRunQueryfor read operations on large catalogs (async, no rate limit pressure) - For writes, batch mutations:
productVariantsBulkUpdateaccepts up to 100 variants per call - Always read
extensions.cost.throttleStatusin responses and back off whencurrentlyAvailableis below 20 - On Shopify Plus, request a rate limit increase via the Partner Dashboard if your integration needs it
Seegea handles all Shopify GraphQL API calls on your behalf — rate limits, retries, pagination, and bulk operations are managed transparently. Created in France between Annecy and Chantilly.
See Seegea's Shopify API integration
30-min Google Meet · live catalog import via GraphQL Admin
