Catálogo de eventos del sitio
Con la sincronización activada, el sitio conectado avisa a Joinotify de
lo que pasa en él, un evento a la vez. Cada evento tiene un nombre con la forma
<origen>.<objeto>.<lo que pasó> — wc.order.paid, wp.user.registered — y ese nombre es lo que
escuchan el disparador Evento del sitio y el paso Esperar evento.
Los ejemplos de esta página son los mismos que el plugin informa al panel y que el editor muestra en Ejemplo del evento: valores inventados, con la forma exacta de los datos reales.
Qué eventos envía un sitio
Cada origen solo envía si su plugin está activo en WordPress y la opción correspondiente está activada en la ventana de la sincronización (las etiquetas del plugin aparecen aquí en inglés, su idioma de origen):
| Origen | Necesita | Opción de la sincronización |
|---|---|---|
| WooCommerce | WooCommerce | WooCommerce orders and customers |
| Suscripciones | WooCommerce Subscriptions | WooCommerce orders and customers |
| WordPress | — | WordPress users |
| Formularios | WPForms o Elementor Pro | Form submissions (desactivada por defecto) |
| Flexify Checkout | Flexify Checkout con la recuperación de carritos | Abandoned carts |
| Personalizados | Tu propio código | — |
El sobre
Cada evento llega con lo que pasó (data) y con a quién se refiere (contact):
{
"id": "5b0e7c3a-9f41-4d2a-8c7e-1f6a2b9d0e34",
"name": "wp.user.registered",
"occurred_at": "2026-09-24T12:00:00Z",
"schema_version": 1,
"site_url": "https://example.com",
"contact": {
"ref": { "kind": "wp_user", "id": "42" },
"phone": "+5511987654321",
"country": "BR",
"first_name": "Ana",
"last_name": "Souza",
"attributes": {
"wp_registered_at": "2026-09-24T12:00:00Z",
"wp_role": "customer"
},
"tags": ["Mi Tienda"],
"consent": {
"status": "opted_in",
"evidence": "Quiero recibir ofertas por WhatsApp. — sign-up — example.com",
"at": "2026-09-24T12:00:00Z"
}
},
"data": {
"user": {
"id": 42,
"first_name": "Ana",
"last_name": "Souza",
"roles": ["customer"],
"registered_at": "2026-09-24T12:00:00Z"
}
}
}
| Campo | Qué es |
|---|---|
id | Un identificador que el sitio generó al registrar el evento. El mismo id enviado de nuevo se ignora |
name | El nombre del evento |
occurred_at | Cuándo pasó en el sitio, en ISO 8601 y UTC |
schema_version | La versión de la forma de data — hoy, 1 |
site_url | La dirección del sitio. Si es distinta de la dirección conectada, se rechaza el lote entero (ver copias de staging) |
contact | A quién se refiere el evento. Opcional |
data | Los datos del evento — lo que describe cada sección de abajo |
El bloque contact
| Campo | Qué es |
|---|---|
ref | Quién es la persona en el sitio: { "kind": …, "id": … } |
phone, country | El teléfono y el país de facturación, que indica cómo leer un número sin código de país |
first_name, last_name, email | Nombre y correo |
attributes | Los campos de la tienda en el contacto: pedidos, total gastado, última compra… |
tags | La etiqueta de origen del sitio |
consent | El consentimiento de marketing, cuando el sitio lo pide |
El kind del ref es uno de estos:
kind | En el panel | id |
|---|---|---|
wp_user | Usuario de WordPress | El id del usuario |
wc_customer | Cliente de WooCommerce | El id de usuario del cliente |
wc_guest | Comprador sin cuenta | El SHA-256 del correo en minúsculas (o del teléfono, si no hay correo) |
lead | Lead de formulario o carrito | El mismo hash que el comprador sin cuenta |
Joinotify busca el contacto primero por el ref y después por el teléfono — el ref es lo que
mantiene como un solo contacto al cliente que cambió de número. Sin teléfono y sin un vínculo
anterior, no se crea ningún contacto: el evento queda registrado con el estado Sin contacto.
Los attributes van a los campos de la tienda que la plataforma crea en la cuenta — Pedidos
(wc_orders_count), Total gastado, Ticket medio, Primera compra, Última compra,
Estado del último pedido, Ciudad, Estado/provincia, Registro en el sitio, Rol en
el sitio y, con suscripciones, Estado de la suscripción y Próximo pago. Son una
fotografía que calcula el sitio: reemplazan el valor anterior en lugar de sumarse.
El consent es { "status": "opted_in", "evidence": …, "at": … } cuando la persona marcó la
casilla de marketing — la evidencia junta el texto de la casilla, dónde se marcó y el sitio — o
{ "status": "opted_out", "reason": "my_account" } cuando desmarcó la preferencia en Mi cuenta.
Los datos en el flujo
El data de un evento es lo que el flujo lee en {{trigger.<ruta>}}:
| Variable | Sale |
|---|---|
{{trigger.order.number}} | 1234 |
{{trigger.order.total:money}} | R$ 189,90 |
{{trigger.order.line_items[0].name}} | Café especial 500 g |
{{trigger.links.payment_url}} | El enlace para pagar el pedido |
{{trigger.customer.orders_count}} | 3 |
La plataforma añade dos claves a todo evento:
| Clave | Trae | Ejemplo |
|---|---|---|
$event | El id, name y occurred_at del evento | {{trigger.$event.name}} |
$site | El id, url y name del sitio conectado que lo envió | {{trigger.$site.name}} |
El bloque contact no queda en trigger: se convierte en el contacto de la ejecución, y el flujo
lee a la persona con las variables del contacto — {{first_name}}, {{field.wc_total_spent}}.
Las rutas del Filtro, de Actuar una vez por y de Esperar evento también parten de
data: order.id, order.status, cart.id. La sintaxis completa está en
Variables en los flujos.
Bloques que se repiten
Los eventos de pedido, suscripción, usuario y carrito usan los mismos bloques. La forma es la de
la API REST de WooCommerce, con valores crudos: totales como texto decimal ("189.90"), fechas en
ISO 8601 y UTC, estados sin el prefijo wc-.
order
{
"id": 1234,
"number": "1234",
"status": "pending",
"currency": "BRL",
"total": "189.90",
"subtotal": "179.90",
"discount_total": "10.00",
"shipping_total": "20.00",
"total_tax": "0.00",
"payment_method": "pix",
"payment_method_title": "Pix",
"date_created": "2026-09-24T12:00:00Z",
"date_paid": null,
"customer_id": 42,
"customer_note": "",
"billing": {
"first_name": "Ana",
"last_name": "Souza",
"phone": "+5511987654321",
"city": "São Paulo",
"state": "SP",
"country": "BR"
},
"shipping": {
"city": "São Paulo",
"state": "SP",
"country": "BR"
},
"shipping_lines": [
{
"method_id": "flat_rate",
"method_title": "SEDEX",
"total": "20.00"
}
],
"line_items": [
{
"product_id": 77,
"variation_id": 0,
"sku": "CAFE-500",
"name": "Café especial 500 g",
"quantity": 2,
"price": "89.95",
"total": "179.90",
"categories": ["Cafés"]
}
],
"coupon_lines": [
{
"code": "BEMVINDO10",
"discount": "10.00"
}
]
}
line_itemssolo viene con la opción Send the items of each order (activada por defecto).- Facturación y envío traen ciudad, estado y país. Con Send billing and shipping addresses,
billingsumacompany,address_1,address_2ypostcode, yshippingsumafirst_name,last_name,address_1,address_2,postcodeyphone. customer_ides0en un pedido sin cuenta.
customer
{
"id": 42,
"orders_count": 3,
"total_spent": "540.90",
"avg_order_value": "180.30",
"first_order_at": "2026-03-02T15:10:00Z",
"last_order_at": "2026-09-24T12:00:00Z",
"last_order_status": "completed",
"is_first_order": false
}
La fotografía del historial del cliente en la tienda, calculada a partir de los pedidos
pagados (los estados que WooCommerce cuenta como pagados — processing y completed, por
defecto), con los reembolsos descontados de total_spent. Un comprador sin cuenta se reconoce por
el correo de sus pedidos y viene con id 0. last_order_status es el estado del último pedido
pagado.
is_first_order solo viene en los eventos de pedido: en un pedido pagado, es true cuando es el
único pedido pagado del cliente; en un pedido todavía sin pagar, es true cuando el cliente no
tiene ningún pedido pagado.
links
{
"payment_url": "https://example.com/checkout/order-pay/1234/?pay_for_order=true&key=wc_order_example",
"order_received_url": "https://example.com/checkout/order-received/1234/?key=wc_order_example",
"my_account_url": "https://example.com/minha-conta/view-order/1234/",
"review_urls": ["https://example.com/produto/cafe-especial/#reviews"]
}
payment_url paga un pedido pendiente, order_received_url y my_account_url muestran el
pedido, y review_urls tiene la página de cada producto comprado, ya en la pestaña de reseñas.
subscription
{
"id": 900,
"status": "pending",
"total": "59.90",
"currency": "BRL",
"billing_period": "month",
"billing_interval": 1,
"next_payment_at": "2026-10-24T12:00:00Z",
"customer_id": 42,
"billing": {
"first_name": "Ana",
"last_name": "Souza",
"phone": "+5511987654321",
"city": "São Paulo",
"state": "SP",
"country": "BR"
},
"line_items": [
{
"product_id": 88,
"variation_id": 0,
"sku": "CLUBE-CAFE",
"name": "Clube do café",
"quantity": 1,
"price": "59.90",
"total": "59.90",
"categories": ["Assinaturas"]
}
]
}
user
{
"id": 42,
"first_name": "Ana",
"last_name": "Souza",
"roles": ["customer"],
"registered_at": "2026-09-24T12:00:00Z"
}
cart
{
"id": 555,
"total": "189.90",
"currency": "BRL",
"recovery_url": "https://example.com/checkout/?recovery_cart=555",
"first_name": "Ana",
"last_name": "Souza",
"phone": "+5511987654321"
}
WooCommerce
| Evento | En el panel |
|---|---|
wc.order.created | Pedido creado |
wc.order.paid | Pedido pagado |
wc.order.status_changed | Cambió el estado del pedido |
wc.order.completed | Pedido completado |
wc.order.cancelled | Pedido cancelado |
wc.order.failed | Falló el pago del pedido |
wc.order.refunded | Pedido reembolsado |
wc.customer.created | Cliente registrado en la tienda |
El contacto de los eventos de pedido es el comprador: wc_customer cuando tiene cuenta,
wc_guest cuando no. El teléfono es el de facturación — o el de envío, si facturación no tiene.
wc.order.created
Cuando el cliente cierra el pedido en el checkout, clásico o de bloques. Una vez por pedido.
Ejemplo de data
{
"order": {
"id": 1234,
"number": "1234",
"status": "pending",
"currency": "BRL",
"total": "189.90",
"subtotal": "179.90",
"discount_total": "10.00",
"shipping_total": "20.00",
"total_tax": "0.00",
"payment_method": "pix",
"payment_method_title": "Pix",
"date_created": "2026-09-24T12:00:00Z",
"date_paid": null,
"customer_id": 42,
"customer_note": "",
"billing": {
"first_name": "Ana",
"last_name": "Souza",
"phone": "+5511987654321",
"city": "São Paulo",
"state": "SP",
"country": "BR"
},
"shipping": {
"city": "São Paulo",
"state": "SP",
"country": "BR"
},
"shipping_lines": [
{
"method_id": "flat_rate",
"method_title": "SEDEX",
"total": "20.00"
}
],
"line_items": [
{
"product_id": 77,
"variation_id": 0,
"sku": "CAFE-500",
"name": "Café especial 500 g",
"quantity": 2,
"price": "89.95",
"total": "179.90",
"categories": ["Cafés"]
}
],
"coupon_lines": [
{
"code": "BEMVINDO10",
"discount": "10.00"
}
]
},
"customer": {
"id": 42,
"orders_count": 3,
"total_spent": "540.90",
"avg_order_value": "180.30",
"first_order_at": "2026-03-02T15:10:00Z",
"last_order_at": "2026-09-24T12:00:00Z",
"last_order_status": "completed",
"is_first_order": false
},
"links": {
"payment_url": "https://example.com/checkout/order-pay/1234/?pay_for_order=true&key=wc_order_example",
"order_received_url": "https://example.com/checkout/order-received/1234/?key=wc_order_example",
"my_account_url": "https://example.com/minha-conta/view-order/1234/",
"review_urls": ["https://example.com/produto/cafe-especial/#reviews"]
}
}
wc.order.paid
La primera vez que el pedido entra en un estado pagado, o cuando el medio de pago confirma el pago. Una vez por pedido, aunque el estado vaya y vuelva después.
Ejemplo de data
{
"order": {
"id": 1234,
"number": "1234",
"status": "processing",
"currency": "BRL",
"total": "189.90",
"subtotal": "179.90",
"discount_total": "10.00",
"shipping_total": "20.00",
"total_tax": "0.00",
"payment_method": "pix",
"payment_method_title": "Pix",
"date_created": "2026-09-24T12:00:00Z",
"date_paid": "2026-09-24T12:05:00Z",
"customer_id": 42,
"customer_note": "",
"billing": {
"first_name": "Ana",
"last_name": "Souza",
"phone": "+5511987654321",
"city": "São Paulo",
"state": "SP",
"country": "BR"
},
"shipping": {
"city": "São Paulo",
"state": "SP",
"country": "BR"
},
"shipping_lines": [
{
"method_id": "flat_rate",
"method_title": "SEDEX",
"total": "20.00"
}
],
"line_items": [
{
"product_id": 77,
"variation_id": 0,
"sku": "CAFE-500",
"name": "Café especial 500 g",
"quantity": 2,
"price": "89.95",
"total": "179.90",
"categories": ["Cafés"]
}
],
"coupon_lines": [
{
"code": "BEMVINDO10",
"discount": "10.00"
}
]
},
"customer": {
"id": 42,
"orders_count": 3,
"total_spent": "540.90",
"avg_order_value": "180.30",
"first_order_at": "2026-03-02T15:10:00Z",
"last_order_at": "2026-09-24T12:00:00Z",
"last_order_status": "completed",
"is_first_order": false
},
"links": {
"payment_url": "https://example.com/checkout/order-pay/1234/?pay_for_order=true&key=wc_order_example",
"order_received_url": "https://example.com/checkout/order-received/1234/?key=wc_order_example",
"my_account_url": "https://example.com/minha-conta/view-order/1234/",
"review_urls": ["https://example.com/produto/cafe-especial/#reviews"]
}
}
wc.order.status_changed
En cada cambio de estado, con el estado anterior en status_from y el nuevo en status_to.
Para que el flujo actúe una sola vez por pedido, usa Actuar una vez por order.id en el
disparador.
Ejemplo de data
{
"order": {
"id": 1234,
"number": "1234",
"status": "pending",
"currency": "BRL",
"total": "189.90",
"subtotal": "179.90",
"discount_total": "10.00",
"shipping_total": "20.00",
"total_tax": "0.00",
"payment_method": "pix",
"payment_method_title": "Pix",
"date_created": "2026-09-24T12:00:00Z",
"date_paid": null,
"customer_id": 42,
"customer_note": "",
"billing": {
"first_name": "Ana",
"last_name": "Souza",
"phone": "+5511987654321",
"city": "São Paulo",
"state": "SP",
"country": "BR"
},
"shipping": {
"city": "São Paulo",
"state": "SP",
"country": "BR"
},
"shipping_lines": [
{
"method_id": "flat_rate",
"method_title": "SEDEX",
"total": "20.00"
}
],
"line_items": [
{
"product_id": 77,
"variation_id": 0,
"sku": "CAFE-500",
"name": "Café especial 500 g",
"quantity": 2,
"price": "89.95",
"total": "179.90",
"categories": ["Cafés"]
}
],
"coupon_lines": [
{
"code": "BEMVINDO10",
"discount": "10.00"
}
]
},
"status_from": "pending",
"status_to": "processing",
"customer": {
"id": 42,
"orders_count": 3,
"total_spent": "540.90",
"avg_order_value": "180.30",
"first_order_at": "2026-03-02T15:10:00Z",
"last_order_at": "2026-09-24T12:00:00Z",
"last_order_status": "completed",
"is_first_order": false
},
"links": {
"payment_url": "https://example.com/checkout/order-pay/1234/?pay_for_order=true&key=wc_order_example",
"order_received_url": "https://example.com/checkout/order-received/1234/?key=wc_order_example",
"my_account_url": "https://example.com/minha-conta/view-order/1234/",
"review_urls": ["https://example.com/produto/cafe-especial/#reviews"]
}
}
wc.order.completed
Cada vez que el pedido entra en el estado completed.
Ejemplo de data
{
"order": {
"id": 1234,
"number": "1234",
"status": "completed",
"currency": "BRL",
"total": "189.90",
"subtotal": "179.90",
"discount_total": "10.00",
"shipping_total": "20.00",
"total_tax": "0.00",
"payment_method": "pix",
"payment_method_title": "Pix",
"date_created": "2026-09-24T12:00:00Z",
"date_paid": null,
"customer_id": 42,
"customer_note": "",
"billing": {
"first_name": "Ana",
"last_name": "Souza",
"phone": "+5511987654321",
"city": "São Paulo",
"state": "SP",
"country": "BR"
},
"shipping": {
"city": "São Paulo",
"state": "SP",
"country": "BR"
},
"shipping_lines": [
{
"method_id": "flat_rate",
"method_title": "SEDEX",
"total": "20.00"
}
],
"line_items": [
{
"product_id": 77,
"variation_id": 0,
"sku": "CAFE-500",
"name": "Café especial 500 g",
"quantity": 2,
"price": "89.95",
"total": "179.90",
"categories": ["Cafés"]
}
],
"coupon_lines": [
{
"code": "BEMVINDO10",
"discount": "10.00"
}
]
},
"customer": {
"id": 42,
"orders_count": 3,
"total_spent": "540.90",
"avg_order_value": "180.30",
"first_order_at": "2026-03-02T15:10:00Z",
"last_order_at": "2026-09-24T12:00:00Z",
"last_order_status": "completed",
"is_first_order": false
},
"links": {
"payment_url": "https://example.com/checkout/order-pay/1234/?pay_for_order=true&key=wc_order_example",
"order_received_url": "https://example.com/checkout/order-received/1234/?key=wc_order_example",
"my_account_url": "https://example.com/minha-conta/view-order/1234/",
"review_urls": ["https://example.com/produto/cafe-especial/#reviews"]
}
}
wc.order.cancelled
Cada vez que el pedido entra en el estado cancelled.
Ejemplo de data
{
"order": {
"id": 1234,
"number": "1234",
"status": "cancelled",
"currency": "BRL",
"total": "189.90",
"subtotal": "179.90",
"discount_total": "10.00",
"shipping_total": "20.00",
"total_tax": "0.00",
"payment_method": "pix",
"payment_method_title": "Pix",
"date_created": "2026-09-24T12:00:00Z",
"date_paid": null,
"customer_id": 42,
"customer_note": "",
"billing": {
"first_name": "Ana",
"last_name": "Souza",
"phone": "+5511987654321",
"city": "São Paulo",
"state": "SP",
"country": "BR"
},
"shipping": {
"city": "São Paulo",
"state": "SP",
"country": "BR"
},
"shipping_lines": [
{
"method_id": "flat_rate",
"method_title": "SEDEX",
"total": "20.00"
}
],
"line_items": [
{
"product_id": 77,
"variation_id": 0,
"sku": "CAFE-500",
"name": "Café especial 500 g",
"quantity": 2,
"price": "89.95",
"total": "179.90",
"categories": ["Cafés"]
}
],
"coupon_lines": [
{
"code": "BEMVINDO10",
"discount": "10.00"
}
]
},
"customer": {
"id": 42,
"orders_count": 3,
"total_spent": "540.90",
"avg_order_value": "180.30",
"first_order_at": "2026-03-02T15:10:00Z",
"last_order_at": "2026-09-24T12:00:00Z",
"last_order_status": "completed",
"is_first_order": false
},
"links": {
"payment_url": "https://example.com/checkout/order-pay/1234/?pay_for_order=true&key=wc_order_example",
"order_received_url": "https://example.com/checkout/order-received/1234/?key=wc_order_example",
"my_account_url": "https://example.com/minha-conta/view-order/1234/",
"review_urls": ["https://example.com/produto/cafe-especial/#reviews"]
}
}
wc.order.failed
Cada vez que el pedido entra en el estado failed.
Ejemplo de data
{
"order": {
"id": 1234,
"number": "1234",
"status": "failed",
"currency": "BRL",
"total": "189.90",
"subtotal": "179.90",
"discount_total": "10.00",
"shipping_total": "20.00",
"total_tax": "0.00",
"payment_method": "pix",
"payment_method_title": "Pix",
"date_created": "2026-09-24T12:00:00Z",
"date_paid": null,
"customer_id": 42,
"customer_note": "",
"billing": {
"first_name": "Ana",
"last_name": "Souza",
"phone": "+5511987654321",
"city": "São Paulo",
"state": "SP",
"country": "BR"
},
"shipping": {
"city": "São Paulo",
"state": "SP",
"country": "BR"
},
"shipping_lines": [
{
"method_id": "flat_rate",
"method_title": "SEDEX",
"total": "20.00"
}
],
"line_items": [
{
"product_id": 77,
"variation_id": 0,
"sku": "CAFE-500",
"name": "Café especial 500 g",
"quantity": 2,
"price": "89.95",
"total": "179.90",
"categories": ["Cafés"]
}
],
"coupon_lines": [
{
"code": "BEMVINDO10",
"discount": "10.00"
}
]
},
"customer": {
"id": 42,
"orders_count": 3,
"total_spent": "540.90",
"avg_order_value": "180.30",
"first_order_at": "2026-03-02T15:10:00Z",
"last_order_at": "2026-09-24T12:00:00Z",
"last_order_status": "completed",
"is_first_order": false
},
"links": {
"payment_url": "https://example.com/checkout/order-pay/1234/?pay_for_order=true&key=wc_order_example",
"order_received_url": "https://example.com/checkout/order-received/1234/?key=wc_order_example",
"my_account_url": "https://example.com/minha-conta/view-order/1234/",
"review_urls": ["https://example.com/produto/cafe-especial/#reviews"]
}
}
wc.order.refunded
En cada reembolso, parcial o total. refund.full es true cuando el importe reembolsado llega al
total del pedido.
Ejemplo de data
{
"order": {
"id": 1234,
"number": "1234",
"status": "refunded",
"currency": "BRL",
"total": "189.90",
"subtotal": "179.90",
"discount_total": "10.00",
"shipping_total": "20.00",
"total_tax": "0.00",
"payment_method": "pix",
"payment_method_title": "Pix",
"date_created": "2026-09-24T12:00:00Z",
"date_paid": null,
"customer_id": 42,
"customer_note": "",
"billing": {
"first_name": "Ana",
"last_name": "Souza",
"phone": "+5511987654321",
"city": "São Paulo",
"state": "SP",
"country": "BR"
},
"shipping": {
"city": "São Paulo",
"state": "SP",
"country": "BR"
},
"shipping_lines": [
{
"method_id": "flat_rate",
"method_title": "SEDEX",
"total": "20.00"
}
],
"line_items": [
{
"product_id": 77,
"variation_id": 0,
"sku": "CAFE-500",
"name": "Café especial 500 g",
"quantity": 2,
"price": "89.95",
"total": "179.90",
"categories": ["Cafés"]
}
],
"coupon_lines": [
{
"code": "BEMVINDO10",
"discount": "10.00"
}
]
},
"refund": {
"id": 1235,
"amount": "189.90",
"reason": "Produto com defeito",
"full": true
},
"customer": {
"id": 42,
"orders_count": 3,
"total_spent": "540.90",
"avg_order_value": "180.30",
"first_order_at": "2026-03-02T15:10:00Z",
"last_order_at": "2026-09-24T12:00:00Z",
"last_order_status": "completed",
"is_first_order": false
},
"links": {
"payment_url": "https://example.com/checkout/order-pay/1234/?pay_for_order=true&key=wc_order_example",
"order_received_url": "https://example.com/checkout/order-received/1234/?key=wc_order_example",
"my_account_url": "https://example.com/minha-conta/view-order/1234/",
"review_urls": ["https://example.com/produto/cafe-especial/#reviews"]
}
}
wc.customer.created
Cuando WooCommerce crea la cuenta de un cliente — en el checkout o en el registro de Mi cuenta. El
contacto viene como wc_customer. Con la opción de usuarios activada, el mismo registro también
envía wp.user.registered.
Ejemplo de data
{
"customer": {
"id": 42,
"first_name": "Ana",
"last_name": "Souza",
"roles": ["customer"],
"registered_at": "2026-09-24T12:00:00Z",
"orders_count": 0
}
}
Suscripciones
Con WooCommerce Subscriptions activo. El contacto es el suscriptor, y los line_items de la
suscripción siguen la misma opción que los artículos del pedido.
| Evento | En el panel |
|---|---|
wcs.subscription.created | Suscripción creada |
wcs.subscription.activated | Suscripción activada |
wcs.subscription.payment_complete | Pago de la suscripción aprobado |
wcs.subscription.payment_failed | Falló el pago de la suscripción |
wcs.subscription.expired | Suscripción vencida |
wcs.subscription.cancelled | Suscripción cancelada |
wcs.subscription.created
Cuando la suscripción se crea en el checkout, con el pedido que la creó en order.
Ejemplo de data
{
"subscription": {
"id": 900,
"status": "pending",
"total": "59.90",
"currency": "BRL",
"billing_period": "month",
"billing_interval": 1,
"next_payment_at": "2026-10-24T12:00:00Z",
"customer_id": 42,
"billing": {
"first_name": "Ana",
"last_name": "Souza",
"phone": "+5511987654321",
"city": "São Paulo",
"state": "SP",
"country": "BR"
},
"line_items": [
{
"product_id": 88,
"variation_id": 0,
"sku": "CLUBE-CAFE",
"name": "Clube do café",
"quantity": 1,
"price": "59.90",
"total": "59.90",
"categories": ["Assinaturas"]
}
]
},
"order": {
"id": 1234,
"number": "1234",
"status": "pending",
"currency": "BRL",
"total": "189.90",
"subtotal": "179.90",
"discount_total": "10.00",
"shipping_total": "20.00",
"total_tax": "0.00",
"payment_method": "pix",
"payment_method_title": "Pix",
"date_created": "2026-09-24T12:00:00Z",
"date_paid": null,
"customer_id": 42,
"customer_note": "",
"billing": {
"first_name": "Ana",
"last_name": "Souza",
"phone": "+5511987654321",
"city": "São Paulo",
"state": "SP",
"country": "BR"
},
"shipping": {
"city": "São Paulo",
"state": "SP",
"country": "BR"
},
"shipping_lines": [
{
"method_id": "flat_rate",
"method_title": "SEDEX",
"total": "20.00"
}
],
"line_items": [
{
"product_id": 77,
"variation_id": 0,
"sku": "CAFE-500",
"name": "Café especial 500 g",
"quantity": 2,
"price": "89.95",
"total": "179.90",
"categories": ["Cafés"]
}
],
"coupon_lines": [
{
"code": "BEMVINDO10",
"discount": "10.00"
}
]
}
}
wcs.subscription.activated
Cada vez que la suscripción queda activa.
Ejemplo de data
{
"subscription": {
"id": 900,
"status": "active",
"total": "59.90",
"currency": "BRL",
"billing_period": "month",
"billing_interval": 1,
"next_payment_at": "2026-10-24T12:00:00Z",
"customer_id": 42,
"billing": {
"first_name": "Ana",
"last_name": "Souza",
"phone": "+5511987654321",
"city": "São Paulo",
"state": "SP",
"country": "BR"
},
"line_items": [
{
"product_id": 88,
"variation_id": 0,
"sku": "CLUBE-CAFE",
"name": "Clube do café",
"quantity": 1,
"price": "59.90",
"total": "59.90",
"categories": ["Assinaturas"]
}
]
}
}
wcs.subscription.payment_complete
En cada pago aprobado de la suscripción, con el pedido de ese pago en order.
Ejemplo de data
{
"subscription": {
"id": 900,
"status": "active",
"total": "59.90",
"currency": "BRL",
"billing_period": "month",
"billing_interval": 1,
"next_payment_at": "2026-10-24T12:00:00Z",
"customer_id": 42,
"billing": {
"first_name": "Ana",
"last_name": "Souza",
"phone": "+5511987654321",
"city": "São Paulo",
"state": "SP",
"country": "BR"
},
"line_items": [
{
"product_id": 88,
"variation_id": 0,
"sku": "CLUBE-CAFE",
"name": "Clube do café",
"quantity": 1,
"price": "59.90",
"total": "59.90",
"categories": ["Assinaturas"]
}
]
},
"order": {
"id": 1234,
"number": "1234",
"status": "pending",
"currency": "BRL",
"total": "189.90",
"subtotal": "179.90",
"discount_total": "10.00",
"shipping_total": "20.00",
"total_tax": "0.00",
"payment_method": "pix",
"payment_method_title": "Pix",
"date_created": "2026-09-24T12:00:00Z",
"date_paid": null,
"customer_id": 42,
"customer_note": "",
"billing": {
"first_name": "Ana",
"last_name": "Souza",
"phone": "+5511987654321",
"city": "São Paulo",
"state": "SP",
"country": "BR"
},
"shipping": {
"city": "São Paulo",
"state": "SP",
"country": "BR"
},
"shipping_lines": [
{
"method_id": "flat_rate",
"method_title": "SEDEX",
"total": "20.00"
}
],
"line_items": [
{
"product_id": 77,
"variation_id": 0,
"sku": "CAFE-500",
"name": "Café especial 500 g",
"quantity": 2,
"price": "89.95",
"total": "179.90",
"categories": ["Cafés"]
}
],
"coupon_lines": [
{
"code": "BEMVINDO10",
"discount": "10.00"
}
]
}
}
wcs.subscription.payment_failed
Cuando falla un pago de la suscripción, con el pedido que quedó sin pagar y links.payment_url
para pagarlo.
Ejemplo de data
{
"subscription": {
"id": 900,
"status": "on-hold",
"total": "59.90",
"currency": "BRL",
"billing_period": "month",
"billing_interval": 1,
"next_payment_at": "2026-10-24T12:00:00Z",
"customer_id": 42,
"billing": {
"first_name": "Ana",
"last_name": "Souza",
"phone": "+5511987654321",
"city": "São Paulo",
"state": "SP",
"country": "BR"
},
"line_items": [
{
"product_id": 88,
"variation_id": 0,
"sku": "CLUBE-CAFE",
"name": "Clube do café",
"quantity": 1,
"price": "59.90",
"total": "59.90",
"categories": ["Assinaturas"]
}
]
},
"order": {
"id": 1234,
"number": "1234",
"status": "failed",
"currency": "BRL",
"total": "189.90",
"subtotal": "179.90",
"discount_total": "10.00",
"shipping_total": "20.00",
"total_tax": "0.00",
"payment_method": "pix",
"payment_method_title": "Pix",
"date_created": "2026-09-24T12:00:00Z",
"date_paid": null,
"customer_id": 42,
"customer_note": "",
"billing": {
"first_name": "Ana",
"last_name": "Souza",
"phone": "+5511987654321",
"city": "São Paulo",
"state": "SP",
"country": "BR"
},
"shipping": {
"city": "São Paulo",
"state": "SP",
"country": "BR"
},
"shipping_lines": [
{
"method_id": "flat_rate",
"method_title": "SEDEX",
"total": "20.00"
}
],
"line_items": [
{
"product_id": 77,
"variation_id": 0,
"sku": "CAFE-500",
"name": "Café especial 500 g",
"quantity": 2,
"price": "89.95",
"total": "179.90",
"categories": ["Cafés"]
}
],
"coupon_lines": [
{
"code": "BEMVINDO10",
"discount": "10.00"
}
]
},
"links": {
"payment_url": "https://example.com/checkout/order-pay/1234/?pay_for_order=true&key=wc_order_example",
"order_received_url": "https://example.com/checkout/order-received/1234/?key=wc_order_example",
"my_account_url": "https://example.com/minha-conta/view-order/1234/",
"review_urls": ["https://example.com/produto/cafe-especial/#reviews"]
}
}
wcs.subscription.expired
Cuando la suscripción vence.
Ejemplo de data
{
"subscription": {
"id": 900,
"status": "expired",
"total": "59.90",
"currency": "BRL",
"billing_period": "month",
"billing_interval": 1,
"next_payment_at": "2026-10-24T12:00:00Z",
"customer_id": 42,
"billing": {
"first_name": "Ana",
"last_name": "Souza",
"phone": "+5511987654321",
"city": "São Paulo",
"state": "SP",
"country": "BR"
},
"line_items": [
{
"product_id": 88,
"variation_id": 0,
"sku": "CLUBE-CAFE",
"name": "Clube do café",
"quantity": 1,
"price": "59.90",
"total": "59.90",
"categories": ["Assinaturas"]
}
]
}
}
wcs.subscription.cancelled
Cuando la suscripción se cancela.
Ejemplo de data
{
"subscription": {
"id": 900,
"status": "cancelled",
"total": "59.90",
"currency": "BRL",
"billing_period": "month",
"billing_interval": 1,
"next_payment_at": "2026-10-24T12:00:00Z",
"customer_id": 42,
"billing": {
"first_name": "Ana",
"last_name": "Souza",
"phone": "+5511987654321",
"city": "São Paulo",
"state": "SP",
"country": "BR"
},
"line_items": [
{
"product_id": 88,
"variation_id": 0,
"sku": "CLUBE-CAFE",
"name": "Clube do café",
"quantity": 1,
"price": "59.90",
"total": "59.90",
"categories": ["Assinaturas"]
}
]
}
}
WordPress
| Evento | En el panel |
|---|---|
wp.user.registered | Usuario registrado |
wp.user.updated | Perfil del usuario actualizado |
El contacto es el usuario (wp_user), con el teléfono de facturación de WooCommerce o el que
guardó el inicio de sesión por código de Joinotify. Un usuario sin teléfono llega como evento, pero
no crea contacto.
wp.user.registered
Cuando alguien se registra en el sitio. El evento sale al final del registro, después de que WooCommerce y los formularios de perfil guardaron el teléfono y el nombre.
Ejemplo de data
{
"user": {
"id": 42,
"first_name": "Ana",
"last_name": "Souza",
"roles": ["customer"],
"registered_at": "2026-09-24T12:00:00Z"
}
}
wp.user.updated
Cuando el usuario cambia su teléfono, nombre, apellido o correo, o marca o desmarca la preferencia
de marketing en Mi cuenta. changed dice qué cambió: phone, first_name, last_name, email,
marketing_consent.
Ejemplo de data
{
"user": {
"id": 42,
"first_name": "Ana",
"last_name": "Souza",
"roles": ["customer"],
"registered_at": "2026-09-24T12:00:00Z"
},
"changed": ["phone"]
}
Formularios
| Evento | En el panel |
|---|---|
form.submitted | Formulario enviado |
form.submitted
En cada envío de un formulario de WPForms o Elementor Pro que tenga teléfono o correo — sin
ninguno de los dos, no se envía nada. Todos los campos del formulario van en fields, con la
etiqueta como clave (en minúsculas, sin tildes, los espacios pasan a _). form.plugin es
wpforms o elementor; entry_id viene vacío en Elementor, y page_url es la página desde la
que se envió el formulario, cuando el navegador la informa.
El teléfono es el campo de tipo teléfono o, si no hay, el primero cuya etiqueta habla de teléfono,
móvil o WhatsApp. El contacto es el usuario con sesión iniciada (wp_user) o, sin sesión, un
lead.
Ejemplo de data
{
"form": {
"plugin": "wpforms",
"id": "12",
"title": "Fale conosco"
},
"entry_id": "345",
"fields": {
"name": "Ana Souza",
"phone": "+5511987654321",
"message": "Quero um orçamento"
},
"page_url": "https://example.com/contato"
}
Flexify Checkout
Con la recuperación de carritos de Flexify Checkout activa. El contacto de un carrito es siempre
un lead, identificado por el correo o el teléfono; Joinotify encuentra al cliente que ya existe
por el teléfono.
| Evento | En el panel |
|---|---|
fcrc.lead.collected | Contacto capturado en el checkout |
fcrc.cart.abandoned | Carrito abandonado |
fcrc.cart.recovered | Carrito recuperado |
fcrc.cart.lost | Carrito perdido |
fcrc.lead.collected
Cuando Flexify Checkout captura el contacto de quien está en el checkout.
Ejemplo de data
{
"cart": {
"id": 555,
"total": "189.90",
"currency": "BRL",
"recovery_url": "https://example.com/checkout/?recovery_cart=555",
"first_name": "Ana",
"last_name": "Souza",
"phone": "+5511987654321"
}
}
fcrc.cart.abandoned
Cuando Flexify Checkout marca el carrito como abandonado. Si un pedido quedó sin pagar, viene en
order, con links.payment_url.
Ejemplo de data
{
"cart": {
"id": 555,
"total": "189.90",
"currency": "BRL",
"recovery_url": "https://example.com/checkout/?recovery_cart=555",
"first_name": "Ana",
"last_name": "Souza",
"phone": "+5511987654321"
},
"order": {
"id": 1234,
"number": "1234",
"status": "pending",
"currency": "BRL",
"total": "189.90",
"subtotal": "179.90",
"discount_total": "10.00",
"shipping_total": "20.00",
"total_tax": "0.00",
"payment_method": "pix",
"payment_method_title": "Pix",
"date_created": "2026-09-24T12:00:00Z",
"date_paid": null,
"customer_id": 42,
"customer_note": "",
"billing": {
"first_name": "Ana",
"last_name": "Souza",
"phone": "+5511987654321",
"city": "São Paulo",
"state": "SP",
"country": "BR"
},
"shipping": {
"city": "São Paulo",
"state": "SP",
"country": "BR"
},
"shipping_lines": [
{
"method_id": "flat_rate",
"method_title": "SEDEX",
"total": "20.00"
}
],
"line_items": [
{
"product_id": 77,
"variation_id": 0,
"sku": "CAFE-500",
"name": "Café especial 500 g",
"quantity": 2,
"price": "89.95",
"total": "179.90",
"categories": ["Cafés"]
}
],
"coupon_lines": [
{
"code": "BEMVINDO10",
"discount": "10.00"
}
]
},
"links": {
"payment_url": "https://example.com/checkout/order-pay/1234/?pay_for_order=true&key=wc_order_example",
"order_received_url": "https://example.com/checkout/order-received/1234/?key=wc_order_example",
"my_account_url": "https://example.com/minha-conta/view-order/1234/",
"review_urls": ["https://example.com/produto/cafe-especial/#reviews"]
}
}
fcrc.cart.recovered
Cuando el carrito se recupera, con el pedido en order.
Ejemplo de data
{
"cart": {
"id": 555,
"total": "189.90",
"currency": "BRL",
"recovery_url": "https://example.com/checkout/?recovery_cart=555",
"first_name": "Ana",
"last_name": "Souza",
"phone": "+5511987654321"
},
"order": {
"id": 1234,
"number": "1234",
"status": "pending",
"currency": "BRL",
"total": "189.90",
"subtotal": "179.90",
"discount_total": "10.00",
"shipping_total": "20.00",
"total_tax": "0.00",
"payment_method": "pix",
"payment_method_title": "Pix",
"date_created": "2026-09-24T12:00:00Z",
"date_paid": null,
"customer_id": 42,
"customer_note": "",
"billing": {
"first_name": "Ana",
"last_name": "Souza",
"phone": "+5511987654321",
"city": "São Paulo",
"state": "SP",
"country": "BR"
},
"shipping": {
"city": "São Paulo",
"state": "SP",
"country": "BR"
},
"shipping_lines": [
{
"method_id": "flat_rate",
"method_title": "SEDEX",
"total": "20.00"
}
],
"line_items": [
{
"product_id": 77,
"variation_id": 0,
"sku": "CAFE-500",
"name": "Café especial 500 g",
"quantity": 2,
"price": "89.95",
"total": "179.90",
"categories": ["Cafés"]
}
],
"coupon_lines": [
{
"code": "BEMVINDO10",
"discount": "10.00"
}
]
}
}
fcrc.cart.lost
Cuando Flexify Checkout da el carrito por perdido.
Ejemplo de data
{
"cart": {
"id": 555,
"total": "189.90",
"currency": "BRL",
"recovery_url": "https://example.com/checkout/?recovery_cart=555",
"first_name": "Ana",
"last_name": "Souza",
"phone": "+5511987654321"
}
}
Eventos personalizados
Tu código puede enviar eventos propios con joinotify_track(). El nombre empieza con custom.
seguido de una a tres partes de letras minúsculas, números y _ — custom.quote.requested — y el
data es lo que pases. En el disparador, elige Evento personalizado y escribe el nombre. Cómo
enviarlos está en Conectar WordPress y WooCommerce.
Enviar por la API
Los eventos llegan por POST /site-events, en lotes de hasta 100, y solo con la clave de un sitio
conectado. Cada evento puede llevar hasta 64 kB de data y contact; un evento no válido se
rechaza solo, sin tumbar el lote. Los detalles están en la referencia de la API.