API REST de WooCommerce frente a Admin API de Shopify para desarrolladores (2026)
Comparativa entre la API REST de WooCommerce y la Admin API de Shopify para desarrolladores: autenticación, límites de velocidad, paginación, webhooks y cómo migrar integraciones al pasar de WooCommerce a Shopify.
Si tu tienda WooCommerce tiene integraciones personalizadas — sincronización con ERP, gestión de inventario, sistema de fulfillment, pipeline de datos analíticos — estas integraciones utilizan la API REST de WooCommerce. Tras migrar a Shopify, estas integraciones deben reconstruirse o adaptarse para usar la Admin API de Shopify. Esta guía cubre las diferencias clave que los desarrolladores deben entender.
Comparativa de autenticación
Autenticación de la API REST de WooCommerce
WooCommerce usa pares de Consumer Key + Consumer Secret:
- Las claves se generan en WooCommerce → Configuración → Avanzado → API REST
- Autenticación mediante encabezado HTTP Basic Auth:
Authorization: Basic base64(consumerKey:consumerSecret) - O mediante parámetros de consulta:
?consumer_key=ck_xxx&consumer_secret=cs_xxx(no recomendado en entornos donde HTTPS es opcional) - Niveles de permiso por clave: Solo lectura, Solo escritura, Lectura/Escritura
- Sin caducidad de token: las claves son permanentes hasta que se revocan
Autenticación de la Admin API de Shopify
Shopify tiene dos métodos de autenticación según el caso de uso:
- Apps privadas / Custom apps (tokens de acceso a la Admin API): Tokens de acceso para una sola tienda generados en Shopify Admin → Configuración → Apps → Desarrollar apps. Se usan para integraciones con ERP, herramientas internas. Concepto similar a las consumer keys de WooCommerce.
Encabezado:X-Shopify-Access-Token: shpat_xxx - Apps públicas (OAuth 2.0): Para apps instaladas por múltiples comerciantes. Se realiza el flujo OAuth de Shopify para obtener tokens de acceso por tienda. Obligatorio para las apps del App Store de Shopify.
Encabezado:X-Shopify-Access-Token: shpat_xxx(mismo encabezado, token obtenido mediante OAuth)
Para migrar integraciones personalizadas, usa Custom Apps (token de acceso a la Admin API): el mismo patrón que las consumer keys de WooCommerce, simplemente con un encabezado y formato de token diferentes.
URLs base de la API
// WooCommerce
https://tutienda.com/wp-json/wc/v3/products
https://tutienda.com/wp-json/wc/v3/orders
https://tutienda.com/wp-json/wc/v3/customers
// Admin REST API de Shopify
https://tu-tienda.myshopify.com/admin/api/2024-01/products.json
https://tu-tienda.myshopify.com/admin/api/2024-01/orders.json
https://tu-tienda.myshopify.com/admin/api/2024-01/customers.json
// Admin GraphQL API de Shopify
https://tu-tienda.myshopify.com/admin/api/2024-01/graphql.json
Shopify dispone tanto de una API REST como de una API GraphQL Admin. La API REST es más sencilla para reemplazar directamente la API de WooCommerce. La API GraphQL es más potente (solicita solo los campos necesarios, mutaciones para operaciones complejas, operaciones masivas) y es el camino recomendado por Shopify para nuevas integraciones.
Límites de velocidad
Límites de velocidad de WooCommerce
WooCommerce en sí no aplica límites de velocidad en la API: la limitación de velocidad se gestiona a nivel de servidor (reglas de límite de velocidad de nginx, reglas de WAF de Cloudflare). Los hosts típicos de WooCommerce permiten entre 100 y 1000 solicitudes por minuto. Depende del servidor.
Límites de velocidad de Shopify
Shopify aplica límites de velocidad explícitos a nivel de API:
- REST API: Algoritmo de cubeta. Estándar: 40 solicitudes en la cubeta, se rellena a 2/segundo. Cada llamada a la API REST consume 1 punto de cubeta. Los encabezados de respuesta incluyen
X-Shopify-Shop-Api-Call-Limitque muestra el uso actual. - GraphQL API: Limitación de velocidad basada en coste. Cada consulta tiene un coste. Estándar: máximo 1000 unidades de coste/segundo, capacidad de cubeta de 1000. Las consultas simples cuestan entre 1 y 10 unidades; las consultas anidadas complejas cuestan más.
- Operaciones masivas (GraphQL): Separadas, para exportaciones de datos a gran escala. Una operación masiva a la vez, pero procesa millones de registros sin preocupaciones de límites de velocidad.
Para herramientas de migración y sincronización de datos, la gestión de los límites de velocidad es fundamental. k-sync usa lógica de reintento con retroceso exponencial cuando se alcanza el límite de velocidad de Shopify.
Paginación
Paginación en WooCommerce
// Basada en páginas
GET /wp-json/wc/v3/products?per_page=100&page=1
GET /wp-json/wc/v3/products?per_page=100&page=2
// Los encabezados de respuesta incluyen X-WP-Total y X-WP-TotalPages
// per_page máximo: 100
Paginación en Shopify
// REST API: Paginación basada en cursor
GET /admin/api/2024-01/products.json?limit=250
// Encabezado de respuesta: Link: <https://...>; rel="next"
// Sigue el enlace del cursor "next" para las páginas siguientes
// límite máximo: 250
// GraphQL: Paginación de cursor basada en Connection
query {
products(first: 50, after: "cursor_string") {
pageInfo { hasNextPage endCursor }
nodes { id title }
}
}
La paginación basada en cursor de Shopify es más fiable para conjuntos de datos grandes (no se pierden registros si se añaden nuevos elementos durante la paginación). La paginación basada en páginas de WooCommerce puede perder registros si se añaden o eliminan productos mientras se pagina.
Comparativa de webhooks
Webhooks de WooCommerce
- Se crean en WooCommerce → Configuración → Avanzado → Webhooks
- Eventos: order.created, order.updated, order.deleted, product.created, product.updated, product.deleted, customer.created, customer.updated
- Payload: JSON completo del objeto de WooCommerce
- Entrega: HTTP POST a tu endpoint
- Reintento: WooCommerce reintenta las entregas fallidas
Webhooks de Shopify
- Se crean mediante la Admin API:
POST /admin/api/2024-01/webhooks.json - O en la interfaz de Admin: Configuración → Notificaciones → Webhooks
- Eventos: más de 100 temas que cubren pedidos, productos, clientes, checkouts, inventario, fulfillment, colecciones y más
- Payload: JSON completo del objeto de Shopify
- Verificación: firma HMAC-SHA256 en el encabezado
X-Shopify-Hmac-Sha256— verifica siempre en producción - Entrega: Shopify reintenta durante 48 horas con retroceso exponencial en caso de fallo
// Verificación de webhook (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'];
Diferencias en la estructura de datos para objetos habituales
Productos
| Campo de WooCommerce | Equivalente en Shopify |
|---|---|
| id | id |
| name | title |
| slug | handle |
| description | body_html |
| short_description | Sin equivalente directo — usa metacampo o añádelo al inicio de body_html |
| status: publish/draft | status: active/draft |
| sku (producto simple) | variants[0].sku |
| price/regular_price | variants[0].price |
| sale_price | variants[0].compare_at_price |
| categories (array) | Sin categorías nativas — usa colecciones (relación independiente) |
| tags (array) | tags (cadena separada por comas) |
| images (array) | images (array) con asociaciones de variante |
| variations (array) | variants (array) |
| attributes (para variaciones) | options + valores de opción de variante |
Pedidos
| Campo de WooCommerce | Equivalente en Shopify |
|---|---|
| id / order_number | id / order_number (valores diferentes) |
| status (wc-processing, wc-completed) | financial_status + fulfillment_status |
| total / subtotal | total_price / subtotal_price |
| billing (objeto) | billing_address (objeto) |
| shipping (objeto) | shipping_address (objeto) |
| line_items (array con product_id) | line_items (array con variant_id) |
| shipping_lines | shipping_lines |
| fee_lines | Sin equivalente directo — los gastos de gestión van en shipping_lines |
| tax_lines | tax_lines |
| customer_note | note |
Migración de integraciones personalizadas
Sincronización con ERP / inventario
Reemplaza las llamadas REST de WooCommerce con equivalentes REST o GraphQL de Shopify. Mapeo clave:
- Inventario de producto: WC
/products/{id}?stock_quantity=N→ Shopify/inventory_levels/set.json(requiere location_id) - Actualización de precio del producto: WC
PUT /products/{id}→ ShopifyPUT /variants/{id}.json
Sistema de fulfillment de pedidos
- Actualización del estado del pedido en WC:
PUT /orders/{id}constatus: "completed" - Fulfillment en Shopify: Crea un fulfillment mediante
POST /orders/{id}/fulfillments.jsoncon información de seguimiento - Shopify actualiza
fulfillment_statusa "fulfilled" automáticamente cuando todos los artículos están cumplimentados
Integraciones basadas en webhooks
Reemplaza los receptores de webhooks de WooCommerce por receptores de webhooks de Shopify:
- Actualiza la URL del endpoint
- Actualiza la verificación HMAC (WooCommerce usa un secreto compartido de forma diferente a Shopify)
- Actualiza el análisis del payload (los nombres de campo son diferentes según las tablas de mapeo anteriores)
Admin GraphQL API — por qué vale la pena aprenderla
Si tu integración gestiona grandes volúmenes de datos, las operaciones masivas de GraphQL de Shopify son significativamente más eficientes que las llamadas REST paginadas:
// Operación masiva — obtener todos los IDs y títulos de producto
mutation {
bulkOperationRunQuery(query: """
{
products {
edges {
node {
id
title
variants {
edges {
node {
id
sku
price
}
}
}
}
}
}
}
""") {
bulkOperation { id status }
userErrors { field message }
}
}
Las operaciones masivas se procesan en segundo plano y devuelven una URL de archivo JSONL cuando se completan. k-sync las usa para sincronizaciones de catálogos grandes donde la paginación REST sería demasiado lenta.
Para la mayoría de los reemplazos de integraciones personalizadas, la API REST es suficiente y tiene la mayor documentación y soporte de bibliotecas. Cambia a GraphQL cuando alcances los límites de velocidad o necesites sincronizar miles de productos/pedidos con frecuencia.
Migra tu tienda con k-sync
Conecta tu tienda WooCommerce, valida tus productos y publícalos en Shopify en minutos. Gratis hasta 50 productos.
Empezar gratisLectura relacionada
Migrating a luggage and travel accessories store from WooCommerce to Shopify (2026)
How to migrate a luggage, travel bags, or travel accessories WooCommerce store to Shopify — luggage specifications, airline compliance, TSA lock, warranty and durability claims, and luggage retail Shopify setup.
Migrating a motorcycle accessories store from WooCommerce to Shopify (2026)
How to migrate a motorcycle accessories, biker gear, or motorbike parts WooCommerce store to Shopify — helmet safety standards, CE-rated protective clothing, type approval for parts, fitment compatibility, and motorcycle retail Shopify setup.