n8n Respond to Webhook: ejercicio de respuestas JSON predecibles
Practica n8n Respond to Webhook con un ejercicio editorial: define respuestas JSON para éxito, datos no válidos y un fallo de procesamiento controlado.

Comprobado con las fuentes citadas el .
Ejercicio editorial: define tu contrato de respuesta
Este ejercicio de n8n Respond to Webhook te propone crear un endpoint POST con respuestas JSON explícitas para tres resultados. Es una tarea editorial basada en capacidades documentadas; la solución propuesta y los resultados esperados no se han ejecutado ni validado.
Necesitas un entorno n8n accesible, permisos para editar workflows y curl 7.82.0 o posterior, que admite --json para enviar solicitudes POST. Usa datos sintéticos y el webhook de prueba durante el desarrollo. La documentación de n8n facilitada carece en su mayoría de fecha y no está vinculada a una versión concreta, así que comprueba los ajustes en tu instalación.
Usa el siguiente contrato de respuesta editorial. Las entradas deben ser objetos JSON sintácticamente válidos; el JSON mal formado, los fallos de autenticación y los fallos de infraestructura quedan fuera de esta tarea.
| Caso | Entrada JSON | Estado | Respuesta JSON |
|---|---|---|---|
| Éxito | {"name":"Ada"} | 200 | {"ok":true,"message":"Hello, Ada"} |
| Entrada no válida | {} | 400 | {"ok":false,"error":{"code":"INVALID_INPUT"}} |
| Fallo controlado | {"name":"Ada","simulateFailure":true} | 500 | {"ok":false,"error":{"code":"PROCESSING_FAILED"}} |
Sources: n8n-docs/docs/integrations/builtin/core-nodes/n8n-nodes-base.webhook/README.md at main · n8n-io/n8n-docs · GitHub, Respond to Webhook | Nodes | n8n Docs, JSON - everything curl
Solución sugerida: valida y después procesa

Configura el método del Webhook como POST y su modo de respuesta como Using 'Respond to Webhook' Node. Conéctalo a un nodo Code de JavaScript. La implementación de Webhook facilitada, correspondiente a la rama master cambiante, expone el contenido de la solicitud en body; esto no está garantizado para todas las versiones instaladas, así que inspecciona la salida de tu Webhook antes de usar esa ruta.
En el nodo Code de validación, usa Run Once for All Items y este JavaScript propuesto: const b = $input.first().json.body; const valid = b !== null && typeof b === 'object' && !Array.isArray(b) && typeof b.name === 'string' && b.name.trim().length > 0; return [{ json: { valid, name: valid ? b.name.trim() : '', simulateFailure: valid && b.simulateFailure === true } }];
Añade un nodo IF que compruebe si valid es true. Dirige false a la respuesta de entrada no válida. Dirige true a un nodo Code de procesamiento, también configurado para ejecutarse una vez para todos los elementos, con este JavaScript propuesto: const d = $input.first().json; if (d.simulateFailure) throw new Error('Exercise failure'); return [{ json: { ok: true, message: 'Hello, ' + d.name } }];
Configura el nodo de procesamiento para continuar usando su salida de error independiente, representada como continueErrorOutput en la referencia facilitada. Conecta su salida normal a la respuesta de éxito y su salida de error a la respuesta de fallo. Esto gestiona el fallo de ese nodo, pero no los tiempos de espera agotados de todo el workflow, las caídas fuera de los nodos ni los fallos en otros puntos sin salidas de error conectadas. Creemos que separar la validación del procesamiento facilita razonar sobre el contrato de respuesta.
Sources: n8n-docs/docs/integrations/builtin/core-nodes/n8n-nodes-base.webhook/README.md at main · n8n-io/n8n-docs · GitHub, n8n/packages/nodes-base/nodes/Webhook/Webhook.node.ts at master · n8n-io/n8n · GitHub, n8n-docs/docs/integrations/builtin/core-nodes/n8n-nodes-base.code/README.md at main · n8n-io/n8n-docs · GitHub, n8n-docs/docs/integrations/builtin/core-nodes/n8n-nodes-base.code/common-issues.md at main · n8n-io/n8n-docs · GitHub, skills/skills/n8n-error-handling-official/references/NODE_ERROR_OUTPUTS.md at main · n8n-io/skills · GitHub
Configura los cuerpos JSON de n8n Respond to Webhook

