Fixed prices, paid once·Written replies within one working day
CheckoutLoom.

Marketing and retentionWin shoppers back

View all marketing →

Support and order careAnswer faster

View all support →

Product contentBetter listings

View all product content →

Inventory and pricingPrices and suppliers

View all inventory →

Finance and riskMoney and disputes

View all finance →

Shopify and WooStore-specific

View all services →

Dropshipping and EtsyMarketplaces and print

View all services →

Explore everything

Pick a way in. Every page has a fixed price and a delivery window.

All services88 automations for storesAll platformsShopify, WooCommerce and moreAll integrations82 tools we connectRequest a quote →

ShopifyStore platform

View all Shopify →

WooCommerceStore platform

View all WooCommerce →

BigCommerceStore platform

View all BigCommerce →

WixStore platform

View all Wix →

AmazonMarketplace

View all Amazon →

EtsyMarketplace

View all Etsy →

eBayMarketplace

View all eBay →

Your platform

Automation built for the store or marketplace you already sell on.

Store platforms8 platformsMarketplaces11 marketplacesAll who we serve363 pagesRequest a quote →

DropshippersSeller type

View all dropshippers →

DTC brandsSeller type

View all dtc brands →

Handmade sellersSeller type

View all handmade sellers →

Subscription boxesSeller type

View all →

B2B and wholesaleSeller type

View all b2b and wholesale →

AgenciesSeller type

View all agencies →

PrintfulPrint-on-demand

View all Printful →

Your kind of store

Pages written for how each type of seller actually works.

Seller types14 types of sellerPrint-on-demand9 platformsPopular audiences20 moreRequest a quote →

Email and SMSKlaviyo, Mailchimp and more

View all email and sms →

Support and chatGorgias, Zendesk and more

View all →

Payments and accountingStripe, QuickBooks and more

View all →

Shipping and suppliersShipStation, DSers and more

View all →

Reviews, ads and creativeJudge.me, Meta Ads and more

View all →

Automation and dataZapier, Make, Sheets

View all →

Marketplace and feed toolsGoogle Merchant, Helium 10

View all →

Works with your tools

We build inside the apps you already pay for.

All integrations82 toolsEmail and SMSKlaviyo, MailchimpPaymentsStripe, QuickBooksRequest a quote →

How-to guidesStep by step

View all 63 how-to guides →

Templates and checklistsCopy and use

View all 68 templates →

ComparisonsTools and options

View all 44 comparisons →

Cost and ROIWhat it costs

View all 34 cost pages →

GuidesLong reads

View all 14 guides →

Compliance and riskRules in plain words

View all →

Glossary and statisticsTerms and numbers

View all 17 →

Learn before you buy

Guides, templates and honest comparisons, free to use.

Resources hub256+ free resourcesBlogPractical articlesStatisticsSourced numbersRequest a quote →
Checkout Loom blog

Shopify API rate limits: why automations get throttled and how to design around it

A plain-English explanation of the leaky bucket, query cost and throttle errors, and the design habits (queues, backoff, batching) that keep automations running on your busiest days.

  • 8 minute read
  • Written for store owners
  • Sources named
ShopifyZapierKlaviyoStripeMake

Anyone who has run a large import, synced stock across channels or processed a flash-sale rush on Shopify has met the message: throttled, rate limit exceeded, try again. It tends to appear at the worst time, during peaks, and it can break automations in quiet ways: a step fails, nobody retries it and an order or a stock update is lost. Rate limits are not a bug or a punishment. They are how a shared platform protects itself, and an automation that ignores them will eventually fail.

This guide explains how Shopify’s rate limits work in plain terms and how to design automations that cope with them. It draws on Shopify’s developer documentation, read on 20 October 2026; the exact numbers vary by API and plan and change over time, so where the documentation does not give a figure we do not invent one. It is useful whether you build workflows yourself, hire someone to build them or use tools such as Zapier, Make or n8n, which all sit on top of these APIs. It connects to the event-handling in Shopify webhooks explained and the burst handling in inventory sync across sales channels.

