Organizaciones
Audience
Este artículo es para operadores de la plataforma GCM. Los administradores de iglesia deberían ver Usuarios y roles en su lugar.
La pestaña Organizaciones en Administrador de plataforma -> Organizaciones (/platform/organizations) es la lista maestra de cada espacio de trabajo en la plataforma. Es la página en la que vives durante las llamadas de soporte: buscar por nombre, cambiar un plan en línea, abrir la hoja lateral para ver el personal y los detalles de facturación, o empujar un cambio de plan masivo a través de las diez organizaciones que acabas de mejorar después de una llamada telefónica.

La franja de KPIs
Las cinco fichas en la parte superior reflejan la pestaña Overview para que los números siempre coincidan. Se calculan en el cliente a partir de los datos en caché de organizaciones/planes — sin viaje de ida y vuelta extra:
- Total de orgs — cada fila en
organizations, sin importar el estado. - Activas —
subscription_status = 'active'. - En prueba —
subscription_status = 'trialing'. - Vencidas —
subscription_status = 'past_due'. Se enciende en ámbar cuando es mayor que cero. - MRR — suma de
plans.price_monthly_usdpara cada organización activa. Excluye pruebas y vencidas. Los centavos se convierten a dólares en el momento de la visualización.
Si el MRR se ve mal, el culpable habitual es una fila de plan a la que le falta price_monthly_usd — arregla el plan en Plans & Modules en lugar de tocar las organizaciones.
Buscando y filtrando
La caja de búsqueda realiza un ilike del lado del servidor contra el nombre, slug y dominio personalizado. La paginación usa 25 filas por defecto; los resultados se debouncing 300ms para que escribir rápido no inunde la red.
Haz clic en el botón Filtros para agregar hasta cuatro dimensiones de acotación:
- Plan — starter / growth / network / unlimited.
- Estado — trialing / active / past_due / canceled / paused.
- Creado desde / hasta — rango de fechas contra
created_at.
El chip del filtro se vuelve rojo mientras al menos uno esté activo; haz clic en Limpiar en la barra de filtros para soltarlos todos.
Editando una sola fila
Plan y estado se renderizan como controles SearchableDropdown en línea. Elegir un nuevo valor dispara updateOrgPlan o updateOrgStatus inmediatamente — no hay diálogo de confirmación. La consulta en caché se invalida para que la franja de KPIs se reequilibre en el mismo render.
Cuando cambias un plan el límite de miembros le sigue: starter -> 500, growth -> 2.500, network -> 10.000, unlimited -> 99.999.999 (el centinela de la base de datos para "sin tope"). Si necesitas un límite fuera de lista, usa el diálogo editar-suscripción de operaciones de facturación, que expone memberLimit directamente.
Haz clic en el chevron al final de una fila para abrir la hoja lateral. La hoja extrae una carga de detalle más profunda — pagos recientes, lista de personal, sobrescrituras de módulo, el interruptor "permitir donaciones de gateway de plataforma" por organización, y el botón de eliminar de la zona de peligro.
Creando una organización
El botón Crear org abre un pequeño diálogo. Solo tienes que rellenar el nombre y el correo del administrador; el slug se deriva automáticamente del nombre (First Church -> first-church) y el plan tiene starter por defecto con una prueba de 14 días.
Omitir pago
Activa Omitir pago cuando estés sembrando un espacio de trabajo de prueba o protegiendo a una iglesia socia. Omite el intento de cobro al final de la prueba por completo. Úsalo con moderación — cada pago omitido aparece como una bandera en la conciliación mensual de facturación.
El diálogo llama al helper createOrganization, que provisiona:
- Una fila en
organizationscon el slug y plan elegidos. - Los módulos iniciales para el plan.
- Un correo de invitación a la dirección del administrador.
- Una entrada en
platform_audit_logconaction = 'org_created'.
Acciones masivas
Marca la casilla de verificación en dos o más filas y aparece una barra flotante en la parte superior de la tabla:
- Cambiar plan — aplica un plan a cada fila seleccionada, actualizando cada límite de miembros a medida que avanza.
- Cambiar estado — aplica un estado a cada fila seleccionada. Útil para pausar una cohorte durante una migración.
- Eliminar — abre una confirmación de eliminación dura. El diálogo acepta una cadena de motivo que se registra contra cada eliminación en
platform_audit_log.
Las operaciones masivas se ejecutan secuencialmente, no en una transacción. Un toast al final reporta éxitos y fallos por separado ("Plan actualizado para 8 organización(es) — 2 fallidas"). Las filas fallidas permanecen seleccionadas para que puedas reintentar sin tener que volver a encontrarlas.
Presiona Esc en cualquier momento para limpiar la selección.
Registro de eliminaciones
Debajo de la tabla principal, la tarjeta Registro de eliminaciones lista las últimas eliminaciones duras de platform_organization_deletions. Cada fila muestra el nombre de la organización, slug, conteo de miembros al momento de la eliminación, quién lo hizo y el motivo. Este es el rastro de auditoría para "¿a dónde fue Springfield Bible?" — el borrado lógico no se usa para organizaciones porque la eliminación en cascada necesita liberar el slug para reutilización.
Sin deshacer
Eliminar una organización es irrecuperable. Todos los miembros, asistencia, donaciones, campos personalizados y archivos de almacenamiento de esa organización se eliminan. Si el cliente podría volver, establece el estado a canceled en su lugar — preserva los datos y libera el asiento en los cálculos de MRR.
Cuando las ediciones en línea fallan
La mayoría de los fallos aquí vienen de RLS o violaciones de restricciones:
- "new row violates row-level security policy" — tu cuenta perdió la reclamación
platform_adminosuperadmin. Cierra sesión y vuelve a iniciarla. - "violates check constraint orgs_member_limit_positive" — intentaste establecer un límite por debajo de 1 vía el editor de plan masivo con una fila de plan personalizada. Arregla el plan o usa el diálogo de operaciones de facturación.
- "duplicate key value violates unique constraint organizations_slug_key" — el slug que escribiste en Crear org está tomado. Los slugs son globales; elige uno fresco o verifica el registro de eliminaciones para confirmar que el propietario anterior se haya ido completamente.
Para cualquier otra cosa, abre el registro de errores y filtra por source = vercel_api — ahí es donde las edge functions de crear / eliminar reportan.
