Formula fields are a special type of field where the value is calculated rather than being entered directly. Formula fields are created like any other field, the formula is added as part of the field definition.

To add a formula field navigate to Contacts > Fields, click the *Create New Field* button and select ‘Formula’ as the field type.

This will display the formula field creation page where you can name your field and add the formula.

The formula name can be anything you like, this is how you will find the field when you’re using it later.

Formulas are made up of fields, functions and arithmetic operators. Like formulas in a spreadsheet there’s no limit to what you create. Formula fields can be used in filters or merged into a communication like any other field.

**Operators**

Formula can contain the following operators:

`+`

addition

`*`

multiplication

`/`

division

`-`

subtraction

`%`

modulo (remainder after division)

**Functions**

Formulas can contain the following functions. If you would like to use a function that isn’t on this list please let us know at support@impactdata.com.au

**years_after( date_field)**

Returns the number of whole years since

*date_field*. For example, if an account has the field

*membership_start_date*then the formula

`years_after(membership_start_date)`

will return the numbers of years of membership for each contact. This function could be used to calculate a contact’s age given their date of birth (years_after(*date_*of_birth)). Note that TalkBox accounts have an age field by default so there’s no need to create a formula to calculate age like this.

**years_before( date_field)**

Returns the number of years before

*date_field*. For example, the formula

`years_before(membership_expiry)`

will return the number of whole years until the *membership_expiry*date for each contact.

**days_after( date_field)**

Returns the number of whole days since

*date_field*. For example,

`days_after(`*last_visit*)

will return the number of whole days since the contact’s last visit.**days_before( date_field)**

Returns the number of whole days before

*date_field*. For example,

`days_before(`*financial_until*)

will return the number of whole days until the contact becomes non-financial.**rounddown( numeric_field)**

Rounds down to the next whole number. For example

`rounddown(12.345)`

will return `12`

.**roundup( numeric_field)**

Rounds up to the next whole number. For example

`roundup(12.345)`

will return `13`

.**round( numeric_field, precision)**

Rounds to the specified precision. For example

`round(12.345,2)`

will return `12.35`

.**Examples**

### Points until next level

If your TalkBox account stores a loyalty points balance in a field called *points_balance* you could calculate the points required to reach a particular loyalty tier level.

`5000 - points_balance`

If a contact has 4700 points this field will have the value 300. This could then be used for targeting and merging into emails and SMS messages.

### Average spend per transaction

If your TalkBox account is integrated with your POS system and you have fields for `transaction_count`

and `lifetime_spend`

you could calculate the average transaction spec for each contact with the formula

`lifetime_spend/transaction_count`