The leaky bucket in one picture

Imagine a bucket with a small hole. Each API request pours some water in. Water drains out through the hole at a steady rate. As long as you add water more slowly than it drains, the bucket never fills. You can pour a burst in quickly, because the bucket has room, but if you keep pouring faster than it drains, it overflows, and Shopify returns a throttle error until enough has drained. Shopify’s documentation describes most of its limits this way: a bucket that drains at a restore rate, and a full bucket that triggers an error.

IdeaWhat it meansPractical effect
Bucket sizeHow much you can send in a burstShort spikes are fine
Restore rateHow fast capacity returnsSustained load is limited to this pace
Throttle errorThe bucket is full or a single request is too expensiveWait, then retry
Plan differencesLimits can differ by plan and APICheck the current documentation for yours

Shopify also notes that it may temporarily reduce rate limits to protect platform stability. A design that relies on running exactly at the limit is therefore fragile; leave headroom.

GraphQL: limits based on query cost

Shopify’s GraphQL Admin API does not count requests; it assigns each query a calculated cost, based roughly on how much data it asks for, and limits the points you can spend. Every response reports the cost of the query and the state of your bucket, and Shopify documents a maximum cost for a single query, which at the time of reading was 1,000 points. A query that costs more than that is rejected outright, however empty the bucket is.

  • Ask for only what you need. Requesting fifty fields on every order costs far more than requesting five.
  • Limit the size of lists. A smaller page of results costs less; paginate instead of asking for everything.
  • Read the cost data. The response includes the requested cost, the actual cost and the bucket’s available points and restore rate, so a well-built tool can pace itself.
  • Watch the two error types. A single query that is too expensive returns a cost-exceeded error; a bucket that is empty returns a throttled error. They need different fixes: shrink the query, or wait.

REST: limits based on requests

The older REST Admin API uses a request-based bucket with headers that tell you how much room is left. Many existing tools still use it, and its behaviour is the same in spirit: bursts are tolerated, sustained overload is not. Shopify’s documentation steers newer development toward GraphQL, so check its current guidance when choosing how to build a new integration.

Other limits that surprise people

Limit (from Shopify’s documentation)What it meansWho it affects
New variant creationStores with 500,000 or more product variants can create at most 10,000 new variants per day; Shopify Plus stores are exemptLarge catalogue imports
Array input sizeInput arrays accept at most 250 itemsBulk updates in one call
Pagination depthPagination caps at 25,000 objectsReading very large lists
Customer Account APIA separate per-customer, per-minute limit appliesCustomer-facing apps
Recommended backoffOne second after a throttleAll retrying clients

Read from Shopify’s developer documentation on 20 October 2026. Check the page for current numbers.

What happens in your store when a limit is hit

A throttle error is only a problem if the caller handles it badly. A good caller waits and tries again; a bad one gives up, loses the update and carries on as if nothing happened. The visible symptoms in a store are familiar.

  • Missing updates. An order never reaches the warehouse, a stock change is not applied on another channel.
  • Half-finished imports. A large product upload stops partway and leaves a mixture of old and new data.
  • Slow syncs. Everything works, but an hour late on busy days.
  • Duplicate effects. A retry without a key creates a second action; see Shopify webhooks explained for the idempotency rule.
  • Silent failure. Nothing is logged, nobody is told and the gap is discovered by a customer.

Design habits that survive the limits

Queue the work and pace it

Put every API job on a queue, and let a worker take jobs at a rate that fits the limit. A burst of events, such as hundreds of orders in a sale, fills the queue instead of overflowing the bucket, and the worker drains it steadily. The queue also gives you a place to see how far behind you are.

Back off and retry

When you are throttled, wait, then retry. Shopify recommends a backoff of about one second after a throttle, and a sensible client lengthens the wait on repeated failures and adds a little randomness, so that many workers do not retry at the same instant. Set a maximum number of attempts and, after that, move the job to a failed list and alert a person with the job and the reason.

