# Welcome

**Formula Pro** is an advanced app for the monday.com platform that enhances the native formula column, mirror column, and subitems with advanced calculations and automation.

## What's in this documentation

* **Getting Started** — Installation, quick start, and formula basics
* **Function Reference** — 40+ custom functions and 399 Excel-compatible functions, with examples and results
* **Automation Recipes** — 80+ recipes for column triggers, mirror columns, subitems, and scheduled runs
* **Recipe Examples** — Real-world formulas with explanations
* **Appendix** — Column syntax, supported types, common errors, FAQ, and troubleshooting

## Quick links

* [Quick Start](/formula-pro/getting-started/quickstart)
* [Formula Pro Custom Functions](/formula-pro/formula-pro-custom-functions/custom-functions-overview)
* [Excel Functions](/formula-pro/excel-compatible-functions/excel-functions)
* [Automation Recipes](/formula-pro/automation/automation-recipes)
* [Recipe Examples](/formula-pro/automation/recipe-examples)
* [Pricing Plans](/formula-pro/appendix/pricing)
* [Errors and Troubleshooting](/formula-pro/appendix/errors-and-troubleshooting)
* [FAQ](/formula-pro/appendix/faq)


# Introduction

**Formula Pro** is an advanced app for the monday.com platform that enhances the native formula column, mirror column, and subitems by providing advanced calculations and automation capabilities.

## What Formula Pro Does

* **Supercharge formulas** — Use 399+ Excel-compatible functions plus 40+ custom Formula Pro functions
* **Automate column updates** — 80+ built-in automation recipes to project calculated results
* **Cross-board automation** — Project formula results to mirror columns across boards
* **Subitem automations & management** — Cascade updates through parent items and subitems effortlessly
* **Scheduled calculations** — Run formulas on a schedule for recurring reports and KPIs

## Pricing

