1. Definición de arquitectura de datos sobre Zoho
El modelo de datos en Zoho CRM está estructurado para centralizar la información de todos los canales comerciales. Las entidades principales son Contactos, Beneficiarios, Products, Deals, Sales Orders y Beneficios, que se relacionan entre sí para dar sentido a la información de comprador y usuario final.
Modelo AS IS (actual):
CONTACTOS
Email (llave primaria, nunca se modifica)
First_Name, Last_Name
RUT (campo custom, identidad universal)
Mobile, Phone
Mailing_Street, Mailing_City, Mailing_Country, Mailing_Zip
Lead_Source (Shopify Ecommerce, PuntoTicket)
Estado (Cliente, Otro)
Date_of_Birth
→ Relacionado con: Products (compras), Deals (oportunidades), Sales Orders (órdenes), Beneficios (beneficiarios vinculados)
BENEFICIARIOS
RUT (llave primaria, normalizado sin puntos/guiones)
Name (nombre completo)
Email
Teléfono
Fecha_Nacimiento
Activo (boolean, siempre true)
→ Relacionado con: Beneficios (servicios/membresías que disfrutan)
PRODUCTS
Product_Code (dedup key: ProductID+VariantID para Shopify, EventoID para Puntoticket)
Product_Name
Unit_Price
Description
Manufacturer, Product_Category
Línea_de_Negocio (Tienda, Ticketing, Socios, Escuelas, Abonos)
Fuente (Shopify, PuntoTicket)
Product_Active (boolean)
Marca (Principal)
→ Relacionado con: Deals, Sales Orders, Ordered Items
DEALS
Deal_Name (formato: "TIENDA - SH #1234" o "Evento - OrdenID")
Amount (monto total)
Closing_Date (fecha de creación/compra)
Stage (Agrego al carrito, Checkout iniciado, Cerrado Ganado)
Pipeline (Ecommerce, Membresías)
Contact_Name (lookup a Contacto)
Product_Name (lookup a Product)
Productos_Comprados (multilinea)
URL_Carrito (solo checkouts abandonados)
IDSalesOrder (lookup a Sales Order)
→ Relacionado con: Contactos, Products, Sales Orders
SALES ORDERS
IDSalesOrder (dedup key: número de orden único)
Subject (identificador legible)
Contact_Name (lookup a Contacto)
Grand_Total, Sub_Total
Due_Date (fecha de la orden)
Status (Created, Delivered, Cancelled)
Billing_Street, Billing_City, Billing_Country
Deal_Name (lookup a Deal)
Es_Cortesia (boolean, solo para Puntoticket)
Description
→ Relacionado con: Contactos, Deals, Ordered Items, Beneficios
ORDERED ITEMS
Product_Name (lookup a Product)
Quantity
Unit_Price, List_Price
Total
Parent_Id (link a Sales Order)
Categoría (solo Puntoticket)
Sector (solo Puntoticket)
→ Relacionado con: Sales Orders, Products
BENEFICIOS
Name (formato: "Nombre - Tipo - Orden: OrdenID")
Beneficiario (lookup a Beneficiario por RUT)
Comprador (lookup a Contacto por email)
Producto (lookup a Product por EventoID)
Tipo (Abonos, Escuelas, Socios, Ticketing)
Fecha_Compra
Fecha_Vencimiento (calculado según tipo)
Categoría, Sector
Estado (Activo)
Cortesia (boolean)
→ Relacionado con: Beneficiarios, Contactos, Products, Sales Orders
Relaciones principales:
- Beneficiarios ← (a través de Beneficios) → Contactos (comprador vs beneficiario)
- Contactos → Sales Orders (comprador realiza órdenes)
- Sales Orders → Ordered Items → Products (qué se compró)
- Sales Orders → Deals (origen de la transacción)
- Contactos → Deals (seguimiento de oportunidades)
TO BE (futuro):
- Mejora de relaciones: Fortalecer la relación entre Comprador y Beneficiario con campos adicionales (tipo de relación, fecha de asignación).
- Nuevos campos de negocio: Agregar campos para capturar más contexto de membresías (vigencia, renovación, escalado).
- Eventos de comportamiento: Crear una entidad separada de Eventos para registrar interacciones más granulares.
- Normalización de RUT: Estandarizar formato de RUT en todos los campos para consistencia.
- Auditoría: Agregar campos de fecha_creacion, fecha_modificacion, usuario_creacion, usuario_modificacion en entidades clave.
2. Definición de interfaces de datos con Puntoticket y Shopify
Las interfaces de datos definen cómo la información fluye desde Puntoticket y Shopify hacia Zoho CRM. Incluyen mapeos de campos, transformaciones, deduplicación y validaciones.
Leyenda de tipos de transformación y relación:
Transformación (split, concatenado, lookup, etc.)
INTERFAZ 1: Shopify → Zoho CRM
Mapeo de Contactos
SHOPIFY CONTACTS → ZOHO CONTACTS
Destino
Contacts.Email
Nunca se modifica
Origen
customer.first_name
Condición
Si vacío → usa email
Destino
Contacts.First_Name
Origen
customer.last_name
Condición
Si vacío → usa "-"
Destino
Contacts.Last_Name
Origen
customer.default_address.company
Relación
1:1 (Custom field)
Origen
shipping_address.phone
Condición
Solo si no vacío
Origen
shipping_address.address1
Condición
Solo si no vacío
Destino
Contacts.Mailing_Street
Origen
shipping_address.city
Condición
Solo si no vacío
Destino
Contacts.Mailing_City
Origen
shipping_address.country
Condición
Solo si no vacío
Destino
Contacts.Mailing_Country
Valor Fijo
= "Shopify Ecommerce"
Destino
Contacts.Lead_Source
Mapeo de Products
SHOPIFY PRODUCTS → ZOHO PRODUCTS
Origen
SKU + Title + Option1
Destino
Products.Product_Name
Formato: "SKU | Nombre | Talla"
Origen
Product ID + Variant ID
Destino
Products.Product_Code
Destino
Products.Unit_Price
Origen
Product.Body (HTML)
Destino
Products.Description
Destino
Products.Línea_de_Negocio
INTERFAZ 2: Puntoticket → Zoho CRM
Mapeo de Contactos
PUNTOTICKET COMPRADORES → ZOHO CONTACTS
Destino
Contacts.First_Name / Last_Name
Relación
1:1 (Custom field)
Destino
Contacts.Date_of_Birth
Destino
Contacts.Mailing_Street
Destino
Contacts.Mailing_City
Valor Fijo
= "PuntoTicket"
Destino
Contacts.Lead_Source
Mapeo de Beneficiarios
PUNTOTICKET BENEFICIARIOS → ZOHO BENEFICIARIOS
Destino
Beneficiarios.RUT
Normalizado
Destino
Beneficiarios.Name
Origen
Email / EmailComprador
Condición
Si Venta → Email, Si Cortesía → EmailComprador
Destino
Beneficiarios.Email
Destino
Beneficiarios.Teléfono
Destino
Beneficiarios.Fecha_Nacimiento
Destino
Beneficiarios.Teléfono
Destino
Beneficiarios.Fecha_Nacimiento
Mapeo de Products
PUNTOTICKET EVENTOS → ZOHO PRODUCTS
Destino
Products.Product_Code
Destino
Products.Product_Name
Formato: "Evento - EventoID"
Destino
Products.Línea_de_negocio
UCS→Socios, UCE→Escuelas, UC0→Ticketing, UC0015→Abonos
Destino
Products.Product_Active
Valor Fijo
= "PuntoTicket"
Mapeo de Deals
PUNTOTICKET ÓRDENES → ZOHO DEALS
Destino
Deals.Deal_Name
Formato: "Evento - OrdenID"
Destino
Deals.Contact_Name
Valor Fijo
= "Cerrado Ganado"
Mapeo de Sales Orders
PUNTOTICKET ÓRDENES → ZOHO SALES ORDERS
Destino
Sales_Orders.IDSalesOrder
Destino
Sales_Orders.Description
Destino
Sales_Orders.Due_Date
Destino
Sales_Orders.Contact_Name
Destino
Sales_Orders.Es_Cortesia
Origen
line_items[] (EventoID, Categoría, Sector, Monto)
Relación
1:N (items por orden)
Destino
Sales_Orders.Ordered_Items[]
IdProducto, Categoría, Sector, List_Price, Product_Name
Destino
Sales_Orders.Status
Mapeo de Beneficios
PUNTOTICKET ÓRDENES → ZOHO BENEFICIOS
Origen
Rut (Beneficiario)
Destino
Beneficios.Beneficiario
1:N (un comprador → muchos beneficiarios)
Destino
Beneficios.Comprador
Destino
Beneficios.Producto
Destino
Beneficios.Tipo
UCS→Socios, UCE→Escuelas, UC0→Ticketing, UC0015→Abonos
Destino
Beneficios.Fecha_Compra
Destino
Beneficios.Categoría
Destino
Beneficios.Sector
Origen
FechaCompra + EventoID + TipoOrden
Destino
Beneficios.Fecha_Vencimiento
UCS+Trimestral→+90d / Semestral→+180d / Anual→+365d / no-UCS→FechaEvento
Origen
NombreCompleto + Tipo + OrdenID
Destino
Beneficios.Name
Formato: "Nombre - Tipo - Orden: OrdenID"
Destino
Beneficios.Cortesia
Destino
Beneficios.Estado
TO BE (futuro):
- Nuevas interfaces: Webhook en tiempo real para eventos de compra, cambios de estado de membresía.
- Captura de eventos: Implementar tracking de eventos de navegación desde Puntoticket y Shopify hacia Zoho.
- Validación de RUT: Hacer obligatorio mapeo de RUT desde Shopify o validar en caso de falta de datos.
- Sincronización de Beneficiarios: Crear interfaz periódica para sincronizar cambios en Beneficiarios desde Puntoticket.
- Enriquecimiento de datos: Agregar campos de contexto comercial (fuente de adquisición, canal, campaña).
3. Definición del modelo de identidad (compradores y beneficiarios)
El modelo de identidad establece cómo se identifican, relacionan y unifican las personas en el sistema. Define la diferencia entre compradores (clientes que realizan transacciones) y beneficiarios (usuarios finales que disfrutan de un beneficio).
Identificadores principales:
| Entidad |
Identificador primario |
Identificadores secundarios |
Fuentes |
| Contactos (Compradores) |
Email |
RUT, Teléfono |
Shopify, Puntoticket |
| Beneficiarios |
RUT |
Email, Teléfono, Nombre |
Puntoticket |
| Identificador universal |
RUT (número de cédula chileno) - existe en ambas entidades pero con diferentes roles |
Relaciones AS IS (actual):
- Separación de datos: Contactos y Beneficiarios son dos entidades separadas en Zoho CRM.
- Conexión a través de Beneficios: La relación se establece a través de la entidad "Beneficios" que mapea Comprador (Contacto) → Beneficiario.
- Cardinalidad: 1 Contacto puede tener N Beneficiarios (un comprador puede comprar para múltiples personas).
- Casos especiales:
- Cortesías: El comprador es diferente del beneficiario final.
- Regalos: Un contacto compra pero el beneficiario es otra persona.
- Membresías personales: Contacto = Beneficiario (la misma persona).
- Sincronización: Los datos se sincronizan desde las plataformas comerciales pero no hay deduplicación automática entre sistemas.
Flujo AS IS de identidad:
Puntoticket/Shopify → [Crear o actualizar Contacto por email]
Puntoticket → [Crear o actualizar Beneficiario por RUT]
Puntoticket → [Crear o actualizar relación en Beneficios]
Problemas detectados:
- No hay deduplicación automática si misma persona compra en Shopify y Puntoticket.
- Falta validación de RUT (formato, digito verificador).
- No hay historial de cambios de identidad (cambio de email, etc).
- Múltiples beneficiarios (diferentes RUT) comparten el mismo email (del comprador). El email no es identificador único en Beneficiarios, solo el RUT lo es. Esto limita la segmentación y comunicación individualizada con beneficiarios.
TO BE (futuro):
- Identidad unificada: Crear un grafo de identidad que mapee todas las versiones de una persona (diferentes emails, teléfonos, etc.).
- RUT como llave universal: Usar RUT como identificador único universal para todas las sincronizaciones.
- Deduplicación automática: Implementar lógica para detectar y fusionar duplicados basados en RUT, email, nombre.
- Validación de RUT: Validar formato y dígito verificador de RUT en puntos de entrada.
- Historial de identidad: Registrar cambios de email, teléfono, dirección con timestamps.
- Entidad de Persona: Considerar crear una entidad raíz "Persona" con RUT como clave, que unifique Contacto y Beneficiario.
4. Estructuración de eventos de comportamiento desde las distintas fuentes
Los eventos de comportamiento registran la interacción de usuarios con Cruzados a lo largo de su customer journey. Son la base para entender patrones de compra, engagement y personalización.
AS IS: Eventos capturados actualmente
| Tipo de evento |
Fuente |
Frecuencia |
Granularidad |
| Compra completada |
Shopify, Puntoticket |
En tiempo real |
Orden completa (monto, items, fecha) |
| Membresía adquirida |
Puntoticket |
En tiempo real |
Tipo (socio, abonado, escuela), vigencia |
| Carrito abandonado |
Shopify |
En tiempo real |
URL carrito, monto abandonado, items |
| Email abierto |
Zoho Marketing Automation |
En tiempo real |
Timestamp, email template, device |
| Email clickeado |
Zoho Marketing Automation |
En tiempo real |
URL, timestamp, posición en email |
| Journey automation ejecutado |
Zoho Marketing Automation |
En tiempo real |
Journey ID, paso, condición evaluada |
| Navegación web |
cruzados.cl (parcial a través de analytics) |
Sesión |
Página visitada, tiempo en página, scroll |
| Interacción web institucional |
cruzados.cl |
Sesión |
Formulario enviado, suscripción, descarga |
Fuentes de eventos AS IS:
- Shopify: order.created, checkout.abandoned, product.viewed (parcial)
- Puntoticket: orden.creada, membresía.adquirida, evento.comprado
- Zoho Marketing Automation: email.opened, email.clicked, email.bounced, journey.step_executed
- cruzados.cl: page.viewed, form.submitted (via Google Analytics/Pixel, no integrado directamente a Zoho)
Capacidades actuales:
- Histórico: Sí, eventos se registran con timestamp.
- Trazabilidad: Sí, se puede rastrear actividad por contacto.
- Granularidad: Media - se capturan eventos principales pero no detalles finos.
- Contexto: Limitado - no siempre se registra contexto de campaña, canal de adquisición, etc.
TO BE: Nuevos eventos y mejoras
Nuevos eventos por capturar:
| Evento |
Descripción |
Fuente ideal |
Atributos clave |
| Producto visto |
Usuario vio detalle de producto en Shopify o Puntoticket |
Shopify/Puntoticket webhook |
product_id, timestamp, ubicación (mobile/web) |
| Membresía renovada |
Membresía se renovó automáticamente |
Puntoticket webhook |
membership_type, nueva_fecha_vencimiento, razón |
| Membresía expirada |
Membresía llegó a su fecha de vencimiento |
Puntoticket webhook |
membership_type, fecha_expiracion, días_vigencia |
| Evento asistido |
Usuario con beneficio asistió a evento |
Sistema de asistencia Cruzados |
event_id, sector, timestamp entrada, tipo_beneficio |
| Página visitada |
Usuario visitó página de cruzados.cl |
Pixel/GTM integrado a Zoho |
page_url, referrer, tiempo_en_página, scroll_depth |
| Suscripción a newsletter |
Usuario se suscribió a lista de emails |
cruzados.cl / Zoho Marketing Automation |
email, lista_id, fecha_suscripcion, canal |
| Preferencias actualizadas |
Usuario actualizó preferencias de comunicación |
CRM / Self-service portal |
canal, frecuencia, categorías_interés |
| Soporte contactado |
Usuario contactó al equipo de soporte |
Help desk / Chat / Email |
canal, asunto, timestamp, resolución |
| Descarga de contenido |
Usuario descargó material (ebook, guía, etc.) |
cruzados.cl |
content_type, content_id, timestamp |
Eventos diferenciados por tipo de entidad:
Para Compradores: Eventos de compra, navegación, carrito, abandonos, preferencias
Para Beneficiarios: Eventos de asistencia, renovación, expiración, uso de beneficios
Para Ambos: Eventos de comunicación (email, SMS), interacción web, soporte
Esquema estándar de eventos (TO BE):
event_id - identificador único del evento
event_type - tipo de evento (purchase, view, click, etc.)
event_timestamp - timestamp en UTC
contact_id - link a Contacto (comprador)
beneficiary_id - link a Beneficiario (si aplica)
source - fuente del evento (shopify, puntoticket, zoho_marketing_automation, web, etc.)
campaign_id - campaña asociada (si aplica)
channel - canal (email, web, app, offline, etc.)
device_type - tipo de dispositivo (mobile, desktop, tablet)
attributes - objeto JSON con atributos específicos del evento
Plan de implementación TO BE:
- Webhooks en tiempo real: Configurar webhooks en Shopify y Puntoticket para eventos críticos.
- Pixel integrado: Implementar pixel/GTM en cruzados.cl que envíe eventos a Zoho.
- Sistema de asistencia: Conectar sistema de asistencia a eventos de evento.asistido.
- Data warehouse: Considerar crear data warehouse para almacenar eventos raw con más granularidad.
- Análisis de journeys: Implementar análisis de customer journey para identificar patrones de conversión.
- Segmentación por eventos: Crear segmentos dinámicos basados en eventos (ej: visitó página X, nunca compró).