lección 4

Día 3: ROAS y los datos que no cuadran

Calcula el ROAS reportado vs el ROAS real usando datos del CRM. Introduce los modelos de atribución y por que importan.

45 min

### Jueves 7:32 AM -- El email de Ana

Todavia no has llegado a la oficina y ya hay fuego. Carmen reenvia un email de Ana a las 7:32 con un mensaje seco: "Ver abajo. Prioridad absoluta hoy."

1De: Ana Soler <ana.soler@pharmalife.com>
2Para: Carmen Delgado <carmen@adpulse.io>
3Asunto: RE: Quarterly review viernes
4Fecha: Jueves 7:15 AM
5
6Carmen,
7
8Manana es el quarterly review con mi CEO. Necesito un número REAL
9de ROAS por canal. No el que dice Google ni el que dice Meta -- el
10REAL. Cuanto me devuelve cada euro que invierto en cada plataforma.
11
12Si no lo tenemos para mañana a las 10, voy a tener que improvisar
13con los números de Google y eso no me gusta nada porque se que
14están inflados.
15
16Necesito:
171. ROAS real por canal (Google, Meta, Email)
182. Recomendacion de donde poner más dinero
193. Un número que yo pueda poner en una diapositiva sin miedo
20
21Gracias,
22Ana

El email del cliente: números reales para mañana, sin excusas

Carmen te encuentra en la cocina a las 9:05: "Has visto el email de Ana? Es la prioridad de hoy. La tabla unificada ya la tienes. Ahora necesito que cruces con el CRM para sacar ROAS real. Ivan tiene acceso a la exportación de ventas de HubSpot. Trabajad juntos." Se gira y se va sin esperar respuesta. Asi es Carmen.

### Que es el ROAS y por que es LA métrica

ROAS (Return On Ad Spend) es la métrica fundamental del marketing digital. Mide cuantos euros de ingreso genera cada euro invertido en publicidad. La formula es simple: ROAS = Revenue / Spend. Un ROAS de 3x significa que por cada euro que inviertes, generas 3 euros en ventas. El objetivo de Ana es alcanzar 3x -- por debajo de eso, la publicidad no es rentable considerando margenes, costes operativos y el fee de AdPulse.

1FORMULA BASICA:
2 ROAS = Revenue generado / Gasto publicitario
3
4EJEMPLO:
5 Gasto en Google Ads enero: 1,100,000 EUR
6 Revenue que Google dice que genero: ~1,950,000 EUR
7 ROAS segun Google: 1,950,000 / 1,100,000 = 1.77x
8
9PERO... ese revenue es el que GOOGLE dice que genero.
10Google tiene incentivo de mostrarte un número alto.
11El ROAS REAL es el que sale de cruzar con ventas CRM confirmadas.
12
13ANALOGIA:
14 Imagina 3 vendedores en una tienda. Cada uno dice:
15 "Yo vendi 10 productos hoy" (30 total segun ellos).
16 La caja registradora dice: solo se vendieron 21.
17 Los vendedores se están atribuyendo ventas del otro.
18 La caja registradora es el CRM.

ROAS: formula simple, pero la verdad está en QUE revenue usas

### Los datos del CRM (HubSpot)

Ivan te da acceso a la tabla de ventas del CRM de PharmaLife. Es un export diario que llega a las 5 AM desde HubSpot. Cada venta tiene un ID único, la fecha de compra, el importe y lo más valioso: los touchpoints previos -- que canales y campañas "toco" el cliente antes de comprar.

