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 fill in the details for you.
Tillage TeamUpdated

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. The smart variables reference has the full list.
Instead of typing “Acme Corporation” 10 times in a contract, you type {clientName} once. The system fills in “Acme Corporation” everywhere automatically.
The magic: When you use that contract template for the next client, that same variable becomes “Northwind Labs” 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 (a payment schedule or recurring billing creates every invoice for you)
That’s an 80% time savings. For 50 invoices per month, that’s 10 hours back in your month.
Types of Smart Variables
Tillage variables use single curly braces, like {clientName}. They cover several categories:
1. Client Information Variables
These pull data from your client records:
{clientName} → Acme Corporation
{clientContact} → John Smith
{clientEmail} → john@acme.com
{clientPhone} → (555) 123-4567
{clientAddress} → 123 Main St, Suite 100, San Francisco, CA 94105
{clientWebsite} → acme.com
{clientIndustry} → Software
{clientSize} → 51-200 employees
Use cases:
- Contracts: “This agreement is between [Your Agency] and
{clientName}” - Invoices: “Monthly retainer for
{clientName}” - Emails: “Hi
{clientContact}, here’s your invoice…”
2. Quote, Project and Contract Variables
These pull data from the specific quote, project or contract:
{quoteNumber} → QT-2025-0042
{quoteDate} → December 1, 2025
{expiryDate} → December 31, 2025
{acceptanceDate} → December 5, 2025
{projectName} → Website Redesign
{totalAmount} → $15,000.00
{contractNumber} → CNT-2025-0007
{contractDate} → December 8, 2025
{effectiveDate} → January 15, 2026
Use cases:
- Contracts: “Project:
{projectName}for a total of{totalAmount}” - Contracts: “This agreement takes effect on
{effectiveDate}” - Emails: “Quote
{quoteNumber}is ready for your review”
3. Invoice Variables
These are specific to invoices:
{invoiceNumber} → INV-2025-0156
{issueDate} → December 18, 2025
{dueDate} → January 17, 2026
{invoiceAmount} → $5,000.00
{daysOverdue} → 7
Use cases:
- Invoice emails: “Invoice
{invoiceNumber}dated{issueDate}” - Payment reminders: “Invoice
{invoiceNumber}for{invoiceAmount}was due{dueDate}” - Overdue reminders: “This invoice is now
{daysOverdue}days past due”
4. Date Variables
These automatically fill in dates (no more manual date math):
{month} → December
{year} → 2025
{monthYear} → December 2025
{nextMonthYear} → January 2026
{nextYear} → 2026
{quarter} → 4
Use cases:
- Recurring invoices: “Service period:
{monthYear}” - Invoice titles: “Q
{quarter}{year}retainer” - Annual renewals: “Support plan for
{nextYear}”
5. Payment Terms and Schedule Variables
These insert your terms and where a payment sits in its schedule:
{paymentTerms} → Net 30
{milestoneName} → Design approval
{sequence} → 2
{totalCount} → 4
{amount} → $2,500.00
{frequency} → Monthly
Use cases:
- Invoices: “Payment terms:
{paymentTerms}” - Milestone invoices: “Payment
{sequence}of{totalCount}:{milestoneName}” - Recurring invoices: “
{frequency}retainer”
6. Service Variables
These work with the services on a contract, such as ongoing retainers:
{serviceName} → Website Maintenance
{serviceDescription} → Monthly updates, backups and monitoring
{serviceRate} → $1,500.00
{serviceBillingFrequency} → Monthly
{serviceStartDate} → January 1, 2026
Use cases:
- Contracts: List ongoing services with their rate and billing frequency
- Recurring invoices: “
{serviceName}for{monthYear}” - Service descriptions: Reuse the same wording on every quote
7. Agency/Company Variables
These pull from your agency settings:
{businessName} → Your Agency Name
{businessEmail} → hello@youragency.com
{businessPhone} → (555) 987-6543
{businessAddress} → 456 Agency St
Use cases:
- All documents: Consistent contact details
- Contracts: “This agreement is between
{businessName}and{clientName}” - Emails: Sign-offs and reply-to details
Your logo and brand colors are applied to every quote, contract and invoice automatically, so you don’t need a variable for them.
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:
Recurring invoice title and description:
Title: {projectName} retainer, {monthYear}
Description: Monthly retainer for {clientName}
Service period: {monthYear}
Payment terms: {paymentTerms}
Result: Set up each retainer once as a recurring schedule. Every month, Tillage creates and sends each invoice with the right month, client details, due date and payment link.
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 (text blocks with variables, plus deliverables, payment schedule and signature blocks):
SERVICE AGREEMENT {contractNumber}
This agreement takes effect on {effectiveDate} between:
Provider: {businessName}
Client: {clientName}
1. PROJECT SCOPE
{projectName}
2. DELIVERABLES
[Deliverables block: filled from the quote's line items]
3. TIMELINE
[Timeline block: phases and dates from your project start date]
4. PAYMENT TERMS
Total Project Fee: {totalAmount}
Payment Terms: {paymentTerms}
[Payment schedule block: for example, 50% due upon signing,
50% due upon completion]
5. SIGNATURES
[Signature block: you sign first, then {clientContact} for {clientName}]
Result: Choose “Create Contract” on the approved 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 each month.
The challenge: Each invoice needs:
- Current month’s service period
- The right due date
- Correct invoice number sequence
- Updated payment link
With variables:
Recurring invoice description:
Service: {serviceName}
Period: {monthYear}
Services Provided:
- Keyword research and optimization
- Content updates and blog posts
- Technical SEO maintenance
- Monthly performance report
Questions? Email {businessEmail}
Result: Each month’s invoice is generated on schedule with the right period, due date, invoice number and payment link. If the client has saved a payment method and agreed to autopay, it’s charged automatically.
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:
Reminder email template:
Subject: Friendly reminder: Invoice {invoiceNumber} is {daysOverdue} days overdue
Hi {clientContact},
I hope this email finds you well. I wanted to send a friendly reminder
that Invoice {invoiceNumber} for {invoiceAmount} was due on
{dueDate}.
If you've already sent payment, please disregard this email. If not,
you can pay online using the link below.
Let me know if you have any questions!
Best,
{businessName}
{businessEmail}
Result: Automated reminder emails sent with all correct information and a payment link. No manual lookup required.
Time saved: 4 minutes per reminder × 10 reminders/month = 40 minutes per month
Combining Variables
Variables work anywhere in the text, so you can combine several in one line:
{clientContact} at {clientName} ({clientEmail})
→ John Smith at Acme Corporation (john@acme.com)
Invoice {invoiceNumber} for {projectName} - Due {dueDate}
→ Invoice INV-2025-0156 for Website Redesign - Due January 17, 2026
Keep templates simple: Tillage variables fill in values, and amounts and dates come out already formatted. They don’t support conditional text or math, so create a separate template when a case needs different wording.
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 #{invoiceNumber}
Date: {issueDate}
Due: {dueDate}
Bill To:
{clientContact}
{clientName}
{clientEmail}
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 once an invoice is overdue, for example at 7 days and then every 7 days
- Recurring services: Auto-invoice on a weekly, monthly, quarterly or annual schedule
- Contract generation: Create the contract from the accepted quote
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: Cramming every scenario into one template makes it 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. Find Your Templates
- Contract templates live under Contracts → Templates
- Quote, invoice and reminder emails live under Settings → Quotes and Settings → Invoices
2. Insert Variables
- Click the “Insert Variable” button
- Select from the 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 contract templates from reusable blocks
- Share them across your team
5. Automate Workflows
- Set up recurring invoices
- Turn on overdue payment reminders
- Generate contracts from accepted 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.
