Saltar al contenido principal
Las Funciones programadas ejecutan JavaScript aislado según una programación cron. Cada ejecución programada recibe una cohorte actualizada y limitada a la organización, y puede llamar APIs externas o poner en cola cambios controlados en Nexor. Usa una Función programada cuando la lógica deba correr según el reloj y sea más clara en código, por ejemplo para volver a puntuar leads antiguos, sincronizar una cohorte cada noche o distribuir leads sin asignar. Usa una Cloud Function cuando el código deba dispararse por un evento de Nexor.
Guardar código guarda un borrador. La programación sigue ejecutando la versión publicada hasta que eliges Publicar cambios. Probar ejecuta el borrador sin aplicar cambios en leads y sin enviar escrituras. Ejecutar de verdad… y Ejecutar ahora en los registros ejecutan la versión publicada de verdad, después de una confirmación que muestra a cuántos leads afectan.

Crea una función

En el dashboard, los roles Owner, Admin y Partner de la organización pueden crear, editar, probar, publicar, ejecutar, pausar, borrar el historial o eliminar Funciones programadas.
1

Elige un punto de partida

Abre Integraciones → Desarrolladores → Funciones programadas y selecciona Nueva función. Empieza en blanco o elige Re-puntuar leads estancados, Etiquetar inactivos o Repartir sin asignar.
2

Define la programación

Ingresa un nombre, elige una frecuencia, confirma la zona horaria y continúa. Puedes editar la expresión cron y la zona horaria después.
3

Define el alcance de consulta

Selecciona los leads, Agentes de IA y hosts que necesita el código. Limita la consulta de leads y define el máximo que se carga por ejecución.
4

Escribe y guarda el código

Implementa onSchedule(ctx) y agrega variables de entorno para los secretos. Una función nueva empieza en pausa, y su primer guardado es la versión 1. Desde ahí, Guardar (⌘S) deja los cambios de código en un borrador.
5

Prueba, publica y actívala

Revisa la cohorte y elige Probar (⌘↵). Cuando el resultado, los registros, las solicitudes y los efectos previsualizados coincidan con tu intención, elige Publicar cambios y enciende Activa.
Las plantillas iniciales son ejemplos editables, no modos de ejecución. Revisa su consulta, IDs, límites y código antes de activar la función.

Configura la programación

El editor ofrece frecuencias predefinidas de cada 5 minutos, cada 15 minutos, cada hora, cada 4 horas y una vez al día. Selecciona Personalizada para escribir una expresión cron de cinco campos. La zona horaria controla cuándo corren las expresiones basadas en el calendario. Por ejemplo, 0 9 * * * significa las 09:00 en la zona horaria elegida para la función, que no siempre coincide con la del navegador. La vista previa pide al servidor que calcule las próximas ejecuciones para que puedas comprobar ambos valores juntos.
Pausa una función mientras cambias una integración externa o investigas errores. La pausa evita nuevas ejecuciones programadas, pero una ejecución ya iniciada puede terminar.

Selecciona el alcance de consulta

Nexor resuelve el alcance de consulta justo antes de cada ejecución. La función solo recibe datos de la misma organización. La consulta de leads permite filtrar por:
  • leads activos, históricos o todos;
  • Agente y etapa;
  • campaña;
  • usuario asignado o leads sin asignación;
  • búsqueda por nombre, correo o teléfono;
  • una ventana móvil de creación en horas o días; y
  • orden y límite de leads por ejecución.
El lote predeterminado es de 50 leads y puede configurarse entre 1 y 500. Una consulta puede reducirlo aún más. Previsualizar cohorte muestra el total de coincidencias y una muestra, mientras que el límite configurado controla cuántas filas llegan a ctx.leads durante una ejecución. Los Agentes de IA y los hosts humanos son grupos opcionales. Inclúyelos solo si el código lee ctx.agents o ctx.hosts; de lo contrario, esos arreglos están vacíos.

Lee el contexto de ejecución

Cada ejecución programada recibe un objeto ctx con esta estructura: El entorno también incluye env, axios, fetch, console y helpers. helpers.uuid() crea un UUID, helpers.now() devuelve el timestamp actual y helpers.daysAgo(n) devuelve un timestamp relativo a la ejecución.

Escribe efectos controlados

