Find Record

The Find Record nodes query your connected database and return matching records. There are two variants:

NodeTypeDescription
Find OneFIND_ONEReturns the first matching record. Use when you expect a single result (e.g., look up a user by email).
Find AllFIND_ALLReturns all matching records as an array. Use when you need multiple results (e.g., all orders from today).
Find Record config
Find Record: query your database with filters

Find One: Configuration

FieldTypeRequiredDescription
ConnectionSelectYesDatabase connection (PostgreSQL, MySQL, or TinyTable)
TableSelectYesWhich table to query
FilterCondition builderYesAt least one filter condition to identify the record

Filter conditions

OperatorExampleDescription
equalsemail equals {{trigger.body.email}}Exact match
not equalsstatus not equals archivedExclusion
containsname contains {{trigger.body.search}}Partial text match
greater thanscore greater than 80Numeric comparison
less thancreated_at less than {{YESTERDAY()}}Date comparison
is emptydeleted_at is emptyNull check
is not emptyemail is not emptyNot null check

Output variables (Find One)

{{find_one.record}}              → the matched record object
{{find_one.record.id}}           → record ID
{{find_one.record.email}}        → any field value
{{find_one.record.created_at}}   → timestamp field
{{find_one.found}}               → boolean: true if a record was found

Find All: Configuration

Find All has the same filter options plus additional controls:

FieldTypeRequiredDescription
ConnectionSelectYesDatabase connection
TableSelectYesWhich table to query
FilterCondition builderNoFilter conditions (omit to get all records)
Sort bySelectNoField to sort results by
Sort orderSelectNoASC (ascending) or DESC (descending)
LimitNumberNoMax records to return. Default: 100
OffsetNumberNoSkip N records (for pagination)

Output variables (Find All)

{{find_all.records}}             → array of record objects
{{find_all.records[0].email}}    → first record's email
{{find_all.count}}               → number of records returned
{{find_all.total}}               → total matching records (before limit)

Common patterns

Look up a user and branch

Webhook (incoming data) → Find One (user by email) → If-Else (found?) →
  Yes: Update Record (update existing user)
  No: Create Record (create new user)

Batch process records

Schedule (daily) → Find All (status = "pending", created_at < 24h ago) →
  For Each (record) → HTTP Request (process) → Update Record (status = "completed")

Paginated export

Manual Trigger → Find All (limit: 500, offset: 0) → Google Sheets (append rows) →
  If-Else (count == 500?) → Jump To (increment offset, repeat)

Aggregate and report

Schedule (weekly) → Find All (created_at > 7 days ago) →
  Transformer (calculate totals, averages) → Send Email (weekly summary)

Multiple filter conditions

You can add multiple filters. They combine with AND logic. All conditions must be true:

Table: orders
Filter 1: status equals "completed"
Filter 2: created_at greater than {{WEEK_START()}}
Filter 3: total greater than 100

This returns all completed orders from this week with a total over 100.

Tip

Use Find One when you're looking up a specific record (by ID, email, or unique key). Use Find All when you need a list. Find One is faster because it stops after the first match.

Warning

Find All without filters returns ALL records in the table (up to the limit). On large tables, always add at least one filter to avoid pulling thousands of records into your workflow.

Note

Database nodes don't consume credits. They use your database connection directly.