← Hub
Roadmap · Next steps Shakers Reporting

Roadmap

Iniciativas pendientes y mejoras planificadas para el hub de reporting. Ordenadas por prioridad y horizonte temporal.

Resumen
Ítem Horizonte Estado
Reparación de tracking · atribución por campañaInmediatoFoco de agosto · paso 1 (gclid) hecho
Cierre de junioInmediatoHecho
Trimestral Q2InmediatoHecho
Canal PR (Ene-Mar) + unificación de trackersCorto plazoCanal hecho · unificación en curso
Canales nuevos: Brand · AEO · InflushakersInmediatoHecho · 2026-07-03
Re-pull Google Ads (lag CAPI)InmediatoPendiente · 5-6 jul
Capa de historias del mes (scrollytelling + CTA)Corto plazoHecho · julio · 2026-08-05
Informe semanal automatizado (viernes)Corto plazoPendiente
App AEO/SERP propia (DataForSEO)Corto plazoPendiente
Cards pendientes de info (scopes Gaby · hoja Soraya · defs Cons)Corto plazoBloqueado · esperando fuentes de Jose
Fix webhook deployCorto plazoPendiente
Automatización extracción mensualCorto plazoPendiente
Backfill canales menores (Ene–Abr)Medio plazoPendiente
Script pull-linkedin-ads.pyMedio plazoHecho · verificado en cierre junio
Fibbler · Pipeline attributionA valorarPendiente
Export PDF / CSVA valorarPendiente

Inmediato

Julio

Operaciones que dependen del cierre de junio. Sin fecha flexible.

Reparación de tracking · atribución por campaña Foco de agosto · diagnóstico cerrado 2026-08-03

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.

Diagnóstico completo, evidencia y plan de 6 pasos: docs/tracking.html. Incluye cuatro fallos más: talento contado como SQL de demand (1 en julio, 3 en junio), la excepción de la etiqueta 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.
Paso 1 hecho (2026-08-03): recuperación por gclid implementada en el pull. En julio resuelve 8 de 11 SQL (73%) y 19 de 42 contactos supply (45%), casi todo a Brand; el bloque sin campaña baja de 38 a 19 registros y de 11 a 3 SQL. Caduca el 2026-10-28. Quedan 10 contactos con gclid sin match en el día de la primera visita: necesitan el barrido completo de la ventana, que requiere las credenciales de la Google Ads API en el entorno del script.
Cierre de junio Hecho · 2026-07-02

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.

Checklist: extraer JSONs mensuales → patch hub-summary.json con KPIs de junio → deploy manual con npx wrangler pages deploy . --project-name shakers-reporting --branch main.
Vista trimestral Q2 Hecho · Q2 completo

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.

Canales nuevos: Brand · AEO · Influshakers Hecho · 2026-07-03

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.

Re-pull Google Ads junio Pendiente · 5-6 jul

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.

Corto plazo

Pronto

Mejoras de infraestructura que reducen toil operativo de forma significativa.

Canal PR · unificación de trackers Canal hecho · unificación en curso

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.

Capa de historias del mes Hecho · 2026-08-05 (julio)

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.

Datos verbatim del Executive Marketing report de Notion, nada inventado, GMV por canal no aditivo. Imágenes Nim solo conceptuales (sin cifras); los memes con números exactos se quedan en SVG. Proceso de build documentado en Guía de ingesta · Historias del mes y en README.md.
Siguiente: convertirlo en ritual de cierre. Para agosto 2026: generar 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.
Informe semanal automatizado Pendiente

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.

App AEO/SERP propia (DataForSEO) Pendiente

Sustituye el stack provisional Bing WMT + HubSpot AEO: 48 ICP, mes natural, SoV y citas automatizados vía endpoints ai_optimization_*.

Cards pendientes de fuente Bloqueado · fuentes de Jose

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).

Fix webhook de deploy Pendiente

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.

Comando manual hasta resolución:
npx wrangler pages deploy . --project-name shakers-reporting --branch main
Ejecutar siempre desde /Users/alfonsocalero/02_reporting/shakers-reporting/.
Automatización extracción mensual Pendiente

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.

Dependencia: el fix del webhook es previo si se quiere que el deploy también sea automático al final del pipeline.

Medio plazo

Cuando haya bandwidth

Mejoras de cobertura de datos. No bloquean operación actual.

Backfill canales menores (Ene–Abr) Pendiente

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.

Valor principalmente de coherencia visual: completa la narrativa de evolución anual. Los canales de pago (GA, LinkedIn Ads) y SEO ya tienen el histórico completo.
Script pull-linkedin-ads.py Hecho

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.

Recordatorio: los filtros de string de Supermetrics LIA están rotos igual que en AW. Todo filtrado de supply/talent/CG-PEOPLE debe hacerse client-side en Python, nunca en la query.

A valorar

Sin fecha

Iniciativas estratégicas o de confort. Requieren decisión de prioridad antes de empezar.

Fibbler · Pipeline attribution Pendiente

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.

Fibbler ya está disponible como agente en Claude Code. El trabajo es definir el schema de datos y construir la vista HTML en el mismo design system.
Export PDF / CSV Pendiente

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.