Admin / Syncs

Rows below are labeled live (a real npm run sync:crm against the CRM) or demo (npm run seed:demo fixtures). Nothing on this page is itself a live CRM, Google Sheet, or Meta connection.

CRM full baseline

pending Allowed, but never run

Requires CRM_ALLOW_FULL_BASELINE=true and --confirm-full-baseline together (npm run sync:crm:full-baseline). The ~8,000-record baseline is intentionally not run automatically by anything on this page.

Google Sheets configuration

Fuente activa: la pestaña "Trabajo diario" de la hoja unificada actual. Esta reemplazó a la hoja anterior (con sus múltiples pestañas históricas) a partir del corte de 2026-09 - esa hoja anterior ya no se usa como fuente en vivo.

configured Live access is enabled and credentials are present - this does not by itself mean a sync has succeeded.

GOOGLE_SHEETS_LIVE_ENABLEDtrue
Spreadsheet ID1XZqT2g_a2V-tSPkQENCgwLTX7VGSk3rKVuC8faT0gGo
TabTrabajo diario
Service account configuredyes

The freshness and sync-run tables below are the source of truth for whether Google Sheets is actually live - this panel only reports configuration, never an assumed status.

Cohorte operativa 2026

Clasificación por registro actual (source_records.is_current), a partir de la fecha confirmada de cada fuente (CRM "Fecha", Sheets "Fecha ingreso") - ver src/server/domain/cohort.ts. Ningún registro histórico se elimina ni se sobrescribe; esta tabla solo cuenta cómo está clasificado hoy.

FuenteIncluidos 2026Históricos excluidosRequieren revisión de fechaSin clasificarTotal actual
crm00000
google_sheets00000

Refresh status - lo que sabemos hoy sobre cada fuente

Estos tres indicadores contestan preguntas distintas y no se deben confundir: que hubo actividad reciente no significa que haya una reconciliación completa, y una reconciliación completa pasada no significa que el conteo actual de la fuente siga siendo consistente hoy.

crm

Actividad reciente verificadanever_synced último éxito: · último intento:
Reconciliación completa de la fuentenunca completada
Cobertura vs. fuenteunknown actual: 0 · último reportado por la fuente: · en última reconciliación:

google_sheets

Actividad reciente verificadanever_synced último éxito: · último intento:
Reconciliación completa de la fuentenunca completada
Cobertura vs. fuenteunknown actual: 0 · último reportado por la fuente: · en última reconciliación:

Source freshness

SourceStatusLast successLast attemptConsecutive failuresLast error (redacted)
crmnever_synced0
google_sheetsnever_synced0
meta_leadsnever_synced0

CRM field coverage

Computed from currently-ingested CRM source records - not a claim about the CRM, a read of what Guardian actually has. The confirmed listing endpoint doesn't expose phone/email/owner/origin/medium at all (see CRM_CONNECTOR.md), so those are expected to show 0% here - see the CRM detail hydration panel below for those fields, cached separately from a per-contact detail fetch.

No CRM source records ingested yet.

CRM detail hydration

Separate from the CRM list above: npm run hydrate:crm-details progressively fetches each contact's detail page (teléfono, email, domicilio, asesora, origen, medio, observaciones, fecha de creación - see CRM_CONNECTOR.md "CRM detail hydration") and caches the latest successful result separately from the list snapshot. Disabled by default (HYDRATE_CRM_DETAILS_ENABLED=false); nothing here implies it is scheduled to run automatically.

Elegibles (con detail_path conocido)0
Hidratados al menos una vez0
Nunca hidratados0
Fallando actualmente (último intento)0
Última hidratación exitosa

Ningún contacto fue hidratado todavía - no hay cobertura de campos de detalle que mostrar.

Procedencia por campo: nombre / estado / localidad / provincia / tipo vienen del listado CRM (arriba); teléfono / email / domicilio / asesora / origen / medio / observaciones / fecha de creación vienen de esta hidratación de detalle, cuando está disponible; CT 1-7 / fuente / situación CRM vienen de Google Sheets. Ningún campo se sobrescribe entre fuentes - se combinan con esta precedencia.

Recent sync runs

StartedSourceOriginTriggerStatusReadCreatedUpdatedUnchangedFailedCursor / progressLatest error (redacted)
No sync runs yet. Run npm run seed:demo for demo data, or npm run sync:crm for a live (dry-run by default) CRM sync.