Overview
Computed fields (also called formula fields) let you automatically calculate and display values based on other fields in the same record. Instead of manually updating a field every time related data changes, Reevo computes the result for you - keeping your CRM data accurate and consistent without extra work. Computed fields are useful for scoring records, formatting display values, flagging conditions, calculating date differences, and categorizing data based on field combinations. Any logic you’d otherwise track in a spreadsheet can usually be expressed as a computed field. Reevo evaluates computed fields when a record is created or updated. The formula references fields on the same record using a simple{{domain.field_name}} syntax, and the result is stored as a standard field value you can filter, sort, and report on.
Step-by-Step Instructions
Note: Only administrators can create and manage computed fields.
Creating a Computed Field
- Navigate to Settings > [Object] > Add field
- Click Add Computed Field
- Enter a Display Name for the field
- Write your formula in the Formula Editor
- Use
{{domain.field_name}}syntax to reference fields - e.g.{{contact.title}} - The editor provides autocomplete as you type field names
- Use the Preview panel to test the formula against live record values
- If the formula references a contact or account Timezone field, Preview context lets you pick a timezone from a searchable list to see how the result changes
- Use
- Click Create
- Formulas are single-record only - they can only reference fields on the same record, not related records
- The
updated_atfield is intentionally excluded from all domains to prevent circular recalculation triggers {{pipeline.*}}syntax still works for backward compatibility, but use{{opportunity.*}}going forward - this is what autocomplete will suggest
Editing or Deleting a Computed Field
- Navigate to Settings > [Object] > Computed Fields
- Click the ellipsis (…) next to the field
- Select Edit to update the name, output type, or formula expression
- Select Delete to remove the field - this removes it from all records and cannot be undone
Using Formulas Inside a Workflow
You can also write a formula directly inside a workflow step, without adding a separate Compute node first. Use this when a step needs a calculated value that you don’t want to store on the record.- Open the workflow and select the step you want to configure
- In the field you want to fill, choose Add formula. In a formula field, click Build a formula instead
- In Build a formula, write your formula using the Fields, Functions, and Examples panels. Fields come from the trigger and earlier steps in the workflow
Formula Reference
Variable Syntax & Domains
Every formula references fields using a two-part variable: the domain (which object type you’re pulling from) and the field name (the specific field on that object). This scoped syntax ensures Reevo knows exactly which record and field to evaluate at compute time. Use double-brace syntax:{{domain.field_name}}
Components:
domain- The entity type:contact,account, oropportunityfield_name- The specific field name in snake_case
{{contact.first_name}}{{contact.last_name}}{{contact.title}}{{contact.department}}{{contact.primary_phone_number}}{{contact.linkedin_url}}{{contact.timezone}}
{{account.display_name}}{{account.estimated_annual_revenue}}{{account.estimated_employee_count}}{{account.official_website}}{{account.description}}{{account.status}}{{account.timezone}}
{{opportunity.amount}}{{opportunity.anticipated_closing_at}}{{opportunity.next_step_details}}
Supported Input Field Types
Not every field type in Reevo can be used inside a formula. The table below shows which field types are supported and what data type they become once referenced in an expression. For example, a phone number field is treated as plain text in the formula engine - you can concatenate or extract from it, but not do math on it.Data Types & Operators
Each data type supports a specific set of operators. Using the wrong operator for a type is the most common cause of formula errors - for example, using+ to join two text strings will fail because + is reserved for numeric addition. Use & or CONCAT() for text.
- Text: 255 characters max
- Numbers: up to 18 digits precision
Function Reference
Functions are the building blocks of formulas. They take inputs, apply logic, and return a result. Reevo organizes functions into four categories based on what kind of data they work with.Logical
Logical functions control the flow of your formula - returning different values depending on whether conditions are met. UseIF for simple true/false branching, CASE when you have multiple possible values to match against, and ISBLANK/BLANKVALUE to handle records where a field hasn’t been filled in yet.
Math
Math functions operate on NUMBER values. They’re most useful for scoring (rounding a weighted score), financial calculations (commission tiers), and threshold checks (flagging deals above a certain size). Note thatSUM and AVG are available but only accept literal values - they don’t aggregate across related records. Use Rollup Fields for that.
Text
Text functions let you build, inspect, and transform string values. They’re commonly used to construct display names, classify records based on keywords in a field (usingCONTAINS), or extract a clean domain from a messy URL. All text comparisons are case-sensitive.
Date
Date functions let you work with time-based fields - calculating how many days until a close date, labeling deals by fiscal quarter, or flagging records that are overdue.TODAY() is dynamic and evaluated at computation time, so formulas using it stay current as long as records are periodically re-saved or backfilled.
Timezones in Date Functions
By default, date functions work in Pacific time.TODAY() returns today’s date in Pacific time, and YEAR, MONTH, DAY, QUARTER, WEEKDAY, and HOUR read a date and time field as Pacific time.
To work in another timezone:
- Pass a timezone to
TODAY(), for exampleTODAY("America/New_York")orTODAY({{contact.timezone}}) - Wrap a date and time field in
CONVERT_TIMEZONE()before extracting a part of it, for exampleHOUR(CONVERT_TIMEZONE({{contact.created_at}}, {{contact.timezone}}))returns the hour in the contact’s own timezone
America/New_York or Europe/London, a UTC offset in whole hours such as UTC+5 or UTC-8, or a contact or account Timezone field. CONVERT_TIMEZONE() only accepts a date and time value, not a date on its own, and returns a blank value when the timezone is blank. An unrecognized timezone name causes the formula to return an error.
Example Formulas
These examples show how to combine fields, functions, and logic to solve real CRM use cases. Copy and adapt them as a starting point - the formula editor will validate your syntax in real time.Contact
Full display name with title and departmentCONCAT(IF(ISBLANK({{contact.title}}), "", CONCAT({{contact.title}}, " ")), {{contact.first_name}}, " ", {{contact.last_name}}, IF(ISBLANK({{contact.department}}), "", CONCAT(" - ", {{contact.department}})))
Output: “VP John Smith - Sales”
Seniority score based on title (Number)
IF(OR(CONTAINS({{contact.title}}, "CEO"), CONTAINS({{contact.title}}, "Chief"), CONTAINS({{contact.title}}, "President")), 100, IF(OR(CONTAINS({{contact.title}}, "VP"), CONTAINS({{contact.title}}, "Vice President")), 80, IF(CONTAINS({{contact.title}}, "Director"), 60, IF(CONTAINS({{contact.title}}, "Manager"), 40, 20))))
Is decision maker (Boolean)
OR(CONTAINS({{contact.title}}, "CEO"), CONTAINS({{contact.title}}, "CFO"), CONTAINS({{contact.title}}, "CTO"), CONTAINS({{contact.title}}, "VP"), CONTAINS({{contact.title}}, "President"), CONTAINS({{contact.title}}, "Owner"))
Account
Account tier by revenue (Text)IF(ISBLANK({{account.estimated_annual_revenue}}), "Unknown", IF({{account.estimated_annual_revenue}} >= 10000000, "Enterprise", IF({{account.estimated_annual_revenue}} >= 1000000, "Mid-Market", IF({{account.estimated_annual_revenue}} >= 100000, "SMB", "Startup"))))
Extract website domain (Text)
DOMAIN({{account.official_website}})
Profile completeness score 0-100 (Number)
ROUND((IF(ISBLANK({{account.display_name}}), 0, 20) + IF(ISBLANK({{account.estimated_annual_revenue}}), 0, 20) + IF(ISBLANK({{account.estimated_employee_count}}), 0, 20) + IF(ISBLANK({{account.official_website}}), 0, 20) + IF(ISBLANK({{account.description}}), 0, 20)), 0)
Opportunity
Expected close quarter (Text)IF(ISBLANK({{opportunity.anticipated_closing_at}}), "Not Set", CONCAT("Q", TEXT(QUARTER({{opportunity.anticipated_closing_at}}), "number"), " ", TEXT(YEAR({{opportunity.anticipated_closing_at}}), "number")))
Output: “Q2 2025”
Tiered commission (Number)
IF(ISBLANK({{opportunity.amount}}), 0, IF({{opportunity.amount}} > 100000, ROUND({{opportunity.amount}} * 0.15, 2), IF({{opportunity.amount}} > 50000, ROUND({{opportunity.amount}} * 0.10, 2), ROUND({{opportunity.amount}} * 0.05, 2))))
Deal readiness score 0-100 (Number)
ROUND((IF(ISBLANK({{opportunity.amount}}), 0, 25) + IF(ISBLANK({{opportunity.anticipated_closing_at}}), 0, 25) + IF(ISBLANK({{opportunity.next_step_details}}), 0, 25) + IF({{opportunity.amount}} >= 10000, 25, 0)), 0)
Adjust the 10000 amount threshold to match your typical deal size.
Troubleshooting / FAQs
Why doesn't the + operator work for combining text?
Why doesn't the + operator work for combining text?
+ operator is reserved for numeric addition. To join text strings, use CONCAT() or the & operator - e.g. {{contact.first_name}} & " " & {{contact.last_name}}.Why can't I reference updated_at in my formula?
Why can't I reference updated_at in my formula?
updated_at, which re-triggers recomputation. This applies to contact, account, and opportunity.Can I mix Date and DateTime fields in calculations?
Can I mix Date and DateTime fields in calculations?
DATE(): {{date_field}} - DATE({{datetime_field}}).My formula fails when a field is empty. How do I handle nulls?
My formula fails when a field is empty. How do I handle nulls?
ISBLANK() or BLANKVALUE(). For example: IF(ISBLANK({{contact.title}}), "No Title", {{contact.title}}). For numbers, use BLANKVALUE({{account.estimated_annual_revenue}}, 0) to default to zero.Can computed fields reference fields from other records?
Can computed fields reference fields from other records?
Can computed fields reference each other?
Can computed fields reference each other?
Are computed fields updated in real-time?
Are computed fields updated in real-time?
TODAY() is evaluated at computation time and may require a periodic backfill to stay current.Which timezone does TODAY() use?
Which timezone does TODAY() use?
TODAY("Europe/London") for a fixed timezone, or TODAY({{contact.timezone}}) to use each contact’s own timezone. To read the hour or day of a date and time field in another timezone, wrap the field in CONVERT_TIMEZONE() first.Is there a complexity limit?
Is there a complexity limit?
CASE over deeply nested IF chains - it’s more compact and uses fewer nodes.Can computed fields reference other computed fields?
Can computed fields reference other computed fields?
Is regex or pattern matching supported?
Is regex or pattern matching supported?
CONTAINS() for substring checks and BEGINS() for prefix checks. Both are case-sensitive. No regex, wildcards, or case-insensitive matching.