Zapier Automation (via Firestore)

As Stood resides on standard open database from Firebase, there are numerous options, we selected here Zapier as one of the most broadly used. Please contact us to check on your specific tools.

Zapier ↔ Stood (Firestore) Integration Guide

This guide shows how to connect Zapier to Stood's data in Google Cloud Firestore and build useful automations. Zapier has a native Firestore app, so most use cases require no custom code.

Prerequisites

How Stood stores data

Stood persists entities as Firestore collections. Common collections you may use:

Notes:


1) Connect Zapier to Firestore

  1. In Zapier, click “Create Zap”.

  2. For the trigger or action app, search for and select Google Cloud Firestore.

  3. Click “Connect a new account”.

  4. Choose your Google account that has access to the Firebase project (or connect via service account if your org requires it).

  5. Select the correct GCP project when prompted.

You’re now ready to read/write documents with Zapier.


2) Common Triggers (from Firestore)

Configuration tips:

Example Filter for deals at stage s0:


3) Common Actions (to Firestore)

Tips:


4) Example Automations

A) Notify Slack when a new deal enters stage s0

Trigger:

Filter:

Action:

B) Add a Google Sheets row when a deal is moved to "won"

Trigger:

Filter:

Action:

C) Create a task when a new activity is created and is pending

Trigger:

Filter:

Action:

D) Initiate a proposition with Proposify

{
"from": [{ "collectionId": "deals" }],
"where": {
"compositeFilter": {
"op": "AND",
"filters": [
{
"fieldFilter": {
"field": { "fieldPath": "stage" },
"op": "EQUAL",
"value": { "stringValue": "s2" }
}
},
{
"fieldFilter": {
"field": { "fieldPath": "team" },
"op": "EQUAL",
"value": { "stringValue": "BDaEF3W4kDFrCaIzHNh8" }
}
}
]
}
},
"orderBy": [
{ "field": { "fieldPath": "__name__" }, "direction": "ASCENDING" }
]
}

5) Using StructuredQuery JSON directly in Zapier

Zapier’s Firestore integration supports passing a StructuredQuery (JSON) when finding or listing documents. This is the recommended way to express filters and sort order.

Reference: Firestore StructuredQuery https://cloud.google.com/firestore/docs/reference/rest/v1beta1/StructuredQuery

General steps in a Zap step:

Example 1: Deals where stage equals s0

{
"from": [{ "collectionId": "deals" }],
"where": {
"fieldFilter": {
"field": { "fieldPath": "stage" },
"op": "EQUAL",
"value": { "stringValue": "s0" }
}
},
"orderBy": [{
"field": { "fieldPath": "__name__" },
"direction": "ASCENDING"
}]
}

Example 2: AND multiple conditions (stage s0 AND amount >= 1000)

{
"from": [{ "collectionId": "deals" }],
"where": {
"compositeFilter": {
"op": "AND",
"filters": [
{
"fieldFilter": {
"field": { "fieldPath": "stage" },
"op": "EQUAL",
"value": { "stringValue": "s0" }
}
},
{
"fieldFilter": {
"field": { "fieldPath": "amount" },
"op": "GREATER_THAN_OR_EQUAL",
"value": { "integerValue": "1000" }
}
}
]
}
},
"orderBy": [{ "field": { "fieldPath": "amount" }, "direction": "DESCENDING" }],
"limit": 25
}

Example 3: Date range (updatedAt between two timestamps)

{
"from": [{ "collectionId": "deals" }],
"where": {
"compositeFilter": {
"op": "AND",
"filters": [
{
"fieldFilter": {
"field": { "fieldPath": "updatedAt" },
"op": "GREATER_THAN_OR_EQUAL",
"value": { "timestampValue": "2025-01-01T00:00:00Z" }
}
},
{
"fieldFilter": {
"field": { "fieldPath": "updatedAt" },
"op": "LESS_THAN",
"value": { "timestampValue": "2025-02-01T00:00:00Z" }
}
}
]
}
},
"orderBy": [{ "field": { "fieldPath": "updatedAt" }, "direction": "ASCENDING" }]
}

Example 4: Starts with (prefix) on a sortable string field

Firestore does not have a native "startsWith" operator, but you can emulate prefix search on a field that is consistently cased by using range bounds:

{
"from": [{ "collectionId": "accounts" }],
"where": {
"compositeFilter": {
"op": "AND",
"filters": [
{
"fieldFilter": {
"field": { "fieldPath": "name" },
"op": "GREATER_THAN_OR_EQUAL",
"value": { "stringValue": "Acme" }
}
},
{
"fieldFilter": {
"field": { "fieldPath": "name" },
"op": "LESS_THAN",
"value": { "stringValue": "Acme\uf8ff" }
}
}
]
}
},
"orderBy": [{ "field": { "fieldPath": "name" }, "direction": "ASCENDING" }],
"limit": 50
}

Tips:

Field Mapping Tips


Troubleshooting


Security


If you need tailored examples for your specific fields or stages, please contact us.


Contact - Stood CRM support & integration

Published with Nuclino