Help request

Hi,

I’m using n8n v2.7.4 with the Google Firebase Firestore node v1.1.

My problem: I want to create a document in Firestore from a JSON object, but the node does not save the fields properly. Instead of separate fields, everything gets merged into one key and all values are null.

Unlike Zapier, the n8n node doesn’t give me a proper table to fill fields. I tried:

  • Comma-separated key=value in Columns / Attributes

  • Multi-line input

  • {{$json}}

…but the result is always null values or errors like columns.split is not a function.

I want to create Firestore documents dynamically from JSON with all fields correctly saved. Has anyone solved this in n8n v2.7.4 Cloud?

The current result in Firebase:
ResponseID=68qbE1Ynull

(null)

Turnover=<1Mnull

(null)

company=Company Testnull

(null)

createdAt=2026-02-12T13:28:06.000Znull

(null)

[email protected]null

(null)

firstName=Alexnull

(null)

isConfirmed=falsenull

(null)

jobTitle=CEOnull

(null)

lastName=Alexnull

(null)

phone=+7777777777null

hello @Alex_Schtelbe

I’m not familiar with Firestore, but from the node perspective, it seems, that you will need to specify the comma-separated list of column names, where in the input you have them as keys.
E.g.

Kinda. When I try to input into the columns the 10 lines above, it gave me the wrong result.

ResponseID={{ $json.ResponseID }}, 
firstName={{ $json.firstName }}, 
isConfirmed={{ $json.isConfirmed }}, 
Turnover={{ $json.Turnover }}, 
company={{ $json.company }}, 
createdAt={{ $json.createdAt }}, 
email={{ $json.email }}, 
jobTitle={{ $json.jobTitle }}, 
lastName={{ $json.lastName }}, 
phone={{ $json.phone }}


//The result received: (with nulls)

[
  
{
  
  
"name": 
"projects/zenis-whatdigital/databases/(default)/documents/tallyResponses/KKUScTeaX7iohyG7HzjG",
  
  
"fields": 
{
  
  
  
"firstName=Alex": 
{
  
  
  
  
"nullValue": 
null
  
  
  
},
  
  
  
"phone=+123456789": 
{
  
  
  
  
"nullValue": 
null
  
  
  
},
  
  
  
"jobTitle=CEO": 
{
  
  
  
  
"nullValue": 
null
  
  
  
},
  
  
  
"createdAt=2026-02-12T13:28:06.000Z": 
{
  
  
  
  
"nullValue": 
null
  
  
  
},
  
  
  
"lastName=Alex": 
{
  
  
  
  
"nullValue": 
null
  
  
  
},
  
  
  
"company=test": 
{
  
  
  
  
"nullValue": 
null
  
  
  
},
  
  
  
"Turnover=<1M": 
{
  
  
  
  
"nullValue": 
null
  
  
  
},
  
  
  
"ResponseID=68qbE1Y": 
{
  
  
  
  
"nullValue": 
null
  
  
  
},
  
  
  
"[email protected]": 
{
  
  
  
  
"nullValue": 
null
  
  
  
},
  
  
  
"isConfirmed=false": 
{
  
  
  
  
"nullValue": 
null
  
  
  
}
  
  
},
  
  
"createTime": 
"2026-02-12T16:05:18.711009Z",
  
  
"updateTime": 
"2026-02-12T16:05:18.711009Z",
  
  
"id": 
"KKUScTeaX7iohyG7HzjG"
  
}
]

Then I made several experiments with different formats, but not a single of them provided normal expected result for Firebase (see pic below).

You don’t need to specify values. only field names. like this

Columns will be populated automatically from the input.

If you still have any issuees, share the workflow.

You can select all nodes with Ctrl+A and copy them with Ctrl+C. Then, past the content after pressing the button </> with Ctrl+V.

I still need help, as I don’t have these fields to fill.

Below is example from Zappier, where I understand the logic

@Alex_Schtelbe It was resolved, right?

this one is correct

But it does not work.
It provides this:


[
  
{
  
  
"name": 
"projects/XXXX/databases/(default)/documents/tallyResponses/777",
  
  
"fields": 
{
  
  
  
"Turnover": 
{
  
  
  
  
"nullValue": 
null
  
  
  
},
  
  
  
"isConfirmed": 
{
  
  
  
  
"nullValue": 
null
  
  
  
},
  
  
  
"company": 
{
  
  
  
  
"nullValue": 
null
  
  
  
},
  
  
  
"ResponseID": 
{
  
  
  
  
"nullValue": 
null
  
  
  
},
  
  
  
"lastName": 
{
  
  
  
  
"nullValue": 
null
  
  
  
},
  
  
  
"email": 
{
  
  
  
  
"nullValue": 
null
  
  
  
},
  
  
  
"jobTitle": 
{
  
  
  
  
"nullValue": 
null
  
  
  
},
  
  
  
"createdAt": 
{
  
  
  
  
"timestampValue": 
"2026-02-12T13:28:06Z"
  
  
  
},
  
  
  
"phone": 
{
  
  
  
  
"nullValue": 
null
  
  
  
},
  
  
  
"firstName": 
{
  
  
  
  
"nullValue": 
null
  
  
  
}
  
  
},
  
  
"createTime": 
"2026-02-13T08:54:31.491239Z",
  
  
"updateTime": 
"2026-02-13T08:54:31.491239Z",
  
  
"id": 
"777"
  
}
]

and if I put
ResponseID {{ $json.id }},
…..

It still generates that “null”
ResponseID 68qbE1Ynull

Hello @Alex_Schtelbe ,
try this :
In the Columns field, simply list the exact names of the keys you want to keep, separated by commas. Do not add values or equal signs.

Copy and paste this exactly: ResponseID, firstName, isConfirmed, Turnover, company, createdAt, email, jobTitle, lastName, phone

If you just want to send everything that comes from Tally into Firebase without typing names manually:

  1. Click the Expression icon .
  2. Paste this :
    {{ Object.keys($json).join(',') }}

This will automatically grabs every key from your input and sends it.

Puttin “ResponseID, firstName, isConfirmed, Turnover, company, createdAt, email, jobTitle, lastName, phone” => does not really work.

Putting “{{ Object.keys($json).join(‘,’) }}” is a bit closer to the desired result, yet generates lots of unnecessary field:

Basically, it ads all the fields, that I have in my questionnaire (including questions)

My desired result expectations:

Is it possible to get it this way?

try inserting an Edit Fields node between your Tally Trigger and the Firestore node. Create the clean fields you want on the left, and drag the specific values you need from the Tally output on the right.

Still does not work:

You are incredibly close—your “Edit Fields” node is successfully generating the clean JSON , but the Firestore node is failing because the Columns field strictly expects a list of key names, not their values. By entering expressions like {{ $json.Name }} in that field, you are effectively asking n8n to find a key literally named “Alex,” which does not exist, resulting in null values.

To fix this replace the entire content of the Columns / Attributes field with the expression {{ Object.keys($json).join(',') }}; this will automatically grab all your clean keys (id, Name, Surname, email...) and map them correctly to their values, resolving the error instantly.

1 Like

YES!!! Thank you very much!
This finally solved my problem.

Thanks a lot!

1 Like

This topic was automatically closed 7 days after the last reply. New replies are no longer allowed.