• 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 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:
- Open blank invoice template
- Type client name (hope you spell it right)
- Type company name
- Type email address
- Look up project details
- Copy line items from quote
- Calculate totals manually
- Type today's date
- Calculate due date (today + 30 days)
- Type payment terms
- Proofread everything
- 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:
- Select client from dropdown
- Select quote to invoice
- Click "Generate Invoice"
- Review (everything is pre-filled correctly)
- 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.nameatclient.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.namefor a total ofquote.total" - Invoices: Reference quote
quote.number - Proposals: "Timeline:
project.start_datetoproject.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.numberdatedinvoice.date" - Payment reminders: "Invoice
invoice.numberforinvoice.totalis dueinvoice.due_date" - Receipts: "Payment of
invoice.amount_paidreceived forinvoice.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_monthdate.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_feeapplies 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.nameandclient.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.