Integración con WooCommerce
Conecta tu tienda WooCommerce con nuestro ligero plugin de WordPress, Joryio (llamado "Joryio for WooCommerce" antes de la versión 1.6.2 y "Joryio for WordPress" antes de la 1.6.25). El botón Download Plugin de tu panel siempre te da la última versión. Sincroniza productos, pedidos y clientes, y activa el seguimiento de carritos abandonados.
¿No tienes tienda? El mismo plugin conecta cualquier sitio WordPress para el seguimiento de páginas, los formularios del sitio, los mensajes in-app y el push web - consulta Sitio WordPress (sin tienda).
Funciones
- Plugin de WordPress: instalación sencilla mediante la carga del plugin; el panel siempre ofrece la última versión.
- Formularios del sitio web: los envíos de Contact Form 7 y Elementor Pro crean o actualizan el contacto y registran
Form Submitted; cada formulario decide si además suscribe a una lista. Funciona sin WooCommerce (ver Formularios: Elementor y Contact Form 7) - Sincronización en tiempo real: productos, pedidos, clientes y carritos se sincronizan mediante el plugin.
- Seguimiento y recuperación de carritos abandonados: registra carritos abandonados, recupéralos con enlaces de restauración y registra los carritos recuperados.
- Seguimiento de la tienda: registra vistas de página, de producto y de categoría, añadidos al carrito (cada añadido, también con WooCommerce Blocks) e inicio de checkout (clásico y Checkout block).
- Captura de email: identifica automáticamente a los clientes desde el checkout y los formularios.
- Casilla de consentimiento de marketing: recoge consentimientos de email (y opcionalmente SMS) en el checkout y en el registro, con la evidencia guardada en cada pedido (consulta Casilla de consentimiento de marketing).
- URL de recuperación de carrito: genera enlaces para restaurar carritos abandonados.
- Compatibilidad con varias tiendas: conecta varias tiendas WooCommerce con segmentación por tienda.
- El checkout nunca se bloquea: los eventos de pedido se envían en segundo plano; Joryio no puede ralentizar ni detener el checkout de un comprador.
Pasos de configuración
Paso 1: obtener la clave API
- Ve a Configuración → Integraciones en Joryio.
- En la sección WooCommerce, haz clic en Obtener clave API.
- Copia la clave API generada; empieza por
jry_wc_.
Paso 2: instalar el plugin
- Descarga el plugin WordPress de Joryio desde Configuración → Integraciones en el panel de Joryio mediante Descargar plugin.
- En la administración de WordPress, ve a Plugins → Añadir nuevo → Subir plugin.
- Sube el archivo ZIP del plugin y haz clic en Instalar ahora.
- Haz clic en Activar.
Paso 3: conectar el plugin
- En la administración de WordPress, ve a WooCommerce → Joryio.
- Pega la clave API del paso 1.
- Revisa Server URL: debe ser la dirección de la API de tu región,
https://api-eu1.joryio.com. - Haz clic en Connect.
La página muestra entonces Connected to Joryio con el nombre y la URL de tu tienda y el Workspace ID.
Desde el plugin 1.6.32 la página de ajustes tiene pestañas. Hasta que la tienda está conectada solo se muestra Connection; después:
| Pestaña | Qué contiene |
|---|---|
| Connection | La tienda, su URL y el Workspace ID, Test connection, Disconnect y el estado de la sincronización |
| Tracking & identity | Inject Tracking Script y Reconocer a los visitantes por el email que escriben |
| Store | Cart Abandonment Time, Recovery Link Reuses Its Cart For y Track Guest Carts |
| Consent | La casilla de consentimiento de marketing |
| In-app & web push | Mensajes in-app y push web |
| Forms | Formularios de Contact Form 7 y Elementor |
Cada pestaña guarda solo sus propios ajustes, y la página muestra Settings saved. después de guardar. Un sitio sin WooCommerce no tiene las pestañas Store ni Consent. Las versiones anteriores muestran los mismos ajustes en una sola página.
Paso 4: no hay nada más que configurar
No tienes que crear claves de la API REST de WooCommerce: al pulsar Connect, el plugin crea una clave de lectura/escritura llamada Joryio Integration (en WooCommerce → Ajustes → Avanzado → API REST) y se la entrega a Joryio, que importa tus productos, clientes y pedidos. No borres esa clave: sin ella la sincronización se detiene; si la borras, pulsa Connect de nuevo para crear otra.
Ajustes de sincronización
Configura las opciones de sincronización en Configuración → Integraciones → WooCommerce → pestaña Configuración:
| Ajuste | Descripción | Predeterminado |
|---|---|---|
| Sincronizar productos | Importa productos desde WooCommerce | Activado |
| Sincronizar pedidos | Importa pedidos y actualiza estados | Activado |
| Sincronizar clientes | Importa datos de clientes | Activado |
| Sincronizar carritos | Registra carritos abandonados | Activado |
| Días históricos | Días de historial de pedidos que se importarán | 90 |
Seguimiento de la tienda
El plugin inserta un script de seguimiento en todas las páginas de la tienda. Cada evento se guarda con su nombre estándar (la columna Se guarda como), el mismo que usan las integraciones de Shopify y Magento y los SDK, así que un mismo segmento o disparador de recorrido funciona en todas las tiendas.
| Evento | Se guarda como | Cuándo se envía |
|---|---|---|
| Vista de página | Page Viewed | Cada visita a una página |
| Producto visto | Product Viewed | Una página de producto. Lleva el estado del stock: in_stock (true o false) y stock_status (in_stock, out_of_stock o backorder) |
| Categoría vista | Product List Viewed | Una página de categoría de productos, con category_id, category_name y la dirección de la página (plugin v1.3.1 o posterior) |
| Añadir al carrito | Product Added | Cada añadido, se haga como se haga: el botón AJAX de las páginas de tienda y categoría, el formulario de la página de producto y los botones y el minicarrito de WooCommerce Blocks (plugin v1.3.1 o posterior; las versiones anteriores solo veían el botón AJAX) |
| Checkout iniciado | Checkout Started | La página de checkout, clásica o Checkout block, una vez por carrito. Recargar el checkout no es un segundo inicio |
| Identificar | $identify | Captura de email desde formularios |
Clientes con sesión iniciada (plugin 1.6.6 o posterior). Cuando un cliente tiene la sesión iniciada en la tienda, el plugin firma su número de cliente de WooCommerce en el servidor de la tienda, y la identificación lleva esa prueba. Joryio la comprueba y une la navegación del visitante al contacto que ya tiene ese número de cliente - nunca a un contacto encontrado por email, porque varios contactos pueden compartir un email. El email que escribe un invitado sigue el ajuste Reconocer a los visitantes por el email que escriben de la tienda. Las versiones anteriores identificaban a un cliente con sesión iniciada solo por email, lo que podía dejar un segundo contacto con solo el email junto al contacto del cliente; tras la actualización, ese segundo contacto se une al contacto del cliente la próxima vez que el cliente inicia sesión en el mismo navegador. Desde el plugin 1.6.21, cuando la prueba no se puede firmar (no hay ninguna clave API guardada o Joryio no responde), el navegador no envía nada para un cliente con sesión iniciada y lo vuelve a intentar en la página siguiente - nunca recurre solo al email. Un cliente creado en wp-admin (Users → Add New), con la REST API de WooCommerce o en una importación también llega a Joryio con su número de cliente, y un cliente que Joryio aún no ha recibido se envía antes de su primera prueba.
Navegadores compartidos (plugin 1.6.26 o posterior). Cerrar sesión en la tienda da al navegador un nuevo visitante anónimo, así que la siguiente persona en el mismo dispositivo no aparece como la anterior. Otro cliente que inicia sesión en un navegador que usó otro cliente recibe primero un visitante nuevo, y cuando Joryio detecta que el visitante del navegador ya pertenece a otra persona (por ejemplo, el administrador de la tienda que lo usó antes), el plugin empieza un visitante nuevo y vuelve a enviar la prueba de inicio de sesión. El perfil y el historial de la persona anterior no cambian, y nunca se fusionan dos personas. Mientras se resuelve, los eventos de la página esperan unos segundos como máximo.
Los eventos de producto llevan product_id, variant_id (para una variación), quantity, price, currency y el estado del stock.
Cómo se cuenta un añadido al carrito. La tienda registra cada añadido en el momento en que ocurre y el navegador del comprador lo envía justo después, o en la página siguiente cuando el formulario de la página de producto recarga la página. Un añadido es un evento, se haga como se haga. Volver a añadir un pedido anterior ("Order again") no se cuenta.
Captura de email
Los emails se capturan automáticamente desde:
- El campo de email de facturación del checkout.
- Formularios de suscripción al boletín.
- Cualquier campo de entrada de email.
Reconocer a los visitantes por el email que escriben
Desde el plugin 1.6.22, la página de ajustes del plugin (WooCommerce → Joryio → Tracking & identity) tiene Recognise visitors by the email they type. Está activado por defecto, y un plugin anterior se comporta como si estuviera activado.
- Activado (por defecto) - un email que el visitante escribe en el checkout o en un formulario identifica su navegador como el contacto con ese email: el contacto existente (el de actividad más reciente, cuando varios contactos comparten el email - consulta más abajo) o uno nuevo. La navegación anterior del visitante se une a ese contacto, y no se crea un segundo contacto con el mismo email. Es lo que esperan la mayoría de las tiendas. La contrapartida: quien escribe el email de otra persona es reconocido como esa persona en ese navegador - por ejemplo, podría ver los mensajes in-app y el contenido personalizado de esa persona.
- Desactivado (identidad estricta) - un email escrito nunca identifica el navegador. El carrito, el pedido y el envío del formulario siguen yendo al contacto con ese email, así que los emails de carrito abandonado siguen llegando a la dirección escrita. Solo un cliente que ha iniciado sesión en la tienda es reconocido en el navegador.
Joryio muestra el ajuste solo para lectura en Integraciones → WooCommerce → Configuración, con la versión y cuándo se informó por última vez - solo se cambia en el plugin. Al guardarlo se informa a Joryio enseguida, y un cambio se aplica en pocos minutos.
El carrito sigue al email escrito, también a un email corregido. El carrito de un invitado pasa al contacto que indica su email del checkout en cuanto lo escribe, no solo cuando se informa del carrito abandonado. Desde el plugin 1.6.30 el carrito también se guarda con el propio navegador del invitado desde el primer producto añadido, así que un navegador de invitado es un contacto. Cuando un visitante corrige un email mal escrito, la dirección errónea se quita de nuevo y la corregida se busca como cualquier otra, así que el visitante y el carrito pasan al contacto correcto y ningún contacto se queda con el error. Una dirección escrita solo se quita mientras nada más en ese contacto identifique a una persona: un pedido, un número de teléfono, una elección de consentimiento, una cuenta en la tienda o una dirección escrita hace más de un día la conservan. Solo se corrige así una dirección escrita en el campo de email del checkout: una dirección escrita en un formulario del sitio (Contact Form 7, Elementor, una casilla de newsletter) nunca se quita. Desde el plugin 1.6.33 el plugin indica a Joryio de qué tipo de campo vino cada email escrito.
Cuando varios contactos comparten un email
Un email puede pertenecer a más de un contacto en Joryio (por ejemplo una pareja, o una persona importada dos veces). Cuando el email que un visitante escribe en el checkout coincide con varios contactos, el carrito, el checkout y el pedido van al contacto con actividad más reciente - la misma regla que usan las importaciones, la API y los formularios, para que el historial de una persona no se divida entre dos contactos. Una vez que un checkout ha elegido un contacto, se queda con él: las siguientes actualizaciones del carrito, el consentimiento, el carrito abandonado, el pedido y sus cambios de estado van todos al mismo contacto, aunque el otro contacto cambie mientras tanto. Un cliente con sesión iniciada en la tienda siempre va al contacto que tiene su cuenta de cliente de la tienda. Los contactos nunca se fusionan, y una baja sigue aplicándose a todos los contactos con ese email.
Mensajes in-app y push web
Desde la versión v1.5.0 del plugin, el script de seguimiento también carga el SDK web de Joryio en tu tienda, desde https://sdk.joryio.com/web/1/joryio.min.js (la última versión 1.x). Sus llamadas de datos van al servidor de Joryio de tu tienda, igual que el script de seguimiento. Los ajustes están en WordPress en WooCommerce → Joryio → In-app & web push:
| Ajuste | Por defecto | Qué hace |
|---|---|---|
| In-app messages | Activado | Muestra tus mensajes in-app de Joryio en la tienda |
| Allow HTML in-app messages | Activado | Muestra también los mensajes creados con el editor HTML. Se muestran en un marco protegido en tu tienda: los scripts que contengan no se ejecutan, y el mensaje no puede acceder a las páginas de tu tienda ni hacer sus propias peticiones de red |
| Web push | Desactivado | Permite a los compradores suscribirse a las notificaciones del navegador |
Las tiendas que actualizan desde una versión anterior reciben los mismos valores por defecto. El SDK lo carga el script de seguimiento, así que deja Inject Tracking Script activado.
Nada se cuenta dos veces. El SDK usa el id anónimo de visitante del script de seguimiento, así que ambos pertenecen a un mismo perfil. Los emails los sigue identificando solo el script de seguimiento, y el SDK no envía vistas de página ni inicios de sesión propios: los eventos de página y de carrito vienen del script de seguimiento, como antes.
Push web. Un navegador solo acepta el service worker de las notificaciones desde la propia dirección de tu tienda. Con Web push activado, el plugin escribe un archivo joryio-sw.js en la carpeta del sitio y además responde a https://your-store/joryio-sw.js desde WordPress; el worker cubre todo el sitio y carga el worker alojado de Joryio. A los compradores se les pregunta con un mensaje in-app de suscripción a notificaciones, así que deja los mensajes in-app activados y activa también el push web para la app en Joryio. El push web necesita la tienda en la raíz de su dominio (no en una subcarpeta como /shop/). Si el plugin no puede escribir el archivo, la página de ajustes muestra la única línea que debes subir tú. Al desactivar el push web, la misma dirección sirve un worker que se elimina a sí mismo de los navegadores de los visitantes.
Activa web push también en Joryio. Al conectar la tienda se creó una app para ella en Joryio (Configuración → Apps, con el nombre de la tienda). Ábrela, haz clic en la campana (Push) y en Activar Web Push: así se crean las claves de web push de la tienda, que el SDK de tu tienda lee solo - no hay nada que copiar. Después crea un mensaje in-app con un botón configurado como Pedir que activen las notificaciones y muéstralo en esa app; los compradores que acepten pueden recibir tus campañas push y los pasos de tus recorridos.
Casilla de consentimiento de marketing
Desde la versión v1.3.0 del plugin puedes preguntar a los compradores si quieren recibir tu marketing, con una casilla en las páginas que elijas. Actívala en WordPress en WooCommerce → Joryio → Consent.
| Ajuste | Qué hace | Valor predeterminado |
|---|---|---|
| Show the checkbox on (Mostrar la casilla en) | Elige cualquiera de: Checkout (classic shortcode checkout), el checkout clásico; Checkout (block checkout), el checkout de bloques; My Account registration form, el formulario de registro de Mi cuenta | Todos desactivados |
| Checkbox text (Texto de la casilla) | El texto junto a la casilla. Déjalo vacío para usar "Yes, I'd like to receive news and offers by email" | Texto predeterminado |
| Ticked by default (Marcada por defecto) | Muestra la casilla ya marcada en el checkout clásico y en el formulario de registro | Desactivado |
| SMS consent (Consentimiento SMS) | Añade una segunda casilla en el checkout para mensajes de texto, para el teléfono de facturación, con su propio texto | Desactivado |
Dónde aparece la casilla
- Checkout clásico: debajo de las notas del pedido.
- Checkout de bloques: en la sección del pedido, mediante la Additional Checkout Fields API de WooCommerce. Requiere WooCommerce 8.9 o posterior; en versiones anteriores la página de ajustes indica que la casilla no puede aparecer ahí. El checkout de bloques siempre muestra la casilla sin marcar.
- Formulario de registro: en el formulario de registro de Mi cuenta (solo la casilla de email).
Qué hace una casilla marcada en Joryio
- Marcada: el contacto queda suscrito al email (o al SMS) en Joryio. Su historial de suscripciones muestra el origen
woocommerce_checkoutowoocommerce_registrationy el texto exacto que vio. - Un comprador nuevo: una casilla marcada en el formulario de registro de My Account, y una casilla marcada en el checkout enviada antes del pedido, cuentan al momento solo para un comprador conocido o alguien ya suscrito. Cualquier otra persona queda pendiente hasta su propio pedido con la casilla marcada o un clic en el correo de confirmación, salvo que elijas contarla al momento - consulta Consentimientos de compradores nuevos. Una casilla que llega con el pedido siempre cuenta. Una marca de registro retenida se registra con el motivo
registration_tick_pending_confirmation(una marca de checkout retenida:checkout_tick_without_order). - Sin marcar: no cambia nada. Una casilla sin marcar nunca se trata como una baja, así que quien se suscribió en otro lugar sigue suscrito. La única excepción es el ajuste opcional Una casilla sin marcar da de baja, desactivado por defecto.
- Se dio de baja antes: marcar la casilla no vuelve a suscribir a quien se dio de baja, ni a quien tiene la dirección o el número suprimidos. Puede volver a suscribirse desde el centro de preferencias. La casilla marcada por un cliente con sesión iniciada es la excepción: consulta Qué hace un alta o una baja en la tienda.
- Ya suscrito: no se reescribe nada, así que se conservan la fecha y el origen de la suscripción original.
- Prueba registrada: cada cambio que hace una casilla (una marca, una marca en espera, una baja por casilla sin marcar) registra el texto que vio el comprador, la hora, la página (el checkout o la página Mi cuenta) y, desde el plugin 1.6.31, la dirección IP del comprador: la IP del cliente del pedido en el checkout, la dirección de la solicitud de registro en el formulario de registro. La dirección IP solo la ven los miembros del equipo que pueden ver datos personales, se incluye cuando la persona pide sus datos y se borra cuando se borran sus datos.
- SMS: el consentimiento es para el teléfono de facturación. Si el contacto aún no tiene teléfono, se añade ese número; un número que ya tiene el contacto nunca se sustituye. Un número que respondió STOP sigue dado de baja.
Cuándo cuenta una marca
Plugin 1.6.13 o posterior, checkout clásico y checkout de bloques: WooCommerce → Joryio → Consent → When a shopper ticks the checkout opt-in.
| Opción | Qué ocurre |
|---|---|
| Only when the order is placed (predeterminada) | La elección llega a Joryio con el pedido. Un comprador que marca y abandona no queda suscrito. |
| Record consent immediately | La marca llega a Joryio en cuanto el comprador la hace, antes de pedir. Los compradores y suscriptores conocidos cuentan al momento; un invitado nuevo cuenta tras su pedido o tras confirmar por correo (más abajo). Si el comprador vuelve a desmarcar la casilla en el mismo checkout, esa marca se retira - solo esa: una suscripción que dio en cualquier otro sitio se mantiene. El evento de carrito abandonado también lleva la casilla tal como la dejó el comprador. |
Quién cuenta al momento con Record consent immediately (1.6.15 o posterior):
| Comprador | Qué hace una marca antes del pedido |
|---|---|
| Un comprador conocido (Joryio tiene un pedido del contacto) o alguien ya suscrito a email o SMS | Cuenta al momento: queda suscrito, así que tu recordatorio de carrito abandonado puede llegarle. |
| Un invitado nuevo | Queda pendiente: la marca se registra (texto, hora, tienda, checkout), pero el contacto no queda suscrito ni recibe marketing - un recordatorio de carrito abandonado se omite como Pendiente de confirmación. Su propio pedido con la casilla marcada lo suscribe, y también un clic en el correo de confirmación si lo activas. |
| Alguien que se dio de baja y no ha pedido | Sigue dado de baja. Su pedido sigue entonces las reglas de más abajo. |
Por qué: en un checkout como invitado cualquiera puede escribir el email de cualquiera. Sin esta regla un bot podría poner un artículo en el carrito, escribir el email de un desconocido, marcar la casilla e irse - suscribiendo a alguien que nunca pidió.
Dos salvaguardas en Integraciones → WooCommerce → Configuración (solo administradores; cada cambio queda en el registro de auditoría):
-
Enviar a los invitados nuevos un enlace de confirmación por correo - desactivado por defecto, porque la dirección se escribió en el checkout y nadie la ha verificado todavía. Si está activado, un invitado nuevo pendiente recibe un correo; su enlace lo suscribe (origen
double_opt_in). Usa tu plantilla de confirmación de double opt-in si elegiste una. -
Casillas marcadas por comprador y hora - 3 por defecto, por dirección IP, por checkout y por email. Las marcas por encima del límite se ignoran y el evento de carrito abandonado de ese checkout no lleva consentimiento; el pedido sigue registrando la elección. El plugin tiene el mismo límite (Opt-in ticks per shopper per hour, 3 por defecto) y detiene esa marca antes de enviarla.
-
Solo cuenta una marca que hace el propio comprador, en ambas opciones. Una casilla que se muestra ya marcada (Ticked by default) solo cuenta después de que el comprador interactúe con ella: si no la toca, no es consentimiento - ni al momento ni con el pedido. Desmarcarla y volver a marcarla cuenta.
-
Cada cambio se envía una vez; abrir o recargar el checkout no envía nada.
-
A quien se dio de baja solo se le vuelve a suscribir como se describe en Qué hace un alta o una baja en la tienda. Desmarcar nunca da de baja a nadie - solo retira la marca hecha en ese checkout.
-
La tienda debe conocer el email del comprador cuando marca (escrito en el campo de email del checkout, o el comprador tiene la sesión iniciada). Si todavía no lo conoce, la elección viaja con el carrito abandonado o con el pedido.
Con Record consent immediately, una marca es consentimiento de marketing por sí misma - no está ligada a una compra. Haz que el texto de la casilla diga qué acepta recibir el comprador y por qué canal (por ejemplo "Yes, I'd like to receive news and offers by email"), deja la casilla sin marcar por defecto y separada de la aceptación de tus condiciones, y menciónala en tu aviso de privacidad. Joryio registra con cada marca el texto mostrado, la hora, la tienda, el checkout y la dirección IP del comprador. La marca de un invitado nuevo queda pendiente hasta su propio pedido o su confirmación, así que nadie recibe marketing porque otra persona escribió su dirección; el correo de confirmación solo se envía si lo activas. El recordatorio de carrito abandonado llega entonces a un comprador suscrito como mensaje de marketing.
Se ve en Joryio, se configura en el plugin
Integraciones → WooCommerce → Configuración muestra los ajustes de consentimiento en el pago del plugin en la tarjeta Store checkout opt-in (set in your store), solo para lectura: si la casilla se muestra (pago clásico o de bloques), Ticked by default y When a shopper ticks the checkout opt-in, con la versión del plugin y cuándo los informó por última vez. Solo se cambian en el plugin, en WooCommerce → Joryio → Consent; Joryio nunca los cambia. Con Record consent immediately, la tarjeta también muestra los ajustes de Joryio que entonces deciden qué hace una casilla marcada: Opt-ins from new shoppers, el email de confirmación y el límite por hora.
El plugin 1.6.16 o posterior los informa con cada solicitud que envía a Joryio - carritos, carritos abandonados, pedidos, clientes, productos y el resto - y otra vez cuando guardas uno de ellos. Un cambio, como una nueva versión del plugin tras una actualización, se ve desde la siguiente solicitud; un informe sin cambios se vuelve a registrar como mucho una vez por hora, así que el último informe puede tener hasta una hora. Con un plugin anterior la tarjeta dice Not reported yet - update the plugin.
Consentimientos de compradores nuevos
Consentimientos de compradores nuevos (que aún no han comprado) en Integraciones → WooCommerce → Configuración (solo administradores; cada cambio queda en el registro de auditoría) decide qué hace el consentimiento de alguien que aún no ha comprado:
| Opción | Qué pasa |
|---|---|
| Esperar a que hagan un pedido o confirmen por correo (predeterminado, recomendado) | El consentimiento de un comprador nuevo queda pendiente hasta su propio pedido con la casilla marcada o un clic en el correo de confirmación (si activaste Enviar a los invitados nuevos un enlace de confirmación por correo). |
| Contar al momento (menos estricto - cualquier visitante puede introducir cualquier correo) | Cuenta al momento. Cualquier visitante puede escribir cualquier dirección de correo, así que alguien puede suscribir a otra persona; esta puede darse de baja con un clic. |
Cubre todo consentimiento que llega sin pedido: la casilla del formulario de registro de My Account y - con Record consent immediately - la casilla del checkout. En ambos casos:
- un comprador conocido o alguien ya suscrito cuenta al momento;
- una casilla que llega con el pedido del propio comprador siempre cuenta;
- una baja siempre se aplica al momento;
- el límite Casillas marcadas por comprador y hora sigue vigente.
No es el mismo ajuste que When a shopper ticks the checkout opt-in en el plugin: ese decide cuándo se envía una casilla del checkout - con el pedido o en cuanto se marca; este decide qué hace un consentimiento temprano de un comprador nuevo. Con Only when the order is placed, la casilla del checkout llega con el pedido y siempre cuenta, así que este ajuste cubre solo los consentimientos del registro y de la cuenta.
Qué hace un alta o una baja en la tienda
| Qué envía la tienda | Qué hace Joryio |
|---|---|
| Una casilla de consentimiento marcada en un checkout de invitado | Suscribe a un contacto que aún no tiene suscripción en ese canal. Salvo que el ajuste de la tienda de abajo esté activado, nunca vuelve a suscribir a quien se dio de baja: en un checkout de invitado cualquiera puede escribir el email de cualquiera. |
| Un consentimiento de un cliente con sesión iniciada (un pedido hecho con la sesión iniciada en una cuenta de la tienda - plugin 1.6.1 o posterior), con fecha posterior a la última baja del contacto | También vuelve a suscribir a un contacto que se dio de baja con un enlace de baja o el botón de baja en un clic, la página de preferencias, la API, un miembro del equipo o la baja en esta misma tienda. |
| Un consentimiento en el checkout o en el registro del cliente, con Permitir que las suscripciones en el pago vuelvan a suscribir a quien se dio de baja activado (desactivado por defecto) | Vuelve a suscribir a un contacto que se dio de baja - también después de un checkout de invitado - cuando la hora del consentimiento en la tienda es posterior a su última baja. El riesgo: en un checkout de invitado WooCommerce no puede decir a Joryio quién es el comprador, así que alguien que escriba el email de otra persona en el checkout podría volver a suscribirla; siempre puede volver a darse de baja con un clic. Los casos de abajo que nunca se deshacen siguen valiendo. |
| Una casilla sin marcar | Ningún cambio: nunca es una baja. Salvo que actives Una casilla sin marcar da de baja en la tienda (desactivado por defecto). |
| Lo que ningún consentimiento de la tienda deshace, con el ajuste activado o no | Una queja de spam, un rebote duro, un bloqueo de toda la organización, otro espacio de trabajo, una baja registrada en otro contacto con el mismo email o teléfono, y un STOP de SMS. |
- El ajuste está en Integraciones → WooCommerce → Configuración, uno por conexión de tienda, desactivado por defecto. Solo los administradores pueden cambiarlo, y cada cambio queda en el registro de auditoría.
- Una nueva suscripción se aplica solo a ese contacto; los demás contactos con el mismo email o teléfono siguen dados de baja. El historial del contacto dice por qué, por ejemplo se volvió a suscribir en el checkout de la tienda (cliente con sesión iniciada) tras darse de baja desde la página de preferencias.
- SMS: con el doble opt-in de SMS activado, una nueva suscripción envía un único mensaje "Responde YES" y el contacto queda pendiente hasta que responda. Un contacto que envió
STOPsolo vuelve por esta vía: con el doble opt-in de SMS desactivado, un consentimiento de la tienda nunca lo vuelve a suscribir. - El consentimiento de la tienda suscribe al canal, no a una lista: una lista que exige doble opt-in sigue enviando su email de confirmación cuando la persona se une a ella.
Una casilla sin marcar da de baja (opcional)
Para tiendas con una política de consentimiento estricta, el plugin 1.6.27 o posterior tiene un ajuste opcional en WooCommerce → Joryio → Consent, junto a When a shopper ticks the checkout opt-in: An unticked opt-in box at checkout or registration unsubscribes the person. Está desactivado por defecto.
| Ajuste | Qué hace una casilla sin marcar |
|---|---|
| Desactivado (por defecto) | Nada. Una casilla sin marcar nunca cambia el estado de nadie. |
| Activado | Una casilla que se mostró y se envió sin marcar - con un pedido realizado, o en el formulario de registro - registra una baja en el canal de esa casilla (email o SMS). Solo para clientes con sesión iniciada, a quienes la tienda verificó. |
| Activado, con Also for guest checkouts | Lo mismo en los checkouts de invitado y en los registros de cuentas nuevas. En un checkout de invitado cualquiera puede escribir el email de otra persona: un invitado podría dar de baja a otra persona. Un registro de cuenta nueva cuenta como invitado: la tienda no verifica la dirección de email. |
- La baja se registra como cualquier otra: en el historial de suscripciones del contacto (origen
woocommerce_checkout/woocommerce_registration, motivocheckout_box_unticked, con el texto que se mostró junto a la casilla) y como el eventomessage.unsubscribed. - También quien nunca se suscribió: con el ajuste activado, una casilla sin marcar da de baja a la persona aunque nunca se haya suscrito (Not Set pasa a Unsubscribed). Como toda baja, se aplica a todos los contactos con el mismo email o teléfono en el espacio de trabajo, y deshacerla requiere un nuevo consentimiento.
- Nunca para una casilla que no se mostró (la casilla de SMS solo donde se muestra), nunca desde una sincronización de pedidos pasados y nunca para una casilla desmarcada antes de realizar el pedido: desmarcarla durante el checkout solo retira la marca de ese mismo checkout. Nunca suscribe ni vuelve a suscribir a nadie y nunca cambia una supresión por rebote o queja.
- Integrations → WooCommerce → Settings muestra el ajuste en modo de solo lectura. Las versiones anteriores no lo informan y Joryio lo trata como desactivado.
Qué se registra
Cada elección se guarda en el pedido de WooCommerce (o en el cliente, en el formulario de registro) y se envía a Joryio con el pedido o el cliente:
- si se marcó cada casilla (sí o no)
- la fecha y la hora
- dónde se mostró (checkout clásico, checkout de bloques o formulario de registro)
- el texto mostrado junto a la casilla
- la URL de tu tienda
La pantalla del pedido en WooCommerce muestra la elección registrada debajo de la dirección de facturación.
Según el RGPD (UE y Reino Unido), una casilla marcada de antemano no es un consentimiento válido: el comprador tiene que marcarla él mismo. Deja Ticked by default desactivado salvo que estés seguro de que las normas donde vendes lo permiten. La página de ajustes muestra esta advertencia junto a la opción.
Formularios: Elementor y Contact Form 7
Desde la versión v1.6.0, el plugin envía a Joryio los envíos de tus formularios de Contact Form 7 y Elementor Pro. Cada envío crea el contacto, o actualiza el que tiene el mismo email (el mismo teléfono cuando el formulario no tiene email), y registra el evento Form Submitted. Solo los campos que asignas salen de tu sitio.
Contact Form 7
- En WordPress, ve a WooCommerce → Joryio (en un sitio sin WooCommerce: Settings → Joryio). La pestaña Forms muestra todos los formularios de Contact Form 7
- Marca Send this form to Joryio
- Elige la List (opcional - sin lista el formulario solo guarda el contacto y el evento)
- Elige el modo de List subscription (ver abajo) y, para el modo de consentimiento, el campo de aceptación del formulario
- Asigna los campos: cada uno a Email, Phone, First name, Last name, Custom attribute (escribe la clave del atributo) o Do not send. Asigna al menos un campo de email o de teléfono
- Haz clic en Save form settings (solo administradores)
El envío se manda después de que Contact Form 7 lo acepte y envíe su propio email.
Elementor Pro
- Edita el formulario en Elementor y, en Actions After Submit, añade Joryio
- En la sección Joryio, elige la List y el modo de List subscription. Para el modo de consentimiento, escribe el Consent field ID - el ID del campo Acceptance del formulario, en la pestaña Advanced del campo
- Escribe los ID de los campos de Email, Phone, First name y Last name, y los atributos personalizados uno por línea como
attribute_key = field_id - Haz clic en Update
Modos de suscripción a la lista
Cada formulario tiene su propio modo:
| Modo | Contacto y evento Form Submitted | Suscripción a la lista |
|---|---|---|
| This is a signup form - always subscribe | En cada envío | En cada envío |
| Only when a consent field is ticked | En cada envío | Solo cuando el campo de consentimiento del formulario (un campo de aceptación de Contact Form 7 o un campo Acceptance de Elementor) está marcado |
La propiedad consentGiven del evento indica qué ocurrió. Una casilla sin marcar nunca da de baja a nadie.
Doble opt-in
Cuando la lista del formulario requiere doble opt-in, el contacto no se suscribe enseguida: Joryio envía el email de confirmación (el mismo que en los formularios de páginas de destino - elige su plantilla en Settings → Subscriptions → Double opt-in) y lo suscribe cuando hace clic en el enlace. Hasta entonces el evento nombra la lista en listsPending. En los desplegables de listas estas listas aparecen marcadas como (double opt-in).
Qué registra Joryio
- El contacto: el formulario de un visitante solo rellena el email y el teléfono cuando el contacto no los tiene: nunca cambia el email o el teléfono de un contacto existente. Un cliente con sesión iniciada puede actualizar su teléfono (plugin 1.6.34): cuando un cliente con sesión iniciada en tu sitio envía un formulario y el email del formulario pertenece a su propio contacto, el teléfono escrito en el formulario reemplaza el teléfono del contacto. El plugin demuestra quién tiene la sesión iniciada con una prueba firmada generada en tu servidor, solo para un formulario enviado en tu propio sitio; el email nunca se cambia de esta forma. Los nombres y atributos personalizados que asignaste se escriben en el contacto. Un contacto creado por un formulario muestra Creado vía: Formulario del sitio web
- El evento:
Form Submitted, consource(cf7oelementor),formId,formName,pageUrl,consentGiven,consentText(el texto de la casilla de consentimiento marcada, desde el plugin 1.6.31),listsSubscribed,listsPending, elemaily elphonepropios del formulario (con el formato con que el contacto los guarda, para que no se pierda un teléfono distinto que escribió un visitante) yphoneUpdatedcuando el teléfono del formulario difería del del contacto -truecuando el contacto lo tiene ahora,falsecuando el contacto conservó el suyo. Los miembros del equipo que no pueden ver datos personales no ven los valores de email y teléfono, y se borran junto con la persona. Úsalo como disparador de un recorrido, disparador de una campaña o condición de un segmento. Los demás valores enviados no van en el evento - El registro de consentimiento - cuando el formulario suscribe al contacto a una lista, el historial de suscripciones guarda la prueba del consentimiento: el texto exacto de la casilla de consentimiento que marcó la persona, la página en la que se envió el formulario (
pageUrl), la hora y la dirección IP del visitante (solo la ven los miembros del equipo que pueden ver datos personales). Consulta Prueba de consentimiento
Prueba de consentimiento
Desde el plugin 1.6.31, cuando la persona marca el campo de consentimiento del formulario, el plugin también envía lo que aceptó:
- El texto - el texto visible del campo de consentimiento: el texto de una etiqueta acceptance de Contact Form 7 (
[acceptance your-consent] I agree to receive news by email [/acceptance]), o el Acceptance Text de un campo Acceptance de Elementor (si no, su etiqueta). Se quitan los enlaces y el formato; como máximo 500 caracteres. El texto que escribas fuera de la etiqueta acceptance en la plantilla de Contact Form 7 no se envía - pon el texto dentro de la etiqueta. En Elementor, el campo es el indicado en Consent field ID (cualquier ID personalizado) y debe ser un campo Acceptance - La página, la hora y la dirección IP del envío del visitante
Una casilla sin marcar nunca envía su texto, y un formulario de suscripción (sin casilla) no envía ninguno. La prueba se escribe en un registro de consentimiento solo cuando el formulario suscribe al contacto a una lista: con No list no se suscribe nada, así que el texto queda solo en el evento Form Submitted (consentText; la dirección IP nunca va en el evento). En una lista con doble opt-in la prueba se guarda con la confirmación y se registra cuando la persona confirma.
Los envíos nunca hacen esperar al visitante: se ponen en cola y WP-Cron los envía en segundo plano, y se reintentan si no se puede contactar con Joryio (tres intentos, con cinco minutos entre ellos). Un reintento nunca se cuenta dos veces. WP-Cron se ejecuta con las visitas al sitio, así que en un sitio con muy poco tráfico, o con WP-Cron desactivado, ejecútalo desde un cron del servidor.
Reconocer al visitante. Un email escrito en un formulario del sitio también identifica el navegador del visitante cuando Reconocer a los visitantes por el email que escriben está activado (por defecto). El envío en sí siempre va al contacto con ese email.
Sitios sin WooCommerce
El plugin funciona en cualquier sitio WordPress. Sin WooCommerce lo encontrarás en Settings → Joryio y se conecta igual, con la misma clave jry_wc_: tienes formularios del sitio web, el script de seguimiento con captura de email, mensajes in-app y push web. Las funciones de tienda - seguimiento de carritos, sincronización de pedidos, productos y clientes, enlaces de cupones y la casilla de consentimiento del checkout - se activan cuando WooCommerce está activo. Si añades WooCommerce más adelante, haz clic en Disconnect y luego otra vez en Connect, para que Joryio cree su clave REST y sincronice tu tienda. La guía completa para un sitio sin tienda es Sitio WordPress (sin tienda).
Recuperación de carrito abandonado
El plugin registra los carritos en tiempo real:
- Los artículos y el valor se registran mientras compra el cliente.
- Tras 30 minutos de inactividad, el carrito se marca como abandonado.
- Se genera una URL de recuperación para restaurarlo.
- Usa el canvas para enviar emails de recuperación con el enlace de restauración.
URL de recuperación de carrito
Cuando un cliente hace clic en el enlace de recuperación:
- Se restaura la sesión de su carrito.
- Se vuelven a añadir todos los artículos.
- Se le redirige al checkout.
Los productos que ya no se pueden añadir (agotados, eliminados o no disponibles) se nombran: "No longer available, so not added: ...". Si no se puede añadir ninguno, el comprador ve "The products in this cart are no longer available." en la página del carrito en lugar de un checkout vacío, y el carrito no cuenta como recuperado (plugin v1.6.9 o posterior).
Desde el plugin v1.6.10 el enlace funciona como el de la extensión de Magento:
- Nunca vacía el carrito actual del comprador: los productos guardados se añaden a él. Si el carrito ya tiene productos, o un comprador con sesión iniciada abre el carrito guardado de un invitado, una página pregunta primero: "Add these products from your saved cart to your current cart?"
- El carrito de un cliente registrado abierto por otro cliente con sesión iniciada se rechaza: "This cart belongs to a different account. Sign out to open it as a guest." No se nombra a nadie.
- Abierto sin sesión iniciada, los productos de un cliente registrado se restauran con "Sign in to use your saved details at checkout."
- Abierto de nuevo: el mismo navegador va al carrito que ya restauró (nada se duplica), otro navegador u otro dispositivo recibe un carrito nuevo con los productos guardados (más abajo) y, después del pedido, el enlace dice "You already completed this order."
- Cargado por otro sitio (como imagen, marco o fetch) el enlace no cambia nada.
- Cuenta como recuperación el pedido, no el clic: el pedido indica de qué carrito guardado viene, así que el carrito abandonado cuenta como recuperado por ese pedido aunque el comprador finalice con otro email.
Abrir el enlace: una página de restauración, un carrito por enlace
Desde el plugin 1.6.17, abrir el enlace no cambia nada por sí solo. Las vistas previas de enlaces en las apps de chat y los escáneres de seguridad del correo (Outlook Safe Links, Gmail y otros) abren los enlaces antes que el comprador, y cada una de esas aperturas restauraba antes el carrito una vez más.
- Abrir el enlace muestra una página breve, "Restoring your saved cart...", que nunca se guarda en caché ni se indexa. Su script restaura el carrito y continúa al pago; sin script, el comprador pulsa Restore my cart. Una vista previa o un escáner que no ejecuta scripts no restaura nada. La página de confirmación ("Add these products from your saved cart to your current cart?") sigue esperando el clic del comprador.
- Un carrito por enlace y por navegador: se recuerda el carrito que restauró el enlace junto con el navegador en el que se restauró (WooCommerce guarda el carrito en la sesión del navegador). Abrir el mismo enlace otra vez en ese navegador devuelve los productos guardados a ese mismo carrito en lugar de una copia nueva, durante 7 días (WooCommerce → Joryio → Store → Recovery Link Reuses Its Cart For, de 1 a 30 días). Otro navegador u otro dispositivo (o un escáner que sí ejecutó la página) nunca recibe ese carrito: recibe un carrito nuevo solo con los productos y el código de descuento del carrito guardado, así que nada de lo que alguien escribió al pagar en un navegador aparece nunca en otro. A partir de ahí el enlace recuerda el carrito del navegador más reciente. Los dos carritos siguen contando como el mismo carrito guardado: un pedido desde cualquiera de ellos es una sola recuperación, y solo se envía un recordatorio de "abandonado de nuevo" por carrito original.
- Ya pedido: "You already completed this order." y no se restaura nada.
- Como máximo 10 restauraciones por enlace y hora: después, "Too many attempts with this cart link. Please try again later."
Atribución de los pedidos recuperados
Desde la plugin 1.6.11, el enlace de recuperación conserva los parámetros de atribución que añade el seguimiento de clics de Joryio (jr_cid, jr_jid, utm_*) al llevar al comprador al carrito, así que el pedido se atribuye al mensaje que envió el enlace. Solo se llevan estos parámetros, cada uno comprobado según su formato - nunca el token del enlace ni nada más. Cuando el comprador abre el enlace y compra con otro email, Joryio atribuye el pedido al clic del contacto al que se envió el mensaje. Consulta Carritos.
Un carrito restaurado abandonado de nuevo
Desde el plugin 1.6.12, una copia restaurada que el comprador vuelve a abandonar se informa una vez más tras el tiempo de abandono normal, con reabandonedAfterRecovery: true y originalSessionId en el evento Cart Abandoned; cualquier otra copia inactiva del mismo carrito original en 30 días no se informa. Un carrito que ya tenía productos y recibió los guardados es un carrito normal. Un pedido desde cualquier copia cuenta como una recuperación del original. Consulta Carritos.
La copia restaurada de un invitado no tiene email (el enlace nunca lo copia); desde 1.6.17 se informa igualmente, sin email, y Joryio envía el único recordatorio al contacto del carrito original; consulta Carritos.
Desde la versión 1.6.23, cada evento de carrito de una copia restaurada indica de qué carrito se restauró (restoredFromSessionId), así que la copia de un invitado aparece en E-Commerce → Carritos como Copia restaurada del carrito del contacto original en lugar de un carrito Sin contacto, y no cuenta como otro carrito abandonado - consulta Carritos.
El plugin 1.6.11 y anteriores informaban cada carrito restaurado abandonado de nuevo como un abandono normal, sin límite. La actualización añade por sí sola tres columnas a la tabla de carritos del plugin; no hace falta reactivar ni limpiar nada.
Tiempo de abandono, zona horaria y Track Guest Carts
Cart Abandonment Time y Track Guest Carts están en WooCommerce → Joryio → Store.
Desde el plugin 1.6.24:
- La comprobación de carritos abandonados usa la zona horaria del propio sitio. Las versiones anteriores comparaban el último cambio de un carrito, guardado en la zona horaria del sitio, con una hora en UTC: una tienda al este de UTC (por ejemplo en Israel o Europa) informaba de sus carritos con horas de retraso, así que Joryio los marcaba antes como abandonados por su cuenta, con la página de pago normal en lugar del enlace de recuperación; una tienda al oeste de UTC podía informar de un carrito mientras el comprador seguía en él.
- El carrito abandonado se envía en la misma ejecución de WP-Cron que lo encuentra. WordPress ejecuta WP-Cron solo cuando alguien visita el sitio, así que en una tienda con poco tráfico la comprobación puede seguir retrasándose; entonces Joryio marca el carrito por su cuenta, con el enlace de recuperación, después de tu tiempo de abandono más 20 minutos - consulta Carritos. Para una hora exacta, ejecuta WP-Cron desde un cron del servidor.
- Track Guest Carts desactivado: los carritos de invitados no se envían a Joryio y nunca se marcan como abandonados, ni por el plugin ni por Joryio. Las vistas de página, las vistas de producto,
Product AddedyCheckout Startedse siguen registrando para los invitados.
Desde el plugin 1.6.28:
- Un cambio en el carrito se envía a Joryio desde la propia visita del comprador, al final de la petición (después de enviar la página, en servidores PHP-FPM y LiteSpeed), y no queda en cola para una ejecución posterior de WP-Cron. Un producto añadido a un carrito que Joryio ya marcó como abandonado llega a Joryio enseguida: el carrito deja de estar abandonado, muestra su nuevo contenido y se notifica de nuevo cuando queda sin cambios durante su tiempo de abandono.
- La comprobación de carritos abandonados también se ejecuta al final de una visita cuando no se ha ejecutado desde hace un minuto (servidores PHP-FPM y LiteSpeed, después de enviar la página), así que los carritos se notifican más o menos cuando pasa el tiempo de abandono aunque WP-Cron se retrase.
- Una ejecución de la comprobación por sí sola - la del final de una visita, o Run now en WP Crontrol, que ejecuta solo ese evento - envía primero los eventos del plugin que siguen esperando (una ejecución normal de WP-Cron los envía por sí misma), de modo que Joryio tiene el último cambio de un carrito antes de su abandono.
- Para ejecutar WP-Cron a mano, use
wp cron event run --due-now(WP-CLI) o solicitehttps://<your store>/wp-cron.phpsin un valordoing_wp_cron. Una petición que lleva un valordoing_wp_cron(por ejemplo?doing_wp_cron=$(date +%s)) no ejecuta nada salvo que el valor sea exactamente el bloqueo actual del propio WordPress, y aun así responde 200. Una petición sin valor tampoco ejecuta nada si WP-Cron se inició en los últimos 60 segundos. - Los informes de la comprobación (solo ids de fila de carrito) y cualquier envío fallido se escriben en WooCommerce → Status → Logs, origen
joryio.
Compatibilidad con varias tiendas
Al conectar varias tiendas WooCommerce:
- Cada tienda recibe su propia entidad de aplicación con una clave SDK única.
- Todos los eventos se etiquetan con el
$app_idde la tienda. - Filtra eventos por
$platform = 'woocommerce'o por un$app_idconcreto. - Las personas se pueden vincular entre tiendas mediante el email.
Conciliación programada
Las actualizaciones en tiempo real (el plugin y los webhooks) pueden perderse - por ejemplo, mientras la tienda no está disponible o cuando un envío falla demasiadas veces. Cada 6 horas Joryio revisa la tienda en busca de lo que cambió desde la revisión anterior y completa lo que las actualizaciones en tiempo real no recibieron: pedidos (con sus reembolsos y cancelaciones), productos y clientes recién registrados. Los cambios en el perfil de un cliente existente no se revisan (la API de WooCommerce no puede listar clientes por fecha de cambio), y los carritos llegan solo desde el plugin (la API de WooCommerce no tiene una lista de carritos). Una versión de WooCommerce que ignora el filtro "modified after" no se revisa para pedidos y productos.
Nada se cuenta dos veces: un elemento que Joryio ya tiene en la misma versión o en una más reciente no se modifica, y una copia más antigua nunca sobrescribe una más reciente.
- Un pedido que falta y se realizó en las últimas 24 horas se registra como si hubiera llegado en tiempo real, así que los journeys posteriores a la compra empiezan igualmente. Un pedido que falta más antiguo, y un reembolso o cancelación de un pedido que Joryio ya tenía, se registran sin iniciar journeys;
Order RefundedyOrder Cancelledse siguen registrando una sola vez cada uno. - Cada tienda se revisa a su propia hora, así que no se leen todas a la vez, y una revisión lee un número limitado de cambios; una tienda con más cambios continúa en menos de media hora.
- Las tiendas desconectadas, con error o aún sincronizando se omiten hasta que vuelvan a estar conectadas.
El resultado se muestra en Configuración → Integraciones → WooCommerce: Última conciliación: 22/10/2026 12:00 - elementos completados: 3. Si las revisiones siguen encontrando cambios que nunca llegaron en tiempo real, Joryio muestra la alerta Live updates from WooCommerce may be failing (campana, Registros y monitoreo y un correo a los administradores del workspace). Los datos que faltan se completan de todos modos, pero revisa la conexión de la tienda: los journeys que reaccionan a esos cambios empiezan tarde.
La misma página muestra Último evento recibido - cuándo llegó a Joryio la última actualización en vivo de la tienda (con un minuto de retraso como máximo) - y Última sincronización, la más reciente entre la última sincronización completa y la última conciliación. En una tienda que envía actualizaciones en vivo, Último evento recibido avanza aunque no se haya ejecutado ninguna sincronización.
Reembolsos y cancelaciones
Cada reembolso de WooCommerce se convierte en un evento Order Refunded (con el importe reembolsado y el motivo) y cada pedido cancelado en un Order Cancelled, para que un journey pueda reaccionar. Un reembolso que informan a la vez el plugin y un webhook sigue siendo un solo evento. Consulta Eventos de reembolso y cancelación.
Cómo los datos de la tienda actualizan un contacto
Los pedidos, los checkouts y las actualizaciones de clientes de tu tienda actualizan el contacto correspondiente en Joryio:
- Teléfono - pedidos: un pedido nunca reemplaza el teléfono que ya tiene un contacto, haya iniciado sesión el comprador o no - el email de facturación se puede escribir libremente en el checkout. Solo rellena el teléfono cuando el contacto no tiene.
- Teléfono - cuentas de cliente: los cambios en la cuenta del cliente en la tienda (actualizaciones de clientes y la importación de clientes) actualizan el teléfono del contacto.
- Los nombres se actualizan con los pedidos y las actualizaciones de clientes.
- Número de cliente de la tienda: el número de cliente de WooCommerce de un contacto viene de la cuenta del cliente (actualizaciones de clientes, la importación de clientes y los eventos de cliente del plugin), nunca de un pedido - un comprador con sesión iniciada puede escribir el email de otra persona. Cuando la cuenta tiene otro email, el número pasa al contacto con ese email.
- El pedido conserva el teléfono escrito en el checkout en su dirección de facturación y envío, pase lo que pase con el contacto.
- El consentimiento de SMS dado en el checkout con un número distinto al del contacto no suscribe el número del contacto.
- Otras formas de cambiar el teléfono de un contacto: la cuenta del cliente en la tienda, el SDK o la API desde tu propio sitio o app (por ejemplo, después de que la persona inicie sesión), una importación, o editar el contacto en Joryio.
Webhooks
El plugin envía eventos directamente a Joryio - más rápido que mediante webhooks. Además, se registran webhooks de la API REST como respaldo:
- Pedido creado, actualizado o eliminado.
- Producto creado, actualizado o eliminado.
- Cliente creado o actualizado.
Sincronización de datos
Sincronización manual
Inicia una sincronización manual desde Configuración → Integraciones → WooCommerce → pestaña Estado de sincronización:
- Sincronizar todo: sincronización completa de productos, pedidos y clientes.
- Sincronizar productos: solo productos.
- Sincronizar pedidos: solo pedidos.
- Sincronizar clientes: solo clientes.
Sincronización automática
El plugin envía eventos en tiempo real para:
- Pedidos nuevos.
- Cambios de estado del pedido.
- Actualizaciones de productos y clientes.
- Cambios en el carrito.
- Carritos recuperados.
Eliminar un cliente en tu tienda no elimina el contacto en Joryio. Para borrar los datos de una persona, usa Eliminar datos en el contacto.
Datos de producto
Cada producto se guarda en tu catálogo de Joryio con:
- Nombre, precio, precio rebajado, moneda, SKU, imágenes, enlace del producto, categorías y etiquetas
- Estado y cantidad de stock, del producto y de cada variación
- Variaciones, cada una con su propio precio, stock, SKU y opciones (por ejemplo Color: Blue)
- Marca - de WooCommerce Brands (WooCommerce 9.6 o posterior), o de Perfect Brands for WooCommerce o YITH WooCommerce Brands
- Código de barras - el campo GTIN, UPC, EAN o ISBN (WooCommerce 9.2 o posterior), del producto y de cada variación
- Atributos - cada atributo con sus valores (por ejemplo Material: Linen)
- Descripción - como texto sin formato, sin HTML ni shortcodes de maquetadores, hasta 5.000 caracteres
Antes de WooCommerce 9.2 no existe el campo de código de barras, así que los productos se sincronizan sin él; todo lo demás se sincroniza en cualquier versión compatible.
Los cambios de producto llegan a Joryio por dos vías: desde el plugin y desde los webhooks de WooCommerce. Basta con una, así que el catálogo - y las alertas de vuelta al stock y de bajada de precio - se mantiene al día aunque WooCommerce desactive sus webhooks tras fallos de entrega repetidos. Cuando ambas entregan el mismo cambio, se guarda una vez y las alertas se envían una vez, y una entrega que llega tarde nunca sobrescribe datos de producto más recientes.
Desconectar y volver a conectar
- Test connection en la página de ajustes del plugin (visible mientras está conectado) comprueba que Joryio acepta la clave y tiene la tienda conectada, y explica por qué no si no es así.
- Desconectar en la página de ajustes del plugin termina la conexión. El plugin borra los webhooks de Joryio en WooCommerce y su clave REST Joryio Integration, y luego avisa a Joryio, que marca la tienda como desconectada y deja de sincronizar. La clave API sigue siendo válida: vuelve a hacer clic en Connect con la misma clave. Si en ese momento no se puede contactar con Joryio, el sitio se desconecta igualmente y la página indica que Joryio puede seguir mostrando la tienda como conectada: desconéctala también en Joryio.
- Desconectar en Joryio (Integraciones → WooCommerce & WordPress) revoca la clave API al instante; la página lo confirma y muestra la tienda desconectada en el momento. Conectar con esa clave dice entonces «This key was revoked when the store was disconnected in Joryio», y la página de WooCommerce en Joryio explica por qué no hay clave. Genera una clave nueva y pégala en el plugin para volver a conectar.
- Después de volver a conectar, Fecha de conexión muestra la nueva hora de conexión y empieza una sincronización completa: Última sincronización dice Sincronizando ahora... hasta que termina. Tus ajustes de consentimiento en la página de la tienda en Joryio se conservan al desconectar y volver a conectar.
Los ajustes del plugin se conservan al pulsar Save Changes y al actualizar el plugin. Antes de la 1.6.19, Save Changes también borraba la clave API: si la página de ajustes dice que no hay ninguna clave API guardada, haz clic en Disconnect y vuelve a conectar con tu clave. Desde el plugin 1.6.21, todas las páginas de administración muestran un aviso mientras no haya ninguna clave API guardada.
Cachés de página
El script de seguimiento es igual en todas las páginas y no contiene nada del visitante (ni email, ni id de sesión o de usuario), así que una caché de página puede guardarlo. Quién ha iniciado sesión lo pregunta el propio script, con una petición que nunca se guarda en caché. Una página guardada en caché antes de conectar no tiene el script de Joryio: el plugin vacía la caché de los plugins de caché habituales (Breeze, WP Rocket, LiteSpeed Cache, W3 Total Cache, WP Super Cache, WP Fastest Cache, SiteGround Optimizer) al conectar, desconectar, cambiar los ajustes de seguimiento o actualizar el plugin. Con cualquier otra caché (la del servidor de tu proveedor, Varnish o una CDN), púrgala tú después de conectar.
Solución de problemas
"Cannot redeclare joryio()" al activar
Sigue instalada una copia antigua del plugin (a menudo en una carpeta llamada woocommerce-plugin). En Plugins, desactiva y borra todas las entradas de Joryio y vuelve a subir el plugin desde tu panel de Joryio. Desde la versión 1.2.1, una segunda copia muestra un aviso en lugar de detener WordPress.
La conexión falla o muestra "Malformed identifier"
Comprueba que Server URL sea https://api-eu1.joryio.com y que la clave API empiece por jry_wc_. Si sigue fallando, contacta con el soporte de Joryio indicando la hora en que pulsaste Connect.
La conexión indica que se elimina la cabecera Authorization
Joryio lee tu tienda con la clave de la API REST que crea el plugin, enviada en una cabecera Authorization. Algunos servidores - sobre todo Apache cuando ejecuta PHP como CGI o FastCGI - o un plugin de seguridad eliminan esa cabecera antes de que WordPress la vea, y WooCommerce responde como si no se hubiera enviado ninguna clave. Añade esto al .htaccess de la raíz de WordPress, encima del bloque de WordPress:
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1
Después vuelve a hacer clic en Connect. Desde la versión 1.6.5 del plugin, una conexión rechazada elimina la clave de la API REST que creó, así que no queda ninguna clave sin usar en WooCommerce → Settings → Advanced → REST API, y el plugin muestra el motivo que da Joryio.
El plugin no se conecta
- Comprueba que la clave API sea correcta; empieza por
jry_wc_. - Comprueba que WordPress tenga acceso HTTPS saliente.
- Confirma que el endpoint de la API sea accesible.
Errores de la API de WooCommerce
- Comprueba que la clave Joryio Integration siga existiendo en WooCommerce → Ajustes → Avanzado → API REST; si se borró, pulsa Connect de nuevo para crear otra.
- Confirma que el usuario de la API tenga permisos de lectura/escritura.
- Asegúrate de que el sitio utilice SSL (HTTPS).
El seguimiento de carritos no funciona
- Comprueba que el plugin esté activado.
- Revisa en las herramientas de desarrollo del navegador que se cargue el script de seguimiento.
- Borra la caché de cualquier plugin de caché.
Los productos o pedidos no se sincronizan
- Comprueba que la sincronización esté activada en la pestaña Configuración.
- Prueba una sincronización manual con Sincronizar todo.
- Confirma que la API REST de WooCommerce esté activada.
- Un webhook que WooCommerce desactivó tras fallos de entrega aparece como Disabled en WooCommerce > Settings > Advanced > Webhooks. Los productos siguen llegando por el plugin, y los pedidos y clientes también los envía el plugin. Vuelve a ponerlo en Active para que funcionen ambas vías.
Plugins de caché y optimización
- La caché de páginas no afecta al seguimiento: en la página en caché no se guarda nada del visitante. Tras un añadido, el plugin crea una pequeña cookie
joryio_pendingy el script recoge el añadido a través deadmin-ajax.php, así que no pongasadmin-ajax.phpen caché (los plugins de caché lo excluyen por defecto) y no elimines esa cookie - Una página en caché conserva el Server URL y la clave SDK con los que se guardó. Después de cambiar el Server URL o de volver a conectar, purga la caché de páginas para que los navegadores de los visitantes envíen a la nueva dirección. Un plugin de Content Security Policy puede añadir su nonce al script de seguimiento (plugin 1.6.7 o posterior, WordPress 5.7 o posterior)
- La página de checkout no debe estar en caché (WooCommerce y los plugins de caché la excluyen por defecto); si lo está, Checkout iniciado no se puede enviar
- Una opción "Delay JavaScript" o "cargar JavaScript al interactuar" retiene el script de seguimiento hasta que el visitante se desplaza o hace clic, por lo que un visitante que se va enseguida no se cuenta. Excluye de esa opción el script de Joryio (contiene
joryio)