Se evaluaron 3 opciones de formulario para el registro de membresía IBPV. Se creó un form nativo en Planning Center, se desarrolló un formulario web custom en Cloudflare Workers, y se arreglaron bugs del Google Forms actual. Las 3 opciones están operativas.
| Formulario | URL | Estado |
|---|---|---|
| Google Forms (producción actual) | Abrir formulario | ✅ Operativo |
| Cloudflare Worker (form web custom) | Abrir formulario | ✅ Operativo |
| Planning Center Forms (nativo) | Abrir formulario | ✅ Operativo |
| Feature | Google Forms | Cloudflare Worker | PC Forms Nativo |
|---|---|---|---|
| Nombres / Apellidos | ✅ | ✅ | ✅ |
| Fecha nacimiento | ✅ | ✅ | ✅ |
| Género | ✅ | ✅ | ✅ |
| Estado civil | ✅ | ✅ | ✅ |
| Fecha aniversario | ✅ | ✅ | ✅ |
| ¿Es menor? → ocultar campos | ❌ (manual) | ✅ (auto <18) | ❌ |
| Correo electrónico | ✅ | ✅ | ✅ |
| Teléfono normalizado | ✅ | ✅ | ❌ |
| Dirección | ✅ | ✅ | ✅ |
| Regiones de Chile | ✅ (16) | ✅ (16 + comunas) | ❌ (texto libre) |
| Comunas por región | ❌ (solo Los Lagos) | ✅ (todas) | ❌ |
| Familia dropdown dinámico | ✅ (PC + pendientes) | ✅ (PC) | ⚠️ (household members) |
| “Vengo solo/a” | ✅ | ✅ | ❌ |
| “Familia nueva” + auto-crear | ✅ (al 2do miembro) | ✅ (al 2do miembro) | ❌ |
| Roles household automáticos | ✅ | ✅ | ❌ |
| Primary contact automático | ✅ | ✅ | ❌ |
| Relación con la iglesia | ✅ → membership | ✅ → membership | ⚠️ (texto libre) |
| ¿Bautizado? → fecha condicional | ✅ | ✅ | ❌ |
| Fecha bautismo | ✅ | ✅ | ✅ |
| Ministerios (checkboxes) | ✅ | ✅ | ✅ (custom field) |
| Desde cuándo asiste | ✅ | ✅ | ✅ |
| Notas médicas | ✅ | ✅ | ⚠️ (texto libre) |
| Foto de perfil | ❌ (sacado) | ✅ | ✅ |
| Detección duplicados | ✅ | ✅ | ❌ |
| Normalización datos | ✅ | ✅ | ❌ |
| No requiere cuenta Google | ❌ | ✅ | ✅ |
| Datos directo a PC | ❌ (via script) | ✅ | ✅ |
| Custom domain posible | ❌ | ✅ (formulario.ibpv.cl) | ❌ (churchcenter.com) |
| Idioma 100% español | ✅ | ✅ | ⚠️ (“Your name”) |
Pros: - Ya está en producción y probado - Pablo ya lo conoce - Gratis (Google Workspace IBPV) - Respuestas quedan en Sheets (backup) - Fácil de editar campos desde la UI de Google
Contras: - Requiere cuenta Google para subir fotos - No tiene condicionales reales (menor → ocultar campos) - Comunas solo de Los Lagos (no dinámicas por región) - Depende de Apps Script (puede fallar silenciosamente) - Estética limitada (look de Google Forms) - El trigger puede tardar hasta 30s
Pros: - Control total de UX (condicionales, dropdowns dinámicos, normalización) - Datos van directo a PC (sin intermediarios) - Auto-crea households al 2do miembro - Todas las regiones + comunas de Chile - Foto de perfil con upload directo - Custom domain posible (formulario.ibpv.cl) - No requiere cuenta Google - Gratis (100K requests/día) - Rápido (edge computing)
Contras: - Requiere cuenta Cloudflare (kokodrilo.cl) - No tiene backup en Sheets (solo PC) - Si se cae Cloudflare, no funciona - Requiere mantenimiento técnico (Jorge) - No tiene la familiaridad de Google Forms para Pablo
Pros: - Datos van directo al perfil de PC (cero código) - Foto de perfil nativa - QR y URL pública incluidos - Church Center app (mobile) - Cero mantenimiento - Verificación de identidad integrada
Contras: - No tiene condicionales - No tiene normalización de datos - No tiene dropdown de familias dinámico - No puede setear membership desde el form - Campos en inglés (“Your name”) - No puede crear households automáticamente - Comunas como texto libre (sin dropdown) - Ministerios como texto libre (no checkboxes)
| Escenario | Formulario recomendado |
|---|---|
| Producción inmediata (lo que Pablo ya conoce) | Google Forms |
| Mejor experiencia de usuario (largo plazo) | Cloudflare Worker |
| Mínimo mantenimiento (si Jorge no está disponible) | PC Forms Nativo |
| Visitantes nuevos (registro rápido básico) | PC Forms Nativo |
| Registro completo de membresía | Cloudflare Worker o Google Forms |
Decisión de Pablo (07/05): Seguir con Google Forms por ahora, evaluar Cloudflare después.
| Bug | Causa | Fix |
|---|---|---|
| Ministerios no se guardaban | namedValues no traía checkboxes correctamente |
Fallback: leer directamente del Sheets |
| Fecha Ingreso no se guardaba | getDate("asiste a IBPV") no matcheaba con “¿Desde
cuándo asiste a la IBPV?” |
Agregar “ingreso” al filtro de fechas + fallbacks |
| Familia pendiente no aparecía | Matching de columna “Apellido de nueva familia” era exacto | Matching flexible con múltiples variantes |
findPendingFamilyMembers)┌─────────────────────┐ ┌──────────────────────┐ ┌─────────────────┐
│ Form Web (HTML/JS) │ ──POST──▶ Cloudflare Worker │ ──API──▶ Planning Center │
│ Static Assets │ │ (token PC seguro) │ │ People API │
│ │◀──GET───│ KV (familias pend.) │◀────────│ │
└─────────────────────┘ └──────────────────────┘ └─────────────────┘
Proyecto: ~/Development/ibpv-registro/
Cuenta CF: [email protected]
Worker: ibpv-registro KV Namespace:
FAMILIAS (fac4becb3b474b64af38176ef89a0b10)
Endpoints: - GET / → Formulario HTML -
GET /admin.html → Panel admin familias pendientes -
GET /api/households → Lista familias de PC -
POST /api/register → Registrar persona (con foto opcional)
- GET /api/pending-families → Familias pendientes -
POST /api/auto-create-family → Crear household en PC -
POST /api/resolve-family → Resolver familia manual
Deploy:
cd ~/Development/ibpv-registro && npx wrangler deploy
PC API SÍ puede crear households — requiere al
menos 1 miembro en relationships.people. Documentación de
PC dice que no se puede, pero sí funciona.
Google Forms checkboxes en namedValues — llegan
como un solo string separado por comas
("Alabanza, Recepción"). Pero via POST directo pueden no
llegar correctamente al trigger. Solución: leer del Sheets como
fallback.
PC Forms no soporta dropdowns con opciones via
API — el field_type: "dropdown" requiere
options pero no se pueden asignar en el POST. Solo se
pueden crear desde la UI.
PC Forms field labels en inglés — “Your name”, “Email” no se pueden cambiar por form. Es configuración de idioma de la organización.
Cloudflare Workers + KV — excelente para estado temporal (familias pendientes). Gratis hasta 100K reads/día y 1K writes/día.
Auto-crear household timing — en Google Forms, si los miembros se registran muy rápido (< 10s entre cada uno), el trigger del 2do puede no encontrar al 1ro en PC aún. En Cloudflare no hay este problema porque es síncrono.
PC rechaza emails con dominios “test” —
test.com, example.com dan error 422. Usar
dominios reales (gmail.com) para pruebas.
Custom domain para CF Worker — solo necesita un CNAME en el DNS de ibpv.cl apuntando al worker. Pendiente: averiguar dónde está el DNS de ibpv.cl.
Sesión: 07 Mayo 2026, 16:33 - 19:38 (3 horas) Autor: Jorge López con asistencia de Kiro AI