Reference · Tools
Google Firebase Realtime Database
Create, delete, get, push, and update records in a Google Firebase Realtime Database.
The Google Firebase Realtime Database node lets you create, read, update, delete, and push records to any path in your RTDB instance directly from a workflow. You could use it to log incoming webhook events as timestamped entries under a /logs path, or sync order data from an e-commerce trigger into a live database your mobile app reads in real time.
- Node type
- Action
- Parameters
- 11
- Outputs
- Output, Error
- Credentials
- Google Firebase Realtime Database OAuth2
Google Firebase Realtime Database
Create, get, update, delete, and push records in Google Firebase Realtime Database.
Overview
Interacts with the Firebase Realtime Database REST API. Create (PUT) overwrites a path with data built from selected item fields; Delete (DELETE) removes a path and returns { success: true }; Get (GET) retrieves the data at a path (a null response raises “Requested entity was not found”); Push (POST) appends to a list at a path with an auto-generated key; Update (PATCH) merges partial data into a path.
The database URL is built as https://{projectId}.{region}/{path}.json, so the Project ID you enter is the database instance subdomain and the Region is the host suffix. Non-object scalar responses are wrapped as { [path]: value } so they always arrive as JSON.
Category: Data & Storage
Tool Name: google_firebase_realtime_database
Version: 1
Appearance: Icon: lucide-Database | Color: #FFA000
Node Type
Action — processes input items and produces output
Input / Output
| Direction | Port(s) |
|---|---|
| Input | Input |
| Output | Output, Error |
Credentials
This tool requires Google Firebase Realtime Database OAuth2 credentials. See the Credentials Guide for setup instructions.
Operations
| Operation | Value | Description |
|---|---|---|
| Create | create | Write data to a database path (PUT — overwrites existing data). |
| Delete | delete | Delete data from a database path. |
| Get | get | Get a record from a database path. |
| Push | push | Append to a list of data with an auto-generated key. |
| Update | update | Update (merge) data at a database path. |
Parameters
Create (create)
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| Object Path | string | Yes | — | Object path in the database. Do not include a leading slash or .json suffix. Example: “users/user1”. Supports expressions like {{ $json.userId }}. |
| Columns / Attributes | string | Yes | — | Comma-separated list of field names to pick from the input item’s JSON and send as the request body. |
Delete (delete)
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| Object Path | string | Yes | — | Object path in the database. Do not include a leading slash or .json suffix. Example: “users/user1”. Supports expressions like {{ $json.userId }}. |
Get (get)
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| Object Path | string | No | — | Object path in the database. Do not include a leading slash or .json suffix. Leave blank to return the entire database. Supports expressions. |
Push (push)
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| Object Path | string | Yes | — | Object path in the database. Do not include a leading slash or .json suffix. Example: “users/user1”. Supports expressions like {{ $json.roomId }}. |
| Columns / Attributes | string | Yes | — | Comma-separated list of field names to pick from the input item’s JSON and send as the request body. |
Update (update)
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| Object Path | string | Yes | — | Object path in the database. Do not include a leading slash or .json suffix. Example: “users/user1”. Supports expressions like {{ $json.userId }}. |
| Columns / Attributes | string | Yes | — | Comma-separated list of field names to pick from the input item’s JSON and send as the request body. |
All Operations
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| Authentication | options | No | oAuth2 | Authentication method to use. |
Options: oAuth2, serviceAccount | ||||
| Google Account | credential | No | — | Connect or select your Google account. (shown when Authentication is oAuth2) |
| Service Account Email | string | Yes | — | The email address of the Google service account. (shown when Authentication is serviceAccount) |
| Private Key | string | Yes | — | The private key from the service account JSON key file. (shown when Authentication is serviceAccount) |
| Project ID | string | Yes | — | The Realtime Database instance name. This is the subdomain of your database URL (e.g. “my-app-default-rtdb” from “my-app-default-rtdb.firebaseio.com”), NOT the Firebase project ID. |
| Region | options | No | firebaseio.com | The region/host suffix for the Firebase Realtime Database URL. |
Options: firebaseio.com (default region), europe-west1.firebasedatabase.app, asia-southeast1.firebasedatabase.app | ||||
| Max Concurrency | number | No | 5 | Maximum number of items to process concurrently. |
Output Data
Each input item produces exactly one output item. The data returned by the Firebase REST API is merged into the top level of the item’s JSON, so the incoming fields stay available alongside the response.
| Operation | What is merged onto the item |
|---|---|
create | The object written to the path. |
delete | success: true. |
get | The data stored at the path. A scalar value (string or number) is wrapped as { "<path>": value }; an empty path returns the whole database. |
push | name — the auto-generated key Firebase assigned to the new list entry. |
update | The merged object returned for the path. |
A get against a path that holds no data raises “Requested entity was not found” rather than returning an empty item, so it can be routed through the Error port.
Usage Examples
- Write a new user record to Firebase Realtime Database
- Get data from a Firebase database path
- Push a new message to a Firebase list with an auto-generated key
- Update specific fields of a Firebase database record
- Delete a node from a Firebase Realtime Database path
- Store sensor readings in a Firebase time-series list
- Read the entire database root object
Example Configuration
Write a user record, overwriting anything already at that path:
{
"type": "google_firebase_realtime_database",
"parameters": {
"operation": "create",
"projectId": "my-app-default-rtdb",
"region": "firebaseio.com",
"path": "users/{{ $json.userId }}",
"attributes": "name,email,role,createdAt"
}
}
Read one record back:
{
"type": "google_firebase_realtime_database",
"parameters": {
"operation": "get",
"projectId": "my-app-default-rtdb",
"region": "firebaseio.com",
"path": "users/{{ $json.userId }}"
}
}
Append a chat message to a list and let Firebase generate the key:
{
"type": "google_firebase_realtime_database",
"parameters": {
"operation": "push",
"projectId": "messaging-app-rtdb",
"region": "firebaseio.com",
"path": "chatrooms/{{ $json.roomId }}/messages",
"attributes": "text,userId,timestamp",
"maxConcurrency": 10
}
}
Merge a status change into an existing record without replacing it:
{
"type": "google_firebase_realtime_database",
"parameters": {
"operation": "update",
"projectId": "status-tracker-rtdb",
"region": "firebaseio.com",
"path": "users/{{ $json.userId }}/status",
"attributes": "isOnline,lastSeen"
}
}
Delete a node from a European database instance:
{
"type": "google_firebase_realtime_database",
"parameters": {
"operation": "delete",
"projectId": "my-eu-app-default-rtdb",
"region": "europe-west1.firebasedatabase.app",
"path": "products/{{ $json.productId }}"
}
}
Error Handling
| Mode | Behavior |
|---|---|
| stop | Halts workflow on first error |
| continue | Skips failed items, passes successful ones through |
| errorPort | Routes failed items to Error output port |
Tips
Read, write, update, delete, and push records in Google Firebase Realtime Database using the REST API.
- Project ID is the database subdomain, not the Firebase project. Take the first label of your database URL —
my-app-default-rtdbfromhttps://my-app-default-rtdb.firebaseio.com. - Region must match the database. Databases created outside the United States use
europe-west1.firebasedatabase.apporasia-southeast1.firebasedatabase.app; using the wrong suffix points at a host that does not exist. - Columns / Attributes filters the request body. Only the named fields are read off the input item and sent, so upstream metadata does not leak into the database. A field that is missing from the item is simply omitted.
- Create replaces, Update merges. Use Create when the path should end up exactly as described, Update when you only want to change a few keys.
- Push returns the generated key as
name— capture it downstream if you need to address the new entry later.
Frequently asked questions
What is the Project ID field, and where do I find it?
The Project ID here is your database instance subdomain, not your Firebase console project name. Look at your database URL — if it reads `https://my-app-default-rtdb.firebaseio.com`, the Project ID to enter is `my-app-default-rtdb`. Using the full URL or your Firebase project ID will cause the request to fail.
My database is hosted in Europe or Asia — does that matter?
Yes, and getting this wrong points requests at a host that does not exist. Databases outside the United States use a region-specific suffix: `europe-west1.firebasedatabase.app` or `asia-southeast1.firebasedatabase.app`. The node builds the URL as `https://{projectId}.{region}/{path}.json`, so the Region field must match the actual host your database was created on.
What is the difference between Create and Update?
Create issues a PUT request, which completely overwrites the data at the given path with whatever fields you send. Update issues a PATCH, which merges your fields into the existing data without touching keys you did not include. Use Create when the path should contain exactly what you specify; use Update when you only need to change a few fields on a record that already exists.
When I use Push, how do I get the new record's key for later steps?
Push appends data to a list at the path you specify and Firebase assigns an auto-generated key. The node returns that key in a field called `name` in the output. Capture it in a downstream step if you need to read, update, or delete that specific entry later.
What does the Columns / Attributes parameter do, and why does it matter?
It controls which fields from the upstream item are included in the request body sent to Firebase. Only the field names you list are read off the input item — anything else, including internal workflow metadata, is left out. If a listed field is missing from the item it is simply omitted rather than causing an error, so this filter also acts as a safe way to send a consistent subset of data regardless of what else is on the item.
Build with the Google Firebase Realtime Database node
Drop it into a workflow, wire it to an agent, or call it on a schedule. You'll need Google Firebase Realtime Database OAuth2 credentials first.
Open BusyBotLast updated . Spotted something wrong? Tell us.