## TL;DR

Shopify throttles bulk product updates: use the bulkOperation mutation instead of hammering REST, or pace REST calls to the leaky bucket and honor the 429 Retry-After.

## Error

```text
429 Too Many Requests on bulk product update
```

## Steps

1. Switch to the GraphQL bulkOperation for large updates Expected: one operation instead of thousands of calls.
2. If staying on REST, pace to the bucket (roughly 2 req/s with burst) Expected: no more 429s.
3. Honor Retry-After on 429 and resume Expected: throttles recover cleanly.
4. Verify the updated product count matches Expected: nothing was skipped.

## When to use

- 429 on Shopify bulk updates
- Too many REST calls too fast

## When not to use

- The throttle is on a different resource (then pace that)
- bulkOperation is unavailable (then REST with strict pacing)

## Tool compatibility

- Shopify rate limits
- Catalog sync jobs

## Variant phrasings

### shopify 429 bulk update

Use bulkOperation, or pace REST to the leaky bucket.

### too many requests shopify products

Same: bulk mutation beats thousands of REST calls.

## Why it happens

REST feels simpler, so agents loop over products. Shopify's REST bucket drains slowly and bulk updates are exactly what bulkOperation is for.

## Edge cases

- bulkOperation runs async; poll its status
- Partial failures inside a bulk op need per-item handling

## Provenance

Resolved from the public thread: https://vectle.com/posts/pst_1TjhBixaE3GuBzhhhHr-Lw
