# Smart variables

> Every placeholder Tillage fills in automatically, what it inserts, and where each one works.

- URL: https://tillage.ai/docs/reference/smart-variables
- Section: [Reference](https://tillage.ai/docs/reference)

Smart variables are placeholders in curly braces, such as `{clientName}`, that Tillage replaces with real values when a document is shown or an email is sent. Write a template or email once and it reads correctly for every client.

Variables are case sensitive and must be typed exactly as shown. A variable that doesn't apply where you use it is left out or shows as blank, so check the preview before you send.

## Where to insert them

- **Rich text editors** (quote and line item descriptions, contract text blocks, email messages): click the **✨** button in the toolbar.
- **Plain fields** (email subjects, recurring invoice names, contract title formats): use the **Insert Variable** or variables menu next to the field.

You can also type a variable by hand.

Dates are written out in full, like November 1, 2026. Amounts use your team's currency.

## Client

Work in quotes, line item and service descriptions, contracts, and invoice titles created from schedules.

| Variable | Inserts | Example |
|---|---|---|
| `{clientName}` | Client company name | Acme Corporation |
| `{clientContact}` | Primary contact's full name | John Smith |
| `{clientEmail}` | Primary contact's email | john@acme.com |
| `{clientPhone}` | Primary contact's phone | +1 (555) 123-4567 |
| `{clientAddress}` | Client address | 123 Business St, City, State |
| `{clientWebsite}` | Client website | https://acme.com |
| `{clientIndustry}` | Client industry | Technology |
| `{clientSize}` | Company size | Medium (50-200 employees) |

The primary contact is the one marked primary on the client, or the first contact if none is.

## Quote and project

Work in the same places as client variables, when there's a quote behind the document.

| Variable | Inserts |
|---|---|
| `{projectName}` | The quote's project name |
| `{quoteNumber}` | The quote number |
| `{quoteDate}` | The quote's issue date |
| `{expiryDate}` | The quote's expiry date |
| `{acceptanceDate}` | The date the client responded to the quote |

## Your business

| Variable | Inserts |
|---|---|
| `{businessName}` | Your business name |
| `{businessEmail}` | Your business email |
| `{businessPhone}` | Your business phone |

These come from [Business and branding](https://tillage.ai/docs/account/business-and-branding).

> **Note:** `{businessAddress}` appears in some variable menus but isn't filled in anywhere yet. Type your address directly for now.

## Contracts

Contract text blocks support every client, quote and business variable above, plus:

| Variable | Inserts |
|---|---|
| `{contractNumber}` | The contract number |
| `{contractDate}` | The date the contract was created |
| `{effectiveDate}` | The contract's effective date, or the created date if none is set |
| `{totalAmount}` | The quote total, as currency |

### Payment schedule blocks

A payment schedule block's description and payment names also support:

| Variable | Inserts |
|---|---|
| `{invoiceCount}` | How many invoices the schedule creates |
| `{invoiceAmount}` | The first invoice's amount in the description, or that payment's amount in a payment name |
| `{firstInvoiceDueDate}` | The first invoice's due date in the description, or that payment's due date in a payment name |
| `{sequence}`, `{totalCount}` | In payment names only, for labels like "Payment {sequence} of {totalCount}" |

> **Note:** `{paymentTerms}` is listed in the contract variables menu but currently fills in blank. Write the terms out in your text.

### Service agreements

Ongoing service blocks in service agreements support:

| Variable | Inserts |
|---|---|
| `{serviceName}` | The service name |
| `{serviceDescription}` | The service description |
| `{serviceRate}` | The service rate |
| `{serviceBillingFrequency}` | How often it's billed |
| `{serviceStartDate}`, `{serviceEndDate}` | The service period |
| `{firstInvoiceDate}` | The first invoice's issue date |
| `{recurringFrequency}` | The recurring invoice frequency |
| `{recurringTotal}` | The recurring invoice total |

See [Contract templates](https://tillage.ai/docs/contracts/contract-templates).

## Recurring invoice names

Use these in a billing schedule's **Invoice Name**, and in invoice titles for payment schedules. They're filled in for each invoice as it's created, based on that invoice's issue date.

| Variable | Inserts | Example |
|---|---|---|
| `{month}` | Month of the issue date | November |
| `{year}` | Year of the issue date | 2026 |
| `{monthYear}` | Month and year | November 2026 |
| `{nextMonthYear}` | The following month and year | December 2026 |
| `{nextYear}` | The following year | 2027 |
| `{quarter}` | Quarter number, 1 to 4 | 4 |
| `{frequency}` | Billing frequency | Monthly |
| `{sequence}` | This payment's number in a payment schedule | 2 |
| `{totalCount}` | Total payments in the schedule | 5 |
| `{milestoneName}` | The milestone's description | Design phase complete |
| `{invoiceNumber}` | The invoice number | INV-0042 |
| `{issueDate}` | The issue date | November 1, 2026 |
| `{dueDate}` | The due date | November 15, 2026 |
| `{amount}` | The invoice amount | $2,500.00 |

`{frequency}` reads **Weekly**, **Monthly**, **Quarterly**, **Bi-Annual** or **Annual**.

For example, `{monthYear} Retainer – {clientName}` becomes "November 2026 Retainer – Acme Corporation".

Client and project variables work here too.

## Quote emails

In the quote email subject and message:

| Variable | Inserts |
|---|---|
| `{clientName}` | Client company name |
| `{clientContact}` | Primary contact's name |
| `{clientEmail}` | Primary contact's email |
| `{projectName}` | The project name |
| `{quoteNumber}` | The quote number |
| `{quoteAmount}` | The quote total |
| `{issueDate}` | The quote's issue date |
| `{validUntilDate}` | The date the quote expires |
| `{businessName}`, `{businessEmail}`, `{businessPhone}` | Your business details |

## Invoice and reminder emails

In the invoice email, the send dialog and overdue reminders:

| Variable | Inserts |
|---|---|
| `{clientName}` | Client company name |
| `{clientContact}` | Primary contact's name |
| `{clientEmail}` | Primary contact's email |
| `{invoiceNumber}` | The invoice number |
| `{invoiceTitle}` | The invoice title |
| `{invoiceAmount}` | The invoice total |
| `{issueDate}` | The issue date |
| `{dueDate}` | The due date |
| `{daysOverdue}` | Days past the due date. Use it in reminders. |
| `{businessName}`, `{businessEmail}`, `{businessPhone}` | Your business details |

### Email variables that look similar

The editor's **✨** menu lists some document variables that emails don't fill in. In emails, use the email version:

| In emails, use | Instead of |
|---|---|
| `{invoiceAmount}` | `{amount}` |
| `{quoteAmount}` | `{totalAmount}` |
| `{issueDate}` | `{quoteDate}` |
| `{validUntilDate}` | `{expiryDate}` |

## Related

- [Quote and invoice settings](https://tillage.ai/docs/account/quote-and-invoice-settings)
- [Contract templates](https://tillage.ai/docs/contracts/contract-templates)
- [Billing schedules](https://tillage.ai/docs/invoices/billing-schedules)

---

All docs: https://tillage.ai/docs.md  
Site index for AI assistants: https://tillage.ai/llms.txt  
Sign up free: https://app.tillage.ai/signup
