Use template variables in quotes and emails
When you customize a quote PDF, a proposal email, or a quote-approval email, you can insert placeholders that get replaced with the actual record’s values when the document is sent. These are called template variables.
For example, instead of typing the client’s name into every email, you write {{customer_name}} and Service Buddy fills in Maria Patel, Tom Reed, or whoever the recipient is on each send.
How template variables work
Section titled “How template variables work”A template variable is a name wrapped in double curly braces, like this:
Hi {{customer_first_name}},
Thanks for the chance to quote your {{quote_title}}. The total comes to {{amount}}.When that template is used to send a real quote, Service Buddy replaces every variable with the matching value from the record:
Hi Maria,
Thanks for the chance to quote your Living Room & Stairs. The total comes to $4,820.00.If a value is missing on the record (e.g. you didn’t fill in the client’s company), the placeholder is left blank — it doesn’t print {{customer_company}} literally.
Where you can use them
Section titled “Where you can use them”Template variables work in:
- The quote PDF template (the document the client downloads or prints).
- The proposal email template (the email that delivers the quote).
- The quote approval email template (the email confirmation sent after the client approves).
Edit any of these under Settings → Email Templates or Document Templates, depending on which template you’re customizing.
Available variables
Section titled “Available variables”These are the variables you can drop into a quote or quote email template. Use them exactly as written, including the double curly braces.
Client details
Section titled “Client details”| Variable | What it inserts |
|---|---|
{{customer_first_name}} | The client’s first name |
{{customer_last_name}} | The client’s last name |
{{customer_name}} | First and last name combined |
{{customer_email}} | The client’s email address |
{{customer_prefix}} | Title — Mr., Ms., Dr., etc. |
{{customer_company}} | The client’s company name |
Who created the quote
Section titled “Who created the quote”| Variable | What it inserts |
|---|---|
{{created_by_name}} | Name of the staff member who created the quote |
{{created_by_email}} | Email of the staff member who created the quote |
Your business info
Section titled “Your business info”| Variable | What it inserts |
|---|---|
{{company_name}} | Your company’s name |
{{company_email}} | Your company’s email address |
{{company_phone}} | Your company’s phone number |
Quote details
Section titled “Quote details”| Variable | What it inserts |
|---|---|
{{quote_title}} | The quote’s title or project name |
{{seq_id}} | The quote’s reference number |
{{deposit_amount}} | The deposit required from the client |
{{discount_amount}} | Any discount applied to the quote |
{{amount}} | The grand total (after deposit and discount) |
{{quote_sent_date}} | The date the quote was sent |
{{quote_address}} | The address tied to the quote (usually the client’s install address) |
{{scope_of_work}} | The full scope-of-work description for the quote |
{{current_date}} | Today’s date (auto-generated when the document is rendered) |
Example: a clean approval email
Section titled “Example: a clean approval email”Subject: Your {{quote_title}} quote from {{company_name}}
Hi {{customer_first_name}},
Thanks for choosing {{company_name}}. Your quote for "{{quote_title}}" totals{{amount}} and a deposit of {{deposit_amount}} is required to start.
Job address: {{quote_address}}
Scope of work:{{scope_of_work}}
Approve and pay your deposit here: [Approve quote]
Questions? Reply to this email or call us at {{company_phone}}.
— {{created_by_name}}{{company_name}}When sent, every variable becomes a real value drawn from the quote record.
- Test before rolling out. After editing a template, preview it on a real (or test) quote to verify the variables resolve to the right values.
- Don’t invent variable names. Only the variables in this list are recognized.
{{customer_phone}}won’t work — it’s not in the supported set. - Watch your spaces.
{{ customer_name }}(with extra spaces) is not the same as{{customer_name}}and won’t be replaced. - Variables are case-sensitive. Use lowercase exactly as shown.
- Empty values are blank, not literal. If a quote has no scope of work and your template includes
{{scope_of_work}}, the line is empty in the output — not the literal text{{scope_of_work}}.
Can I add my own variables?
The variables in this list are the supported set. If you want to surface a value that isn’t covered (a custom field, an internal reference), use custom fields and turn on the Show on preview/view template option for the field. The custom field then prints automatically on the PDF in its own labeled row — no variable needed in the template body.
A variable shows up literally in the email — what went wrong?
Three usual causes:
- Typo in the variable name. Compare letter-for-letter against the table above.
{{customername}}(no underscore) won’t resolve. - Wrong braces. Single braces (
{customer_name}) or square brackets ([customer_name]) don’t work — only double curly braces do. - Stray spaces inside the braces.
{{ customer_name }}(spaces) doesn’t match. Use{{customer_name}}(no spaces).
Do these variables work on invoices too?
This list is for quote and quote-email templates. Invoice templates have their own variable set (invoice number, balance due, payment due date, etc.). Edit an invoice template under Settings → Email Templates and the available placeholders are listed in that template’s editor.
What’s the difference between {{customer_name}} and {{customer_first_name}}?
{{customer_first_name}} is just the first name (Maria). {{customer_last_name}} is just the last name (Patel). {{customer_name}} is both joined together (Maria Patel). Use first name for warmer openings, full name for formal closings.
Is {{seq_id}} the same as the quote ID I see in the URL?
{{seq_id}} is the human-readable quote number (like Q-1042) that you and your client see. It’s not the long internal ID in the browser address bar — that one isn’t exposed in templates because it’s not meant for end users.
Does {{current_date}} show the date the quote was created or the date it was sent?
Neither — it’s the date the document is rendered. If you re-send a quote next week, {{current_date}} will show next week’s date. For the original send date, use {{quote_sent_date}} instead.