Crea tres nodos terminales n8n Respond to Webhook. En cada uno, selecciona JSON en Respond With y establece Response Code explícitamente según la fila correspondiente del contrato inicial. La tabla siguiente añade los detalles de configuración del cuerpo; la expresión de éxito lee el elemento JSON actual del nodo de procesamiento.
| Nodo de respuesta | Configuración de Response Body |
|---|---|
| Éxito | Expresión: {{ $json }} |
| Entrada no válida | JSON fijo de la fila de entrada no válida del contrato |
| Fallo controlado | JSON fijo de la fila de fallo controlado del contrato |
Mantén fijo el cuerpo de fallo en lugar de exponer los detalles de la excepción. En nuestra opinión, los clientes deben recibir un contrato público de error estable, mientras que el diagnóstico interno debe formar parte del proceso de depuración del equipo.
Sources: Respond to Webhook | Nodes | n8n Docs
Prueba cada resultado que recibe el cliente

Selecciona Listen for test event antes de enviar una solicitud y vuelve a activar la escucha antes de las solicitudes posteriores cuando sea necesario. En estos comandos propuestos, sustituye TEST_URL por la URL de prueba del nodo. curl --json no valida tu JSON; -i incluye las cabeceras de respuesta junto al cuerpo.
- Envía una entrada de éxito: curl -i --json '{"name":"Ada"}' 'TEST_URL'
- Envía campos no válidos: curl -i --json '{}' 'TEST_URL'
- Envía un fallo controlado: curl -i --json '{"name":"Ada","simulateFailure":true}' 'TEST_URL'
Para cada solicitud, registra el estado HTTP, las cabeceras, el cuerpo JSON y la rama de respuesta ejecutada. Compara los resultados con el contrato de la tarea; inspeccionarlos manualmente no demuestra cobertura automatizada ni la validez del JSON.
Sources: n8n-docs/docs/integrations/builtin/core-nodes/n8n-nodes-base.webhook/workflow-development.md at main · n8n-io/n8n-docs · GitHub, JSON - everything curl, curl - The Art Of Scripting HTTP Requests Using curl
¿n8n Respond to Webhook no funciona? Sigue la rama
Si el cliente recibe algo inesperado, usa esta lista de diagnóstico sugerida. Un workflow que termina sin ejecutar n8n Respond to Webhook devuelve el mensaje estándar de n8n con estado 200; esa respuesta predeterminada incumple el contrato de respuesta explícito de este ejercicio.
El ejercicio se considera completado cuando las tres entradas llegan a los nodos de respuesta previstos y coinciden con los estados y cuerpos requeridos. Como reflexión, explica por qué los campos no válidos y una excepción de procesamiento merecen resultados distintos, y por qué confirmar pronto la recepción de una solicitud no puede garantizar que el procesamiento haya terminado.
Mantén este ejercicio síncrono y breve. n8n Cloud documenta una respuesta 524 cuando un webhook entrante no recibe respuesta en 100 segundos; otras infraestructuras y clientes pueden imponer plazos distintos. Trata ese límite como una frontera, no como un tiempo al que debas acercarte.
Sources: n8n-docs/docs/integrations/builtin/core-nodes/n8n-nodes-base.webhook/README.md at main · n8n-io/n8n-docs · GitHub, n8n-docs/docs/integrations/builtin/core-nodes/n8n-nodes-base.code/common-issues.md at main · n8n-io/n8n-docs · GitHub, skills/skills/n8n-error-handling-official/references/NODE_ERROR_OUTPUTS.md at main · n8n-io/skills · GitHub, n8n-docs/docs/integrations/builtin/core-nodes/n8n-nodes-base.respondtowebhook.md at main · n8n-io/n8n-docs · GitHub, n8n-docs/docs/integrations/builtin/core-nodes/n8n-nodes-base.webhook/common-issues.md at main · n8n-io/n8n-docs · GitHub, n8n-docs/docs/integrations/builtin/core-nodes/n8n-nodes-base.webhook/workflow-development.md at main · n8n-io/n8n-docs · GitHub, Respond to Webhook | Nodes | n8n Docs


