Iniciativas pendientes y mejoras planificadas para el hub de reporting. Ordenadas por prioridad y horizonte temporal.
Operaciones que dependen del cierre de junio. Sin fecha flexible.
En julio 2026, 38 de 88 registros de talento (43%) y 11 de 17 SQL (65%) llegan a HubSpot sin nombre de campaña. Causa raíz confirmada: hasta que el visitante acepta el banner de cookies, HubSpot está en __hs_do_not_track y no registra la visita; cuando acepta, empieza a contar desde la página en la que esté, y si ya ha navegado esa URL no lleva el parámetro hstk_campaign que HubSpot necesita para resolver la campaña. Solo queda el gclid, así que el dato es recuperable contra click_view de la API de Google Ads durante 90 días.
GA4 – Pageview en GTM que no bloquea nada (es de tipo Inicialización sobre una etiqueta de Page View) más 8.384 page_view en app que deberían estar excluidos, pérdida de origen en el salto www → app, y 8.543 clics facturados contra 416 sesiones en la Demand Gen de supply.
Al cierre del mes: ejecutar pull-google-ads.py, pull-linkedin-ads.py y pull-seo.py para generar data/google-ads/monthly/2026-06.json, el equivalente de LinkedIn y SEO, y añadir la entrada "2026-06" en data/hub-summary.json. El flujo ya está definido; es trabajo de operación, no de desarrollo.
hub-summary.json con KPIs de junio → deploy manual con npx wrangler pages deploy . --project-name shakers-reporting --branch main.
GA ya tiene la card Q1/Q2 en channels/google-ads/index.html. Una vez disponibles los datos de junio, actualizar data/google-ads/quarterly.json con los acumulados de abril–junio (spend, SQL CRM, SQL CAPI, impresiones). Los cálculos son los mismos que Q1.
Brand (GSC+GA4, backfill Ene-Jun, pull-brand.py auto) · AEO (Bing WMT + HubSpot AEO, separado del canal SEO, import-aeo.py) · Influshakers (xlsx equipo, import-social-selling.py, Abr-Jun). Hub a 14 cards.
El SQL CAPI de junio (2) puede crecer por lag de conversiones importadas. Re-ejecutar pull-google-ads.py --month 2026-06 y actualizar Q2 si cambia.
Mejoras de infraestructura que reducen toil operativo de forma significativa.
Canal publicado con Ene (12) / Feb (16) / Mar (35 clippings) desde 4 xlsx de agencia vía import-pr.py. Abril+ bloqueado: Wildcom (ES) sin actualizar desde marzo. Siguiente paso: unificar los 4 trackers en un sheet único consensuado con las agencias (formato común: fecha, medio, mercado, tipo, AAV, reach, link) y conectarlo como fuente.
Narrativa scrollytelling autocontenida del cierre de cada mes en stories/YYYY-MM.html, con el sistema de marca Shakers (IBM Plex Sans, charts a mano en CSS/SVG, imágenes conceptuales Nim). El home enlaza cada historia con una CTA animada ("Cuéntame la historia de <mes>") que solo aparece en los meses del array STORY_MONTHS de index.html y alinea la flecha bajo el chip del mes. La primera es stories/2026-07.html. Es la capa de síntesis narrativa sobre unos KPIs que en el hub viven fragmentados por canal.
README.md.
stories/2026-08.html, añadir '2026-08' a STORY_MONTHS y desplegar. Candidato a ser la versión mensual de largo formato del informe semanal automatizado.
Publicación los viernes con insights por canal/pod sobre el hub (acordado con Jose). Va más allá de métricas: propone lecturas accionables. Su contraparte mensual de largo formato es la capa de historias.
Sustituye el stack provisional Bing WMT + HubSpot AEO: 48 ICP, mes natural, SoV y citas automatizados vía endpoints ai_optimization_*.
Hechos: Organic Social consolidado y Web (5 KPIs, formularios en manual). Pendientes de info:
Gaby — scopes HubSpot event-detail-read + content + form-analytics-api-access (desbloquean outbound events, canal Email y automatizar SQL submissions) ·
Soraya — hoja de eventos (SQLs 158 / CPL €146) ·
Cons — definición de "lead enviado a ventas" y "meeting" en CRM ·
Jose — corregir en su tabla Brand (29.285 = impresiones) y AEO MoM (+283% con Bing homogéneo).
El webhook de Cloudflare Pages está roto desde el commit 9585986. Actualmente el deploy es manual: hay riesgo de olvidar el comando o ejecutarlo desde el directorio incorrecto. Opciones: investigar por qué falló el webhook en la consola de Cloudflare Pages, o configurar un GitHub Action que ejecute el deploy en push a main.
npx wrangler pages deploy . --project-name shakers-reporting --branch main/Users/alfonsocalero/02_reporting/shakers-reporting/.
Los scripts pull-*.py son manuales. Si el cierre de mes se olvida, el hub queda desactualizado sin aviso. Opciones: cron local vía launchd (macOS) que dispare los pulls el día 1 de cada mes, o tarea programada en mcp__scheduled-tasks. El script ya existe; solo falta el trigger y la notificación de éxito/error.
Mejoras de cobertura de datos. No bloquean operación actual.
Instagram, YouTube, LinkedIn Organic, Events, Web Analytics y Outbound solo tienen datos de mayo en hub-summary.json. Si las fuentes lo permiten (GA4, GSC, Supermetrics social), construir los JSONs de enero–abril y añadir las entradas correspondientes en hub-summary.json para que el selector de mes del hub funcione para todos los canales desde el inicio del año.
Verificar si existe un pull-linkedin-ads.py equivalente a pull-google-ads.py con la misma estructura (QA, QC, transform, output JSON mensual). Si no existe o está incompleto, es el script que más falta hace para cerrar la paridad de automatización entre canales de pago.
Iniciativas estratégicas o de confort. Requieren decisión de prioridad antes de empezar.
Vista de deals CRM first-touch cruzada con spend: pipeline influenciado, coste por oportunidad por canal y por campaña. Sería el salto de "informe de performance" a "informe de negocio". Requiere integración con Fibbler vía fibbler-browser-bridge o API directa, y una nueva página de canal en el hub.
Actualmente el hub solo existe como web detrás de Cloudflare Access (@shakersworks.com). Si hay necesidad de compartir datos con stakeholders externos o de archivar snapshots mensuales, un botón de export (PDF via window.print() o CSV generado client-side) resuelve esto sin abrir el acceso.