Los efectos se guardan mientras corre el JavaScript. Nexor los aplica después de una ejecución correcta y limita cada cambio a la organización propietaria de la función.
Estos son los efectos disponibles: Si la función genera un error o alcanza el timeout, sus efectos guardados no se aplican. Las llamadas ya realizadas con axios o fetch no se pueden revertir, por lo que las escrituras externas deben ser idempotentes.

Usa variables de entorno

Cloud Functions y Funciones programadas usan las mismas variables de entorno de la organización. Lee un valor como env.NAME y nunca pongas un token directamente en el código de la función. El dashboard oculta los valores guardados: la lista muestra el nombre, no el valor. Crear, reemplazar o eliminar una variable vuelve a desplegar cada Cloud Function y Función programada activa para mantener sus bindings actualizados. Una función en pausa toma el cambio cuando se activa o se ejecuta.
updateEnvironmentVariable(key, value) rota un secreto existente como un efecto real. Su valor se oculta en los detalles guardados de la ejecución, pero el cambio afecta a otras funciones que usan la misma variable.

Guarda un borrador

Guardar código en el editor guarda un borrador. La programación, Ejecutar de verdad… y Ejecutar ahora siguen usando la versión publicada hasta que publicas el borrador.
  • El editor muestra Cambios sin publicar con la hora en que se guardó el borrador, y la lista de funciones muestra el badge Cambios sin publicar.
  • Cada función tiene un borrador, compartido por todas las personas que la editan, la API y Nexor AI. El último guardado lo reemplaza.
  • Solo el código queda en borrador. El nombre, la descripción, la programación, la zona horaria, el alcance de consulta, el límite de leads y Activa se guardan de inmediato.
  • Guardar un código idéntico a la versión publicada no deja borrador.
  • Para eliminar el borrador, abre ⋯ y elige Descartar borrador. La versión publicada sigue activa.
El editor de la Función programada con Cambios sin publicar en el encabezado, y Guardar, Probar y Publicar cambios en el pie.

Prueba sin efectos reales

Elige Probar (⌘↵). Los cambios sin guardar se guardan primero en el borrador. Si no hay borrador, Probar ejecuta la versión publicada. El diálogo Prueba tu borrador ofrece dos tipos de entrada:
  • Cohorte real carga los leads que coinciden ahora con tu alcance de consulta. Cargarlos solo lee datos.
  • Ctx personalizado envía el JSON que ingreses.
La prueba corre en una copia de prueba de la función: Una prueba tiene los mismos límites de tiempo y de solicitudes que una ejecución real. Aparece en los registros con el origen Prueba, pero no cambia el conteo de ejecuciones, la última ejecución ni el resumen de salud. La prueba de un código nuevo puede tardar unos segundos más porque primero se prepara la copia de prueba.
El resultado de una prueba con una solicitud GET enviada, una solicitud POST marcada como Se enviaría y cambios en leads marcados como vista previa, no aplicado.
Lo que una prueba no puede evitar
  • Un GET que cambia algo en el otro sistema, como un enlace para darse de baja o un webhook que se dispara con GET, se ejecuta de verdad durante una prueba.
  • Las escrituras reciben una respuesta simulada {}. El código que lee campos de esa respuesta, como un ID que espera de vuelta, puede tomar un camino distinto al de producción.
  • Solo las solicitudes hechas con fetch o axios aparecen como Se enviaría. Una escritura hecha con globalThis.fetch también se bloquea, pero no aparece en la lista.
  • Una conexión TCP directa abierta con una API de sockets no se retiene.

Publica los cambios

Elige Publicar cambios cuando el borrador esté listo. El diálogo indica qué versión será y muestra la última prueba de este borrador. Avisa si el borrador no se probó o si su última prueba falló, pero no impide publicar.
  • La próxima ejecución usa la versión nueva. Las ejecuciones que ya están en curso terminan con la anterior.
  • Publicar una función en pausa no la activa.
  • Si alguien guardó el borrador después de que abriste el diálogo, te pide revisarlo y publicar de nuevo.
  • Si la versión nueva no se puede desplegar, no se publica nada y tu borrador se conserva. Inténtalo de nuevo en un momento.
El diálogo Publicar cambios explica que producción ejecuta este código desde su próxima ejecución y qué versión será, con el resultado de la última prueba.

Restaura una versión anterior

