Saltar al contenido principal
Una pregunta (inputs) es un paso del asistente, y un placeholder ({{...}}) es un valor que la plataforma rellena cuando crea la plantilla. Las preguntas recogen lo que solo sabe el usuario; los placeholders conectan los servicios y generan lo que nadie debería escribir.

Preguntas

inputs es una lista ordenada. Cada elemento se convierte en un paso del asistente, mostrado en ese orden. Cómo se comprueba cada tipo: Una pregunta secret se escribe sin eco. Cuando generate está definido y el usuario la deja vacía, la plataforma la genera en el servidor y la muestra una sola vez en las salidas. Un regex está limitado a 200 caracteres y no puede usar referencias hacia atrás, cuantificadores anidados ni una alternancia repetida, porque se ejecuta en el servidor; solo se aplica a los tipos de texto. Pregunta del token, del bot de partida:

Condiciones con when

when es una comprobación de igualdad con una pregunta anterior, sin lenguaje de expresiones. equals debe ajustarse al tipo de esa pregunta: un booleano para boolean, un número para number, uno de los valores de las opciones para select. Una condición sobre una pregunta posterior, sobre sí misma o sobre un id desconocido se rechaza (invalid_when, unknown_input). Una pregunta cuya condición es falsa se omite, y su respuesta no existe.
Un servicio de base de datos o de Blob acepta el mismo when para crearse de forma condicional. Un servicio de app no; usa sets.services.

Opciones y sets

El efecto de una elección vive en la propia opción. sets puede hacer tres cosas. Cuando varias preguntas tocan el mismo servicio o la misma variable, gana la última; la memoria de ram_extra se suma: Una plantilla no puede quedarse sin app: si las opciones elegidas desactivan todas las apps, el despliegue se rechaza. Pon "on" y "off" entre comillas en YAML para que sigan siendo texto. Así ofrece n8n Postgres, SQLite o workers sin ninguna expresión:

Placeholders

Un placeholder se escribe {{ ... }}. La plataforma lo resuelve cuando crea la plantilla y de nuevo cuando cambia un valor gestionado (por ejemplo, tras restablecer la contraseña de una base de datos). Nunca se resuelve en el navegador. Los placeholders funcionan en env (y en sets.env) y en outputs. No funcionan en main, build, start ni healthcheck.path; ahí dan unknown_placeholder. El texto fuera de {{ }} nunca se interpreta, y el valor de un placeholder nunca se vuelve a expandir, así que una respuesta que contenga {{secrets.x}} queda como texto plano.

Apps y el stack

La URL y el nombre del host siguen a la app: la variable cuyo valor es exactamente uno de estos placeholders se actualiza cuando cambia el subdominio o cuando el usuario añade un dominio personalizado. Dentro de un texto más largo (https://{{app.domain}}/x), el valor queda el del despliegue.

Bases de datos

La app llega a la base de datos por su dirección pública, con certificados de cliente. Consulta Stacks. Los valores ssl.*_path son rutas absolutas dentro de la app, en /app/.vertra/certs/<database_id>/ (ca.pem, client.crt, client.key, client.pem, client.p12). La plataforma los escribe en cada arranque, y tu proceso (uid 1000) puede leerlos. prisma_url lleva la contraseña, así que es sensible y solo existe cuando tu manifiesto la pide. Postgres de n8n, con certificados:

Carpetas de Blob

Secretos y respuestas

Servicios desactivados

Un placeholder que apunta a un servicio desactivado por una respuesta se resuelve como un valor vacío, y una variable que acaba vacía no se escribe. Por eso la plantilla de n8n puede listar todas las variables DB_POSTGRESDB_* y aun así funcionar con SQLite.

Variables gestionadas

Una variable cuyo valor es un placeholder de una base de datos, de una carpeta de Blob o de una app está gestionada por el stack: se actualiza sola cuando la base de datos cambia de contraseña o de certificado, o cuando cambia la dirección de la app, y el panel muestra una insignia “gestionada por el stack”. Editarla a mano la convierte en una variable normal.

Qué se rechaza

Consulta Validar y probar para saber cómo corregir cada uno.
Última modificación el 30 de octubre de 2026