Conector de WooCommerce
Conector de WooCommerce
Conecta tu tienda de WooCommerce con Brevo a través de Tajo para una sincronización completa de los datos de ecommerce. Aprovecha la REST API de WooCommerce para sincronizar clientes, pedidos, productos y cupones, y lanzar campañas de marketing segmentadas y flujos automatizados.
Resumen
| Propiedad | Valor |
|---|---|
| Plataforma | WooCommerce (WordPress) |
| Categoría | Ecommerce |
| Complejidad de configuración | Media |
| Integración oficial | No |
| Datos sincronizados | Clientes, Pedidos, Productos, Cupones |
| Skills disponibles | 10 |
Funcionalidades
- Sincronización de clientes - Sincronización en tiempo real de los datos de clientes con los contactos de Brevo
- Seguimiento de pedidos - Seguimiento completo de eventos del ciclo de vida del pedido para flujos post-compra
- Sincronización del catálogo de productos - Sincroniza productos y variaciones para recomendaciones por email
- Gestión de cupones - Sincroniza códigos de cupón para campañas promocionales
- Soporte de webhooks - Actualizaciones en tiempo real vía webhooks de WooCommerce
- Carritos abandonados - Rastrea y recupera carritos abandonados
- Soporte multisitio - Conecta instalaciones WooCommerce de WordPress multisite
- Meta fields personalizados - Asocia meta fields personalizados de WooCommerce a atributos de Brevo
Requisitos previos
Antes de empezar, asegúrate de tener:
- Un sitio WordPress con el plugin WooCommerce instalado y activado
- La REST API de WooCommerce habilitada (Settings > Advanced > REST API)
- Un Consumer Key y Consumer Secret de API generados
- Que tu sitio use HTTPS para la autenticación de la API
- Una cuenta de Brevo con acceso a la API
- Una cuenta de Tajo con credenciales de API
Autenticación
Claves de REST API
WooCommerce usa pares de Consumer Key y Consumer Secret para autenticarse. Genéralos en WooCommerce > Settings > Advanced > REST API.
OAuth 1.0a (sitios HTTPS)
curl https://yourstore.com/wp-json/wc/v3/orders \ -u "consumer_key:consumer_secret"Autenticación por query string (HTTPS)
curl "https://yourstore.com/wp-json/wc/v3/orders?consumer_key=ck_xxx&consumer_secret=cs_xxx"Niveles de permisos
| Permiso | Acceso |
|---|---|
| Read | Solo lectura de recursos |
| Write | Crear y editar recursos |
| Read/Write | Acceso CRUD completo |
Configuración
Configuración básica
connectors: woocommerce: enabled: true store_url: "https://yourstore.com" consumer_key: "ck_your_consumer_key" consumer_secret: "cs_your_consumer_secret" api_version: "wc/v3" verify_ssl: true
# Data sync options sync: customers: true orders: true products: true coupons: true
# Brevo list assignment lists: all_customers: 50 buyers: 51 abandoned_cart: 52Asignación de campos de cliente
Asocia los campos de cliente de WooCommerce con los atributos de Brevo:
customer_mapping: email: email first_name: FIRSTNAME last_name: LASTNAME billing.phone: SMS billing.company: COMPANY billing.city: CITY billing.state: STATE billing.country: COUNTRY billing.postcode: ZIP
# E-commerce metrics (computed) orders_count: ORDER_COUNT total_spent: TOTAL_SPENT date_created: SIGNUP_DATE
# Meta fields meta_data.loyalty_points: LOYALTY_POINTS meta_data.preferred_category: PREF_CATEGORYConfiguración de webhooks
Registra los webhooks en WooCommerce > Settings > Advanced > Webhooks:
webhooks: - topic: "customer.created" event: "customer_created" - topic: "customer.updated" event: "customer_updated" - topic: "order.created" event: "order_placed" - topic: "order.updated" event: "order_updated" - topic: "order.completed" event: "order_fulfilled" - topic: "order.refunded" event: "order_refunded" - topic: "coupon.created" event: "coupon_created" - topic: "product.created" event: "product_added" - topic: "product.updated" event: "product_updated"Endpoints de la API
| Método | Endpoint | Descripción |
|---|---|---|
GET | /wc/v3/customers | Listar clientes |
POST | /wc/v3/customers | Crear un cliente |
GET | /wc/v3/customers/{id} | Obtener un cliente |
PUT | /wc/v3/customers/{id} | Actualizar un cliente |
GET | /wc/v3/orders | Listar pedidos |
POST | /wc/v3/orders | Crear un pedido |
GET | /wc/v3/orders/{id} | Obtener un pedido |
GET | /wc/v3/products | Listar productos |
GET | /wc/v3/products/{id} | Obtener un producto |
GET | /wc/v3/products/{id}/variations | Listar variaciones de producto |
GET | /wc/v3/coupons | Listar cupones |
GET | /wc/v3/reports/sales | Obtener informes de ventas |
GET | /wc/v3/reports/top_sellers | Obtener los más vendidos |
POST | /wc/v3/webhooks | Crear un webhook |
Ejemplos de código
Inicializar el conector de WooCommerce
import { TajoClient } from '@tajo/sdk';
const tajo = new TajoClient({ apiKey: process.env.TAJO_API_KEY, brevoApiKey: process.env.BREVO_API_KEY});
// Connect WooCommerce storeawait tajo.connectors.connect('woocommerce', { storeUrl: 'https://yourstore.com', consumerKey: process.env.WC_CONSUMER_KEY, consumerSecret: process.env.WC_CONSUMER_SECRET});Obtener y sincronizar clientes
// Fetch customers using WooCommerce REST APIconst WooCommerce = require('@woocommerce/woocommerce-rest-api').default;
const api = new WooCommerce({ url: 'https://yourstore.com', consumerKey: process.env.WC_CONSUMER_KEY, consumerSecret: process.env.WC_CONSUMER_SECRET, version: 'wc/v3'});
// List customers with paginationconst response = await api.get('customers', { per_page: 100, page: 1, orderby: 'registered_date', order: 'desc'});
const customers = response.data;// [{ id, email, first_name, last_name, billing, shipping, ... }]
// Pagination info from headersconst totalPages = response.headers['x-wp-totalpages'];const totalItems = response.headers['x-wp-total'];Gestionar eventos de webhook
// WooCommerce webhook handlerapp.post('/webhooks/woocommerce', async (req, res) => { const topic = req.headers['x-wc-webhook-topic']; const signature = req.headers['x-wc-webhook-signature'];
// Verify webhook signature const expectedSignature = crypto .createHmac('sha256', WEBHOOK_SECRET) .update(JSON.stringify(req.body)) .digest('base64');
if (signature !== expectedSignature) { return res.status(401).send('Invalid signature'); }
// Forward to Tajo await tajo.connectors.handleWebhook('woocommerce', { topic, payload: req.body });
res.status(200).send('OK');});Operaciones en lote
// Batch create, update, and delete productsconst batchResponse = await api.post('products/batch', { create: [ { name: 'New Product', type: 'simple', regular_price: '19.99' } ], update: [ { id: 123, regular_price: '24.99' } ], delete: [456]});Límites de velocidad
WooCommerce en sí no aplica límites de velocidad, pero el servidor WordPress subyacente y el proveedor de hosting pueden imponer límites:
| Factor | Límite habitual | Detalles |
|---|---|---|
| Hosting compartido | 50-100 peticiones/min | Varía según el host |
| Hosting WP gestionado | 200-500 peticiones/min | WP Engine, Kinsta, etc. |
| Self-hosted | Sin límite rígido | Limitado por los recursos del servidor |
| Por página | 100 registros máx. | Por defecto 10 |
| Operaciones en lote | 100 ítems/lote | Crear, actualizar o eliminar |
Rendimiento del servidor
Las tiendas grandes de WooCommerce pueden experimentar respuestas lentas de la API. Usa paginación, limita los campos con el parámetro _fields y programa las sincronizaciones masivas fuera de horas punta.
Resolución de problemas
| Problema | Causa | Solución |
|---|---|---|
401 Unauthorized | Claves API no válidas | Regenera el Consumer Key/Secret en los ajustes de WooCommerce |
403 Forbidden | Permisos insuficientes | Configura la clave API con acceso Read/Write |
| Errores de certificado SSL | SSL no válido en el sitio | Asegúrate de tener un certificado SSL válido; usa verify_ssl: false solo para pruebas |
| Los webhooks no se disparan | WordPress cron desactivado | Habilita WP-Cron o configura un cron a nivel de servidor |
| Respuestas lentas de la API | Base de datos grande | Optimiza la base de datos de WordPress, usa el parámetro _fields |
| Faltan campos personalizados | Meta data no expuesto | Usa el campo meta_data para acceder al meta personalizado |
| Problemas de paginación | Tamaño de página por defecto | Define explícitamente el parámetro per_page (máx. 100) |
Buenas prácticas
- Usa webhooks para sincronización en tiempo real - Configura webhooks de WooCommerce en lugar de hacer polling a la API
- Verifica las firmas de los webhooks - Valida siempre la cabecera
X-WC-Webhook-Signature - Pagina todas las peticiones de listado - Usa los parámetros
pageyper_page; revisa la cabeceraX-WP-TotalPages - Usa el parámetro
_fields- Solicita solo los campos necesarios para reducir el tamaño de la respuesta y mejorar el rendimiento - Operaciones en lote - Usa los endpoints de batch para crear/actualizar/eliminar en masa (hasta 100 ítems)
- Programa sincronizaciones grandes - Ejecuta las sincronizaciones completas iniciales fuera de horas punta para no saturar el servidor
- Habilita HTTPS - La API de WooCommerce requiere HTTPS para la autenticación OAuth
Seguridad
- OAuth 1.0a - Autenticación segura mediante pares de Consumer Key/Secret
- Firmas HMAC de webhook - Verificación de firma SHA-256 para los webhooks entrantes
- HTTPS obligatorio - La API requiere cifrado TLS para la autenticación
- Permisos por scope - Las claves API pueden configurarse con acceso Read, Write o Read/Write
- Seguridad de WordPress - Se beneficia de las actualizaciones de seguridad del core de WordPress
- Consideraciones PCI - Los datos de pago los gestionan las pasarelas de pago de WooCommerce, no se exponen vía API