Batch and use bulk operations

Many small calls cost more than a few large ones. Combine updates where the API allows, within the documented limits on input size. For large reads and writes, such as exporting every product or updating thousands of prices, Shopify offers bulk operations that run on its side without consuming your bucket call by call. They are the right tool for catalogue-wide jobs.

Prefer events to polling

Asking Shopify every minute whether anything has changed spends the bucket on empty answers. Subscribe to webhooks, so Shopify tells you when something changes, and keep a slower scheduled check as a safety net. The combination uses far fewer calls and reacts faster.

Request less

Trim queries to the fields you use and filter on the server side instead of fetching everything and filtering in your tool. Cache data that rarely changes, such as shipping zones, locations or tax settings, instead of reading it for every order.

Reconcile and alert

Because failures will happen despite good design, run a scheduled job that compares what should have happened with what did, and fixes the difference. Alert when the retry queue grows beyond a threshold or when a job hits its attempt limit. A growing queue is an early warning that you are pushing harder than the platform allows.

Choosing tools with limits in mind

Question for your tool or builderGood answer
What happens when Shopify throttles a call?It waits and retries, then alerts after a set number of attempts
Do you use webhooks or polling?Webhooks for speed, polling or reconciliation as a safety net
How do you handle bursts such as sales?A queue that smooths them and a visible backlog
How are large imports done?Bulk operations or batches that respect documented limits
How do I know a call failed?An alert naming the job, the record and the reason
What if limits change?Pacing is read from response data, not hard-coded

No-code tools handle some of this for you and not all. They typically retry throttled calls, but they may do so a limited number of times, they bill every retry as usage in some cases and they do not give you a queue you can inspect. Our comparison of Zapier, Make and n8n touches on how each behaves under load.

A worked example

A store runs a flash sale and receives 1,200 orders in an hour. Its stock sync makes three API calls per order: read the order, adjust stock for each item and tag the order. That is 3,600 calls in an hour, which is one a second, well within a bucket that tolerates bursts, but the calls arrive unevenly: 400 orders in the first ten minutes. Without a queue, the first ten minutes produce a wall of throttle errors, and about a quarter of the stock updates are lost. With a queue that paces calls and retries after a one-second backoff, the backlog peaks at a few hundred jobs, clears within twenty minutes and nothing is lost. The only change is design: queue, backoff, retry and an alert on queue length. The numbers are illustrative; the pattern is what to copy. It is the pattern behind our inventory sync and ecommerce workflow automation builds.

Sources and further reading

Figures and rules in this guide come from the primary pages below. Platform limits and prices change, so open the page before you build on a number.

Questions

8 questions readers ask about this topic

What are Shopify API rate limits?

Limits on how fast apps and automations can call Shopify’s APIs, implemented as a leaky bucket that drains at a fixed rate.

What does throttled mean in Shopify?

The bucket is full, so Shopify refuses further calls until capacity returns. The caller should wait and retry.

How does GraphQL query cost work?

Each query is assigned a calculated cost based on the data requested, and you spend points from a bucket. Shopify documents a maximum cost for a single query, 1,000 at the time of reading.

How long should I wait before retrying?

Shopify recommends a backoff of about one second after a throttle, lengthened on repeated failures.

How do I avoid hitting limits during a sale?

Use a queue, back off and retry, batch calls, prefer webhooks to polling and request only the fields you need.

Are there limits on creating variants?

Shopify’s documentation says stores with 500,000 or more variants can create 10,000 new variants per day, with Shopify Plus exempt.

Do Zapier or Make avoid rate limits?

They retry in some cases but still use the same APIs, so heavy bursts can fail. Design with queues and checks.

Will the limits change?

Shopify may change or temporarily reduce them, so read pacing information from responses and check the documentation.

Automations that stay calm on your busiest day

Queues, backoff, bulk operations and alerts, so a rate limit never costs you an order.

  • Fixed price, paid once
  • Built inside your tools
  • Thirty days of fixes