k-sync
Back to blog

WooCommerce REST API vs Shopify admin API for developers (2026)

A developer's comparison of the WooCommerce REST API and Shopify Admin API — authentication, rate limits, pagination, webhooks, and how to migrate integrations when moving from WooCommerce to Shopify.

·By k-sync
5 min read · 1,055 words

If your WooCommerce store has custom integrations — ERP sync, inventory management, fulfillment system, analytics data pipeline — these integrations use the WooCommerce REST API. After migrating to Shopify, these integrations need to be rebuilt or adapted to use the Shopify Admin API. This guide covers the key differences developers need to understand.

Authentication comparison

WooCommerce REST API auth

WooCommerce uses Consumer Key + Consumer Secret pairs:

Shopify Admin API auth

Shopify has two auth methods depending on use case:

For migrating custom integrations, use Custom Apps (Admin API access token) — same pattern as WooCommerce's consumer keys, just a different header and token format.

API base URLs

// WooCommerce
https://yourstore.com/wp-json/wc/v3/products
https://yourstore.com/wp-json/wc/v3/orders
https://yourstore.com/wp-json/wc/v3/customers

// Shopify Admin REST API
https://your-store.myshopify.com/admin/api/2024-01/products.json
https://your-store.myshopify.com/admin/api/2024-01/orders.json
https://your-store.myshopify.com/admin/api/2024-01/customers.json

// Shopify Admin GraphQL API
https://your-store.myshopify.com/admin/api/2024-01/graphql.json

Shopify has both a REST API and a GraphQL Admin API. The REST API is simpler for direct WooCommerce API replacement. The GraphQL API is more powerful (request only needed fields, mutations for complex operations, bulk operations) and is Shopify's recommended path for new integrations.

Rate limits

WooCommerce rate limits

WooCommerce itself doesn't enforce API rate limits — rate limiting is handled at the server level (nginx rate limiting, Cloudflare WAF rules). Typical WooCommerce hosts allow 100–1000 requests/minute. Server-dependent.

Shopify rate limits

Shopify enforces explicit rate limits at the API level:

For migration tools and data sync, rate limit handling is critical. k-sync uses retry logic with exponential backoff when the Shopify rate limit is hit.

Pagination

WooCommerce pagination

// Page-based
GET /wp-json/wc/v3/products?per_page=100&page=1
GET /wp-json/wc/v3/products?per_page=100&page=2

// Response headers include X-WP-Total and X-WP-TotalPages
// per_page max: 100

Shopify pagination

// REST API: Cursor-based pagination
GET /admin/api/2024-01/products.json?limit=250
// Response header: Link: <https://...>; rel="next"
// Follow the "next" cursor link for subsequent pages
// limit max: 250

// GraphQL: Connection-based cursor pagination
query {
  products(first: 50, after: "cursor_string") {
    pageInfo { hasNextPage endCursor }
    nodes { id title }
  }
}

Shopify's cursor-based pagination is more reliable for large datasets (no missed records if new items are added during pagination). WooCommerce's page-based pagination can miss records if products are added/deleted while paginating.

Webhooks comparison

WooCommerce webhooks

Shopify webhooks

// Webhook verification (Node.js)
const crypto = require('crypto');
const hmac = crypto.createHmac('sha256', SHOPIFY_WEBHOOK_SECRET);
hmac.update(rawBody, 'utf8', 'hex');
const digest = hmac.digest('base64');
const valid = digest === req.headers['x-shopify-hmac-sha256'];

Data structure differences for common objects

Products

WooCommerce fieldShopify equivalent
idid
nametitle
slughandle
descriptionbody_html
short_descriptionNo direct equivalent — use metafield or prepend to body_html
status: publish/draftstatus: active/draft
sku (simple product)variants[0].sku
price/regular_pricevariants[0].price
sale_pricevariants[0].compare_at_price
categories (array)No native categories — use collections (separate relationship)
tags (array)tags (comma-separated string)
images (array)images (array) with variant associations
variations (array)variants (array)
attributes (for variations)options + variant option values

Orders

WooCommerce fieldShopify equivalent
id / order_numberid / order_number (different values)
status (wc-processing, wc-completed)financial_status + fulfillment_status
total / subtotaltotal_price / subtotal_price
billing (object)billing_address (object)
shipping (object)shipping_address (object)
line_items (array with product_id)line_items (array with variant_id)
shipping_linesshipping_lines
fee_linesNo direct equivalent — handling fees go in shipping_lines
tax_linestax_lines
customer_notenote

Migrating custom integrations

ERP / inventory sync

Replace WooCommerce REST calls with Shopify REST or GraphQL equivalents. Key mapping:

Order fulfillment system

Webhook-driven integrations

Replace WooCommerce webhook listeners with Shopify webhook listeners:

GraphQL Admin API — why it's worth learning

If your integration handles large data volumes, Shopify's GraphQL Bulk Operations are significantly more efficient than paginated REST calls:

// Bulk operation query — get all product IDs and titles
mutation {
  bulkOperationRunQuery(query: """
    {
      products {
        edges {
          node {
            id
            title
            variants {
              edges {
                node {
                  id
                  sku
                  price
                }
              }
            }
          }
        }
      }
    }
  """) {
    bulkOperation { id status }
    userErrors { field message }
  }
}

Bulk operations process in the background and return a JSONL file URL when complete. k-sync uses this for large catalog syncs where REST pagination would be too slow.

For most custom integration replacements, the REST API is sufficient and has the most documentation and library support. Switch to GraphQL when you hit rate limits or need to sync thousands of products/orders frequently.

Migrate your store with k-sync

Connect your WooCommerce store, validate your products, and push to Shopify in minutes. Free for up to 50 products.

Get started free

Related reading

Browse all migration guides