• Dec 18, 2025

Smart Variables: How to Automate Invoices and Contracts Without Copy-Paste

Stop manually typing client names, dates, and amounts into every invoice and contract. Learn how smart variables can automate 90% of your document creation.

Tillage

Tillage Team

Dec 18, 2025

Smart Variables: How to Automate Invoices and Contracts Without Copy-Paste

Here's a scenario you know too well:

You're creating an invoice. You type the client's name. Then their company name. Then their email. Then the project name. Then today's date. Then next month's date for the due date. Then you copy the line items from the quote. Then you realize you typo'd the client's name and have to fix it in three places.

Fifteen minutes later, you finally hit send.

Now multiply that by 50 invoices per month. That's 12.5 hours of copy-paste work. Every. Single. Month.

There's a better way: Smart Variables.

What Are Smart Variables?

Smart variables are placeholders that automatically fill in with the right information when you create a document.

Instead of typing "John Smith" 10 times in a contract, you type client.name once in double curly braces. The system fills in "John Smith" everywhere automatically.

The magic: When you use that contract template for the next client, that same variable becomes "Sarah Johnson" automatically. No find-and-replace. No copy-paste. No typos.

Why This Matters

Let's look at what you're probably doing now:

The Old Way: Manual Document Creation

Creating an invoice:

  1. Open blank invoice template
  2. Type client name (hope you spell it right)
  3. Type company name
  4. Type email address
  5. Look up project details
  6. Copy line items from quote
  7. Calculate totals manually
  8. Type today's date
  9. Calculate due date (today + 30 days)
  10. Type payment terms
  11. Proofread everything
  12. Send and hope you didn't miss anything

