IBPV — Comparativa Formularios

Jorge López

Sesión 07/05/2026 — Formularios PC + Cloudflare + Fixes Google Forms

Resumen

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.


URLs de los 3 Formularios

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

Comparativa de los 3 Formularios

Campos y Funcionalidades

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 y Contras

Google Forms + Apps Script

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

Cloudflare Worker (Form Web Custom)

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

Planning Center Forms (Nativo)

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)


Recomendación

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.


Bugs Arreglados en Google Forms (v2.2)

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

Nuevas Features Implementadas

Google Forms (v2.2)

Cloudflare Worker

Planning Center Forms (ID 1223298)


Arquitectura Cloudflare Worker

┌─────────────────────┐         ┌──────────────────────┐         ┌─────────────────┐
│  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


Lecciones Aprendidas

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

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

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

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

  5. Cloudflare Workers + KV — excelente para estado temporal (familias pendientes). Gratis hasta 100K reads/día y 1K writes/día.

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

  7. PC rechaza emails con dominios “test”test.com, example.com dan error 422. Usar dominios reales (gmail.com) para pruebas.

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


Pendientes


Sesión: 07 Mayo 2026, 16:33 - 19:38 (3 horas) Autor: Jorge López con asistencia de Kiro AI