E-commerce (WooCommerce y Magento)
Sincroniza clientes y pedidos de tus tiendas WooCommerce o Magento al CRM usando tu propia tienda (modelo BYO).
Además de Shopify, el CRM sincroniza tiendas WooCommerce y Magento (modelo BYO, "trae tu propia tienda"). Cada cliente se convierte en un Contacto y cada pedido en un Pedido de venta. No hay costo, margen ni intermediación de nuestra parte: los datos vienen directo de tu tienda. La integración nace inerte: no ocurre nada hasta que completes los campos y actives. Los secretos se guardan cifrados en el CRM y nunca se muestran de vuelta.
Requisitos previos
- WooCommerce: una tienda WordPress/WooCommerce con acceso de administrador (para crear webhooks en WooCommerce → Settings → Advanced → Webhooks).
- Magento (Adobe Commerce): acceso para instalar/configurar un módulo, integración u observer que haga POST JSON por cada cliente/pedido (Magento no tiene webhooks nativos estandarizados).
- En Sellio, ser administrador para guardar las credenciales y activar la integración en Configuración → Integraciones.
WooCommerce
WooCommerce envía webhooks nativos. Creas los webhooks en tu tienda apuntando a la URL del CRM y defines un "Secret"; WooCommerce firma cada llamada con ese secret (HMAC-SHA256, header X-WC-Webhook-Signature) y el CRM verifica la firma antes de sincronizar.
- En el CRM, abre Configuración → Integraciones y localiza la tarjeta "E-commerce (WooCommerce)".
- Completa la URL de la tienda (opcional, solo referencia) y un Webhook secret (un texto que inventas) y haz clic en "Guardar credenciales".
- Copia la "URL del webhook (WooCommerce)" que aparece.
- En tu tienda, ve a WooCommerce → Settings → Advanced → Webhooks y crea un webhook para CADA topic: Customer created, Customer updated, Order created, Order updated. En cada uno, pega la URL del CRM como Delivery URL y usa el MISMO Secret que guardaste en el CRM.
- Vuelve al CRM y haz clic en "Activar".
Magento (Adobe Commerce)
Magento no tiene webhooks nativos estandarizados. Configuras un módulo/integración (o un observer) que hace un POST en JSON a la URL del CRM por cada cliente o pedido. El POST se autentica por un secreto, de dos formas posibles (usa la que tu módulo soporte): una firma HMAC-SHA256 del cuerpo en base64 en el header X-Magento-Signature, o el propio secreto en claro en el header X-Magento-Secret.
- En el CRM, abre Configuración → Integraciones y localiza la tarjeta "E-commerce (Magento)".
- Completa la URL de la tienda (opcional) y un Secreto de autenticación (un texto que inventas) y haz clic en "Guardar credenciales".
- Copia la "URL del webhook (Magento)" que aparece.
- Configura tu módulo/integración de Magento para hacer POST (JSON) a esa URL por cada cliente y pedido, enviando el secreto en el header X-Magento-Signature (firma HMAC) o X-Magento-Secret (valor en claro).
- Vuelve al CRM y haz clic en "Activar".
Formato del JSON esperado por Magento. Para clientes: { "type": "customer", "id", "email", "firstname", "lastname", "telephone", "street", "city", "region", "country_id" }. Para pedidos: { "type": "order", "increment_id" (o "entity_id"), "grand_total", "order_currency_code", "status", "customer_email", "customer_id", "customer_firstname", "customer_lastname" }. El campo "type" (customer u order) decide el mapeo; los campos ausentes quedan vacíos.
Qué ocurre en cada evento
- Cliente (customer.created/updated en Woo; type "customer" en Magento): el cliente se crea o actualiza como Contacto, coincidiendo por correo. El CRM guarda el id del cliente en la tienda (woo_customer_id / magento_customer_id) para no duplicar en reentregas.
- Pedido (order.created/updated en Woo; type "order" en Magento): el pedido se crea o actualiza como Pedido de venta (número, valor, moneda y estado), vinculado al Contacto correspondiente cuando existe. En Woo, "completed" pasa a "facturado" y "cancelled/refunded/failed" a "cancelado"; en Magento, "complete/closed/invoiced" pasa a "facturado" y "canceled/holded" a "cancelado"; los demás pasan a "confirmado".
Trata las URLs de los webhooks y los secretos como secretos. Las llamadas con firma/secreto inválidos se rechazan. Si intentas activar sin completar el secreto, la integración queda inerte: no se sincroniza nada hasta que todo esté en su lugar.
Cómo probar
- WooCommerce: en WooCommerce → Settings → Advanced → Webhooks, edita un webhook y verifica los "Webhook logs" después de crear un cliente/pedido de prueba; en el CRM, revisa Contactos/Pedidos de venta.
- Magento: acciona tu observer/integración para un cliente y un pedido de prueba (POST JSON con el campo "type") y revisa los registros en el CRM.
- Reenvía el mismo evento y confirma que el CRM actualiza (no duplica): la clave es el id externo.
Solución de problemas
- WooCommerce: firma inválida: el "Secret" del webhook en la tienda debe ser IGUAL al Webhook secret guardado en el CRM (HMAC-SHA256, header X-WC-Webhook-Signature). Vuelve a registrar el mismo valor en ambos lados.
- Magento: llamada rechazada: envía el secreto correctamente: como HMAC-SHA256 del cuerpo en base64 en el header X-Magento-Signature, o como el secreto en claro en el header X-Magento-Secret (usa el que tu módulo soporte).
- No sincroniza: confirma que los webhooks/POSTs cubran cliente Y pedido (created/updated) y apunten a la "URL del webhook" correcta; confirma que la integración esté activada.
- Magento: campos vacíos en el CRM: valida el JSON esperado (customer: id/email/firstname/lastname...; order: increment_id/grand_total/order_currency_code/status/customer_email...). El campo "type" (customer/order) decide el mapeo.
- 404 en la URL: integración desactivada o token cambiado; reactiva y vuelve a copiar la URL.