E-commerce (Shopify)
Sincroniza clientes y pedidos de tu tienda Shopify al CRM usando tu propia tienda (modelo BYO).
La integración de E-commerce usa TU tienda Shopify (modelo BYO, "trae tu propia tienda"). Escucha los webhooks de tu tienda y sincroniza al CRM: 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. El webhook secret y el admin token se guardan cifrados en el CRM y nunca se muestran de vuelta.
Requisitos previos
- Una tienda Shopify con acceso de administrador (Shopify Admin) para crear webhooks y ver el signing secret.
- El dominio .myshopify.com de la tienda.
- En Sellio, ser administrador para guardar las credenciales y activar la integración en Configuración → Integraciones.
Lo que necesitas completar
- Dominio de la tienda: la dirección .myshopify.com de tu tienda (ej.: mitienda.myshopify.com).
- Webhook secret (API secret): el secreto con el que Shopify firma los webhooks. En Shopify Admin → Settings → Notifications aparece el "signing secret" de los webhooks (o, si usas una app propia, su API secret). Ese es el valor que el CRM usa para verificar la firma (HMAC) de cada llamada.
- Admin API access token (opcional): solo es necesario si, en el futuro, quieres que el CRM lea datos de la tienda por la API. Para solo recibir los webhooks, déjalo en blanco.
Cómo configurar
- Abre Configuración → Integraciones y localiza la tarjeta "E-commerce (Shopify)".
- Completa el dominio de la tienda y el webhook secret y haz clic en "Guardar credenciales".
- Copia la "URL del webhook (Shopify)" que aparece.
- En Shopify Admin → Settings → Notifications → Webhooks, crea un webhook (formato JSON) apuntando a esa URL para CADA uno de estos topics: customers/create, customers/update, orders/create, orders/paid.
- Vuelve al CRM y haz clic en "Activar".
Qué ocurre en cada evento
- customers/create y customers/update: el cliente se crea o actualiza como Contacto, coincidiendo por correo. El CRM guarda el id del cliente en Shopify para no duplicar en reentregas.
- orders/create y orders/paid: el pedido se crea o actualiza como Pedido de venta (número, valor, moneda y estado), vinculado al Contacto correspondiente cuando existe. El estado pasa a "facturado" cuando el pedido está pagado, "cancelado" si fue cancelado, o "confirmado" en caso contrario.
Trata la URL del webhook y el webhook secret como secretos. El CRM verifica la firma X-Shopify-Hmac-Sha256 de cada llamada con tu webhook secret; las firmas inválidas se rechazan. Si intentas activar sin completar el secret, la integración queda inerte: no se sincroniza nada hasta que todo esté en su lugar.
Cómo probar
- Con la integración activada y los webhooks creados, en Shopify Admin → Settings → Notifications → Webhooks, usa "Send test notification" en uno de los webhooks (o crea un pedido/cliente de prueba en la tienda).
- En el CRM, revisa el objeto Contactos (para customers) y Pedidos de venta (para orders): el registro correspondiente debe aparecer.
- Reenvía la misma prueba y confirma que NO duplica: el CRM identifica el registro por el id de Shopify.
Solución de problemas
- Firma inválida (llamada rechazada): el webhook secret guardado en el CRM difiere del signing secret de Shopify. Copia de nuevo el secret (Settings → Notifications, o el API secret de tu app) y pégalo en el CRM.
- No sincroniza nada: confirma que creaste un webhook (formato JSON) para CADA topic: customers/create, customers/update, orders/create, orders/paid, todos apuntando a la "URL del webhook (Shopify)".
- 404 en la URL: la integración está desactivada o el token de la URL cambió. Reactiva y vuelve a copiar la URL a Shopify.
- Pedido sin contacto vinculado: el vínculo coincide por el correo del cliente; si el cliente aún no existe como Contacto, el pedido se crea sin vínculo y lo asocias después.
- Campos que edité fueron sobrescritos: solo los campos que vienen de la tienda se actualizan; el resto se preserva. Si un campo de la tienda cambió, refleja la tienda por diseño.