Skip to content

HTTP Request Node Fails to Resolve Expressions from Trigger Output (Webhooks, Chat Trigger, etc.) #18181

Description

@jcdiv

Summary:
When an HTTP Request node’s JSON body contains template syntax (e.g., {{$json.body.request}}), n8n sends the literal string instead of the resolved value from the incoming data. The Webhook node receives the correct payload, but the HTTP Request output to the target endpoint shows the template expression unchanged. This happens not just with Webhook triggers but also with the Chat Trigger and likely other trigger nodes. This makes dynamic payload construction impossible in JSON mode.

Describe the problem/error/question

When using the HTTP Request node in n8n with JSON body fields containing template expressions (e.g., {{$json.request}}), the node sends the expression string literally in the outgoing request rather than the evaluated value from the incoming data.

This breaks workflows that rely on dynamic payload construction, because downstream services receive {{$json.request}} instead of the actual data (e.g., "execute the protocol creator protocol...").

What is the error message (if any)?

No error message is shown in the UI. The workflow executes successfully but sends literal template syntax in the outgoing request body instead of the evaluated value.

Please share your workflow

[
  {
    "parameters": {
      "httpMethod": "POST",
      "path": "template-bug-test",
      "responseMode": "onReceived"
    },
    "id": "1",
    "name": "Webhook",
    "type": "n8n-nodes-base.webhook",
    "typeVersion": 1,
    "position": [260, 300]
  },
  {
    "parameters": {
      "method": "POST",
      "url": "https://webhook.site/7bac4602-2665-4603-a782-17128ddf7bb3",
      "sendBody": true,
      "contentType": "json",
      "specifyBody": "json",
      "jsonBody": "{\n  \"context\": {\n    \"request\": \"{{$json.body.request}}\"\n  }\n}"
    },
    "id": "2",
    "name": "HTTP Request",
    "type": "n8n-nodes-base.httpRequest",
    "typeVersion": 4,
    "position": [560, 300]
  }
]

(Replace the webhook.site URL with any echo endpoint to reproduce.)

(Select the nodes on your canvas and use the keyboard shortcuts CMD+C/CTRL+C and CMD+V/CTRL+V to copy and paste the workflow.)
⚠️ WARNING ⚠️ If you have sensitive data in your workflow (like API keys), please remove it before sharing.

{
  "nodes": [
    {
      "parameters": {
        "httpMethod": "POST",
        "path": "template-bug-test",
        "options": {}
      },
      "type": "n8n-nodes-base.webhook",
      "typeVersion": 2.1,
      "position": [
        -544,
        80
      ],
      "id": "8b56aeb0-c009-4fa4-a34e-a45b09ca72f0",
      "name": "Webhook",
      "webhookId": "5f7f2a30-26ad-4709-a955-1648f5978369"
    },
    {
      "parameters": {
        "method": "POST",
        "url": "https://webhook.site/7bac4602-2665-4603-a782-17128ddf7bb3",
        "sendBody": true,
        "specifyBody": "json",
        "jsonBody": "{\n  \"context\": {\n    \"request\": \"{{$json.body.request}}\"\n  }\n}",
        "options": {}
      },
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.2,
      "position": [
        -224,
        80
      ],
      "id": "2c504a7e-bfa5-4af0-a95b-d9f73f61896b",
      "name": "Donna.test"
    }
  ],
  "connections": {
    "Webhook": {
      "main": [
        [
          {
            "node": "Donna.test",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  },
  "pinData": {},
  "meta": {
    "instanceId": "d47083e6474fe647bbc47fb11a0eb3779fd464cf04b44396fdcd5515a48abaa1"
  }
}

Share the output returned by the last node

Actual body received by echo service:

{
  "context": {
    "request": "{{$json.body.request}}"
  }
}

Expected body:

{
  "context": {
    "request": "test message"
  }
}

Debug info

core
• n8nVersion: 1.105.3
• platform: docker (cloud)
• nodeJsVersion: 22.17.0
• database: sqlite
• executionMode: regular
• concurrency: 5
• license: community

storage
• success: all
• error: all
• progress: false
• manual: true
• binaryMode: filesystem

pruning
• enabled: true
• maxAge: 168 hours
• maxCount: 2500 executions

client
• userAgent: mozilla/5.0 (macintosh; intel mac os x 10_15_7) applewebkit/605.1.15 (khtml, like gecko) version/18.5 safari/605.1.15
• isTouchDevice: false

Generated at: 2025-08-09T18:24:52.839Z

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions