Maintaining original input values when using n8n HTTP requests

I’m having trouble with n8n workflows where my original input data gets wiped out after running HTTP request nodes. The main issue is that I lose important fields like the record ID that I need later for data merging operations.

{
  "outputFormat": ["html"],
  "extractMainContent": false,
  "delayTime": 5000,
  "mobileView": true,
  "ignoreSSL": true,
  "requestTimeout": 45000,
  "region": {
    "code": "EU"
  },
  "adBlocking": false,
  "targetUrl": "{{ $json.company_domain }}",
  "customActions": []
}

For instance, I have a field called customer_id in my input data that disappears after the HTTP node executes. I need this ID to remain available so I can use it in merge operations downstream.

What’s the proper way to ensure input fields persist through HTTP node execution in n8n workflows?

The issue with n8n’s HTTP Request nodes is that they will overwrite your input data with the response by default. To prevent this, first, access the HTTP Request node settings and enable the ‘Keep Only Set’ option to avoid losing your data. Additionally, you can utilize ‘Additional Fields’ to retain critical fields like customer_id alongside your HTTP parameters. Alternatively, you can insert a Code node right after the HTTP Request. This allows you to write a JavaScript function that merges your original input with the HTTP response, giving you greater flexibility in retaining important data. Understanding that n8n views each node as a transformer rather than a collector is crucial to managing your data effectively.

try using a merge node after the HTTP request. have your original data in one branch while running the HTTP in another. this way, original fields stay intact and you’ll get the API response plus customer_id too.

I’ve hit this same issue tons of times. The trick is in the HTTP Request node’s ‘Options’ section. Go to the ‘Response’ tab and check ‘Include Binary Data’ if you need it, but the real fix is the ‘Response Format’ settings. By default, the node just replaces everything with the HTTP response - super annoying.

What works: drop a Function node right after the HTTP Request. Use it to manually merge your original input with the response data. You can grab the previous node’s data and combine it with the API response however you want. Way better than fighting the default behavior.

Had this same nightmare at work for months before I finally dumped n8n.

n8n’s data flow is broken by design. Each node wipes the previous data unless you build crazy workarounds with Set nodes, Function nodes, or merge setups. You spend more time preserving basic fields like customer_id than actually building automation.

Switched to Latenode and the problem vanished. It keeps data persistent naturally - no fighting the platform. Run HTTP requests and your original input data just stays there. No extra nodes, no manual merging, no lost fields.

Your workflow actually works like you’d expect. Customer_id, company_domain, everything stays intact through the whole flow. You focus on business logic instead of platform gymnastics.

Cut my development time by 40% on complex workflows. So much cleaner than n8n’s patch-it-with-workaround-nodes approach.

Had the same problem with my multi-step workflow. The trick is configuring your HTTP Request node properly - it overwrites previous data by default unless you stop it. Drop a Set node right before the HTTP Request and use it to preserve stuff like customer_id. Create new fields in the Set node for these values. After the HTTP Request runs, you’ll have both the API response and your original data, so you can merge everything without losing key identifiers.