Modelos de atribución
Cada visitante en Zenovay lleva dos instantáneas de atribución: su canal de first-touch (cómo te encontró por primera vez) y su canal de last-touch (canal de la sesión que convirtió o la más reciente). Ambas se almacenan de forma independiente — el first-touch se fija en la primera observación y nunca se sobrescribe.
Por qué dos instantáneas
La atribución de marketing es una cuestión de crédito. Si un visitante llega primero vía búsqueda orgánica de Google, vuelve tres semanas después por un anuncio pagado de LinkedIn, y convierte en una visita directa:
- Last-touch acredita a direct. (Subestima el marketing a menudo.)
- First-touch acredita a organic search. (Sobreestima el SEO a menudo.)
- Los modelos lineal / position-based / time-decay dividen el crédito entre cada canal del recorrido del visitante — seleccionables en la pestaña Revenue (ver más abajo).
Zenovay empieza simple: se almacenan first-touch y last-touch, y el panel permite alternar entre ellos.
Qué captura el first-touch
En la primera observación de un visitante, Zenovay rellena estas columnas:
| Columna | Significado |
|---|---|
first_touch_channel | Canal — organic, direct, referral, social, email, paid, ai |
first_touch_utm_source | UTM source, si está presente |
first_touch_utm_medium | UTM medium |
first_touch_utm_campaign | UTM campaign |
first_touch_utm_content | UTM content |
first_touch_utm_term | UTM term |
first_touch_referrer | URL del referente |
first_touch_landing_page | Primera URL de aterrizaje |
first_touch_at | Marca de tiempo de la primera observación |
Nunca se sobrescriben en sesiones posteriores. Las columnas sin prefijo (channel, utm_*, referrer, landing_page) se actualizan en cada sesión y representan last-touch.
Visitantes observados antes del 30/04/2026 tienen valores first-touch NULL. El historial no se rellenó retroactivamente.
Clasificación de canales
Los canales se clasifican en este orden de prioridad:
- IDs de clic (
gclid,fbclid,ttclid,msclkid) — siempre paid. utm_medium—cpc/ppc/paid/display/banner/cpm→ paid;email→ email;social→ social;referral/affiliate→ referral;organic→ organic.utm_sourcecomparado contra listas curadas.- Hostname del referente — motores de búsqueda → organic; plataformas sociales → social; clientes de webmail → email; otros → referral.
- Detección de navegador in-app (Discord, Facebook, Instagram, ...) — social.
- Sin referente + sin UTM → direct.
Un visitante marcado como bot por la heurística de IA de Zenovay tiene su canal forzado a ai independientemente de los UTM.
Tráfico de correo — el arreglo del referente vacío
Los enlaces en correos no suelen tener header Referer. Sin UTMs, este tráfico se clasificaba erróneamente como direct.
Zenovay lo captura de dos formas:
utm_medium=email→ canal email, sin importar el referente.- Sin referente +
utm_sourceque coincida con un ESP conocido (Mailchimp, Klaviyo, HubSpot, ActiveCampaign, Brevo, ConvertKit, MailerLite, Beehiiv, Customer.io, GetResponse, Omnisend, Substack, Drip, Intercom, Postscript, Attentive, Iterable, Braze, Resend, Loops, Marketo, Pardot, etc.) → canal email.
La lista completa de ESP vive en api-zenovay/src/constants/domains.ts (EMAIL_UTM_SOURCES). Para que tus campañas se clasifiquen correctamente:
<!-- Convención UTM recomendada para todos los enlaces de correo -->
<a href="https://tu-sitio.com/?utm_source=mailchimp&utm_medium=email&utm_campaign=launch">
Leer más
</a>
utm_medium=email O un utm_source reconocido es suficiente — no necesitas ambos.
Leer la atribución en el panel
La pestaña Sources y el panel de detalle del visitante permiten ahora alternar entre first-touch y last-touch directamente desde la UI — ya no necesitas consultar la base de datos para comparar las dos.
Pestaña Sources
La tarjeta Sources del panel de analítica tiene un conmutador First touch | Last touch en su cabecera. La selección se persiste en la URL (?attribution=first o ?attribution=last), por lo que recargar y la navegación atrás/adelante preservan tu elección. Por defecto: last-touch (igual que antes).
La tarjeta tiene cuatro vistas de nivel superior:
| Pestaña | Atribución por defecto | Qué muestra |
|---|---|---|
| Channel | Sigue el conmutador | Visitantes divididos en 9 cubos: Direct, Organic Search, Organic Social, Referral, Paid Search, Paid Social, Email, Affiliate, Display |
| Referrer | Sigue el conmutador | Dominios referentes principales con favicons; navegadores in-app (ChatGPT, Snapchat, etc.) clasificados vía utm_source |
| UTMs | Sigue el conmutador | Cinco sub-pestañas: Source, Medium, Campaign, Content, Term. Un cubo (none) cuenta visitantes sin esa dimensión |
| Keyword | Siempre last-touch | Desde tu conexión de Google Search Console; el conmutador no aplica |
Al cambiar a First touch, las vistas Channel / Referrer / UTM cambian a los valores primero observados del visitante. La analítica importada (CSV de Plausible) es solo last-touch — esas filas se omiten en la vista first-touch para mantener el modelo coherente.
Los paneles públicos siempre muestran atribución last-touch. El conmutador es solo para el owner en V1; un valor por defecto del lado del servidor por enlace compartido vendrá después.
Tarjeta de detalle del visitante
Al hacer clic en un perfil de visitante, la barra lateral muestra un panel compacto de Atribución: first-touch (channel + utm_source + landing page + fecha primera vista) a la izquierda, last-touch (channel + utm_source + referrer + landing page) a la derecha. El panel se oculta para visitantes anteriores a FND-B (≈2% del histórico) para no mostrar una fila de guiones.
Pestaña Revenue
La tarjeta Atribución de la pestaña Revenue tiene un selector de cinco modelos — Last-Touch (por defecto), First-Touch, Linear, Position-Based y Time-Decay. La elección se persiste en la URL (?model=), por lo que recargar y la navegación atrás/adelante conservan el modelo elegido. Por defecto: last-touch.
Los cinco modelos de atribución
Cada modelo responde de forma distinta a la pregunta «¿qué canal recibe el crédito de esta conversión?»:
| Modelo | Qué acredita | Cuándo usarlo |
|---|---|---|
| Last-Touch | 100 % al último canal antes de convertir | Quieres saber qué cierra las ventas |
| First-Touch | 100 % al canal que trajo al visitante por primera vez | Quieres saber qué impulsa el descubrimiento |
| Linear | Repartido por igual entre cada canal del recorrido | Quieres una vista equilibrada y neutral |
| Position-Based | 40 % primero, 40 % último, 20 % repartido en el medio | Quieres premiar descubrimiento Y cierre |
| Time-Decay | Más crédito a los canales cercanos a la conversión | Tienes ciclos de venta más cortos |
Time-Decay usa una vida media de 7 días: una interacción 7 días antes de la conversión recibe la mitad del peso de una interacción en el momento de la conversión, y la ponderación se sigue dividiendo a la mitad por cada 7 días adicionales.
Una nota sobre el historial de datos
Si la mayoría de las conversiones de un período provienen de una sola sesión, los modelos multi-touch (Linear, Position-Based, Time-Decay) se verán muy similares a Last-Touch — solo hay un canal entre el que repartir el crédito. Esto es esperado, no un error, y se resuelve por sí solo a medida que se acumulan más recorridos multi-sesión.
Cómo lee cada modelo tus datos
Los cinco modelos no leen todos de la misma fuente:
- Last-Touch y First-Touch usan cada uno un único snapshot. Last-Touch acredita el canal registrado en la sesión de conversión; First-Touch acredita el canal de la primera sesión registrada del visitante. No se necesita reconstruir ningún recorrido.
- Linear, Position-Based y Time-Decay reconstruyen el recorrido completo multi-sesión del visitante, recuperando cada visita registrada antes de la conversión y distribuyendo el crédito entre las sesiones encontradas.
Una consecuencia de esta diferencia: con los mismos datos subyacentes, los modelos pueden coincidir completamente o divergir notablemente, dependiendo de cuántas sesiones y canales distintos atravesó un visitante antes de convertir. Un visitante con un recorrido de una sola sesión dará la misma respuesta a todos los modelos. Un visitante con cinco sesiones en tres canales producirá resultados mediblemente diferentes en cada modelo.
Por qué tus modelos pueden verse casi idénticos
Cuando cambias entre modelos de atribución y el desglose de canales apenas varía, los datos se están comportando correctamente — no es un problema de visualización.
Si la mayoría de tus conversiones provienen de visitantes que tuvieron solo una sesión (o que utilizaron consistentemente un único canal antes de convertir), cada modelo asigna matemáticamente el 100 % del crédito a ese canal. Last-Touch, First-Touch, Linear, Position-Based y Time-Decay llegan todos al mismo resultado porque no hay nada que distribuir de forma diferente. A medida que tu audiencia crece y más visitantes tocan múltiples canales en múltiples sesiones antes de convertir, los modelos divergirán y la comparación será más informativa.
Algunos aspectos adicionales a tener en cuenta al comparar modelos:
- El tráfico de IA siempre se acredita al canal dedicado ai bajo cualquier modelo de atribución. La detección de IA tiene prioridad sobre la ruta de toques, por lo que la fila de IA permanece constante al cambiar de modelo.
- Una conversión sin valor monetario sigue contando para la atribución de conversiones. Las comparaciones ponderadas por ingresos requieren que haya un valor monetario adjunto al objetivo — sin él, esas conversiones aparecen en los recuentos pero no contribuyen a los totales de ingresos mostrados por cada modelo.
Dimensiones UTM vacías
La mayoría de visitantes no llevan todos los parámetros UTM. En datos reales de Zenovay hoy, utm_term es ≈100% nulo y utm_content ≈99.99% nulo. La pestaña Sources muestra un empty-state con una pista copiable (?utm_term=...) en lugar de una barra única al 100% de (none).