Time: 10-15 minutes per invoice
Error rate: High (typos, wrong dates, calculation errors)
Scalability: Terrible (can't batch process)

The New Way: Smart Variables

Creating an invoice:

  1. Select client from dropdown
  2. Select quote to invoice
  3. Click "Generate Invoice"
  4. Review (everything is pre-filled correctly)
  5. Send

Time: 2 minutes per invoice
Error rate: Near zero (data comes from your system)
Scalability: Excellent (can generate 50 invoices in 10 minutes)

That's an 80% time savings. For 50 invoices per month, that's 10 hours back in your month.

Types of Smart Variables

Tillage supports several categories of variables that cover every use case:

1. Client Information Variables

These pull data from your client records:

`client.name`              → John Smith
`client.company`           → Acme Corporation
`client.email`             → john@acme.com
{{client.phone}}             → (555) 123-4567
`client.address`           → 123 Main St, Suite 100
{{client.city}}              → San Francisco
{{client.state}}             → CA
{{client.zip}}               → 94105
{{client.website}}           → acme.com

Use cases:

  • Contracts: "This agreement is between [Your Agency] and client.company"
  • Invoices: Bill to client.name at client.address
  • Emails: "Hi client.name, here's your invoice..."

2. Quote/Project Variables

These pull data from the specific quote or project:

`quote.number`             → Q-2025-0042
`quote.total`              → $15,000.00
{{quote.subtotal}}           → $15,000.00
{{quote.tax}}                → $0.00
`project.name`             → Website Redesign
{{project.description}}      → Complete redesign of marketing website
`project.start_date`       → January 15, 2026
`project.end_date`         → March 15, 2026
`project.duration`         → 8 weeks

Use cases:

  • Contracts: "Project: project.name for a total of quote.total"
  • Invoices: Reference quote quote.number
  • Proposals: "Timeline: project.start_date to project.end_date"

3. Invoice Variables

These are specific to invoices:

`invoice.number`           → INV-2025-0156
`invoice.date`             → December 18, 2025
`invoice.due_date`         → January 17, 2026
`invoice.total`            → $5,000.00
{{invoice.amount_due}}       → $5,000.00
`invoice.amount_paid`      → $0.00
`invoice.payment_url`      → https://pay.tillage.ai/inv-abc123

Use cases:

  • Invoice headers: "Invoice invoice.number dated invoice.date"
  • Payment reminders: "Invoice invoice.number for invoice.total is due invoice.due_date"
  • Receipts: "Payment of invoice.amount_paid received for invoice.number"

4. Date Variables

These automatically calculate dates (no more manual date math):

`date.today`               → December 18, 2025
`date.current_month`       → December
`date.current_year`        → 2025
{{date.next_month}}          → January
{{date.next_year}}           → 2026
`date.30_days`             → January 17, 2026
{{date.60_days}}             → February 16, 2026
{{date.90_days}}             → March 18, 2026
{{date.quarter_end}}         → December 31, 2025
{{date.year_end}}            → December 31, 2025

Use cases:

  • Contracts: "This agreement is effective date.today"
  • Invoices: "Due date: date.30_days"
  • Recurring invoices: "Service period: date.current_month date.current_year"

5. Payment Terms Variables

These insert your standard payment terms:

`payment.terms`            → Net 30
`payment.method`           → Credit Card, ACH, Wire Transfer
{{payment.instructions}}     → Pay online at `invoice.payment_url`
`payment.late_fee`         → 1.5% per month (18% annually)

Use cases:

  • Invoices: "Payment terms: payment.terms"
  • Contracts: "Accepted payment methods: payment.method"
  • Reminders: "Late fee of payment.late_fee applies after due date"

6. Line Item Variables

These work within repeating sections (like invoice line items):

{{item.name}}                → Website Design
{{item.description}}         → Custom responsive website design
{{item.quantity}}            → 1
{{item.rate}}                → $15,000.00
{{item.amount}}              → $15,000.00

Use cases:

  • Invoices: Automatically populate line items from quotes
  • Contracts: List all deliverables with descriptions
  • Proposals: Show pricing breakdown

7. Agency/Company Variables

These pull from your agency settings:

`company.name`             → Your Agency Name
{{company.email}}            → hello@youragency.com
{{company.phone}}            → (555) 987-6543
{{company.address}}          → 456 Agency St
{{company.website}}          → youragency.com
{{company.logo}}             → [Your logo image]

Use cases:

  • All documents: Consistent branding
  • Contracts: "This agreement is between company.name and client.company"
  • Invoices: Return address and contact info

Real-World Use Cases

Let's see how this works in practice:

Use Case 1: Automated Monthly Retainer Invoices

Scenario: You have 20 retainer clients who get invoiced on the 1st of every month.

Without variables:

  • Open 20 invoice templates
  • Manually update each one with current month/year
  • Copy-paste client info 20 times
  • Calculate due dates manually
  • Time: 3-4 hours

With variables:

Invoice template:

Invoice #`invoice.number`
Date: `date.today`
Due: `date.30_days`

Bill To:
`client.name`
`client.company`
`client.email`

Service Period: `date.current_month` `date.current_year`

Description: Monthly retainer for `project.name`
Amount: `invoice.total`

Payment Terms: `payment.terms`
Pay online: `invoice.payment_url`

Result: Click "Generate 20 invoices" → All 20 invoices created in 30 seconds with correct dates, client info, and payment links.

Time saved: 3.5 hours per month = 42 hours per year

Use Case 2: Contract Generation from Quotes

Scenario: Client accepts your quote. Now you need to create a contract.

Without variables:

  • Open contract template
  • Copy client name, company, email from quote
  • Copy project details from quote
  • Copy line items and pricing from quote
  • Manually type dates
  • Calculate payment schedule
  • Proofread everything
  • Time: 20-30 minutes

With variables:

Contract template:

SERVICE AGREEMENT

This agreement is made on `date.today` between:

Provider: `company.name`
Client: `client.company`

1. PROJECT SCOPE
`project.name`
{{project.description}}

2. DELIVERABLES
`quote.line_items`

3. TIMELINE
Start Date: `project.start_date`
End Date: `project.end_date`
Duration: `project.duration`

4. PAYMENT TERMS
Total Project Fee: `quote.total`

Payment Schedule:
- 50% (`quote.deposit`) due upon signing
- 50% (`quote.final_payment`) due upon completion

Payment Methods: `payment.method`
Late Fee: `payment.late_fee`

5. SIGNATURES
Client: `client.name`, `client.company`
Date: _________________

Provider: `company.name`
Date: `date.today`

Result: Click "Generate Contract from Quote" → Entire contract pre-filled with accurate data.

Time saved: 25 minutes per contract

Use Case 3: Recurring Service Invoices

Scenario: You provide monthly SEO services and need to invoice at the end of each month.

The challenge: Each invoice needs:

  • Current month's service period
  • Next month's due date
  • Correct invoice number sequence
  • Updated payment link

With variables:

Invoice template:

INVOICE `invoice.number`

`client.company`
Attn: `client.name`
`client.email`

Service: Monthly SEO Services
Period: `date.current_month` `date.current_year`
Invoice Date: `date.today`
Due Date: {{date.next_month}} 15, `date.current_year`

Amount Due: `invoice.total`

Services Provided:
- Keyword research and optimization
- Content updates and blog posts
- Technical SEO maintenance
- Monthly performance report

Pay online: `invoice.payment_url`

Questions? Email {{company.email}}

Result: On the last day of each month, generate all recurring invoices with one click. All dates, periods, and invoice numbers automatically correct.

Use Case 4: Payment Reminder Emails

Scenario: Invoice is 7 days overdue. You need to send a reminder.

Without variables:

  • Look up invoice number
  • Look up amount
  • Look up due date
  • Look up client name
  • Copy payment link
  • Write email manually
  • Time: 5 minutes per reminder

With variables:

Email template:

Subject: Friendly reminder: Invoice `invoice.number` due

Hi `client.name`,

I hope this email finds you well. I wanted to send a friendly reminder 
that Invoice `invoice.number` for `invoice.total` was due on 
`invoice.due_date`.

If you've already sent payment, please disregard this email. If not, 
you can pay online here: `invoice.payment_url`

Payment methods accepted: `payment.method`

Let me know if you have any questions!

Best,
`company.name`
{{company.email}}

Result: Automated reminder emails sent with all correct information. No manual lookup required.

Time saved: 4 minutes per reminder × 10 reminders/month = 40 minutes per month

Advanced Variable Techniques

1. Conditional Variables

Show different text based on conditions:

{{if invoice.amount_paid > 0}}
Partial payment of `invoice.amount_paid` received.
Remaining balance: {{invoice.amount_due}}
{{else}}
Full amount due: `invoice.total`
{{endif}}

2. Formatted Variables

Control how data displays:

{{invoice.total | currency}}        → $5,000.00
{{invoice.date | date:"long"}}      → December 18, 2025
{{invoice.date | date:"short"}}     → 12/18/25
{{project.duration | plural}}       → 8 weeks (not "8 week")

3. Calculated Variables

Do math automatically:

{{quote.total * 0.5}}               → 50% deposit amount
{{quote.total * 0.3}}               → 30% milestone payment
{{invoice.total - invoice.amount_paid}} → Remaining balance

4. Nested Variables

Combine multiple variables:

`client.name` at `client.company` (`client.email`)
→ John Smith at Acme Corporation (john@acme.com)

Invoice `invoice.number` for `project.name` - Due `invoice.due_date`
→ Invoice INV-2025-0156 for Website Redesign - Due January 17, 2026

Setting Up Your Variable System

Here's how to implement smart variables in your workflow:

Step 1: Audit Your Current Documents

List all the documents you create regularly:

  • [ ] Quotes/Proposals
  • [ ] Contracts/Agreements
  • [ ] Invoices
  • [ ] Payment reminders
  • [ ] Project kickoff emails
  • [ ] Status updates
  • [ ] Completion notices

Step 2: Identify Repeated Information

For each document type, note what you're typing repeatedly:

  • Client name, company, contact info
  • Project details
  • Dates (today, due dates, service periods)
  • Payment terms
  • Your company info

Step 3: Create Variable Templates

Replace repeated information with variables:

Before:

Invoice #INV-2025-0156
Date: December 18, 2025
Due: January 17, 2026

Bill To:
John Smith
Acme Corporation
john@acme.com

After:

Invoice #`invoice.number`
Date: `date.today`
Due: `date.30_days`

Bill To:
`client.name`
`client.company`
`client.email`

Step 4: Test Your Templates

Generate a few test documents to make sure:

  • All variables populate correctly
  • Formatting looks right
  • Dates calculate properly
  • Math is accurate

Step 5: Automate Common Workflows

Set up automation for:

  • Monthly retainer invoices: Auto-generate on the 1st
  • Payment reminders: Auto-send at 7, 14, and 30 days overdue
  • Recurring services: Auto-invoice at end of service period
  • Contract generation: Auto-create when quote is accepted

Common Mistakes to Avoid

Mistake #1: Not Keeping Client Data Updated

Problem: Variables pull from your client database. If the data is wrong, every document will be wrong.

Fix:

  • Update client info when it changes
  • Verify email addresses before sending
  • Review generated documents before sending

Mistake #2: Over-Complicating Templates

Problem: Adding too many conditional variables makes templates hard to maintain.

Fix:

  • Start simple
  • Add complexity only when needed
  • Create separate templates for special cases

Mistake #3: Not Testing Date Variables

Problem: Date calculations can be tricky (month-end, leap years, etc.)

Fix:

  • Test date variables at month-end
  • Verify due dates are correct
  • Check year rollover (December → January)

Mistake #4: Forgetting to Update Templates

Problem: You change your payment terms but forget to update the template.

Fix:

  • Review templates quarterly
  • Update variables when business terms change
  • Keep a template changelog

The ROI of Smart Variables

Let's calculate what you're saving:

Time savings per month:

  • Invoices: 10 hours (50 invoices × 12 minutes saved)
  • Contracts: 4 hours (10 contracts × 25 minutes saved)
  • Payment reminders: 1 hour (15 reminders × 4 minutes saved)
  • Total: 15 hours per month

Annual savings:

  • Time: 180 hours per year
  • At $150/hour: $27,000 in recovered time
  • Plus: Fewer errors, faster payment, better client experience

Setup time: 2-4 hours to create your first templates

ROI: 45x return in the first year

Getting Started with Tillage Variables

Tillage has smart variables built in. Here's how to use them:

1. Access Template Library

  • Go to Settings → Templates
  • Choose document type (Invoice, Contract, Email)

2. Insert Variables

  • Click "Insert Variable" button
  • Select from categorized list
  • Variable appears in your template

3. Preview Before Sending

  • Generate document from template
  • Review all populated fields
  • Edit if needed (one-time changes don't affect template)

4. Save Custom Templates

  • Create your own templates
  • Share across your team
  • Version control for updates

5. Automate Workflows

  • Set up recurring invoices
  • Schedule payment reminders
  • Auto-generate contracts from quotes

The Bottom Line

Smart variables aren't just about saving time (though 15 hours per month is nice).

They're about:

  • Accuracy: No more typos or wrong dates
  • Consistency: Every document looks professional
  • Scalability: Handle 10x more clients without 10x more work
  • Professionalism: Clients notice when details are perfect

The agencies that automate document creation have more time for the work that actually matters: delivering great results for clients.

The ones still copy-pasting? They're drowning in admin work.

Which one will you be?


Ready to automate your invoices and contracts? Try Tillage free and create your first smart variable template in minutes. No credit card required.

Ready to Transform Your Agency?

Join agencies that quote with confidence, automate their workflows, and get paid faster. Start free in minutes—no credit card required.