El problema: reportes de marketing manuales en México
Cada fin de mes, el equipo de Estrategia 360 — una agencia de marketing digital en Colonia Nápoles, CDMX — enfrentaba el mismo cuello de botella: generar reportes individuales para cada uno de sus clientes.
El proceso manual:
- Abrir Google Ads Manager y exportar el informe del mes por cliente (cada cuenta tiene su propio login).
- Repetir en Meta Ads Manager para campañas de Facebook e Instagram.
- Abrir Google Analytics 4 para datos de tráfico orgánico y conversiones web.
- Consolidar todo en una hoja de Excel compartida.
- Copiar los números al template de presentación en PowerPoint con el logo del cliente.
- Crear los gráficos manualmente: barras de gasto, líneas de conversiones, ROAS mensual.
- Escribir el resumen ejecutivo interpretando los resultados.
- Exportar a PDF y enviar por email al cliente.
Por cliente, el proceso tomaba entre 2.5 y 4 horas. Con 60 clientes activos, el equipo dedicaba más de 180 horas al mes solo a reportes. Tres personas durante tres días completos — sin poder atender nuevos proyectos.
La solución: API de reportes JSON a PDF
Con Reportia, el flujo completo se automatizó en 4 pasos que se ejecutan solos:
Extracción automática de métricas
Un script en Python corre el último día del mes. Consulta la API de Google Ads, Meta Marketing API y Google Analytics Data API para cada cliente. Consolida impresiones, clics, CPC, conversiones, ROAS y gasto total en un JSON estructurado por cliente.
Plantilla única, branding por cliente
La agencia diseñó una plantilla maestra en el builder visual de Reportia: portada con logo, sección de KPIs clave, tabla de campañas por canal, gráfica de tendencia mensual y sección de recomendaciones. Variables como {{logo_url}}, {{color_primario}} y {{cliente_nombre}} personalizan cada instancia automáticamente.
Una llamada API = un reporte PDF
Por cada cliente, el script hace un POST /v1/render a Reportia con el template_id y el JSON de métricas del mes. Reportia renderiza el HTML con los datos reales, genera las gráficas SVG y devuelve un PDF profesional de 5-8 páginas en menos de 8 segundos — sin intervención humana.
Entrega automática el 1° de cada mes
El script descarga el PDF y lo adjunta a un email automático al contacto del cliente. El asunto incluye los 3 KPIs principales del mes: "Reporte Mayo: ROAS 3.4x · 1,240 conversiones · CPC $8.20 MXN". El cliente lo recibe a las 9am del 1° de cada mes, sin que nadie en la agencia tenga que hacer nada.
Código de ejemplo: de las APIs de Google/Meta al PDF
Así se ve el script simplificado que extrae métricas de Google Ads y genera el reporte con Reportia:
import requests
REPORTIA_KEY = "rep_live_tu_api_key"
REPORTIA_URL = "https://reportia.4l3.org/v1/render"
def generar_reporte_cliente(cliente: dict, metricas: dict) -> bytes:
"""
cliente = {
"nombre": "Restaurante El Palacio",
"logo_url": "https://storage.example.com/logos/el-palacio.png",
"color_primario": "#c8102e",
"contacto_email": "[email protected]"
}
metricas = {
"periodo": "Mayo 2026",
"gasto_total_mxn": 48500,
"impresiones": 142000,
"clics": 8900,
"cpc_mxn": 5.45,
"conversiones": 1240,
"roas": 3.4,
"campanas": [
{"nombre": "Google Search - Marca", "gasto": 18000, "conv": 580},
{"nombre": "Meta - Prospección", "gasto": 22000, "conv": 420},
{"nombre": "Google Display - Remarketing", "gasto": 8500, "conv": 240}
]
}
"""
payload = {
"template": "reporte_marketing_agencia",
"format": "pdf",
"data": {
"cliente": cliente,
"metricas": metricas
},
"options": {
"page": "A4",
"orientation": "portrait",
"margin": "20px 24px"
}
}
resp = requests.post(
REPORTIA_URL,
headers={"Authorization": f"Bearer {REPORTIA_KEY}"},
json=payload,
timeout=30
)
resp.raise_for_status()
return resp.content # PDF binario
# Iterar todos los clientes y generar reportes en batch
clientes = cargar_clientes_desde_crm() # tu lógica de negocio
for cliente in clientes:
metricas = extraer_metricas_mes(cliente["google_ads_id"], cliente["meta_account_id"])
pdf_bytes = generar_reporte_cliente(cliente, metricas)
# Guardar localmente
nombre_archivo = f"reporte_{cliente['slug']}_{metricas['periodo'].replace(' ','_')}.pdf"
with open(nombre_archivo, "wb") as f:
f.write(pdf_bytes)
# Enviar por email
enviar_reporte_email(
to=cliente["contacto_email"],
subject=f"Tu reporte de {metricas['periodo']} — ROAS {metricas['roas']}x",
pdf_path=nombre_archivo
)
print(f"✓ {len(clientes)} reportes generados y enviados")
El script completo, incluyendo la extracción de datos de Google Ads API v19 y Meta Marketing API v20, está disponible en la documentación de Reportia.
Antes vs después: horas de trabajo por mes
| Tarea | Antes (manual) | Con Reportia |
|---|---|---|
| Extraer datos de plataformas | ~90 min/cliente | 2 min total (script) |
| Consolidar en hoja de cálculo | ~45 min/cliente | 0 min (automático) |
| Crear gráficas en PowerPoint | ~30 min/cliente | 0 min (template) |
| Generar PDF | ~15 min/cliente | 8 seg/cliente |
| Enviar al cliente | ~10 min/cliente | 0 min (automático) |
| Total para 60 clientes | ~190 horas/mes | <1 hora/mes |
Integración con n8n: flujo completamente automatizado
Si prefieres no escribir código, el mismo flujo funciona en n8n. El workflow tiene 5 nodos:
Ver cómo integrar Reportia con Google Sheets para el paso 2 del flujo.
Preguntas frecuentes
¿Reportia puede generar gráficas dentro del PDF?
Sí. Incluyes las gráficas directamente en tu plantilla HTML usando SVG inline o Chart.js. Reportia renderiza el HTML completo — incluyendo gráficas dinámicas con los datos reales de cada cliente — y lo convierte a PDF de alta calidad. No necesitas librerías externas ni configuración adicional.
¿Cuánto cuesta para una agencia con 60 clientes en México?
Con 60 reportes mensuales, el plan Pro a $9 USD/mes es más que suficiente (incluye 1,000 reportes/mes). Son menos de $0.15 USD por reporte, sin marca de agua. Para empezar puedes usar el free tier (50 reportes/mes) sin tarjeta y sin commitment.
¿Puedo usar una plantilla diferente por cliente?
Sí. Cada cliente puede tener su propio template_id con diseño diferente. O puedes usar una plantilla base con variables de marca (logo_url, color_primario, nombre_empresa) — más eficiente si tus reportes tienen la misma estructura.
¿Funciona con n8n o Make?
Sí. Reportia es una API REST estándar. En n8n usa el nodo HTTP Request: método POST, URL https://reportia.4l3.org/v1/render, header Authorization: Bearer tu_key, body JSON con template y datos. El PDF llega como binario que puedes adjuntar directamente a un nodo de email.
¿Puedo conectar Reportia directo a Google Ads o Meta Ads?
Reportia recibe datos via JSON — no se conecta directamente a Google/Meta. Tu script (Python, Node, n8n) extrae los datos de sus APIs y los pasa a Reportia. Esto es una ventaja: tienes control total sobre qué métricas incluir, cómo calcular KPIs personalizados y qué período reportar.
¿Tu agencia genera reportes PDF manualmente?
Empieza con 50 reportes gratis, sin tarjeta. Configura tu primera plantilla en el builder visual en menos de 10 minutos.