Ads · Performance
Métricas del período
| Anuncio | Campaña | Rubro | Gasto | Clics | Impr. | Conv. | CTR | CPC | CPA |
|---|
| Rubro | Ventas | GMV | Ticket prom. | Fee prom. | Tasa cierre |
|---|
| % Mix | Budget est. | Rubro / Campaña | Gastado | Gasto rubro | Días mes | Corridos | % Gasto |
|---|
| Rubro | Gasto | Clics | Conv. ads | CTR | CPC | CPA ads |
|---|
| Campaña | Canal | Rubro | Gasto | Clics | Conv. | CTR | CPC | CPA |
|---|
| Campaña | Ad Group | Gasto | Clics | Conv. | CTR | CPC | CPA |
|---|
| Anuncio | Campaña | Rubro | Gasto | Clics | Conv. | CTR | CPC | CPA |
|---|
Ingresá el objetivo de conversiones (leads a WhatsApp) por rubro. El sistema calcula el budget basado en CPA histórico de Google Ads.
KPIs de Ads (Google + Meta)
| Gasto total ads | Suma del spend de Google Ads + Meta Ads en el período seleccionado. |
| Clics totales | Total de clicks en anuncios. CTR = clics / impresiones. |
| Conversiones ads | Conversiones declaradas por las plataformas (click a WhatsApp, landing page view). No son ventas reales. |
| CPA combinado | Gasto total / conversiones declaradas. Lo que las plataformas dicen que cuesta cada conversión. |
Métricas de Negocio (cruce ads + Finanzas AT)
| Revenue (ads) | Ingreso AT + IVA de las ventas atribuidas a ads. Solo se cuentan ventas donde el teléfono del cliente matchea con un lead que llegó por el widget de ads. |
| GMV (ads) | Valor bruto de las transacciones (columna "Transacción total") de ventas atribuidas a ads. Es lo que paga el cliente final. |
| ROAS real | Revenue (ads) / Gasto en ads. Cuántos dólares de ingreso AT genera cada dólar invertido en publicidad. >1x = rentable. |
| CAC | Gasto en ads / clientes únicos adquiridos (teléfonos únicos en ventas matcheadas). Costo de adquirir un cliente. |
| CPV | Gasto en ads / ventas reales confirmadas. Diferente al CPA: el CPA usa conversiones declaradas por la plataforma, el CPV usa ventas reales de Finanzas AT. |
| Margen neto | Revenue (ads) - Gasto en ads. Si es positivo, la inversión publicitaria es rentable. |
| Tasa de cierre | Ventas reales / conversiones declaradas por plataformas (Google Ads + Meta Ads). Qué porcentaje de conversiones termina comprando. |
Por Rubro
| Ticket promedio | GMV / cantidad de ventas del rubro. Valor promedio que paga el cliente final por servicio. |
| Fee promedio | Revenue / cantidad de ventas del rubro. Ingreso promedio de AT por servicio (comisión). |
| Tasa de cierre | Ventas del rubro / conversiones ads del rubro (declarado por plataformas). Qué tan bien convierte cada rubro. |
Gasto vs Revenue por Rubro
| Barra azul | Gasto en ads para ese rubro (lo que se invirtió). |
| Barra naranja | Revenue real de AT para ese rubro (lo que entró por ventas atribuidas a ads). |
| ROAS real | Revenue / Gasto del rubro. >1x = el rubro genera más de lo que se invierte. |
| CPA | Gasto / conversiones declaradas del rubro. |
Pacing de Presupuesto
| Budget diario | Presupuesto diario configurado en Google Ads para cada campaña. |
| Budget mes | Budget diario × días del período. |
| Pace | % gastado / % del tiempo transcurrido. >1.1x = gastando más rápido (over). <0.9x = subejecutando (under). 0.9-1.1x = on track. |
Cómo funciona el cruce de datos
1. El widget de ToChat captura leads (teléfono + UTM de la campaña).
2. Esos leads quedan registrados en la tabla opportunity de Supabase (canal, campaña/UTM y rubro).
3. Finanzas AT registra ventas en "Tabla Ingresos" con el teléfono del cliente.
4. El dashboard cruza opportunity (leads) con "Tabla Ingresos" (ventas) por teléfono normalizado (ignora el 0 de más y unifica el código de país; los extranjeros se dejan enteros). El teléfono que se muestra/exporta es el de la tabla customer.
5. El canal del lead se infiere de channel_type / UTM / referrer de la opportunity (gclid → Google, fbclid → Meta).
Filtro de canal
Combinado: muestra datos de ambos canales + todas las ventas matcheadas.
Google: solo ads de Google + ventas de leads con gclid o sin UTM.
Meta: solo ads de Meta + ventas de leads con fbclid.
Bitácora de founders
Noticias
Los resúmenes que Máximo y Lorenzo publican al cierre de cada trimestre: qué pasó, qué aprendimos y hacia dónde vamos. Cada entrada es un reporte completo, escrito en HTML.
Cross-canal · Negocio
Principal
Tocá Analizar con IA para categorizar los motivos de cancelación del período con Gemini.
Calculando…
Cargando…
Cargando…
- Canal de adquisición (LTV): el del lead vigente cuando el cliente hizo su primera compra. Si ya compraba antes de que existiera ese lead, no lo adquirió esa campaña → queda en Orgánico. Sin ningún lead previo, también Orgánico (o el
origindeclarado del cliente). - Clientes únicos: deduplicados por teléfono. Una misma persona con varias filas en
customercuenta como un solo cliente (si no, el LTV sale más bajo de lo real). - Tiempo de cierre: del lead a su primera venta posterior al lead, no a la primera venta de toda la historia del teléfono. Un cliente que ya había comprado antes y vuelve a comprar a los 2 días cuenta como cierre en ≤1-3 días, no como "sin cerrar".
- Solicitudes y ventas por canal (del período): cada una se asigna al canal del impacto vigente en su fecha. Un impacto posterior a la venta no la pudo causar, así que no la atribuye.
- El P&L cierra: la columna Ingreso AT + IVA reparte todas las ventas del período (
works_done, el número que cierra con Finanzas) entre los canales, una venta a un solo canal: el del último impacto anterior a la venta (lead vigente →origindeclarado del cliente → Orgánico). Por eso las filas suman exactamente el ingreso de arriba, y el Margen y el ROAS de cada fila salen de ese reparto. - El "sección: US$ x" mide otra cosa: es lo que reporta la pestaña de ese canal — influencia, no reparto (Google / Meta / MercadoLibre / Orgánico desde la planilla Tabla Ingresos cruzada con los leads del canal; WhatsApp desde la atribución de broadcasts; Mail desde el embudo de Brevo; Automatizaciones desde su resumen). Esas atribuciones se solapan entre sí — una misma venta puede estar contada por Google y también por un broadcast — y dejan afuera las ventas sin lead, así que sumarlas no da el total. Sirven para juzgar el canal, no para cuadrar el P&L. Cuando una fila difiere mucho de su sección, lo que hay que revisar es la atribución de esa sección.
- Cliente nuevo: su primera compra histórica cae dentro del período (dedup por teléfono). Revenue: Ingreso AT + IVA en USD ÷ 40.
Brevo · Email marketing
Mail · este mes
Cargando…
Kapso · WhatsApp broadcasts
WhatsApp · este mes
Cargando…
- Técnico de entrega: destinatarios, entregados, leídos, no leídos, fallidos y respondidos vienen de Kapso (estado real de cada envío en Meta).
- Atribución last-touch (una venta = una sola campaña): cada acción se asigna al broadcast más reciente enviado a ese teléfono antes de la acción. El teléfono solo no atribuye nada: siempre manda la fecha del envío.
- Compiten también las campañas posteriores al período: para decidir el ganador se cargan los broadcasts posteriores, hasta hoy (0 en esta consulta). Así una venta de julio se la lleva la campaña de julio y no aparece además en mayo.
- Ventana: la acción cuenta solo si ocurre dentro de los ∞ días posteriores al envío al contacto (configurable arriba; 0 = sin límite).
- Match de teléfono: por los últimos 8 dígitos. Si un teléfono mapea a varios clientes, se toma el primero.
- Solicitudes: filas de
service_requestcreadas tras el envío (se excluyenis_test). Cotizaciones:quotes, un teléfono cuenta una sola vez (su primera cotización). - Ventas / Revenue: una venta = una solicitud (varios
works_donedel mismoservice_requestson una sola venta con el revenue sumado). Se atribuye por la fecha en que el cliente pidió el servicio, no por la fecha de carga del trabajo, para que un envío posterior a la solicitud no se la adjudique. Revenue = Ingreso AT + IVA (UYU) en USD ÷ 40; se excluyen los trabajos cancelados. - Costo: entregados × tarifa real de marketing de Meta (configurá Meta en “Costos templates”).
- Teléfonos: tocá un broadcast para ver quiénes crearon solicitud / compraron; usá los botones por campaña para exportar fallidos / no leídos / todos.
N8N · Up-selling & Cross-selling
Automatizaciones · este mes
Cargando…
Cargando…
- Envíos: tabla
automatic_contacts— el propio workflow de N8N registra cada template enviada (customer_id,phone,template, fecha). Se cuentan los envíos del período seleccionado. - Atribución last-touch por cliente (una vez sola): cada conversión se asigna al envío más reciente a ese
customer_idanterior a la conversión, dentro de la ventana. Compiten también los envíos posteriores al período (hasta hoy): si el último toque fue de otro mes, la conversión es de ese mes y no se cuenta acá — así la misma venta no aparece en dos períodos. - Cuponera: nueva
service_requestcontype = 'abono'(abono/cuponera de recurrencia de limpieza o jardinería). - Con descuento (50%): nueva solicitud que usa un cupón (
fct_coupon_id), o undiscountaplicado /fct_couponusado tras el envío. - Solicitud: cualquier
service_requestnueva del cliente tras el envío (re-engagement; se excluyenis_test). - Convertidos: clientes únicos con cuponera o descuento. Ventas / Revenue: una venta = una solicitud (varios
works_donedel mismoservice_requestson una sola venta con el revenue sumado), atribuida por la fecha en que el cliente pidió el servicio y no por la de carga del trabajo. Revenue = Ingreso AT + IVA en USD ÷ 40; se excluyen los cancelados. - Botón tocado: respuesta real del cliente al template ("Me interesa" / "Tengo dudas" / "No, gracias"). Se matchea el envío con el log de Meta en
arreglatodo-wapor el ID exacto del mensaje (context_message_idde la respuesta →whatsapp_message_iddel envío), no por heurística de texto. - Regla del negocio: el flujo corre solo para clientes nuevos (primer servicio completado) y los re-considera a los 90 días.
Contenido · RRSS y campañas directas
Buscador de material real
- Universo: todas las
service_requesthistóricas (se excluyen las de prueba). Se busca sobre el campodescription— lo que el cliente pidió con sus palabras — y también sobre la dirección, así que "pocitos" o "ciudad de la costa" también funcionan. - Cómo matchea: no es un
LIKE. Tolera plurales, conjugaciones y typos, y expande la consulta con sinónimos del rubro hogar: "pintar mi living" también trae "pintura del comedor" o "repintar la sala". Las palabras raras pesan más que las comunes (IDF), y sube el que matchea todos los términos, no el que repite uno. - 🧠 Ampliar con IA: opcional. Gemini agrega términos relacionados antes de buscar. Útil cuando la búsqueda es muy corta o muy coloquial.
- Fotos y videos: salen de la conversación real de WhatsApp de ese teléfono (
arreglatodo-wa). El chip DEL PEDIDO marca el material enviado dentro de los ±45 días de esa solicitud — es el que ilustra ese trabajo; el resto es historial del cliente. - Venta: si la solicitud tiene
works_done, se muestra el Ingreso AT (comisión + IVA) y el GMV en USD (÷40). - Para campañas: los teléfonos van en formato
598XXXXXXXX, listo para pegar en Brevo, Kapso o el segmentador de Meta. El Excel trae una hoja aparte solo con los teléfonos seleccionados. - Buscar por teléfono: si escribís un número (6 dígitos o más) devuelve todas las solicitudes de ese cliente con todo su material.
SEO · Orgánico