Formula Pro offers plans from **Free** (120 operations/month) to **Advanced** (75,000 operations/period). [More details about pricing](#pricing).

## Key Capabilities

| Capability                       | Description                                                                    |
| -------------------------------- | ------------------------------------------------------------------------------ |
| **Formula execution**            | Execute formulas when columns change, with results projected to target columns |
| **Formula column integration**   | Use existing formula column results as triggers for automation                 |
| **Mirror column automation**     | Project results across boards via mirror columns                               |
| **Subitem automaions & rollups** | Aggregate subitem values to parent items; project parent values to subitems    |
| **Board-wide operations**        | Update all items on a board or group simultaneously                            |
| **Item name projection**         | Use formula results as item names                                              |

## Documentation Structure

* **Getting Started** — Installation, formula basics, and column reference syntax
* **Reference** — Complete function reference with examples and results
* **Automation** — All supported recipes and configuration options
* **Appendix** — Column types, syntax details, and troubleshooting


# Quick Start

## Installation

1. Install Formula Pro from the [monday.com marketplace](https://auth.monday.com/oauth2/authorize?client_id=9a814fa236e3dbae292fba0d3549111e\&response_type=install)
2. Connect your monday.com account and grant permissions
3. Add an automation recipe to your board

<figure><img src="https://2257597643-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FPkgmBVkcjsLfReyvOKro%2Fuploads%2FwNgbH4M2eAnzZZY8JGBu%2FOct%2029%20Screenshot%20from%20GitBook.png?alt=media&amp;token=a620c4b4-7f8e-43c8-9574-8d1d51ec9dfc" alt=""><figcaption></figcaption></figure>

## Deploy Your First Recipe

1. Open a board in monday.com
2. Go to **Integrations** → Search for **Formula Pro Automation**
3. Choose a recipe (e.g., "When column changes, execute formula and project the result to column")
4. Configure the trigger column, formula, and destination column
5. Save and test

<figure><img src="https://2257597643-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FPkgmBVkcjsLfReyvOKro%2Fuploads%2FdL8NJg2LMLrf9s3Lmwia%2FScreenshot%202026-03-09%20at%2013.24.44.png?alt=media&amp;token=f85a2f92-6b71-4a74-b182-f3ed315d0032" alt=""><figcaption></figcaption></figure>

## Formula Migration

Formula Pro supports native monday.com and Excel formula syntax. You can copy existing formulas with minimal or no changes. See [Formula Basics](/formula-pro/getting-started/formula-basics) for syntax details.


# Authenticating and Re-authenticating Formula Pro

You may need to authenticate (or re-authenticate) Formula Pro when using the app for the first time, or after automation ownership has been transferred. In these cases, you'll receive an error notification prompting you to re-authenticate:

<figure><img src="https://2257597643-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FPkgmBVkcjsLfReyvOKro%2Fuploads%2FngIs4rpGYFbXxXE8GVbB%2FScreenshot%202026-03-26%20at%2012.53.52.png?alt=media&amp;token=7d0b85bf-b236-4a16-8f93-064e03a14438" alt=""><figcaption></figcaption></figure>

The video below walks you through the re-authentication steps:

{% embed url="<https://vimeo.com/1078501557?fe=sh&fl=pl>" %}

If you continue to see the error after re-authenticating, please contact support at <hello@shadebridge.com>.


# Formula Basics

## Column Reference Syntax

In Formula Pro, you reference column values using the `{item's ColumnName}` syntax:

```
{item's Status}
{item's Date}
{item's Number}
{item's Timeline}
```

When configuring automations, column placeholders are replaced with actual values at runtime. In the formula editor, you'll see placeholders like `$values.pulse.column_id.value` — these map to your selected columns.

## Formula Structure

Formulas follow standard function-call syntax:

```
FUNCTION_NAME(argument1, argument2, ...)
```

Examples:

```
SUM(5, 10, 15)                    → 30
CONCATENATE("Hello", " ", "World") → "Hello World"
IF({item's Number} > 10, "High", "Low")
```

## Common Patterns

### Date formatting

```
TEXT(DATEVALUE({item's Date}), "YYYY-MM-DD")
FORMAT_DATE({item's Date}, "MMM DD, YYYY")
```

### Conditional logic

```
IF(condition, value_if_true, value_if_false)
SWITCH({item's Status}, "Done", "Complete", "In Progress", "Active", "Unknown")
```

### Timeline handling

```
LEFT({item's Timeline}, 10)      → Start date (YYYY-MM-DD)
RIGHT({item's Timeline}, 10)     → End date (YYYY-MM-DD)
START({item's Timeline})          → Start date (Formula Pro function)
END({item's Timeline})            → End date (Formula Pro function)
```

## Excel Compatibility

Formula Pro implements 399+ Excel functions from categories including:

* Math and trigonometry
* Statistical
* Date and time
* Text
* Logical
* Lookup and reference
* Financial
* Engineering

See the [Excel Functions Reference](/formula-pro/excel-compatible-functions/excel-functions) for the full list.


# Overview

Formula Pro extends Excel-compatible formulas with **40+ custom functions** designed for monday.com workflows. These functions handle:

* **Dates & timelines** — monday.com date formats, timeline columns, working days
* **Mirror columns** — Condition checks across mirrored values from connected items
* **Text & regex** — Pattern matching, replacement, and formatting
* **Control flow** — Skip/ignore items, clear values, conditional projection

## Function Categories

| Category                                                                   | Functions                                                                                      | Use Case                                              |
| -------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ----------------------------------------------------- |
| [Date & Time](/formula-pro/formula-pro-custom-functions/date-time)         | ADD\_DAYS, SUBTRACT\_DAYS, WORKDAYS, FORMAT\_DATE, HOURS\_DIFF, etc.                           | Date arithmetic, formatting, working-day calculations |
| [Timeline](/formula-pro/formula-pro-custom-functions/timeline)             | TIMELINE, TIMELINE\_FROM\_DATES, START, END, DATES\_FROM\_TIMELINE                             | Timeline column parsing and construction              |
| [Text](/formula-pro/formula-pro-custom-functions/text)                     | CONTAINS, REGEXREPLACE, REGEXTEST, TEXT                                                        | Pattern matching, regex replace, formatting           |
| [Math](/formula-pro/formula-pro-custom-functions/math)                     | ADD, MINUS, MULTIPLY, DIVIDE, RAND\_BETWEEN, comparison operators                              | Arithmetic with string concatenation support          |
| [Value Checking](/formula-pro/formula-pro-custom-functions/value-checking) | COALESCE, HAS\_VALUE, VALUE\_EXISTS                                                            | Null handling, value presence checks                  |
| [Mirror](/formula-pro/formula-pro-custom-functions/mirror)                 | ALL\_MIRROR\_VALUES\_MATCH\_CONDITION, AT\_LEAST\_ONE\_MIRROR\_VALUE\_MATCHES\_CONDITION, etc. | Mirror column condition evaluation                    |
| [Control Flow](/formula-pro/formula-pro-custom-functions/control-flow)     | IGNORE, SKIP, PASS, CLEAR, EMPTY, SWITCH                                                       | Skip items, clear values, conditional logic           |

## Naming Conventions

* Functions are **case-insensitive** — `ADD_DAYS` and `add_days` are equivalent
* Most functions follow `FUNCTION_NAME` style
* Aliases exist for common operations (e.g., `PLUS` = `ADD`, `MIN_DATE` = `DATE_MIN`)


# Date & Time Functions

Formula Pro custom functions for date arithmetic, formatting, and time calculations.

***

## ADD\_DAYS

Adds a specified number of days to a date. Returns a date string in `YYYY-MM-DD` format.

**Syntax:** `ADD_DAYS(date, days)`

| Parameter | Type                    | Description                                      |
| --------- | ----------------------- | ------------------------------------------------ |
| date      | Date, string, or number | The starting date                                |
| days      | number                  | Number of days to add (use negative to subtract) |

**Example:**

```
ADD_DAYS("2025-03-09", 14)
```

**Result:** `"2025-03-23"`

***

## SUBTRACT\_DAYS

Subtracts a specified number of days from a date. Returns `YYYY-MM-DD`.

**Syntax:** `SUBTRACT_DAYS(date, days)`

**Example:**

```
SUBTRACT_DAYS("2025-03-23", 14)
```

**Result:** `"2025-03-09"`

***

## DATE\_ARITHMETIC

Adds or subtracts days from a date. Same as ADD\_DAYS/SUBTRACT\_DAYS; use negative `days` to subtract.

**Syntax:** `DATE_ARITHMETIC(date, days)`

**Example:**

```
DATE_ARITHMETIC("2025-01-15", -7)
```

**Result:** `"2025-01-08"`

***

## ADD\_MINUTES

Adds minutes to a datetime string. Accepts `YYYY-MM-DD HH:mm:ss` or `YYYY-MM-DD`. Returns ISO 8601 UTC string.

**Syntax:** `ADD_MINUTES(date, minutes)`

**Example:**

```
ADD_MINUTES("2025-06-27 07:00:00", 90)
```

**Result:** `"2025-06-27T08:30:00.000Z"` (or equivalent ISO string)

***

## SUBTRACT\_MINUTES

Subtracts minutes from a datetime string.

**Syntax:** `SUBTRACT_MINUTES(date, minutes)`

***

## DATE\_MIN / MIN\_DATE

Returns the earliest date from multiple date arguments. Accepts date strings, numbers (timestamps), or timeline strings (`YYYY-MM-DD+YYYY-MM-DD`).

**Syntax:** `DATE_MIN(date1, date2, ...)` or `MIN_DATE(...)`

**Example:**

```
DATE_MIN("2025-03-01", "2025-03-15", "2025-02-20")
```

**Result:** `"2025-02-20"`

***

## DATE\_MAX / MAX\_DATE

Returns the latest date from multiple date arguments.

**Syntax:** `DATE_MAX(date1, date2, ...)` or `MAX_DATE(...)`

**Example:**

```
DATE_MAX("2025-03-01", "2025-03-15", "2025-02-20")
```

**Result:** `"2025-03-15"`

***

## WORKDAYS

Calculates the number of working days (Mon–Fri) between two dates.

**Syntax:** `WORKDAYS(toDate, fromDate, [allowNegative])`

| Parameter     | Description                                                                                  |
| ------------- | -------------------------------------------------------------------------------------------- |
| toDate        | End date (YYYY-MM-DD)                                                                        |
| fromDate      | Start date (YYYY-MM-DD)                                                                      |
| allowNegative | Optional. "TRUE" or true to allow negative results; default is false (returns 0 if negative) |

**Example:**

```
WORKDAYS("2025-03-14", "2025-03-09")
```

**Result:** `4` (Mon 9th to Fri 14th = 4 weekdays)

***

## FORMAT\_DATE

Formats a date using Moment.js format tokens. Default format is `"MMM DD, YYYY"`.

**Syntax:** `FORMAT_DATE(dateInput, [formatString])`

**Common format tokens:** `YYYY` (year), `MM` (month), `DD` (day), `HH` (hour), `mm` (minute), `ss` (second)

**Example:**

```
FORMAT_DATE("2025-03-09", "MMM DD, YYYY")
```

**Result:** `"Mar 09, 2025"`

**Example:**

```
FORMAT_DATE("2025-03-09", "YYYY-MM-DD")
```

**Result:** `"2025-03-09"`

***

## TIMEVALUE

Converts a time string to a decimal fraction of a day (Excel-compatible). Supports `HH:MM`, `HH:MM:SS`, and AM/PM formats.

**Syntax:** `TIMEVALUE(time_text)`

**Example:**

```
TIMEVALUE("09:00")
```

**Result:** `0.375` (9 AM = 9/24 of a day)

***

## HOURS\_DIFF

Calculates the difference between two time strings in `HH:MM` format. Supports hours beyond 24.

**Syntax:** `HOURS_DIFF(time1, time2)`

**Example:**

```
HOURS_DIFF("18:00", "09:00")
```

**Result:** `"09:00"` (9 hours difference)

**Example:**

```
HOURS_DIFF("09:00", "18:00")
```

**Result:** `"-09:00"`


# Timeline Functions

Functions for working with monday.com Timeline columns. Timeline values use the format `YYYY-MM-DD+YYYY-MM-DD` (start date + end date).

***

## TIMELINE / TIMELINE\_FROM\_DATES

Creates a timeline string from one or more dates. Returns the earliest date as start and the latest as end.

**Syntax:** `TIMELINE(date1, date2, ...)` or `TIMELINE_FROM_DATES(...)`

**Example:**

```
TIMELINE("2025-03-15", "2025-03-01")
```

**Result:** `"2025-03-01+2025-03-15"`

**Example:**

```
TIMELINE_FROM_DATES("2025-01-10", "2025-02-20", "2025-01-05")
```

**Result:** `"2025-01-05+2025-02-20"`

***

## DATES\_FROM\_TIMELINE

Extracts start and end dates from a timeline string. Returns an array `[start, end]` (used internally; in formulas the result may be used by other functions).

**Syntax:** `DATES_FROM_TIMELINE(timeline)`

**Example:**

```
DATES_FROM_TIMELINE("2025-03-01+2025-03-15")
```

**Result:** `["2025-03-01", "2025-03-15"]`

***

## START

Extracts the start date from a timeline string.

**Syntax:** `START(timeline)`

**Example:**

```
START("2025-03-01+2025-03-15")
```

**Result:** `"2025-03-01"`

***

## END

Extracts the end date from a timeline string.

**Syntax:** `END(timeline)`

**Example:**

```
END("2025-03-01+2025-03-15")
```

**Result:** `"2025-03-15"`

***

## Recipe Example: Timeline Shift

Shift a timeline by 14 days:

```
CONCATENATE(
  TEXT(DATEVALUE(LEFT({item's Timeline}, 10)) + 14, "YYYY-MM-DD"),
  "+",
  TEXT(DATEVALUE(RIGHT({item's Timeline}, 10)) + 14, "YYYY-MM-DD")
)
```

Or using Formula Pro functions:

```
CONCATENATE(
  TEXT(DATEVALUE(START({item's Timeline})) + 14, "YYYY-MM-DD"),
  "+",
  TEXT(DATEVALUE(END({item's Timeline})) + 14, "YYYY-MM-DD")
)
```

***

## Recipe Example: Workday Count from Timeline

Calculate working days between timeline start and end:

```
NETWORKDAYS(DATEVALUE(LEFT({item's Timeline}, 10)), DATEVALUE(RIGHT({item's Timeline}, 10)))
```

Or:

```
NETWORKDAYS(DATEVALUE(START({item's Timeline})), DATEVALUE(END({item's Timeline})))
```


# Text Functions

Formula Pro custom text functions including regex support and string checks.

***

## CONTAINS

Checks whether a string contains another string. Case-sensitive by default.

**Syntax:** `CONTAINS(target, searchString, [caseSensitive])`

| Parameter     | Description                           |
| ------------- | ------------------------------------- |
| target        | The string to search in               |
| searchString  | The substring to find                 |
| caseSensitive | Optional. `true` (default) or `false` |

**Example:**

```
CONTAINS("Formula Pro", "Pro")
```

**Result:** `true`

**Example:**

```
CONTAINS("Formula Pro", "pro", false)
```

**Result:** `true` (case-insensitive)

**Example:**

```
CONTAINS("Formula Pro", "Excel")
```

**Result:** `false`

***

## TEXT

Formats a number as text using Excel-style format codes. Wraps Formula.js TEXT.

**Syntax:** `TEXT(value, format_text)`

**Example:**

```
TEXT(1234.56, "0.00")
```

**Result:** `"1234.56"`

**Example:**

```
TEXT(DATEVALUE("2025-03-09"), "YYYY-MM-DD")
```

**Result:** `"2025-03-09"`

**Example (date column / mirror lookup value):**

```
TEXT({item's Date Lookup}, "YYYY-MM-DD")
```

When the lookup resolves to a calendar date string (e.g. `2026-05-23`), Formula Pro coerces it automatically — you do not need to wrap with `DATEVALUE`.

***

## REGEXREPLACE

Replaces text matching a regex pattern. Supports replacement of all matches or a specific occurrence.

**Syntax:** `REGEXREPLACE(text, pattern, replacement, [occurrence], [case_sensitivity])`

| Parameter         | Description                                                                   |
| ----------------- | ----------------------------------------------------------------------------- |
| text              | Input text                                                                    |
| pattern           | Regex pattern (as string)                                                     |
| replacement       | Replacement string (supports `$1`, `$2` for capture groups)                   |
| occurrence        | Optional. `0` = replace all (default); `1`, `2`, ... = replace Nth match only |
| case\_sensitivity | Optional. `0` = case sensitive (default); `1` = case insensitive              |

**Example: Replace all occurrences**

```
REGEXREPLACE("tuttle", "t", "b")
```

**Result:** `"bubble"`

**Example: Replace specific occurrence**

```
REGEXREPLACE("tuttle", "t", "b", 2)
```

**Result:** `"tubtle"` (only second "t" replaced)

**Example: Capture groups**

```
REGEXREPLACE("2026-03-13", "(\d{4})-(\d{2})-(\d{2})", "$2/$3/$1")
```

**Result:** `"03/13/2026"`

**Example: Case-insensitive**

```
REGEXREPLACE("Product Vision", "vision", "plan", , 1)
```

**Result:** `"Product plan"`

***

## REGEXTEST

Tests whether text matches a regex pattern. Returns `true` or `false`.

**Syntax:** `REGEXTEST(text, pattern, [case_sensitivity])`

| Parameter         | Description                                            |
| ----------------- | ------------------------------------------------------ |
| text              | Text to test                                           |
| pattern           | Regex pattern                                          |
| case\_sensitivity | Optional. `0` = case sensitive; `1` = case insensitive |

**Example:**

```
REGEXTEST("hello@example.com", "@")
```

**Result:** `true`

**Example:**

```
REGEXTEST("Product-123", "^\d+$")
```

**Result:** `false` (string is not all digits)


# Math & Arithmetic

Formula Pro math functions with optional string concatenation support for formatted values.

***

## ADD / PLUS

Adds numbers together. With `enableStringConcatenation`, concatenates strings when operands are non-numeric.

**Syntax:** `ADD(operand1, operand2, ...)` or `PLUS(...)`

**Example:**

```
ADD(5, 10, 15)
```

**Result:** `30`

**Example:**

```
ADD(100, 50)
```

**Result:** `150`

***

## MINUS / SUBTRACT

Subtracts operands sequentially: first - second - third - ...

**Syntax:** `MINUS(operand1, operand2, ...)` or `SUBTRACT(...)`

**Example:**

```
MINUS(100, 30, 10)
```

**Result:** `60`

***

## MULTIPLY

Multiplies all operands. Returns product.

**Syntax:** `MULTIPLY(operand1, operand2, ...)`

**Example:**

```
MULTIPLY(5, 4, 2)
```

**Result:** `40`

***

## DIVIDE

Divides numbers. Wraps Formula.js DIVIDE (handles division by zero).

**Syntax:** `DIVIDE(numerator, denominator)`

**Example:**

```
DIVIDE(100, 4)
```

**Result:** `25`

***

## RAND\_BETWEEN

Returns a random integer between min and max (inclusive).

**Syntax:** `RAND_BETWEEN(min, max)`

**Example:**

```
RAND_BETWEEN(1, 100)
```

**Result:** (varies) e.g. `42`

***

## Comparison Operators

Formula Pro provides comparison functions that work with both numbers and strings:

| Function                 | Alias   | Description |
| ------------------------ | ------- | ----------- |
| EQUAL                    | IS      | `a === b`   |
| NOT\_EQUAL               | IS\_NOT | `a !== b`   |
| LESS\_THAN               |         | `a < b`     |
| LESS\_THAN\_OR\_EQUAL    |         | `a <= b`    |
| GREATER\_THAN            |         | `a > b`     |
| GREATER\_THAN\_OR\_EQUAL |         | `a >= b`    |

**Example:**

```
IF(GREATER_THAN({item's Number}, 10), "High", "Low")
```

**Example:**

```
IF(IS({item's Status}, "Done"), "Complete", "Incomplete")
```

***

## String Concatenation Mode

When `enableStringConcatenation` is enabled (in automation context), ADD and MINUS can concatenate strings:

* **ADD** with strings: concatenates without separator (e.g., `"A" + "B"` → `"AB"`)
* **MINUS** with strings: joins with `" - "` (e.g., `"A" - "B"` → `"A - B"`)

This supports formatted arithmetic patterns like `"A - 5"` where continued operations preserve the format.


# Value Checking

Functions for handling null/undefined values and checking if values exist.

***

## COALESCE

Returns the first defined (non-undefined) argument. Useful for fallback values.

**Syntax:** `COALESCE(value1, value2, value3, ...)`

**Example:**

```
COALESCE({item's Optional}, {item's Default}, "N/A")
```

**Result:** First non-undefined value among the arguments.

**Example:**

```
COALESCE(undefined, 0)
```

**Result:** `0`

***

## HAS\_VALUE / VALUE\_EXISTS

Returns `"True"` or `"False"` based on whether the input has a meaningful value.

**Syntax:** `HAS_VALUE(input)` or `VALUE_EXISTS(input)`

**Behavior:**

| Input                | Result    |
| -------------------- | --------- |
| Non-empty string     | `"True"`  |
| Empty string         | `"False"` |
| Number (including 0) | `"True"`  |
| NaN                  | `"False"` |
| Non-empty array      | `"True"`  |
| Empty array          | `"False"` |
| Object with keys     | `"True"`  |
| null/undefined       | `"False"` |

**Example:**

```
HAS_VALUE({item's Status})
```

**Result:** `"True"` if Status has a value; `"False"` if empty.

**Example:**

```
IF(HAS_VALUE({item's Notes}), {item's Notes}, "No notes")
```

**Result:** Notes value if present; otherwise `"No notes"`.


# Mirror Column Functions

These functions evaluate conditions on **comma-separated mirror column values** — the aggregated values from all items connected via a mirror column. Use them in formulas triggered by mirror column changes.

**Input format:** `values` is a comma-separated string, e.g. `"Done, In Progress, Done"`.

***

## ALL\_MIRROR\_VALUES\_MATCH\_CONDITION

Returns `true` if every value matches the condition.

**Syntax:** `ALL_MIRROR_VALUES_MATCH_CONDITION({mirror column}, condition)`

**Example:**

```
ALL_MIRROR_VALUES_MATCH_CONDITION("Done, Done, Done", "Done")
```

**Result:** `true`

**Example:**

```
ALL_MIRROR_VALUES_MATCH_CONDITION("Done, In Progress, Done", "Done")
```

**Result:** `false`

***

## NO\_MIRROR\_VALUES\_MATCH\_CONDITION

Returns `true` if no value matches the condition.

**Syntax:** `NO_MIRROR_VALUES_MATCH_CONDITION({mirror column}, condition)`

**Example:**

```
NO_MIRROR_VALUES_MATCH_CONDITION("In Progress, Pending", "Done")
```

**Result:** `true`

***

## AT\_LEAST\_ONE\_MIRROR\_VALUE\_MATCHES\_CONDITION

Returns `true` if at least one value matches the condition.

**Syntax:** `AT_LEAST_ONE_MIRROR_VALUE_MATCHES_CONDITION({mirror column}, condition)`

**Example:**

```
AT_LEAST_ONE_MIRROR_VALUE_MATCHES_CONDITION("Done, In Progress, Pending", "Done")
```

**Result:** `true`

***

## SOME\_MIRROR\_VALUES\_MATCH\_CONDITION

Returns `true` if some (but not all) values match the condition.

**Syntax:** `SOME_MIRROR_VALUES_MATCH_CONDITION({mirror column}, condition)`

**Example:**

```
SOME_MIRROR_VALUES_MATCH_CONDITION("Done, Done, In Progress", "Done")
```

**Result:** `true` (2 match, 1 doesn't)

**Example:**

```
SOME_MIRROR_VALUES_MATCH_CONDITION("Done, Done, Done", "Done")
```

**Result:** `false` (all match, not "some")

***

## HALF\_MIRROR\_VALUES\_MATCH\_CONDITION

Returns `true` if at least half of the values match the condition.

**Syntax:** `HALF_MIRROR_VALUES_MATCH_CONDITION({mirror column}, condition)`

**Example:**

```
HALF_MIRROR_VALUES_MATCH_CONDITION("Done, Done, In Progress", "Done")
```

**Result:** `true` (2 of 3 ≥ half)

***

## PERCENTAGE\_OF\_MIRROR\_VALUES\_MATCH\_CONDITION

Returns `true` if the percentage of matching values meets or exceeds the threshold.

**Syntax:** `PERCENTAGE_OF_MIRROR_VALUES_MATCH_CONDITION(values, condition, percentage)`

| Parameter  | Description     |
| ---------- | --------------- |
| values     | Mirror column   |
| condition  | Value to match  |
| percentage | Threshold 0–100 |

**Example:**

```
PERCENTAGE_OF_MIRROR_VALUES_MATCH_CONDITION("Done, Done, In Progress, Pending", "Done", 50)
```

**Result:** `true` (50% match)


# Control Flow

Special functions that control formula execution and projection behavior.

***

## IGNORE / SKIP / PASS

Skips formula execution for the current item. The target column is **not updated** — the item is left unchanged.

**Syntax:** `IGNORE()` or `SKIP()` or `PASS()`

**Use case:** Use inside `IF()` to conditionally skip updates:

```
IF({item's Status} = "Draft", IGNORE(), {item's Calculated Value})
```

If Status is "Draft", the formula does not project a value. Otherwise, it projects the calculated value.

***

## CLEAR / EMPTY

Clears or empties the target column value. Use when you want to explicitly set the column to empty.

**Syntax:** `CLEAR()` or `EMPTY()`

**Use case:**

```
IF({item's Status} = "Archived", CLEAR(), {item's Active Value})
```

If Status is "Archived", the target column is cleared. Otherwise, the active value is projected.

***

## SWITCH

Evaluates an expression and returns the result for the first matching value. Similar to Excel SWITCH.

**Syntax:** `SWITCH(expression, value1, result1, [value2, result2, ...], [default])`

**Example:**

```
SWITCH({item's Status}, "Done", "Complete", "In Progress", "Active", "Unknown")
```

**Result:** `"Complete"` if Status is "Done"; `"Active"` if "In Progress"; `"Unknown"` otherwise.

**Example: With default**

```
SWITCH({item's Priority}, 1, "High", 2, "Medium", 3, "Low", "Normal")
```

**Result:** Maps 1→High, 2→Medium, 3→Low; any other value → "Normal".

**Example: Conditional email (from recipes)**

```
SWITCH({item's Status}, "Tim", "tim@apple.com:Tim Apple", "Jeff", "jeff@amazon.com:Jeff Amazon", "")
```

**Result:** Status-specific email strings for an email column; empty string if no match.


# Excel Functions Reference

Formula Pro implements over **400 Excel functions**. These work alongside Formula Pro custom functions in your formulas.

## Categories

### Math and Trigonometry

`ABS`, `ACOS`, `ACOSH`, `ASIN`, `ASINH`, `ATAN`, `ATAN2`, `ATANH`, `CEILING`, `CEILING.MATH`, `COMBIN`, `COMBINA`, `COS`, `COSH`, `COT`, `COTH`, `DEGREES`, `EVEN`, `EXP`, `FACT`, `FLOOR`, `FLOOR.MATH`, `GCD`, `INT`, `LCM`, `LN`, `LOG`, `LOG10`, `MOD`, `ODD`, `PI`, `POWER`, `PRODUCT`, `QUOTIENT`, `RADIANS`, `RAND`, `RANDBETWEEN`, `ROUND`, `ROUNDDOWN`, `ROUNDUP`, `SIGN`, `SIN`, `SINH`, `SQRT`, `SUBTOTAL`, `SUM`, `SUMIF`, `SUMIFS`, `SUMPRODUCT`, `TAN`, `TANH`, `TRUNC`, and more.

**Example:**

```
SUM(10, 20, 30)           → 60
ROUND(3.14159, 2)         → 3.14
IF({item's Count} > 5, "High", "Low")
```

### Statistical

`AVERAGE`, `AVERAGEIF`, `AVERAGEIFS`, `COUNT`, `COUNTA`, `COUNTIF`, `COUNTIFS`, `MAX`, `MIN`, `MEDIAN`, `MODE.SNGL`, `STDEV.S`, `STDEV.P`, `VAR.S`, `VAR.P`, `PERCENTILE.INC`, `RANK.EQ`, `LARGE`, `SMALL`, `CORREL`, `LINEST`, `FORECAST`, and more.

**Example:**

```
AVERAGE(5, 10, 15)        → 10
COUNTIF(range, "Done")     → count of "Done" values
MAX({item's Q1}, {item's Q2}, {item's Q3})
```

### Date and Time

`DATE`, `DATEVALUE`, `DAY`, `DAYS`, `EDATE`, `EOMONTH`, `HOUR`, `MINUTE`, `MONTH`, `NETWORKDAYS`, `NETWORKDAYS.INTL`, `NOW`, `TODAY`, `WEEKDAY`, `WEEKNUM`, `WORKDAY`, `WORKDAY.INTL`, `YEAR`, `YEARFRAC`, `DATEDIF`, and more.

**Example:**

```
DATEVALUE("2025-03-09")   → serial date
NETWORKDAYS("2025-03-01", "2025-03-14")  → working days
TEXT(DATEVALUE({item's Date}), "YYYY-MM-DD")
```

### Text

`CHAR`, `CLEAN`, `CODE`, `CONCAT`, `CONCATENATE`, `EXACT`, `FIND`, `FIXED`, `LEFT`, `LEN`, `LOWER`, `MID`, `PROPER`, `REPLACE`, `REPT`, `RIGHT`, `SEARCH`, `SUBSTITUTE`, `TRIM`, `UPPER`, `VALUE`, `TEXTJOIN`, and more.

**Example:**

```
CONCATENATE("Hello", " ", "World")  → "Hello World"
LEFT({item's Name}, 10)             → first 10 characters
TRIM({item's Notes})                → trim whitespace
```

### Logical

`AND`, `OR`, `NOT`, `IF`, `IFERROR`, `IFNA`, `IFS`, `TRUE`, `FALSE`, `XOR`, `SWITCH` (Excel + Formula Pro enhanced).

**Example:**

```
IF({item's Status} = "Done", 1, 0)
AND({item's A} > 0, {item's B} < 100)
```

### Lookup and Reference

`CHOOSE`, `COLUMN`, `COLUMNS`, `INDEX`, `LOOKUP`, `MATCH`, `ROW`, `ROWS`, `TRANSPOSE`, `UNIQUE`, `SORT`, and more.

**Example:**

```
INDEX(array, row, column)
```

### Financial

`PMT`, `PV`, `FV`, `NPV`, `IRR`, `RATE`, `NPER`, `IPMT`, `PPMT`, `SLN`, `SYD`, `DB`, `DDB`, `ACCRINT`, `DISC`, `PRICEDISC`, `YIELDDISC`, and more.

### Engineering

`BIN2DEC`, `DEC2BIN`, `HEX2DEC`, `CONVERT`, `DELTA`, `ERF`, `ERFC`, complex number functions (`IMSUM`, `IMPRODUCT`, etc.), and more.

***

## Functions not implemented

Some Excel functions are not available (e.g., `VLOOKUP`, `LAMBDA`, `LET`, `FILTER`, `XLOOKUP`, `INDIRECT`, `OFFSET`, `ADDRESS`, `FORMULATEXT`, `STOCKHISTORY`, and various Cube/Web/Add-in functions). Use Formula Pro custom functions or alternative approaches where needed.


# Automation Recipes Reference

Formula Pro provides **80+ automation recipes** that trigger formula execution, value projection, or cross-board operations based on board events.

***

## Use Case Examples

See how Formula Pro can help in real-world scenarios:

| Sample Use Case             | Recipe Type                        | What It Does                                                                        |
| --------------------------- | ---------------------------------- | ----------------------------------------------------------------------------------- |
| **Project budget tracking** | Column change → execute formula    | When costs change, automatically calculate total budget and update a summary column |
| **Due date automation**     | Column change → execute formula    | Add working days to a start date and project the due date to a Date column          |
| **Cross-board reporting**   | Mirror column / formula projection | Sync formula results to mirror columns on connected boards for real-time dashboards |
| **Subitem rollups**         | Subitem number change → parent     | Aggregate subitem costs (SUM, AVG) and project to parent item                       |
| **Status-based workflows**  | Status change → execute formula    | When status becomes "Done", calculate completion date or update related columns     |
| **Timeline propagation**    | Column change → execute formula    | Shift a timeline by N days and project to another Timeline column                   |
| **Item naming**             | Column change → item name          | Generate item names from formula (e.g., `#CODE-{Year}-{Sequence}`)                  |
| **Scheduled reports**       | Every time period                  | Run formulas on a schedule to refresh KPIs, totals, or summaries                    |
| **Copy to connected board** | Update created                     | When an update is posted, copy it to all connected items on a linked board          |
| **Duplicate & clean**       | Status/button → duplicate          | Duplicate items to another board and remove "(copy)" from names                     |
| **Subitem defaults**        | Subitem created + empty column     | When a subitem is created with an empty column, copy parent value or run formula    |
| **Conditional email/links** | Column change → execute formula    | Map status to email addresses or generate WhatsApp links from phone numbers         |

***

## Recipe Quick Reference

| Category              | Trigger Types                          |
| --------------------- | -------------------------------------- |
| Formula column        | Formula column change                  |
| Execute formula       | Column, any column, item name change   |
| Project formula value | Column change                          |
| Mirror column         | Mirror column change                   |
| Status change         | Status change (to/from)                |
| Scheduled             | Every time period                      |
| Copy & propagate      | Column change, update created          |
| Item create           | Item created                           |
| Subitem               | Subitem created, subitem column change |
| Group/board-wide      | Column change                          |
| Cross-board & mapping | Column, status, button                 |

***

## Recipe List by Category

### Formula Column Triggers

| Recipe                                                                                    | Target        | Scope                                                                                                                                                                                             |
| ----------------------------------------------------------------------------------------- | ------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| When formula column changes, project result to column **(all items on the board)**        | Column        | Full board — re-evaluates every item on the host board                                                                                                                                            |
| When formula column changes, project to column                                            | Column        | Scoped — updates only host item(s) linked to the changed dependency (see [ADR 0010](https://github.com/ifeanyidavid/formulapro/tree/main/docs/adr/0010-scoped-formula-column-change-triggers.md)) |
| When formula column changes, project to item name                                         | Item name     | Scoped — host item name(s) linked to the changed dependency                                                                                                                                       |
| When formula column changes, project result to item name **(all items on the board)**     | Item name     | Full board                                                                                                                                                                                        |
| When formula column changes, project to mirror column                                     | Mirror column | Scoped — mirror fan-out per linked host item only; *browser refresh for multi-level mirrors*                                                                                                      |
| When formula column changes, project result to mirror column **(all items on the board)** | Mirror column | Full board — same bulk URL with mirror column picker; *browser refresh for multi-level mirrors*                                                                                                   |

**Scoped vs full board:** Formula Pro listens to formula *dependency* column changes, not native formula-column events. When a dependency on a connected board changes, the scoped recipe resolves which host row(s) are linked and updates those only. The full-board recipe keeps the original behavior for automations that intentionally scan the entire host board.

***

### Column Change → Execute Formula

| Recipe                                                                                        | Target         | Notes                                     |
| --------------------------------------------------------------------------------------------- | -------------- | ----------------------------------------- |
| When column changes, execute formula and project the result to column                         | Column         |                                           |
| When column changes, execute formula and project the result to mirror column                  | Mirror column  | *Browser refresh for multi-level mirrors* |
| When column changes, execute formula and project the result to subitem column                 | Subitem column |                                           |
| When column changes, execute formula and project the result to item name                      | Item name      |                                           |
| When column changes, execute formula and project result to item name (all items on board)     | Item name      | Board-wide                                |
| When column changes, execute formula and project result to column (all items on board)        | Column         | Board-wide                                |
| When column changes, execute formula and project the result to item name (all items in group) | Item name      | Group scope                               |
| When any column changes, execute formula and project the result to column                     | Column         |                                           |
| When any column changes, execute formula and project the result to the item name              | Item name      |                                           |
| When any column changes, execute formula and project the result to mirror column              | Mirror column  | *Browser refresh for multi-level mirrors* |
| When item name changes, execute formula and project the result to column                      | Column         |                                           |

***

### Column Change → Project Formula Column Value

| Recipe                                                                                                                                         | Target         | Notes                                         |
| ---------------------------------------------------------------------------------------------------------------------------------------------- | -------------- | --------------------------------------------- |
| When column changes retrieve the calculated value of formula column \[parent item] and project the result to column                            | Column         | Parent context                                |
| When column changes, retrieve the calculated value of formula column and project the result to the mirror column                               | Mirror column  | *Browser refresh for multi-level mirrors*     |
| When column changes, retrieve the calculated value of formula column and project the result to item name                                       | Item name      |                                               |
| When column changes, retrieve the calculated value of formula column and project the result to item name (all items on board)                  | Item name      | Board-wide                                    |
| When column changes, retrieve the calculated value of formula column and project the result to column (all items on board)                     | Column         | Board-wide                                    |
| When column changes, retrieve the calculated value of formula column and project the result to subitem column (all subitems on board)          | Subitem column | Board-wide                                    |
| When column changes, retrieve the calculated value of formula column and project the result to subitem column (all subitems belonging to item) | Subitem column | Per item                                      |
| When column changes retrieve the calculated value of formula column and project result to column (all items in group)                          | Column         | Group scope                                   |
| When column changes retrieve the calculated value of subitem formula column and project result to column \[parent item]                        | Parent column  | Subitem → parent                              |
| When column changes retrieve the calculated value of subitem formula column \[subitem] and project result to subitem column                    | Subitem column | Subitem → subitem                             |
| When column changes, build timeline column from start formula column and end formula column                                                    | Timeline       | Two formula columns → `YYYY-MM-DD+YYYY-MM-DD` |

***

### Mirror Column Triggers

| Recipe                                                                                                                            | Target        | Notes                                     |
| --------------------------------------------------------------------------------------------------------------------------------- | ------------- | ----------------------------------------- |
| When mirror column changes execute formula and project result to column linked with connect board                                 | Column        | Connect board                             |
| When mirror column changes retrieve the calculated value of formula column and project result to column linked with connect board | Column        | Connect board                             |
| When mirror column changes execute formula and project result column (subitem mirror column rollup)                               | Column        | Subitem rollup                            |
| When mirror column changes project mirror column value to target column linked with connect board                                 | Column        | Connect board                             |
| When mirror column changes project source mirror column values to target mirror column linked with connect board                  | Mirror column | *Browser refresh for multi-level mirrors* |
| When mirror column status on connected board changes to something duplicate item and remove (copy) suffix from item name          | Item name     | On current board                          |

***

### Status Change Recipes

| Recipe                                                                                                                  | Target         | Notes                                     |
| ----------------------------------------------------------------------------------------------------------------------- | -------------- | ----------------------------------------- |
| When status changes to something execute formula and project result to mirror column                                    | Mirror column  | *Browser refresh for multi-level mirrors* |
| When status changes to something, execute formula and project the result to subitem column                              | Subitem column |                                           |
| When status changes to something, execute formula and project the result to column                                      | Column         |                                           |
| When status changes to something, execute formula and project the result to item name                                   | Item name      |                                           |
| When status changes to something retrieve the calculated value of formula column and project the result to column       | Column         |                                           |
| When status changes to something retrieve the calculated value of formula column and project the result to item name    | Item name      |                                           |
| When status changes to something project mirror column value to target column                                           | Column         |                                           |
| When status changes to something project this column value to mirror column                                             | Mirror column  | *Browser refresh for multi-level mirrors* |
| When status changes to something copy all updates to all connected items on connect board                               | Updates        | *Detect loops in 2-way connections*       |
| When status changes to something duplicate item and remove (copy) suffix from item name                                 | Item name      | Supports subitems                         |
| When status changes to something, copy item with subitems and updates to board according to item mapping                | Board          | Remove copy prefix                        |
| When status changes project this column value to mirror column                                                          | Mirror column  | *Browser refresh for multi-level mirrors* |
| When status changes project source mirror column values to target mirror column                                         | Mirror column  | *Browser refresh for multi-level mirrors* |
| When status changes from something to something, execute formula and project the result to item name                    | Item name      |                                           |
| When status changes from something to something duplicate item and remove (copy) suffix from item name                  | Item name      | Supports subitems                         |
| When status changes from something to something, copy item with subitems and updates to board according to item mapping | Board          | Remove prefix                             |

***

### Scheduled Recipes

| Recipe                                                                                                                              | Target         | Notes      |
| ----------------------------------------------------------------------------------------------------------------------------------- | -------------- | ---------- |
| Every time period, retrieve the calculated value of formula column and project the result to subitem column                         | Subitem column |            |
| Every time period, retrieve the calculated value of formula column and project the result to subitem column (all subitems on board) | Subitem column | Board-wide |
| Every time period, retrieve the calculated value of formula column and project the result to item name (all items on board)         | Item name      | Board-wide |
| Every time period, execute formula and project result to item name (all items on board)                                             | Item name      | Board-wide |
| Every time period, execute formula and project result to column (all items on board)                                                | Column         | Board-wide |
| Every time period, retrieve the calculated value of formula column and project the result to column (all items on board)            | Column         | Board-wide |

***

### Copy & Value Propagation

| Recipe                                                                          | Target         | Notes                                     |
| ------------------------------------------------------------------------------- | -------------- | ----------------------------------------- |
| When column changes, copy the new value to column                               | Column         |                                           |
| When column changes, copy the new value to subitem column                       | Subitem column |                                           |
| When column changes project this column value to mirror column                  | Mirror column  | *Browser refresh for multi-level mirrors* |
| When column changes project mirror column value to target column                | Column         |                                           |
| When column changes project source mirror column values to target mirror column | Mirror column  | *Browser refresh for multi-level mirrors* |
| When an update is created, copy it to all connected items in connected board    | Updates        | *Detect loops in 2-way connections*       |

***

### Item Create Recipes

| Recipe                                                                                                                         | Target    |
| ------------------------------------------------------------------------------------------------------------------------------ | --------- |
| When an item is created copy column to another column                                                                          | Column    |
| When an item is created, retrieve the calculated value of formula column and project the result to column (all items on board) | Column    |
| When an item is created, execute formula and project the result to column                                                      | Column    |
| When an item is created project mirror column value to target column                                                           | Column    |
| When item is created, copy column value to item name                                                                           | Item name |

***

### Subitem Recipes

| Recipe                                                                                                                                                         | Target           | Notes                                                                      |
| -------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------- | -------------------------------------------------------------------------- |
| When a subitem is created, execute a formula and project the result to subitem column (all subitems belonging to item)                                         | Subitem column   |                                                                            |
| When a subitem is created, copy column to subitem column                                                                                                       | Subitem column   |                                                                            |
| When a subitem is created execute a formula and project result to subitem column (same subitem)                                                                | Subitem column   | Same subitem                                                               |
| When a subitem is created, retrieve the calculated value of formula column and project result to column (subitem trigger)                                      | Column           |                                                                            |
| When a subitem is created, retrieve the calculated value of formula column \[parent] and project result to item name \[parent]                                 | Parent item name | Subitem trigger                                                            |
| When a subitem is created remove (copy) suffix from item name                                                                                                  | Item name        |                                                                            |
| When a subitem is created and subitem column value is empty, copy parent item column value to subitem target column                                            | Subitem column   | Default from parent                                                        |
| When a subitem is created and subitem column is empty, execute formula and project result to target column                                                     | Subitem column   | Default from formula                                                       |
| When a subitem is created and subitem column is empty, retrieve the calculated value of parent item formula column and project result to subitem target column | Subitem column   | Default from parent formula                                                |
| When a subitem is created retrieve the calculated value of parent item formula column and project result to subitem target column                              | Subitem column   |                                                                            |
| When a subitem is created assign creator as person                                                                                                             | People column    |                                                                            |
| When subitem column changes, copy subitem mirror column values to target subitem column                                                                        | Subitem column   |                                                                            |
| When subitem column changes copy new subitem value to subitem column (same subitem)                                                                            | Subitem column   | Same subitem                                                               |
| When subitem column changes, retrieve the calculated value of subitem formula column and project result to column \[parent item]                               | Parent column    | Subitem → parent                                                           |
| When subitem status changes, project subitem mirror column value to subitem column                                                                             | Subitem column   |                                                                            |
| When subitems number column changes aggregate all values in column by operation and project to parent item column                                              | Parent column    | SUM, AVG, etc.                                                             |
| When subitems mirror column value linked by connect column changes, project parent item mirror column value to parent item column                              | Parent column    |                                                                            |
| When subitems mirror column value linked by connect column changes, project subitem mirror column value to subitem column                                      | Subitem column   |                                                                            |
| When subitem connect column changes, copy the new result to subitem column                                                                                     | Subitem column   | Connect display copy; same subitem; also fires on linked-board item rename |

***

### Group & Board-Wide Recipes

| Recipe                                                                                                                          | Target        |
| ------------------------------------------------------------------------------------------------------------------------------- | ------------- |
| When column changes perform calculation on number column for all items in group and project the result to number column in item | Number column |
| When any column changes, execute formula and project result to item name (all items in group)                                   | Item name     |

***

### Cross-Board & Item Mapping

| Recipe                                                                                                                                | Trigger       | Notes |
| ------------------------------------------------------------------------------------------------------------------------------------- | ------------- | ----- |
| When column changes, create item in board and copy all updates and subitems to new item with item mapping                             | Column change |       |
| When button clicked, create item in board and copy all updates and subitems to new item with item mapping                             | Button click  |       |
| When status changes from something to something, create item in board and copy all updates and subitems to new item with item mapping | Status change |       |
| When status changes to something, create item in board and copy all updates and subitems to new item with item mapping                | Status change |       |
| When column changes duplicate item and remove (copy) suffix from item name (supports subitems)                                        | Column change |       |
| When an item is created remove (copy) suffix from item name                                                                           | Item created  |       |
| When button clicked duplicate item and remove (copy) suffix from item name (supports subitems)                                        | Button click  |       |
| When button clicked, copy item with subitems and updates to board according to item mapping (remove copy prefix)                      | Button click  |       |
| When column changes, copy item with subitems and updates to board according to item mapping (remove copy prefix)                      | Column change |       |

***

## Configuration Options

Each recipe typically requires:

| Option                 | Description                                                    |
| ---------------------- | -------------------------------------------------------------- |
| **Trigger column**     | The column that triggers the automation when it changes        |
| **Formula**            | The formula expression to evaluate (if applicable)             |
| **Formula column**     | Existing formula column whose value to project (if applicable) |
| **Destination column** | Where to write the result                                      |
| **Board/Group scope**  | Single item, all items in group, or all items on board         |

***

## Notes

### Multi-Level Mirror Relationships

Several recipes note that a **browser refresh may be needed to see results for multi-level mirror relationships**. This is due to how monday.com propagates mirror column updates across connected boards. For single-level mirror connections, results typically appear immediately.

### Two-Way Connections

Recipes that copy updates or items to connected boards **detect loops in 2-way connections** to prevent infinite propagation.


# Recipe Examples

Real-world formula examples from Formula Pro recipes, with explanations and expected results. Inspired by common workflows from the [monday.com Community Forum](https://community.monday.com/) and real automation needs.

***

## monday.com-Specific Use Cases

### Tracking Delayed or Pushed-Out Items

**Recipe:** When column changes, execute formula and project the result to column (Status or Text)

**Use case:** Automatically flag items as "Delayed" when the Current Due Date is pushed past the Baseline Due Date. Native monday.com automations can't update status based on comparing two date columns — Formula Pro solves this.

**Formula:**

```
IF(DATEVALUE({item's Current Due Date}) > DATEVALUE({item's Baseline Due Date}), "Delayed", "On Track")
```

**Explanation:** Compares Current Due Date to Baseline Due Date. If current is later, outputs "Delayed"; otherwise "On Track". Project to a Status or Text column. Pair with a "When column changes" trigger on either date column.

**Example:** Baseline = "2025-02-05", Current = "2025-02-12" → Result: `"Delayed"`

***

### Copy Parent Item Name to Subitem Column

**Recipe:** When column changes, retrieve the calculated value of formula column \[parent item] and project the result to subitem column

**Use case:** Duplicate the parent item's project name (or any text) into a subitem-level column. Native monday.com doesn't support copying parent TEXT columns to subitems via automation — Formula Pro enables this.

**Setup:** Create a formula column on the parent that references the item name or source text. Use the "project formula column to subitem" recipe so when the parent changes, all subitems get the value.

**Alternative:** Use "When column changes, execute formula and project the result to subitem column" with a formula that pulls the parent's value (if your recipe supports parent context).

***

### CRM: Close Probability → Star Rating

**Recipe:** When column changes, execute formula and project the result to column (Rating/Stars)

**Use case:** Map a "Close Probability" percentage to a "Top Project" star rating for monday CRM. Common request for sales pipelines.

**Formula:**

```
SWITCH(TRUE,
  {item's Close Probability} >= 80, "5",
  {item's Close Probability} >= 60, "4",
  {item's Close Probability} >= 40, "3",
  {item's Close Probability} >= 20, "2",
  "1"
)
```

**Explanation:** Maps percentage ranges to star displays. Adjust thresholds to match your pipeline stages.

***

### Flag Items Not Updated in X Days

**Recipe:** Scheduled — Every day (or time period), execute formula and project the result to column

**Use case:** Identify stale items for follow-up. Community users often need "notification when item hasn't been updated in X days" — Formula Pro can compute days since last activity and project to a column for filtering or automation.

**Formula:** (Assumes an "Last Updated" Date column; adjust if using different source)

```
IF(TODAY() - DATEVALUE({item's Last Updated}) > 7, "Needs attention", "")
```

**Explanation:** If more than 7 days since last update, outputs "Needs attention". Use a scheduled recipe to run daily. Pair with board filters or notifications on that column.

***

### Budget & Line Item Totals

**Recipe:** When column changes, execute formula and project the result to column

**Use case:** Project budget tracking — when Price and Quantity change, automatically calculate line total and roll up to parent or summary column.

**Formula:**

```
{item's Price} * {item's Quantity}
```

**Explanation:** Simple price × quantity. For subitem rollups, use "When column changes, retrieve the calculated value of subitem formula column and project result to parent column" with SUM across subitems.

***

### Auto-Generate Item Codes

**Recipe:** When column changes, execute formula and project the result to item name

**Use case:** Generate consistent item names like `#PROJ-2025-001` or `TASK-{Status}-{Date}` for traceability and reporting.

**Formula:**

```
CONCATENATE("#", {item's Project Code}, "-", TEXT(TODAY(), "YYYY"), "-", TEXT({item's Sequence}, "000"))
```

**Explanation:** Builds `#PROJ-2025-001` from Project Code and Sequence columns. Adjust format to your needs.

***

### Portfolio Reports: Subitem Rollup to Parent

**Recipe:** When column changes, retrieve the calculated value of subitem formula column and project result to column \[parent item]

**Use case:** Portfolio or project boards where parent items need aggregated subitem data (e.g., total hours, total cost, count of completed tasks). Common in [portfolio reporting with subitems](https://community.monday.com/t/portfolio-reports-trick-using-sub-items/115657).

**Setup:** Subitems have a formula (e.g., Hours × Rate). Use the subitem→parent projection recipe so the parent gets the sum or selected value when subitems change.

***

### Cross-Board Reporting & Mirror Columns

**Recipe:** When column changes, execute formula and project the result to mirror column

**Use case:** Sync calculated values to connected boards for real-time dashboards. A common [community request](https://community.monday.com/t/copy-formula-result-to-other-columns-and-trigger-automations/117488) is to copy formula results to other columns and trigger automations — Formula Pro does both: project formula output to mirror columns on connected boards, and the projected value can drive downstream automations.

**Setup:** Source board has a formula column. Use the "project to mirror column" recipe so the result flows to the connected board's mirror column. Refresh the browser for multi-level mirrors.

***

### Build Timeline from Two Formula Columns

**Recipe:** When column changes, build timeline column from start formula column and end formula column

**Use case:** You maintain separate formula columns for a start date and an end date (for example, contract start and renewal). When either changes, Formula Pro reads both calculated values and writes a Timeline column in monday.com format.

**Setup:** Create two formula columns that each output `YYYY-MM-DD` (for example using `TEXT({Date}, "YYYY-MM-DD")`). Choose one as the start column and one as the end column, then select your destination Timeline column. Formula Pro concatenates them as `start+end` — for example `2026-06-01+2026-06-30`.

***

## Technical Formula Examples

### Due-Date Automation: Project Working-Day Offsets

**Recipe:** When column changes, execute formula and project the result to column

**Use case:** Set a due date based on working-day offsets (e.g., add 5 business days).

**Formula:**

```
TEXT(WORKDAY(DATEVALUE({item's Date}), {item's Number}), "YYYY-MM-DD")
```

**Explanation:**

* `DATEVALUE({item's Date})` — Parse the date string into a date object
* `WORKDAY(start, days)` — Add N business days (Mon–Fri), skipping weekends
* `TEXT(date, "YYYY-MM-DD")` — Format as ISO date for monday.com Date column

**Example:** Date = "2025-03-09", Number = 5 → Result: `"2025-03-16"` (5 weekdays later)

***

### Timeline Shift: Add 14-Day Offset

**Recipe:** When column changes, execute formula and project the result to column (Timeline column)

**Formula:**

```
CONCATENATE(
  TEXT(DATEVALUE({item's Date})+7, "YYYY-MM-DD"),
  "+",
  TEXT(DATEVALUE({item's Date})+21, "YYYY-MM-DD")
)
```

**Explanation:** Creates a timeline 7 days after start and 21 days after start (14-day span). Adjust the `+7` and `+21` for different offsets.

**For existing Timeline column:**

```
CONCATENATE(
  TEXT(DATEVALUE(LEFT({item's Timeline}, 10)) + 14, "YYYY-MM-DD"),
  "+",
  TEXT(DATEVALUE(RIGHT({item's Timeline}, 10)) + 14, "YYYY-MM-DD")
)
```

***

### Work-Hour Calculator: Business-Hour Difference

**Recipe:** When column changes, execute formula and project the result to column

**Use case:** Calculate working hours between two datetime columns (e.g., 9 AM–6 PM business hours).

**Formula:** (Simplified; full formula uses NETWORKDAYS, TIMEVALUE, MEDIAN for partial-day handling)

```
((NETWORKDAYS(DATEVALUE({item's From DateTime}), DATEVALUE({item's To DateTime})) - 1) * (TIMEVALUE("18:00") - TIMEVALUE("09:00")) + ...) * 24
```

**Result:** Number of business hours between From and To datetimes.

***

### Location Extractor: Pull Address from Map Column

**Recipe:** When column changes, execute formula and project the result to column

**Formula:**

```
RIGHT({item's Location}, LEN({item's Location}) - FIND(":", {item's Location}, FIND(":", {item's Location}) + 1))
```

**Explanation:** Extracts the address portion after the second colon in monday.com Location column format.

***

### WhatsApp Link Generator

**Recipe:** When column changes, execute formula and project the result to column (Link column)

**Formula:**

```
CONCATENATE("http://wa.me/", LEFT({item's Phone}, FIND(":", {item's Phone}) - 1), ":WhatsApp")
```

**Explanation:** Builds `http://wa.me/PHONENUMBER:WhatsApp` from a phone column. Assumes format `PHONENUMBER:Label`.

**Result:** `http://wa.me/15551234567:WhatsApp`

***

### Conditionally Project Email Based on Status

**Recipe:** When column changes, execute formula and project the result to column (Email column)

**Formula:**

```
SWITCH({item's Status}, "Tim", "tim@apple.com:Tim Apple", "Jeff", "jeff@amazon.com:Jeff Amazon", "")
```

**Explanation:** Maps status values to email addresses. monday.com Email column format: `email:Display Name`.

**Result:** Status "Tim" → `tim@apple.com:Tim Apple`; "Jeff" → `jeff@amazon.com:Jeff Amazon`; else empty.

***

### Timeline Propagation: Sync Shifted Timelines

**Recipe:** When column changes, execute formula and project the result to column

**Formula:**

```
CONCATENATE(
  TEXT(DATEVALUE(LEFT({item's Timeline}, 10)) + 14, "YYYY-MM-DD"),
  "+",
  TEXT(DATEVALUE(RIGHT({item's Timeline}, 10)) + 14, "YYYY-MM-DD")
)
```

**Result:** New timeline with start and end dates shifted by 14 days.

***

### Workday Count From Timeline

**Recipe:** When column changes, execute formula and project the result to column (Number column)

**Formula:**

```
NETWORKDAYS(DATEVALUE(LEFT({item's Timeline}, 10)), DATEVALUE(RIGHT({item's Timeline}, 10)))
```

**Result:** Number of working days between timeline start and end.

***

### Project Formula Column to Parent Item

**Recipe:** When subitem is created (or formula column changes), project formula column result to parent item column

**Use case:** Subitem has a formula column; parent needs the aggregated or selected result.

Configure: Source = subitem formula column, Destination = parent text/number column.

***

### Project From Subitem Formula to Parent

**Recipe:** Project formula column in subitem to text column in parent item

Same concept as above — use the "Project formula column to parent" recipe and select the subitem formula column and parent destination column.


# Pricing Plans

Formula Pro offers several plans to match your automation needs. Operations reset each billing period (monthly for Free, monthly or annually for paid plans depending on your subscription).

## Plans Overview

| Plan         | Monthly | Annual | Operations per period | Best for                             |
| ------------ | ------- | ------ | --------------------- | ------------------------------------ |
| **Free**     | $0      | $0     | 120                   | Trying Formula Pro, light automation |
| **Lite**     | $9      | $7     | 250                   | Small teams, moderate usage          |
| **Starter**  | $19     | $15    | 2,500                 | Growing teams, regular automations   |
| **Basic**    | $45     | $39    | 5,000                 | Active users, multiple boards        |
| **Growth**   | $79     | $65    | 25,000                | Larger teams, heavy automation       |
| **Advanced** | $129    | $109   | 75,000                | Enterprise-scale usage               |

> **Note:** Paid plan monthly and annual prices are set by monday.com. Visit the [marketplace listing](#learn-more) below for current pricing.

## Learn More

For current pricing, billing details, and to subscribe or upgrade, visit the Formula Pro listing on the monday.com Marketplace:

[**Formula Pro Automations — Pricing**](https://monday.com/marketplace/listing/10000685/formula-pro-automations#pricing)

You can upgrade at any time from within the Formula Pro app by clicking the **Upgrade** button, or from Integrations → Formula PRO Automation → Settings.


# Column Reference Syntax

Formula Pro supports reading values from all standard monday.com columns.

## In Formulas

When writing formulas in Formula Pro automations, you reference columns using placeholders. The exact syntax depends on the integration context:

### `{item's ColumnName}`

In documentation and recipe builders, columns are often shown as:

```
{item's Status}
{item's Date}
{item's Number}
{item's Timeline}
{item's Assignee}
```

Replace `ColumnName` with your actual column title.

### Literal Prefixes

When a literal character precedes a placeholder (e.g., `#` before a code), use concatenation:

```
CONCATENATE("#", {item's Code})
```

## Column Types and Formats

| Column Type | Format / Notes                                                                                                                                                                                                                                                                                                      |
| ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Text        | Plain string                                                                                                                                                                                                                                                                                                        |
| Numbers     | Numeric value; use in math directly                                                                                                                                                                                                                                                                                 |
| Date        | `YYYY-MM-DD` or datetime `YYYY-MM-DD HH:mm:ss`                                                                                                                                                                                                                                                                      |
| Timeline    | `YYYY-MM-DD+YYYY-MM-DD` (start+end)                                                                                                                                                                                                                                                                                 |
| Status      | Status label (e.g., "Done", "In Progress")                                                                                                                                                                                                                                                                          |
| People      | User ID or display format depending on context                                                                                                                                                                                                                                                                      |
| Location    | May include `lat:lng:address` format                                                                                                                                                                                                                                                                                |
| Email       | `email:Display Name` for link columns                                                                                                                                                                                                                                                                               |
| Link        | `url:Label` or plain URL; any absolute URL with a scheme (http, https, file, mailto, tel, ftp, etc.) except blocked schemes (`javascript:`, `data:`, `vbscript:`). monday.com link columns officially render http/https as clickable links; other schemes are written best-effort and may not open in the board UI. |

## Common Patterns

### Extracting parts of Timeline

```
LEFT({item's Timeline}, 10)   → Start date
RIGHT({item's Timeline}, 10)  → End date
START({item's Timeline})      → Start (Formula Pro)
END({item's Timeline})        → End (Formula Pro)
```

### Date formatting

```
TEXT(DATEVALUE({item's Date}), "YYYY-MM-DD")
FORMAT_DATE({item's Date}, "MMM DD, YYYY")
```

### Conditional with column value

```
IF({item's Status} = "Done", "Complete", "Pending")
SWITCH({item's Priority}, 1, "High", 2, "Medium", "Low")
```


# Supported Column Types

Formula Pro supports the following column types as **trigger** and **destination** columns, unless otherwise noted.

## Supported Columns

| Column Type       | Trigger | Destination | Notes                                               |
| ----------------- | ------- | ----------- | --------------------------------------------------- |
| **People**        | ✅       | ✅           |                                                     |
| **Formula**       | ✅       | ❌           | Read only — use as trigger or source for projection |
| **Status**        | ✅       | ✅           |                                                     |
| **Date**          | ✅       | ✅           |                                                     |
| **Phone**         | ✅       | ✅           |                                                     |
| **Text**          | ✅       | ✅           |                                                     |
| **Checkbox**      | ✅       | ✅           |                                                     |
| **Numbers**       | ✅       | ✅           |                                                     |
| **Country**       | ✅       | ✅           |                                                     |
| **Dropdown**      | ✅       | ✅           |                                                     |
| **Email**         | ✅       | ✅           |                                                     |
| **File**          | ✅       | ❌           | Read only                                           |
| **Hour**          | ✅       | ✅           |                                                     |
| **Link**          | ✅       | ✅           | Format: `url:Label`                                 |
| **Location**      | ✅       | ✅           |                                                     |
| **Long Text**     | ✅       | ✅           |                                                     |
| **Rating**        | ✅       | ✅           |                                                     |
| **Tags**          | ✅       | ✅           |                                                     |
| **Time Tracking** | ✅       | ❌           | Read only                                           |
| **Timeline**      | ✅       | ✅           | Format: `YYYY-MM-DD+YYYY-MM-DD`                     |
| **Week**          | ✅       | ✅           |                                                     |
| **World Clock**   | ✅       | ✅           |                                                     |
| **Item Name**     | ✅       | ✅           |                                                     |
| **Group**         | ✅       | ❌           | Read only                                           |
| **Last Updated**  | ✅       | ❌           | Read only                                           |
| **Item ID**       | ✅       | ❌           | Read only                                           |
| **Mirror**        | ✅       | ✅           |                                                     |
| **Color**         | ✅       | ✅           |                                                     |

## Format Requirements for Destination Columns

| Column Type       | Expected Format                            |
| ----------------- | ------------------------------------------ |
| Date              | `YYYY-MM-DD`                               |
| Timeline          | `YYYY-MM-DD+YYYY-MM-DD` (start+end)        |
| Status / Dropdown | Exact label string matching column options |
| Email             | `email:Display Name`                       |
| Link              | `url:Label`                                |
| Checkbox          | `"true"` / `"false"` or boolean            |

## Read-Only Columns

These columns can be used as **triggers** or **sources** but not as **destinations**:

* Formula
* File
* Time Tracking
* Group
* Last Updated
* Item ID


# Common Errors and Troubleshooting

This guide covers the most common errors you may encounter when using Formula Pro, with explanations and steps to resolve them.

***

## Formula Errors

These errors appear when a formula fails to evaluate correctly.

### #NULL!

**Meaning:** The formula refers to an empty intersection between two ranges.

**Possible causes:**

* Incorrect range references
* Column references that don't overlap as expected

**Resolution:**

* Check that your column references are correct
* Verify the referenced columns exist and contain data where expected
* For lookup-style formulas, ensure the ranges are properly defined

***

### #DIV/0!

**Meaning:** The formula is trying to divide by zero.

**Possible causes:**

* A divisor column is empty or zero
* A calculation produces zero before division

**Resolution:**

* Use `IF` or `IFERROR` to guard against division by zero, e.g.:

  ```
  IF({item's Divisor} = 0, 0, {item's Numerator} / {item's Divisor})
  ```
* Or: `IFERROR(DIVIDE({item's Numerator}, {item's Divisor}), 0)`
* Ensure the divisor column has valid values before the formula runs

***

### #VALUE!

**Meaning:** A value in the formula is the wrong type — for example, text was used where a number was expected.

**Possible causes:**

* Passing text to a function that expects a number (e.g., `SUM`, `DATEVALUE`)
* Passing a number to a function that expects text
* Invalid date or time format
* Result format doesn't match the destination column type (e.g., projecting text to a Number column)

**Resolution:**

* Use `VALUE()` to convert text to numbers where needed
* Use `TEXT()` or `CONCATENATE()` for string output
* For dates, use `DATEVALUE()` or ensure `YYYY-MM-DD` format
* Check that the formula output matches the destination column type (see [Supported Column Types](/formula-pro/appendix/column-types))

***

### #REF!

**Meaning:** The formula references a column that no longer exists or is unavailable.

**Possible causes:**

* A column was deleted or renamed after the automation was set up
* The column ID in the recipe no longer exists
* Wrong board or item context

**Resolution:**

* Open your automation settings and reselect the trigger and destination columns
* Verify the board and columns still exist and you have access
* Re-save the recipe to refresh column references

***

### #NAME?

**Meaning:** The formula contains an unrecognized function name.

**Possible causes:**

* Typo in function name (e.g., `CONCATENAT` instead of `CONCATENATE`)
* Function not supported in Formula Pro
* Incorrect spelling or casing (function names are case-insensitive, but must be spelled correctly)

**Resolution:**

* Check the [Formula Pro Custom Functions](https://github.com/ifeanyidavid/formulapro/blob/main/docs/appendix/reference/custom-functions-overview.md) and [Excel Functions](https://github.com/ifeanyidavid/formulapro/blob/main/docs/appendix/reference/excel-functions.md) for valid names
* Fix any typos in function names
* Ensure you're not using Excel functions that are not implemented (e.g., `LAMBDA`, `FILTER`, `XLOOKUP`)

***

### #NUM!

**Meaning:** The formula produced a number that is too large, too small, or otherwise invalid.

**Possible causes:**

* Overflow (e.g., very large exponentiation)
* Invalid input to math functions (e.g., negative number to `SQRT`)
* Result outside valid range for the column type

**Resolution:**

* Add bounds checking with `IF` or `MIN`/`MAX`
* Validate inputs before passing to functions like `SQRT`, `LN`, `LOG`
* Use `IFERROR` to provide a fallback value

***

### #N/A

**Meaning:** A required value was not found. Often means a lookup returned no match.

**Possible causes:**

* `VLOOKUP`, `MATCH`, or similar function found no matching value
* Referenced column is empty
* Lookup range doesn't contain the search value

**Resolution:**

* Use `IFNA` or `IFERROR` to handle no-match cases, e.g.:

  ```
  IFNA(VLOOKUP(...), "Not found")
  ```
* Verify the lookup value exists in the source range
* Check for extra spaces or formatting differences

***

### #ERROR!

**Meaning:** The formula could not be evaluated. Generic syntax or evaluation failure.

**Possible causes:**

* Syntax error (missing parenthesis, invalid operator)
* Invalid expression structure
* Unsupported or malformed formula

**Resolution:**

* Check for matching parentheses and brackets
* Verify all function arguments are correctly separated by commas
* Simplify the formula and test in parts
* See "Formula evaluation errors" below for more specific cases

***

### #GETTING\_DATA

**Meaning:** Data is still loading for one or more columns used in the formula.

**Resolution:**

* Wait a moment and try again
* If it persists, check that the trigger column and any referenced columns are loading correctly
* Verify board and column access

***

## Formula Evaluation Errors

These are classified evaluation errors with more specific messages.

### Formula syntax error

**Meaning:** The formula has invalid syntax — unexpected operator, token, character, or missing parenthesis.

**Resolution:**

* Check for unmatched `(` and `)`
* Ensure operators (+, -, \*, /) are used correctly
* Verify string literals are properly quoted with `"..."` or `'...'`
* Remove any invalid characters or extra commas

***

### Unknown column or variable

**Meaning:** The formula references a column or variable that is not defined in the current context.

**Resolution:**

* Verify column names match exactly (including spaces)
* Ensure you've selected the correct columns in the recipe configuration
* For mirror/subitem recipes, confirm the column exists in the expected board context

***

### Wrong number of arguments

**Meaning:** A function was called with too many or too few arguments.

**Resolution:**

* Check the function's signature in the [function reference](https://github.com/ifeanyidavid/formulapro/blob/main/docs/appendix/reference/custom-functions-overview.md)
* Ensure required arguments are provided
* Remove extra commas or add missing arguments

***

### Formula math error

**Meaning:** A mathematical operation failed (overflow, out of range, infinite result).

**Resolution:**

* Avoid operations that can overflow (e.g., very large exponents)
* Use `IFERROR` to catch and handle these cases
* Validate inputs before passing to math functions

***

## Field and Column Errors

### Board not found

**Meaning:** The board could not be found.

**Resolution:**

* Verify the board ID exists and you have access
* Check that the board wasn't archived or deleted
* Reconnect the integration if board access has changed

***

### Column not found

**Meaning:** The destination (or source) column could not be found.

**Resolution:**

* Open automation settings and reselect the column
* Confirm the column exists on the board and hasn't been deleted or renamed
* For mirror columns, ensure the linked board and column are correctly configured

***

### Column type not supported

**Meaning:** The selected column type is not supported for this operation.

**Resolution:**

* Choose a compatible column type (see [Supported Column Types](/formula-pro/appendix/column-types))
* For some recipes, only certain column types (e.g., Text, Numbers, Date, Status) are supported
* Use a different recipe or column if needed

***

### Invalid column value

**Meaning:** The value could not be saved to the destination column because it is incompatible with the column type.

**Resolution:**

* Ensure the formula output matches the destination column format:
  * **Status:** Exact status label
  * **Date:** `YYYY-MM-DD`
  * **Timeline:** `YYYY-MM-DD+YYYY-MM-DD`
  * **Email:** `email:Display Name`
  * **Link:** `url:Label`
* Use `TEXT()`, `FORMAT_DATE()`, or similar to format the output correctly

***

### Invalid value — label does not exist

**Meaning:** You're trying to set a Status or Dropdown value that doesn't exist in the column's options.

**Resolution:**

* Use `SWITCH` or `IF` to map your logic only to existing labels
* Add the label to the column's options in monday.com, or
* Change the formula to output a label that already exists

***

### Missing permission

**Meaning:** You do not have permission to update this board or column.

**Resolution:**

* Check your monday.com board and column permissions
* Ensure the Formula Pro app has the required scopes (usually granted during installation)
* Ask a board admin to grant you edit access

***

## Account and Subscription Errors

### No app subscription found

**Meaning:** No active Formula Pro subscription was found for your account.

**Resolution:**

* Subscribe to Formula Pro from the monday.com marketplace or app settings
* Verify your subscription is active and not expired
* Contact support if you believe you have an active subscription

***

### Operation limit exceeded

**Meaning:** You've reached the operation limit for your current plan.

**Resolution:**

* Upgrade your Formula Pro plan for more operations
* Reduce the number or frequency of automations
* Check your usage in the app settings

***

### Authorization failed

**Meaning:** The connection to monday.com has expired or is invalid.

**Resolution:**

* Go to Integrations → Formula PRO Automation → Settings
* Disconnect and reconnect your monday.com account
* Grant all requested permissions when reconnecting

***

## monday.com API Errors

### API temporarily blocked

**Meaning:** monday.com has temporarily rate-limited or blocked the request.

**Resolution:**

* Wait a few minutes and try again
* Reduce automation frequency if you have many recipes
* Contact support if this persists

***

### Resource not found

**Meaning:** The requested item, group, or board could not be found.

**Resolution:**

* Verify the item, group, or board ID exists
* Check that you have access to the resource
* Re-save your automation to refresh IDs

***

### Item name too long

**Meaning:** The item name exceeds monday.com's limit (typically 1–255 characters).

**Resolution:**

* Shorten the formula output used for the item name
* Use `LEFT()` or `MID()` to truncate if needed
* Ensure the formula doesn't produce unexpectedly long strings

***

## Setup and Configuration Errors

### No access token found

**Meaning:** The app cannot authenticate with monday.com.

**Resolution:**

* Reconnect your account in the Formula Pro settings
* Clear browser cache and try again
* Reinstall the app if the issue persists

***

### No subitem board found

**Meaning:** The board does not have subitems enabled, but the recipe requires them.

**Resolution:**

* Enable subitems on the board in monday.com
* Or choose a different recipe that doesn't require subitems

***

### No formula column ID found

**Meaning:** The formula column trigger could not find a valid formula column.

**Resolution:**

* Ensure the board has a formula column
* Reselect the formula column in the recipe configuration
* Use "When column changes, execute formula" instead of "project formula column" if the setup fails

***

### No supported columns for webhook / formula column trigger

**Meaning:** Formula Pro does not support formula columns or groups as dependencies for certain triggers.

**Resolution:**

* Use the recipe **"When column changes, project result of calculated formula to column"** (or its variations) instead
* Ensure the formula column references supported column types (not other formula columns or groups)

***

### No relation column found for mirror column

**Meaning:** The mirror column is not properly configured with a linked board and column.

**Resolution:**

* Configure the mirror column in monday.com with a linked board and column
* Ensure the relation is set up before adding the automation

***

## Contact Support

If you've tried the resolutions above and the issue persists, we're here to help.

### Email

**<hello@shadebridge.com>**

When contacting support, please include:

* A brief description of the issue
* The recipe type and configuration (without sensitive data)
* The exact error message you see
* Steps to reproduce, if possible
* Your monday.com account email (if relevant)

### What to expect

* We typically respond within 1–2 business days
* For urgent issues (e.g., production outages), mention "Urgent" in the subject line
* We may ask for additional details or screenshots to diagnose the problem

### Self-service

* Review the [Formula Pro Custom Functions](https://github.com/ifeanyidavid/formulapro/blob/main/docs/appendix/reference/custom-functions-overview.md) and [Recipe Examples](https://github.com/ifeanyidavid/formulapro/blob/main/docs/appendix/reference/recipe-examples.md)
* Check [Supported Column Types](/formula-pro/appendix/column-types) for compatibility
* Ensure your monday.com and Formula Pro accounts are in good standing


# FAQ

## Operations and Usage

### How are operations calculated?

An **operation** is consumed each time a Formula Pro automation runs **successfully** and updates a column, item name, or performs another action (e.g., copying an update to a connected board).

* **Single-item automations:** 1 successful run = 1 operation
* **Batch automations** (e.g., "all items on board," "all items in group"): 1 operation is charged for the **entire batch**, not per item
* **Failed executions do NOT consume operations** — if the automation errors (formula error, column not found, permission issue, etc.), no operation is deducted

### Do failed automations count against my limit?

**No.** Failed automation executions do not consume operations. You are only charged when the automation completes successfully and updates data.

### How do I check my remaining operations?

1. **In the Formula Pro app** — Open the app from any monday.com board. The main view shows "X operations remaining" with your current plan.
2. **Settings** — Go to Integrations → Formula PRO Automation → Settings. The "Actions Usage" section shows your remaining operations and a progress bar against your plan limit.

### When do my operations reset?

* **Free plan:** Operations reset monthly (typically at the start of each calendar month) for accounts that have been installed for at least one month.
* **Paid plans (Lite, Starter, Basic, Growth, Advanced):** Operations reset when your subscription renews (e.g., monthly or annually, depending on your billing period).

### What are the operation limits per plan?

| Plan     | Operations per period |
| -------- | --------------------- |
| Free     | 120                   |
| Lite     | 250                   |
| Starter  | 2,500                 |
| Basic    | 5,000                 |
| Growth   | 25,000                |
| Advanced | 75,000                |

For full pricing details, see [Pricing Plans](/formula-pro/appendix/pricing).

### What happens when I run out of operations?

When you reach 0 operations, new automation runs will be blocked. You'll see an error such as "Operations limit reached for user" or "Operation limit exceeded for your current plan."

**Options:**

* **Upgrade your plan** — Get more operations per period
* **Wait for reset** — Free tier resets monthly; paid plans reset on renewal
* **Contact support** — <hello@shadebridge.com> for assistance

### Are operations shared across my account?

Operations are tracked per **user and account** (monday.com account). Users in the same account get allocated the max operations for the subscribed pricing tier for that account.

***

## Formulas and Automation

### Can I use Excel formulas in Formula Pro?

Yes. Formula Pro supports **399+ Excel-compatible functions** (math, statistical, date/time, text, logical, lookup, financial, engineering). See the [Excel Functions Reference](https://github.com/ifeanyidavid/formulapro/blob/main/docs/appendix/reference/excel-functions.md).

### What if my formula uses a function that's not supported?

Some Excel functions (e.g., `LAMBDA`, `FILTER`, `XLOOKUP`, `INDIRECT`) are not implemented. Use alternative approaches:

* `IF` + `AND`/`OR` instead of `LAMBDA` for custom logic
* Check the [Excel Functions Reference](https://github.com/ifeanyidavid/formulapro/blob/main/docs/appendix/reference/excel-functions.md) for the full list of supported functions
* Get in touch with support at <hello@shadebridge.com>

### Do scheduled recipes consume more operations than trigger-based ones?

Each **successful** run consumes 1 operation, whether it's triggered by a column change or by a schedule. A daily scheduled recipe that updates 50 items counts as **1 operation** per day (for batch recipes), not 50.

### Can I run a formula manually?

Formula Pro automations run when their trigger fires (column change, status change, schedule, etc.). There is no separate "manual run" button. To test a formula, change the trigger column or wait for the next scheduled run.

***

## Setup and Configuration

### Why isn't my automation running?

Common causes:

* **No operations remaining** — Check your usage in Settings
* **Authorization expired** — Reconnect your account in Integrations → Formula PRO Automation
* **Column deleted or renamed** — Reselect columns in the recipe configuration
* **Formula error** — Check the [Errors and Troubleshooting](/formula-pro/appendix/errors-and-troubleshooting) guide

### How do I reconnect my account?

1. Go to **Integrations** in monday.com
2. Find **Formula PRO Automation**
3. Open the integration settings
4. Disconnect and reconnect your account, granting the requested permissions

### Can I use Formula Pro with mirror columns?

Yes. Formula Pro supports mirror column triggers and projecting results to mirror columns. See the [Mirror Column Functions](https://github.com/ifeanyidavid/formulapro/blob/main/docs/appendix/reference/functions/mirror.md) and [Automation Recipes](https://github.com/ifeanyidavid/formulapro/blob/main/docs/appendix/reference/automation-recipes.md) for details.

### Does Formula Pro work with subitems?

Yes. Formula Pro supports subitem recipes, including:

* Execute formula when subitem is created
* Project formula result from subitem to parent
* Aggregate subitem values to parent (e.g., SUM)
* Copy parent column to subitem on create

***

## Billing and Plans

### How do I upgrade my plan?

Click the **Upgrade** button in the Formula Pro app or in Integrations → Formula PRO Automation. This opens the monday.com plan selection flow. For pricing details, see [Pricing Plans](/formula-pro/appendix/pricing) or the [monday.com Marketplace listing](https://monday.com/marketplace/listing/10000685/formula-pro-automations#pricing).

### Is there a free trial?

Check the monday.com marketplace listing for Formula Pro for current trial and pricing information.

### Who do I contact for billing or plan questions?

For billing, plan changes, or subscription issues, contact **<hello@shadebridge.com>** or use the monday.com marketplace support options.

***

## Support

### Where can I get help?

* **Documentation** — This site: [formulapro.shadebridge.com](https://formulapro.shadebridge.com/formula-pro/)
* **Email** — <hello@shadebridge.com>
* **Errors** — See [Common Errors and Troubleshooting](/formula-pro/appendix/errors-and-troubleshooting)

### What should I include when contacting support?

* Brief description of the issue
* Recipe type and configuration (without sensitive data)
* Exact error message, if any
* Steps to reproduce
* Your monday.com account email (if relevant)


