Praxsuite

Lógica del Lado del Servidor

Vincent Depassier · 30 de agosto de 2026

La mayoría de los productos que te dejan armar una interfaz te abandonan apenas necesitás que algo pase en un servidor. Las automatizaciones son la respuesta de Praxsuite a eso: son el backend, y no hay servidor que vos tengas que correr, escalar ni parchear.

Esta página trata de usarlas así — como la mitad confiable de tu sistema.

Por qué hace falta un servidor

Un navegador es un lugar hostil para guardar un secreto. Todo lo que tenga tu página lo tiene el visitante: claves, tokens, reglas de negocio, todo. Y todo lo que decida tu página, un visitante puede decidirlo distinto editando el pedido.

Así que la división no es por comodidad, es por confianza:

En el navegador

En el servidor

Mostrar datos que quien llama tiene permitido ver

Guardar credenciales

Recolectar entradas

Decidir si algo está permitido

Llamar a tu propio endpoint

Hablar con una API de terceros que se paga

Todo lo que tenga que pasar exactamente una vez

Una automatización como API HTTP

El trigger Endpoint convierte una automatización en una API que tu app puede llamar. Entra el pedido, corre tu flujo, y un nodo Response define exactamente qué vuelve — código de estado, headers, cuerpo.

Trigger Endpoint ──▶ validar ──▶ hacer el trabajo ──▶ Response (200, { ok: true })

Tres reglas que la plataforma valida, así te enterás al guardar y no en producción:

  • Una automatización con endpoint debe tener un nodo Response.

  • Puede tener exactamente uno. Ni cero, ni dos.

  • Una automatización sin trigger de endpoint no puede tener ninguno.

Esta última sorprende. Un nodo Response no significa nada en un trabajo agendado — no hay nadie esperando una respuesta — así que el validador lo rechaza en vez de dejarlo ahí sin hacer nada.

Compará con el trigger Webhook, que responde al instante y corre después. Usá webhooks para "otro sistema me está avisando que pasó algo". Usá endpoints para "mi app me está haciendo una pregunta y necesita la respuesta".

El nodo Script

Cuando los nodos incorporados no expresan lo que necesitás, el nodo Script corre tu propio código — JavaScript o Python — en un sandbox aislado.

Tamaño del código

Hasta 64 KB

Timeout

De 1 a 30 segundos; 10 por defecto

Entradas

Valores con nombre que vos declarás, resueltos desde el contexto del flujo

Salidas

Validadas contra el esquema de salida que declarás

Consola

Capturada en el log de la corrida

Es una salida de emergencia de verdad, no un juguete: parsear un payload incómodo, calcular algo que el nodo de fórmula no puede expresar, remodelar una respuesta antes de devolverla.

Archivos que entran y salen

Un script puede declarar un blob que se carga antes de correr, que llega como cadena base64 o como objeto con los datos, el content type y el nombre de archivo. Y puede devolver base64 en una clave de salida, que se sube por vos y se reemplaza por el id del archivo guardado, su URL, nombre, content type y tamaño.

Entre las dos cosas, "leé el CSV subido, transformalo, devolveme un XLSX" es un solo nodo.

Tres trampas que cuestan una tarde

Las entradas necesitan sus llaves. Una entrada es una plantilla: {{context.steps.query.rows}}. Un nombre de campo suelto es una cadena literal, y no va a dar error — simplemente va a estar mal.

No parsees lo que ya viene parseado. Las entradas llegan como valores reales. Llamar a JSON.parse sobre una que ya es un objeto lanza una excepción, de una forma que parece falla de la plataforma.

Los nombres de columna pierden los espacios. Las filas de un nodo Query Rows llegan a un script indexadas con guion bajo — Player_Name, no Player Name. Leer el nombre con espacio no devuelve nada, en silencio. El gateway no hace esto; solo muerde dentro de automatizaciones.

Secretos

Las credenciales van en el Vault, no en la configuración de un nodo. Leé un secreto con el nodo Vault y queda disponible para los nodos siguientes; nunca aparece en la definición de la automatización, y no es algo que alguien mirando el flujo pueda leer de la pantalla.

También hay un lado de escritura, para rotar un secreto desde un flujo — la forma honesta de manejar una credencial que vence periódicamente.

Hablar con el mundo exterior

El nodo HTTP Request llama a cualquier endpoint interno o externo y captura la respuesta. Combinado con el Vault, ese es el patrón entero de una integración con terceros: leé la clave, hacé la llamada, usá la respuesta — con la clave sin salir nunca del servidor.

Control de flujo que sobrevive al contacto con la realidad

Nodo

Para

If / Else

Una decisión con camino true y false

Try / Catch

Trabajo que puede fallar, con un camino para la falla y otro que siempre corre

For Each

Iterar una lista de un paso anterior

For Table

Iterar todas las filas de una tabla, con filtros

Delay

Esperar antes de continuar

Fórmula

Aritmética sin bajar a código

Call Automation

Delegar trabajo a otro flujo, sin esperar

Try/Catch es el que la gente adopta demasiado tarde. Una llamada HTTP a la API de otro va a fallar en algún momento — su caída, un timeout, un cambio que no avisaron. Sin camino de catch, la corrida se detiene ahí y lo que venía antes queda a medias.

Call Automation no espera. Inicia el otro flujo y sigue; no aguarda, y no trae un resultado. Cuando necesitás la respuesta, el diseño es otro — el trabajo va en línea, o detrás de un endpoint que llamás.

Mantenerlo rápido

Cada nodo cuesta algo, así que pocos pasos grandes le ganan a muchos chicos. Dos hábitos que se pagan solos:

Filtrá en la consulta, no después. Leer filas y después descartar la mayoría en un script hace igual la parte cara. Además la lectura de filas tiene tope por llamada, así que un filtro suele ser la diferencia entre correcto y truncado en silencio.

No pongas un bucle donde va un filtro. Un For Table sobre todo, con un If adentro, es el mismo trabajo que una consulta filtrada — salvo que corre un nodo por fila.

Siguiente

  • Nodos Trigger — las cinco formas de entrar

  • Nodos de lógica — ramificación, bucles, manejo de errores, Response

  • Corridas y depuración — leer qué pasó realmente

  • API Gateway — la otra mitad: qué pueden hacer los clientes directo