Admin / Syncs
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_ENABLED | true |
|---|---|
| Spreadsheet ID | 1XZqT2g_a2V-tSPkQENCgwLTX7VGSk3rKVuC8faT0gGo |
| Tab | Trabajo diario |
| Service account configured | yes |
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.
| Fuente | Incluidos 2026 | Históricos excluidos | Requieren revisión de fecha | Sin clasificar | Total actual |
|---|---|---|---|---|---|
| crm | 3258 | 5678 | 0 | 0 | 8936 |
| google_sheets | 3293 | 1223 | 0 | 0 | 4516 |
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 verificada | fresh último éxito: 11/6/2026, 1:00:13 AM · último intento: 11/6/2026, 1:00:13 AM |
|---|---|
| Reconciliación completa de la fuente | nunca completada |
| Cobertura vs. fuente | unknown actual: 8936 · último reportado por la fuente: 8000 · en última reconciliación: — |
google_sheets
| Actividad reciente verificada | fresh último éxito: 11/6/2026, 1:30:07 AM · último intento: 11/6/2026, 1:30:07 AM |
|---|---|
| Reconciliación completa de la fuente | completada alguna vez el 11/6/2026, 1:30:07 AM |
| Cobertura vs. fuente | unknown actual: 4516 · último reportado por la fuente: — · en última reconciliación: — |
Source freshness
| Source | Status | Last success | Last attempt | Consecutive failures | Last error (redacted) |
|---|---|---|---|---|---|
| crm | fresh | 11/6/2026, 1:00:13 AM | 11/6/2026, 1:00:13 AM | 0 | — |
| google_sheets | fresh | 11/6/2026, 1:30:07 AM | 11/6/2026, 1:30:07 AM | 0 | — |
| meta_leads | never_synced | — | — | 0 | — |
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.
| Field | Available | Total | Coverage |
|---|---|---|---|
| crm_code | 8936 | 8936 | 100% |
| full_name | 8835 | 8936 | 99% |
| phone | 0 | 8936 | 0% |
| 0 | 8936 | 0% | |
| owner | 0 | 8936 | 0% |
| status | 8936 | 8936 | 100% |
| origin | 0 | 8936 | 0% |
| medium | 0 | 8936 | 0% |
| updated_at | 8936 | 8936 | 100% |
| localidad | 8936 | 8936 | 100% |
| provincia | 8936 | 8936 | 100% |
| tipo | 8936 | 8936 | 100% |
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) | 8882 |
|---|---|
| Hidratados al menos una vez | 8882 |
| Nunca hidratados | 0 |
| Fallando actualmente (último intento) | 0 |
| Última hidratación exitosa | 11/6/2026, 1:07:50 AM |
| Campo (detalle) | Disponible | Total hidratados | Cobertura |
|---|---|---|---|
| telefono | 8676 | 8882 | 98% |
| telefono2 | 6548 | 8882 | 74% |
| telefono3 | 6496 | 8882 | 73% |
| celular | 6510 | 8882 | 73% |
| 5631 | 8882 | 63% | |
| domicilio | 1870 | 8882 | 21% |
| entrecalles | 1052 | 8882 | 12% |
| codigoPostal | 268 | 8882 | 3% |
| localidad | 8674 | 8882 | 98% |
| provincia | 6708 | 8882 | 76% |
| asesora | 8882 | 8882 | 100% |
| origen | 8820 | 8882 | 99% |
| medio | 8810 | 8882 | 99% |
| observaciones | 7120 | 8882 | 80% |
| fechaCreacionIso | 8882 | 8882 | 100% |
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
| Started | Source | Origin | Trigger | Status | Read | Created | Updated | Unchanged | Failed | Cursor / progress | Latest error (redacted) |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 11/6/2026, 1:30:07 AM | google_sheets | live | full_baseline | success | 4516 | 16 | 63 | 4437 | 0 | — | — |
| 11/6/2026, 1:00:13 AM | crm | live | manual | success | 8000 | 16 | 16 | 7968 | 0 | 8000/8000 (160 pages) | — |
| 11/5/2026, 1:30:07 AM | google_sheets | live | full_baseline | success | 4500 | 20 | 80 | 4400 | 0 | — | — |
| 11/5/2026, 1:00:12 AM | crm | live | manual | success | 8000 | 20 | 38 | 7942 | 0 | 8000/8000 (160 pages) | — |
| 11/4/2026, 1:30:09 AM | google_sheets | live | full_baseline | success | 4480 | 44 | 78 | 4358 | 0 | — | — |
| 11/4/2026, 1:00:12 AM | crm | live | manual | success | 8000 | 44 | 38 | 7918 | 0 | 8000/8000 (160 pages) | — |
| 11/3/2026, 1:30:09 AM | google_sheets | live | full_baseline | success | 4436 | 7 | 84 | 4345 | 0 | — | — |
| 11/3/2026, 1:00:11 AM | crm | live | manual | success | 8000 | 7 | 26 | 7967 | 0 | 8000/8000 (160 pages) | — |
| 11/2/2026, 1:30:09 AM | google_sheets | live | full_baseline | success | 4429 | 0 | 0 | 4429 | 0 | — | — |
| 11/2/2026, 1:00:12 AM | crm | live | manual | success | 8000 | 0 | 2 | 7998 | 0 | 8000/8000 (160 pages) | — |
| 11/1/2026, 1:30:08 AM | google_sheets | live | full_baseline | success | 4429 | 5 | 16 | 4408 | 0 | — | — |
| 11/1/2026, 1:00:14 AM | crm | live | manual | success | 8000 | 5 | 4 | 7991 | 0 | 8000/8000 (160 pages) | — |
| 10/31/2026, 1:30:09 AM | google_sheets | live | full_baseline | success | 4424 | 17 | 85 | 4322 | 0 | — | — |
| 10/31/2026, 1:00:15 AM | crm | live | manual | success | 8000 | 17 | 40 | 7943 | 0 | 8000/8000 (160 pages) | — |
| 10/30/2026, 1:30:08 AM | google_sheets | live | full_baseline | success | 4407 | 12 | 84 | 4311 | 0 | — | — |
| 10/30/2026, 1:00:13 AM | crm | live | manual | success | 8000 | 13 | 43 | 7944 | 0 | 8000/8000 (160 pages) | — |
| 10/29/2026, 1:30:09 AM | google_sheets | live | full_baseline | success | 4395 | 22 | 50 | 4323 | 0 | — | — |
| 10/29/2026, 1:00:17 AM | crm | live | manual | success | 8000 | 24 | 22 | 7954 | 0 | 8000/8000 (160 pages) | — |
| 10/28/2026, 1:30:12 AM | google_sheets | live | full_baseline | success | 4373 | 22 | 101 | 4250 | 0 | — | — |
| 10/28/2026, 1:00:18 AM | crm | live | manual | success | 8000 | 23 | 45 | 7932 | 0 | 8000/8000 (160 pages) | — |
| 10/27/2026, 1:30:11 AM | google_sheets | live | full_baseline | success | 4351 | 56 | 61 | 4234 | 0 | — | — |
| 10/27/2026, 1:00:18 AM | crm | live | manual | success | 8000 | 57 | 30 | 7913 | 0 | 8000/8000 (160 pages) | — |
| 10/26/2026, 1:30:08 AM | google_sheets | live | full_baseline | success | 4295 | 0 | 0 | 4295 | 0 | — | — |
| 10/26/2026, 1:00:14 AM | crm | live | manual | success | 8000 | 0 | 2 | 7998 | 0 | 8000/8000 (160 pages) | — |
| 10/25/2026, 12:30:09 AM | google_sheets | live | full_baseline | success | 4295 | 8 | 13 | 4274 | 0 | — | — |
| 10/25/2026, 12:00:17 AM | crm | live | manual | success | 8000 | 9 | 6 | 7985 | 0 | 8000/8000 (160 pages) | — |
| 10/24/2026, 12:30:09 AM | google_sheets | live | full_baseline | success | 4287 | 20 | 76 | 4191 | 0 | — | — |
| 10/24/2026, 12:00:20 AM | crm | live | manual | success | 8000 | 22 | 20 | 7958 | 0 | 8000/8000 (160 pages) | — |
| 10/23/2026, 12:30:07 AM | google_sheets | live | full_baseline | success | 4267 | 19 | 73 | 4175 | 0 | — | — |
| 10/23/2026, 12:00:13 AM | crm | live | manual | success | 8000 | 19 | 29 | 7952 | 0 | 8000/8000 (160 pages) | — |
| 10/22/2026, 12:30:06 AM | google_sheets | live | full_baseline | success | 4248 | 25 | 46 | 4177 | 0 | — | — |
| 10/22/2026, 12:00:13 AM | crm | live | manual | success | 8000 | 26 | 27 | 7947 | 0 | 8000/8000 (160 pages) | — |
| 10/21/2026, 12:30:06 AM | google_sheets | live | full_baseline | success | 4223 | 22 | 103 | 4098 | 0 | — | — |
| 10/21/2026, 12:00:14 AM | crm | live | manual | success | 8000 | 25 | 39 | 7936 | 0 | 8000/8000 (160 pages) | — |
| 10/20/2026, 12:30:07 AM | google_sheets | live | full_baseline | success | 4201 | 43 | 4137 | 21 | 0 | — | — |
| 10/20/2026, 12:00:12 AM | crm | live | manual | success | 8000 | 43 | 16 | 7941 | 0 | 8000/8000 (160 pages) | — |
| 10/19/2026, 12:30:06 AM | google_sheets | live | full_baseline | success | 4158 | 0 | 0 | 4158 | 0 | — | — |
| 10/19/2026, 12:00:12 AM | crm | live | manual | success | 8000 | 0 | 2 | 7998 | 0 | 8000/8000 (160 pages) | — |
| 10/18/2026, 12:30:09 AM | google_sheets | live | full_baseline | success | 4158 | 3 | 11 | 4144 | 0 | — | — |
| 10/18/2026, 12:00:16 AM | crm | live | manual | success | 8000 | 4 | 7 | 7989 | 0 | 8000/8000 (160 pages) | — |
| 10/17/2026, 12:30:09 AM | google_sheets | live | full_baseline | success | 4155 | 15 | 678 | 3462 | 0 | — | — |
| 10/17/2026, 12:00:15 AM | crm | live | manual | success | 8000 | 15 | 23 | 7962 | 0 | 8000/8000 (160 pages) | — |
| 10/16/2026, 12:30:07 AM | google_sheets | live | full_baseline | success | 4140 | 23 | 59 | 4058 | 0 | — | — |
| 10/16/2026, 12:00:16 AM | crm | live | manual | success | 8000 | 24 | 23 | 7953 | 0 | 8000/8000 (160 pages) | — |
| 10/15/2026, 12:30:08 AM | google_sheets | live | full_baseline | success | 4117 | 1253 | 62 | 2802 | 0 | — | — |
| 10/15/2026, 12:00:11 AM | crm | live | manual | success | 8000 | 42 | 24 | 7934 | 0 | 8000/8000 (160 pages) | — |
| 10/14/2026, 12:30:08 AM | google_sheets | live | full_baseline | success | 2864 | 34 | 43 | 2787 | 0 | — | — |
| 10/14/2026, 12:00:15 AM | crm | live | manual | success | 8000 | 34 | 18 | 7948 | 0 | 8000/8000 (160 pages) | — |
| 10/13/2026, 12:30:09 AM | google_sheets | live | full_baseline | success | 2830 | 8 | 71 | 2751 | 0 | — | — |
| 10/13/2026, 12:00:16 AM | crm | live | manual | success | 8000 | 8 | 29 | 7963 | 0 | 8000/8000 (160 pages) | — |