Los flujos de trabajo de servidor son tu backend: endpoints de API, manejadores de webhooks, tareas programadas y reacciones a cambios en los datos. Usan el mismo editor visual y el mismo modelo de pasos que los flujos de trabajo de cliente, pero se ejecutan en el edge de Cloudflare, pueden usar secretos, escribir en tablas y enviar emails.
Disparadores
Construir uno
En el espacio de trabajo Logic, cambia a los flujos de trabajo de servidor y crea uno. Elige un disparador y agrega pasos. Adentro, input, user y steps están en el ámbito. Return termina la ejecución; en los endpoints, su valor es el cuerpo de la respuesta.
{
"name": "Create order",
"runtime": "server",
"trigger": { "type": "http", "method": "POST", "path": "/orders", "auth": "user" },
"input": { "schema": { "items": "array", "couponCode": "string?" } },
"steps": [
{ "id": "order", "action": "core.tableInsert",
"params": { "table": "orders", "values": { "userId": { "$expr": "user.id" }, "items": { "$expr": "input.items" } } } },
{ "id": "mail", "action": "core.sendEmail",
"params": { "to": { "$expr": "user.email" }, "subject": "Order received", "text": "Thanks!" } },
{ "id": "done", "action": "core.return", "params": { "value": { "$expr": "{ orderId: steps.order.id }" } } }
]
}
Una vez publicado, el endpoint queda activo en todos los dominios del entorno:
curl -X POST https://shop.example.com/api/orders \
-H 'content-type: application/json' \
-d '{ "items": [{ "sku": "mug", "qty": 2 }] }'
Autenticación de endpoints
public: cualquiera puede llamarlo. Los endpoints públicos tienen límite de frecuencia.user: solo visitantes con sesión iniciada;useres quien hace la llamada.apiKey: reservado para llamadas de servidor a servidor (todavía no disponible).
Llamarlo desde una página
Los pasos de integración (OpenAI, Stripe, Resend…) necesitan tus claves secretas, así que solo se ejecutan en flujos de trabajo de servidor. Para usar uno desde un botón o un formulario:
- Crea un flujo de trabajo de servidor con el disparador Called from pages. Elige quién puede llamarlo: cualquiera, o solo visitantes con sesión iniciada.
- Añade el paso de la integración. Lee lo que envía la página desde
inputy termina con Return. - En el flujo de trabajo de cliente, añade Run server workflow y elígelo. Su entrada se convierte en
input; el valor devuelto queda ensteps.<id>.
Run in preview ejecuta el borrador con tu cuenta. Las páginas publicadas ejecutan la versión publicada. Un paso de plugin que quede en un flujo de trabajo de cliente muestra Move to a server workflow, que hace estos pasos por ti.
Ejecuciones de prueba e historial
Presiona Test run con una entrada de ejemplo. Los pasos llegan en vivo al panel de ejecución, con cada resultado y su duración. Las ejecuciones de prueba usan el borrador; las ejecuciones publicadas usan la versión que se publicó, así que las ejecuciones en curso nunca ven tus ediciones. Cada ejecución se guarda en el historial con su estado: running, waiting, succeeded o failed.
Flujos de trabajo de larga duración
Agrega Sleep (de minutos a días) o Wait for event y el flujo de trabajo se vuelve durable automáticamente. Las ejecuciones durables sobreviven a reinicios, reintentan los pasos fallidos con espera progresiva y pueden esperar un enlace de aprobación o una confirmación de pago. Reanuda una ejecución en espera con Emit event desde otro flujo de trabajo. Un endpoint que inicia una ejecución durable responde de inmediato con su runId.
Pasos solo de servidor
- HTTP request: llama a cualquier API HTTPS; las direcciones privadas están bloqueadas, tiempo de espera de 15 s, límite de 1 MB.
- Send email: un email transaccional con texto o HTML.
- Query, get, insert, update, delete row: trabaja con tablas nativas.
- Set visitor roles: otorga o quita roles a un visitante registrado.
- Run JavaScript: código aislado con
inputystepsen el ámbito, sin red y sin secretos. - Run operation: llama a una operación de una integración con sus secretos. Para usarla desde una página, consulta Llamarlo desde una página.
- Run server workflow, Return, Sleep, Wait for event, Emit event.
Cada paso puede definir reintentos (hasta 5) con una espera constante, lineal o exponencial.
Límites
El plan de tu sitio define las ejecuciones por mes y los pasos por ejecución; consulta Planes. Las ejecuciones en línea se detienen después de 30 segundos. Los eventos de tabla que disparan flujos de trabajo que escriben en tablas se detienen después de tres niveles, así un flujo de trabajo no puede entrar en un bucle consigo mismo.