1-- Tabla: crm_conversions (export de HubSpot)
2-- 3,150 ventas confirmadas en enero 2024
3
4SELECT * FROM crm_conversions LIMIT 5;
5
6-- sale_id | customer_id | sale_date | amount_eur | touchpoints
7-- S-00001 | C-4521 | 2024-01-03 | 89.90 | google:PL_Search_Vitamins_Brand,meta:pharmalife_vitamins_broad_fb
8-- S-00002 | C-1203 | 2024-01-03 | 124.50 | meta:pharmalife_omega3_retarget_ig
9-- S-00003 | C-8890 | 2024-01-04 | 67.00 | google:PL_Shopping_Supplements_All,email:Weekly_Vitamins_Promo,meta:pharmalife_vitamins_broad_fb
10-- S-00004 | C-3301 | 2024-01-04 | 45.00 | google:PL_Search_Omega3_Generic
11-- S-00005 | C-7720 | 2024-01-05 | 210.00 | email:Abandoned_Cart_Recovery,meta:pharmalife_protein_retarget_fb
12
13-- El campo touchpoints es un string con formato "source:campaign_name"
14-- separado por comas, en orden cronologico (primero = primer contactó)
15
16-- Estadisticas del CRM enero 2024:
17-- Total ventas: 3,150
18-- Revenue total: 285,012 EUR
19-- Ticket medio: 90.48 EUR
20-- Ventas con 1 solo touchpoint: 1,230 (39%)
21-- Ventas con 2 touchpoints: 1,240 (39%)
22-- Ventas con 3 touchpoints: 680 (22%)

CRM: cada venta tiene la cadena de touchpoints que la precedieron

Ahora el panorama es claro. La venta S-00001 (89.90 EUR) fue tocada por Google Y Meta. Ambas plataformas se la atribuyen entera. La venta S-00003 (67.00 EUR) fue tocada por las 3 plataformas -- las 3 se la atribuyen. Ahi está la inflacion: la misma venta se cuenta 2 o 3 veces.

### Los modelos de atribución

Ivan te explica que hay multiples formas de "repartir" el credito de una venta entre los canales que participaron. Cada modelo da resultados diferentes y favorece a canales distintos:

  • Last-click: 100% del credito al último canal antes de la compra. Favorece canales de cierre (Google Search, Email retargeting).
  • First-click: 100% del credito al primer canal que toco al cliente. Favorece canales de descubrimiento (Display, Video, Social).
  • Lineal: credito repartido equitativamente entre TODOS los touchpoints. El más justo y transparente. Si hay 3 touchpoints, cada uno recibe 1/3.
  • Time-decay: más credito a los touchpoints cercanos a la compra, menos a los lejanos. Un equilibrio entre last-click y lineal.
  • Data-driven: usa machine learning para asignar credito basado en patrones históricos. Requiere muchos datos y es una caja negra.
1EJEMPLO: Venta S-00003 (67.00 EUR)
2Touchpoints: google -> email -> meta (3 canales, en orden cronologico)
3
4LAST-CLICK:
5 google: 0 EUR | email: 0 EUR | meta: 67.00 EUR (100%)
6
7FIRST-CLICK:
8 google: 67.00 EUR (100%) | email: 0 EUR | meta: 0 EUR
9
10LINEAL:
11 google: 22.33 EUR (33%) | email: 22.33 EUR (33%) | meta: 22.33 EUR (33%)
12
13TIME-DECAY (factor 0.5 por posición):
14 google: 11.17 EUR (17%) | email: 22.33 EUR (33%) | meta: 33.50 EUR (50%)
15
16Cual es "correcto"? Ninguno y todos. Depende de que pregunta
17quieras responder. Para Ana, recomendamos LINEAL por ser
18transparente y fácil de auditar.

El mismo dato, 4 interpretaciones diferentes -- por eso la atribución es difícil

Ivan te dice: "Para la presentación de mañana usamos atribución lineal. Es la más fácil de explicar a un cliente no técnico. Ana va a entender que si una venta pasó por 3 canales, cada uno se lleva 1/3 del credito. Es justo, transparente y auditable. Los modelos data-driven son mejores pero son cajas negras -- y Ana no confía en cajas negras."

El campo touchpoints del CRM es un string separado por comas. En un mundo ideal seria un array JSON o una tabla separada (crm_touchpoints). Pero los exports de CRMs legacy vienen así -- texto plano que necesitas parsear. No te quejes, resuelvelo.

### Por que la atribución es tan difícil

Ivan se sienta contigo a media mañana y te explica por que este problema no tiene solución "correcta": "La atribución es fundamentalmente un problema de contrafactual. Para saber el VERDADERO impacto de Google, tendrias que volver atras en el tiempo, quitar Google, y ver cuantas ventas habrias tenido SIN Google. Eso es imposible. Asi que usamos modelos matematicos que APROXIMAN la realidad. Cada modelo hace suposiciones diferentes y da resultados diferentes."

