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.
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.
Access to the Firebase project that hosts Stood (same Firestore instance used by the app)
Firestore in Native mode
A Zapier account
Stood persists entities as Firestore collections. Common collections you may use:
deals
activities
accounts
contacts
posts
teams
users
Notes:
Deal stage codes like s0, s1, … are used in deals.stage. Example: stage: "s0".
Timestamps are Firestore timestamps. Zapier will expose them as strings; convert/format as needed in Zapier steps.
In Zapier, click “Create Zap”.
For the trigger or action app, search for and select Google Cloud Firestore.
Click “Connect a new account”.
Choose your Google account that has access to the Firebase project (or connect via service account if your org requires it).
Select the correct GCP project when prompted.
You’re now ready to read/write documents with Zapier.
New Document in a collection
Updated Document in a collection
Configuration tips:
Set the collection name exactly (e.g., deals).
Use a Zapier Filter step to keep only the events you care about (e.g., only when stage equals s0).
Example Filter for deals at stage s0:
Left: stage
Condition: (Text) Exactly matches
Right: s0
Create Document in a collection
Update Document by document path
Tips:
When creating, let Firestore generate the document ID, or specify your own.
When updating, you need the document path (e.g., deals/{docId}). Often you’ll pass this from a prior trigger step.
Trigger:
App: Google Cloud Firestore
Event: New Document
Collection: deals
Filter:
Keep if stage equals s0
Action:
App: Slack
Event: Send Channel Message
Message template may include: deal name, stage, owner, expected value, etc.
Trigger:
App: Google Cloud Firestore
Event: Updated Document
Collection: deals
Filter:
Only continue if stage equals won (or your project’s won code)
Action:
App: Google Sheets
Event: Create Spreadsheet Row
Map fields like name, ownerId, amount, updatedAt.
Trigger:
App: Google Cloud Firestore
Event: New Document
Collection: activities
Filter:
Keep if status equals pending
Action:
App: Asana / ClickUp / Todoist
Event: Create Task
Include activity title, dueAt, and assignedTo.
Firestore trigger
{
"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" }
]
}Proposify: Create proposal
Firestore: Attach a new post to the deal with proposal link URL
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:
App: Google Cloud Firestore
Event: Find Documents (or similar)
Collection: set to e.g. deals
Structured Query (JSON): paste one of the examples below
{
"from": [{ "collectionId": "deals" }],
"where": {
"fieldFilter": {
"field": { "fieldPath": "stage" },
"op": "EQUAL",
"value": { "stringValue": "s0" }
}
},
"orderBy": [{
"field": { "fieldPath": "__name__" },
"direction": "ASCENDING"
}]
}{
"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
}{
"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" }]
}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:
Use compositeFilter with op: AND to chain multiple fieldFilters.
For numbers use integerValue or doubleValue. For booleans use booleanValue. For timestamps use RFC3339 timestampValue.
Many Zapier steps accept limit, offset/startAt/endAt. Validate what the Firestore step supports; otherwise, fall back to a Webhooks call.
Normalize stage codes to human-readable labels in your Zap.
Guard against missing fields; use defaults in Zapier mappers.
Convert timestamps to your timezone/format before posting to Slack/Email/Sheets.
If no documents appear in triggers, verify the collection name and Firestore project selection.
Ensure your user/service account has Firestore read/write permissions.
For REST calls, check token scopes and that the request body matches the StructuredQuery schema.
Prefer least-privilege service accounts for automations.
Do not expose service account JSON or tokens in shared Zaps.
Consider proxying complex queries through a secured HTTPS Cloud Function tied to your Firebase project.
If you need tailored examples for your specific fields or stages, please contact us.