Cada publicación crea una versión numerada. Abre Historial de versiones en el editor para ver cada versión, quién la publicó y cuándo. Publicada marca la versión activa. API pública marca las versiones publicadas con una clave de API o con Nexor AI, y Antes de las versiones marca el código que tenía la función cuando empezó el historial. Elige Ver para leer el código de una versión y luego Restaurar al borrador para copiarlo en el borrador. Restaurar nunca cambia producción: prueba el borrador y publícalo para volver atrás. Si hay un borrador abierto, Nexor pregunta antes de reemplazarlo. Restaurar la versión activa borra el borrador.
El Historial de versiones con la versión publicada y una versión anterior, cada una con quién la publicó, la fecha y Ver.

Ejecuta de verdad

Ejecutar de verdad… ejecuta ahora la versión publicada y aplica sus efectos. Está en el menú ⋯ del editor, en el menú de la fila de la función y como Ejecutar ahora en los registros.
  1. Nexor cuenta los leads que coinciden con el alcance de consulta. Si no puede contarlos, no se ejecuta nada.
  2. Una confirmación muestra la versión y la cantidad de leads, por ejemplo “Ejecuta la versión 4 ahora sobre 37 leads. Los cambios en leads se aplican y las solicitudes se envían.” Si hay un borrador abierto, agrega que tus cambios sin publicar no se incluyen.
  3. Elige Ejecutar de verdad para iniciarla.
Si la versión publicada no se puede desplegar, no se ejecuta nada y el dashboard muestra “No se ejecutó nada. La versión activa aún no está desplegada.” La entrada personalizada solo está disponible en Probar.
La confirmación de Ejecutar de verdad con la versión y la cantidad de leads que tocará la ejecución.
Para comprobar una escritura real antes de que la función corra en su horario, publica el código con la función en pausa y luego usa Ejecutar de verdad….

Activa una función

Encender Activa pide confirmación. Si hay un borrador abierto, la confirmación indica que la función ejecuta la versión publicada y que tus cambios sin publicar no se incluyen hasta que los publiques. Si la versión publicada no se pudo desplegar, la función muestra Sin desplegar en la lista y un aviso en el editor. Cada ejecución intenta desplegarla otra vez antes de correr y se detiene si vuelve a fallar.

Revisa el historial de ejecuciones

El historial guarda el origen, estado, duración, cantidad de candidatos, efectos aplicados y fallidos, salida de consola, vistas previas de solicitudes HTTP, resultado devuelto y errores. El resumen de salud usa ejecuciones programadas recientes; las manuales y las pruebas siguen visibles, pero no cambian el cálculo de disponibilidad programada. Borrar el historial elimina permanentemente todas las ejecuciones guardadas de esa función. Eliminar una Función programada también borra su historial y sus versiones, y no se puede deshacer.

Usa Nexor AI o el MCP

Nexor AI y los clientes MCP siguen el mismo flujo. update_scheduled_function guarda los cambios de código como borrador y devuelve su draft_hash. test_scheduled_function ejecuta el borrador y lista las llamadas que se enviarían. publish_scheduled_function requiere confirm: true después de que apruebas, y el draft_hash que se probó. discard_scheduled_function_draft, list_scheduled_function_versions, get_scheduled_function_version y restore_scheduled_function_version gestionan el borrador y el historial. run_scheduled_function ejecuta la versión publicada de verdad y requiere confirm: true.

Usa la API pública

Las claves REST pueden usar los endpoints de Funciones programadas. Las claves MCP necesitan workflows:read para lecturas, vistas previas y versiones, y workflows:write para crear, actualizar, guardar borradores, probar, publicar, restaurar, ejecutar, eliminar y borrar el historial. Enviar code al endpoint de actualización sigue publicándolo de inmediato y registra una versión.

Listar Funciones programadas

Lee las funciones disponibles para la organización.

Crear una Función programada

Crea el código, la programación, la zona horaria y la configuración de consulta.

Previsualizar una programación

Valida el cron y la zona horaria contra las próximas ejecuciones.

Previsualizar una cohorte

Cuenta y muestra una muestra de los leads elegidos por una consulta.

Guardar un borrador

Cambia el código sin cambiar lo que ejecuta producción.

Probar una Función programada

Ejecuta el borrador con lecturas enviadas, escrituras retenidas y efectos previsualizados.

Publicar un borrador

Convierte el borrador probado en la versión publicada.

Listar versiones

Lee las versiones publicadas y restaura una en el borrador.

Ejecutar una Función programada

Ejecuta ahora la versión publicada, con efectos reales.

Listar ejecuciones

Revisa el historial de ejecuciones de forma programática.
Última modificación el 6 de octubre de 2026