Te pone un ejemplo: "Imagina a un cliente, Carlos. Carlos vio un anuncio de vitaminas en Instagram (Meta), luego busco omega 3 en Google y hizo click, y finalmente recibió un email de cart abandonment y compro. Pregunta: sin Meta, habria comprado Carlos? Quiza si -- quiza ya conocia la marca. Sin Google, habria llegado a la web? Quiza si -- habria buscado el nombre de la marca directamente. Sin el email, habria vuelto? Probablemente no -- el email fue el recordatorio final."

"Ves el problema? No hay forma de saber con certeza que habria pasado en un mundo alternativo. Asi que hacemos lo mejor que podemos: repartir el credito con un modelo matematico transparente y consistente. El modelo lineal dice 1/3 a cada uno. El time-decay dice más al email (último). El last-click dice todo al email. Ninguno es la verdad -- todos son aproximaciones útiles."

La mayor trampa de la atribución es buscar la respuesta "correcta". No existe. Lo que existe es la respuesta más UTIL para la decisión que el cliente necesita tomar. Si Ana necesita decidir donde poner más dinero, lo que importa no es el número exacto de ROAS -- es el RANKING relativo entre canales. Y en eso, los 3 modelos coinciden: Meta > Email > Google.

### El CRM como fuente de verdad

Ivan te explica un concepto fundamental: "En AdTech, la única fuente de verdad es el CRM del cliente. No Google, no Meta, no email. El CRM registra ventas REALES -- dinero que entro en la cuenta bancaria de PharmaLife. Todo lo demas son estimaciones con grados de confianza variable."

Pero el CRM tampoco es perfecto. Ivan te señala limitaciones: "Los touchpoints del CRM dependen de las cookies y el tracking. Si un usuario borra sus cookies entre el primer click (Google) y la compra, el CRM no sabe que pasó por Google. Solo ve el último canal. Eso introduce un sesgo hacía last-click: los canales de cierre (email, search brand) aparecen sobrerepresentados en los touchpoints del CRM."

1LIMITACIONES DEL CRM COMO FUENTE DE VERDAD:
2
31. Cookie deletion: ~15% de usuarios borran cookies entre touchpoints.
4 Impacto: sub-representa canales de awareness (display, video).
5
62. Cross-device: un usuario ve el anuncio en movil pero compra en
7 desktop. Sin cross-device tracking, solo ves el dispositivo final.
8 Impacto: sub-representa mobile.
9
103. Offline conversions: un usuario ve el anuncio online pero compra
11 por telefono. El CRM registra la venta pero sin touchpoints digitales.
12 Impacto: ventas "sin atribuir" (~5-8% del total).
13
144. Latencia de registro: entre que el usuario compra y aparece en
15 el CRM pueden pasar 24-48h (procesamiento de pago, antifraude).
16 Impacto: desfase temporal entre fuentes.
17
18CONCLUSION: El CRM es la MEJOR fuente que tenemos, no la PERFECTA.
19Usamos el CRM como verdad y aceptamos un margen de error del 5-8%.

El CRM no es perfecto pero es lo más cercano a la verdad que tenemos

## ejercicios

[01]

Diagnosticar la inflacion por tipo de campaña

Algunas campañas generan más overlap que otras (ej: retargeting aparece en muchos touchpoints). Calcula la inflacion estimada por product_category usando la tabla unificada.

Cargando editor...
[02]

Calcular ROAS reportado vs ROAS real básico

Usando unified_campaigns, calcula el ROAS que reporta cada plataforma y comparalo con el ROAS real usando el total de ventas del CRM. Cuantifica la diferencia.

Cargando editor...
[03]

Parsear touchpoints y calcular atribución lineal en Python

Escribe funciones Python que parseen el campo touchpoints del CRM, implementen atribución lineal, y calculen el ROAS real por canal.

Cargando editor...
[04]

Atribucion lineal en SQL puro (CTE complejo)

Implementa la atribución lineal directamente en SQL: expande touchpoints, cuenta por venta, distribuye revenue y agrega por fuente.

Cargando editor...

Regístrate para guardar tu progreso.

## comentarios

Reporta erratas, ayuda a otros o comparte tu opinión. Sé constructivo.

Inicia sesión para comentar y responder.

cargando comentarios...