> ## Documentation Index
> Fetch the complete documentation index at: https://docs.findtempo.co/llms.txt
> Use this file to discover all available pages before exploring further.

# Filter and action reference

> Every field, operator, and action available to an automation.

## Filter fields

Automations filter on opportunity, account, and contact fields.

### Opportunity

| Field       | Label      |
| ----------- | ---------- |
| `StageName` | Stage      |
| `Amount`    | Amount     |
| `CloseDate` | Close date |
| `IsClosed`  | Is closed  |
| `dealtype`  | Deal type  |

### Account

| Field                   | Label    |
| ----------------------- | -------- |
| `account.name`          | Name     |
| `account.industry`      | Industry |
| `account.annualrevenue` | Revenue  |
| `account.type`          | Type     |
| `account.country`       | Country  |

### Contact

| Field                    | Label     |
| ------------------------ | --------- |
| `contact.email`          | Email     |
| `contact.jobtitle`       | Title     |
| `contact.company`        | Company   |
| `contact.lifecyclestage` | Lifecycle |

### Filter-only fields

Two more fields are available in filters but aren't general-purpose fields like `Amount` or `StageName` — they narrow the population an automation evaluates.

| Field     | Use it to                               |
| --------- | --------------------------------------- |
| `id`      | Filter to a specific deal               |
| `user_id` | Filter by owner, or to unassigned deals |

## Operators

Every opportunity, account, and contact field supports all of these:

| Operator      | Meaning                 |
| ------------- | ----------------------- |
| `eq`          | Equals                  |
| `neq`         | Does not equal          |
| `in`          | Is one of               |
| `nin`         | Is not one of           |
| `gt` / `gte`  | Greater than / or equal |
| `lt` / `lte`  | Less than / or equal    |
| `between`     | Within a range          |
| `contains`    | Substring match         |
| `startswith`  | Begins with             |
| `endswith`    | Ends with               |
| `is_null`     | Has no value            |
| `is_not_null` | Has any value           |

## Combining conditions

Filters nest with `and`, `or`, and `not`:

```
or:
  - and:
      - StageName  eq   "Negotiation"
      - CloseDate  lt   today
  - and:
      - Amount            gt   250000
      - contact.jobtitle  contains  "VP"
```

Read as: *late-stage deals that have slipped past their close date, or any large deal with a VP-level contact.*

## Relative date values

Date filters can use values that resolve when the filter runs. This keeps an automation current without editing fixed dates.

| Value                    | Meaning                                                                                            |
| ------------------------ | -------------------------------------------------------------------------------------------------- |
| Relative calendar period | This, last, or next day, week, month, quarter, half, or year                                       |
| Relative day window      | A sliding number of past or future days                                                            |
| Relative point           | Today, yesterday, tomorrow, or the start or end of the current week, month, quarter, half, or year |

Named calendar periods are complete calendar blocks. A relative day window is the correct choice for a rolling period.

<Note>
  Relative periods use the organization's **Fiscal Year Start** and **Start of Week** settings where applicable.
</Note>

## Schedules

| Property        | Notes                               |
| --------------- | ----------------------------------- |
| Trigger kind    | `schedule`                          |
| Cron            | Standard cron expression            |
| Recurrence rule | An RRULE, as an alternative to cron |
| Timezone        | Named timezone, up to 64 characters |

Set the timezone explicitly. An automation meant for 8am Eastern runs at the wrong local hour for half the year if you use UTC.

## Actions

An automation can have **1–10 actions**.

### `send_message`

Sends a Slack message or email, or creates a Google Doc.

| Property    | Value                                                                                                                     |
| ----------- | ------------------------------------------------------------------------------------------------------------------------- |
| Provider    | `slack`, `email`, or `google_docs`                                                                                        |
| Destination | A connected Slack channel, **Direct message to me**, an organization member's email address, **Email me**, or Google Docs |
| Content     | Literal text (up to 4,000 characters) or a Canvas template                                                                |

Canvas content renders the template with live deal data at send time. Email deliveries use the automation name as the subject and keep Canvas formatting such as headings, lists, and tables.

Use separate `send_message` actions when one run should use multiple destinations. See [Canvas](/canvas).

Google Docs output creates a new private document in the Google Drive **My Drive** for the user Tempo runs the automation as. Deal-based runs can create one document per deal. That user can open created documents from **Run History**.

### `noop`

Does nothing. Useful for testing a filter and schedule on their own before wiring up a real action.

## Lifecycle

| Action            | Effect                                                   |
| ----------------- | -------------------------------------------------------- |
| `upsert_disabled` | Create or update. Always leaves the automation disabled. |
| `enable`          | Validate dependencies and start running.                 |
| `disable`         | Stop running. Configuration is kept.                     |
| `delete`          | Soft delete.                                             |

**Any configuration edit disables the automation.** Re-enable it when you are done.

## Blockers

Enabling validates dependencies first. If something's missing, you get a named blocker and the tool to fix it — not a silent failure. Common ones:

* The destination Slack channel is not connected, or Tempo has not been invited to it
* The email recipient is not a member of your Tempo organization
* A referenced canvas template isn't published
* Google Workspace is not connected, needs reauthorization, or is missing Google Docs authorization
* The automation lacks execution authority for the account it would run as

Listing your automations shows current blockers and readiness for each one.
