El problema: reportes manuales que drenan al equipo
Cada fin de mes, el equipo de la agencia Pulso Digital enfrentaba el mismo ciclo: abrir Google Analytics, Google Ads, Meta Ads Manager y las hojas de calculo internas de cada cliente. Copiar numeros. Pegar en un PowerPoint. Ajustar graficos. Repetir 42 veces.
El flujo anterior:
- Abrir las 3-4 plataformas de cada cliente y exportar CSVs.
- Consolidar datos en una hoja de calculo maestra.
- Copiar KPIs a un template de PowerPoint con el logo del cliente.
- Crear graficos manualmente (barras para gasto, lineas para conversiones).
- Escribir el resumen ejecutivo interpretando los numeros.
- Exportar a PDF y enviar por email al cliente.
Por cliente, el proceso tomaba entre 45 minutos y 1.5 horas. Con 42 clientes, eran 2 dias completos de trabajo del equipo solo en generar reportes. Dos personas a tiempo completo durante 2 dias cada mes.
La solucion: un JSON por cliente, un PDF completo
Con Reportia, el flujo se automatizo en 4 pasos:
Extraer metricas de las plataformas
Un script en Python usa las APIs de Google Ads, Meta Marketing API y Google Analytics Data API para extraer las metricas del mes: impresiones, clics, CPC, conversiones, ROAS, gasto total. Todo se consolida en un JSON por cliente.
Disenar la plantilla una vez en el builder
La agencia creo una plantilla base en el builder visual con secciones para: resumen ejecutivo, tabla de campanas, grafico de gasto vs conversiones, grafico de ROAS mensual, y recomendaciones. Variables como {{logo_url}} y {{color_primario}} permiten personalizar por cliente.
POST a /v1/render por cada cliente
El script itera la lista de clientes y hace un POST por cada uno. Reportia renderiza el HTML con los datos, incluyendo graficos SVG, y devuelve un PDF profesional de 4-6 paginas en menos de 3 segundos.
Enviar por email automatico
Cada PDF se envia al contacto del cliente con un email que incluye los 3 KPIs principales del mes. El cliente recibe su reporte profesional, con su logo, el 1ro de cada mes a las 9am.
Ejemplo de codigo: de las APIs al PDF
Asi se ve el script que consolida metricas de Google Ads y las envia a Reportia:
import requests
from google.ads.googleads.client import GoogleAdsClient
# 1. Extraer metricas de Google Ads del mes
ga_client = GoogleAdsClient.load_from_storage("google-ads.yaml")
query = """
SELECT campaign.name, metrics.impressions, metrics.clicks,
metrics.cost_micros, metrics.conversions
FROM campaign
WHERE segments.date DURING LAST_MONTH
"""
campaigns = []
response = ga_client.service.google_ads.search(
customer_id="1234567890", query=query
)
for row in response:
campaigns.append({
"nombre": row.campaign.name,
"impresiones": row.metrics.impressions,
"clics": row.metrics.clicks,
"gasto_usd": row.metrics.cost_micros / 1_000_000,
"conversiones": int(row.metrics.conversions),
})
# 2. Armar el JSON para Reportia
data = {
"template": "reporte-marketing",
"format": "pdf",
"data": {
"cliente": "Tienda MX Pro",
"logo_url": "https://example.com/logo-tienda.png",
"color_primario": "#2563eb",
"mes": "Mayo 2026",
"campanas": campaigns,
"gasto_total": sum(c["gasto_usd"] for c in campaigns),
"conversiones_total": sum(c["conversiones"] for c in campaigns),
"roas": round(
sum(c["conversiones"] for c in campaigns) * 45
/ max(sum(c["gasto_usd"] for c in campaigns), 1), 2
),
"resumen": "El ROAS mejoro 18% vs abril. Recomendamos "
"aumentar budget en la campana 'Verano 2026'.",
}
}
# 3. Generar el PDF con Reportia
resp = requests.post(
"https://reportia.4l3.org/v1/render",
json=data,
timeout=15
)
# 4. Guardar y enviar
filename = f"reporte_{data['data']['cliente'].replace(' ','_')}_mayo2026.pdf"
with open(filename, "wb") as f:
f.write(resp.content)
print(f"Reporte generado: {filename} ({len(resp.content)//1024} KB)")
Que incluye cada reporte
La plantilla que usa Pulso Digital genera un PDF de 4-6 paginas con estas secciones:
Portada
- Logo del cliente (variable por reporte)
- Periodo del reporte
- Logo de la agencia en pie
- Colores corporativos del cliente
Resumen ejecutivo
- 4 KPIs principales con variacion vs mes anterior
- Gasto total, conversiones, CPC promedio, ROAS
- Indicador verde/rojo por metrica
- Parrafo de resumen generado o escrito
Dashboards
- Grafico de barras: gasto por campana
- Grafico de lineas: conversiones diarias
- Grafico circular: distribucion de gasto por plataforma
- Todo renderizado como SVG dentro del PDF
Detalle y recomendaciones
- Tabla detallada por campana
- Comparativa mes actual vs anterior
- 3-5 recomendaciones accionables
- Proximos pasos para el siguiente mes
Resultados despues de 4 meses
Antes (manual)
- 45-90 min por cliente
- 2 dias completos al mes (2 personas)
- Errores de copia en ~10% de reportes
- Graficos inconsistentes entre clientes
- Reportes entregados entre el 3 y el 7 de cada mes
Despues (Reportia)
- 3 segundos por reporte
- 20 minutos/mes (cron automatico)
- 0 errores (datos directo de las APIs)
- Formato identico, personalizado por cliente
- Reportes entregados el 1ro a las 9am, sin falta
El impacto mas grande no fue el ahorro de tiempo sino la percepcion del cliente. Recibir un reporte profesional, con su logo, el 1ro de cada mes a las 9am les daba confianza. La agencia redujo churn un 15% en los 4 meses siguientes.
El costo: $0 USD/mes en el free tier de Reportia (42 reportes al mes, dentro del limite de 50). Cuando la agencia crezca a 55+ clientes, el plan Pro a $9 les cubre de sobra.
Graficos en PDF: como funcionan
Una de las preguntas mas frecuentes de las agencias es: "pueden generar graficos dentro del PDF?". Si. La plantilla HTML puede incluir graficos como SVG inline o usando CSS para simular barras. Reportia renderiza el HTML completo, incluyendo elementos visuales.
<!-- Ejemplo: barra de progreso en la plantilla -->
<div style="margin-bottom: 12px;">
<div style="display: flex; justify-content: space-between; font-size: 13px;">
<span>{{ campana.nombre }}</span>
<span>${{ campana.gasto_usd | round(2) }}</span>
</div>
<div style="background: #1e1e2e; border-radius: 6px; height: 20px; margin-top: 4px;">
<div style="width: {{ campana.porcentaje }}%;
background: linear-gradient(90deg, {{ color_primario }}, #818cf8);
border-radius: 6px; height: 100%;">
</div>
</div>
</div>
Cada barra se calcula como porcentaje del gasto total. El color_primario es una variable que cambia por cliente. El resultado es un dashboard profesional directamente en el PDF, sin depender de librerias externas de graficos.
Plataformas de ads compatibles
Reportia no se conecta directamente a plataformas de ads. Tu script extrae los datos y los envia como JSON. Funciona con cualquier fuente:
La ventaja de no ser un conector directo es que tu controlas que datos incluir. Puedes mezclar datos de 3 plataformas en un solo reporte, agregar metricas custom de tu CRM, o incluir datos de Google Analytics 4.
Costos para agencias
| Plan | Precio | PDFs/mes | Ideal para |
|---|---|---|---|
| Free | $0 | 50 | Agencia con hasta 50 clientes |
| Pro | $9 USD/mes | 1,000 | Agencia grande o reportes semanales |
| Scale | $29 USD/mes | 10,000 | Reportes diarios o multi-pais |
| Lifetime | $49 pago unico | 1,000/mes para siempre | Agencia que quiere pagar una vez |