Variables (also called merge fields) are tags in curly brackets, such as {SERVICE_NAME}, that Spraye replaces with real customer, property and service details when an automated email or text message is sent.
Each message type supports its own set of variables, and text messages support fewer than emails. This article lists exactly which variables work in which message, what each one fills in, and the limitations to know about.
Before you start: how variables behave
- Type them exactly as shown. Variables are case-sensitive and must use curly brackets: {SERVICE_NAME} works, {service_name} and [SERVICE_NAME] do not. Spraye does not warn you about a misspelled variable.
- Unsupported variables are not removed. If you use a variable in a message that doesn't support it, your customer sees the raw tag (for example, the text "{SERVICE_PRICE}"). Always check the tables below before adding a variable.
- Service emails add their own labels. In the Service Scheduled, Rescheduled Service and Service Completion emails, most variables are inserted as a bold label and value on their own line, for example Service: Spring Fertilization. Don't type your own "Service:" in front of the variable, or the label will appear twice. The reminder emails (1 Day Prior and Pre-Service Reminder) insert the value only, with no label, so you can use them inside a sentence.
- Empty details are skipped. If a service has no description, notes or reschedule reason, that line is left out of the email. In text messages, a supported variable with no value is replaced with nothing.
- Subject lines don't support variables. The automated emails in this section use a fixed subject (for example "Service is scheduled" or "Service Completion"). Only the message body can be customized.
- Hover the tooltip. The help text under each text message box in Settings lists the variables that box accepts for your texting provider.
What each variable fills in
| Variable | What it fills in |
|---|---|
| {CUSTOMER_NAME} | Customer's first and last name. For group-billed properties, the property's billing contact. |
| {COMPANY_NAME} | Your company name from Settings. |
| {COMPANY_PHONE} | Your company phone number from Settings. Works in emails, but not in text messages (except the payment receipt text). |
| {SERVICE_NAME} | Name of the service. |
| {SERVICE_PRICE} | Price of that one service (its base or override price), before sales tax and coupons, for example $45.00. |
| {SERVICE_DESCRIPTION} | The description entered on the service. |
| {SERVICE_NOTES} | The Service Notes entered on the service setup (not the technician's notes from the visit). |
| {PROGRAM_NAME} | Name of the program the service belongs to. |
| {PROPERTY_NAME} | Property name on file. |
| {PROPERTY_ADDRESS} | Property street address, including address line 2, city, state and ZIP. |
| {SCHEDULE_DATE} | Date of the service, shown as MM-DD-YYYY. In some messages this is a different date; see the notes below. |
| {RESCHEDULED_REASON} | The reason selected (or typed under "Other") when the service was rescheduled. |
| {mm/dd/yyyy} | Scheduled date, Service Scheduled text message only. Prints as MM-DD-YYYY, for example 10-14-2026. |
| {TECHNICIAN_FIRST_NAME} | First name of the technician on the way (On My Way text only). |
| {TECHNICIAN_MESSAGE} | The message the technician typed when completing the service. |
| {ADDITIONAL_INFO} | The application details chosen under the Service Completion "fields to include" checkboxes (such as wind speed, temperature, applicator, address, property size, date/time and products applied), plus the technician's customer note and photos. |
| {PROPERTY_CONDITIONS} | Property conditions the technician added or changed during this visit. |
| {START_DATE_TIME} / {END_DATE_TIME} | When the technician started and finished the service, for example 10/14/2026 9:05 AM. |
Which variables work in each email
Any variable not listed for an email is not supported in it and will appear to your customer as raw text.
| Variables you can use | Not supported (shows as raw text) | |
|---|---|---|
| Service Scheduled | {CUSTOMER_NAME}, {COMPANY_NAME}, {COMPANY_PHONE}, {SERVICE_NAME}, {SERVICE_PRICE}, {SERVICE_DESCRIPTION}, {SERVICE_NOTES}, {PROGRAM_NAME}, {PROPERTY_NAME}, {PROPERTY_ADDRESS}, {SCHEDULE_DATE} | {RESCHEDULED_REASON} (only filled in when the email is sent after a reschedule) |
| Rescheduled Service | {CUSTOMER_NAME}, {COMPANY_NAME}, {COMPANY_PHONE}, {SERVICE_NAME}, {SERVICE_PRICE}, {SERVICE_DESCRIPTION}, {SERVICE_NOTES}, {PROGRAM_NAME}, {PROPERTY_NAME}, {PROPERTY_ADDRESS}, {SCHEDULE_DATE}, {RESCHEDULED_REASON} | {SERVICE_PRICE} when a technician reschedules from the technician app |
| 1 Day Prior to Scheduled Date | {CUSTOMER_NAME}, {COMPANY_NAME}, {COMPANY_PHONE}, {SERVICE_NAME}, {SERVICE_PRICE}, {SERVICE_DESCRIPTION}, {SERVICE_NOTES}, {PROGRAM_NAME}, {PROPERTY_NAME}, {PROPERTY_ADDRESS}, {SCHEDULE_DATE} | {RESCHEDULED_REASON} |
| Pre-Service Reminder (X days) | {CUSTOMER_NAME}, {COMPANY_NAME}, {COMPANY_PHONE}, {SERVICE_NAME}, {SERVICE_PRICE}, {SERVICE_DESCRIPTION}, {SERVICE_NOTES}, {PROGRAM_NAME}, {PROPERTY_NAME}, {PROPERTY_ADDRESS}, {SCHEDULE_DATE} | {RESCHEDULED_REASON} |
| Service Completion | {CUSTOMER_NAME}, {COMPANY_NAME}, {COMPANY_PHONE}, {SERVICE_NAME}, {SERVICE_DESCRIPTION}, {SERVICE_NOTES}, {PROGRAM_NAME}, {PROPERTY_NAME}, {PROPERTY_ADDRESS}, {SCHEDULE_DATE}, {TECHNICIAN_MESSAGE}, {ADDITIONAL_INFO}, {PROPERTY_CONDITIONS}, {START_DATE_TIME}, {END_DATE_TIME} | {SERVICE_PRICE}, {RESCHEDULED_REASON} |
| Program Assigned | {CUSTOMER_NAME}, {COMPANY_NAME}, {COMPANY_PHONE}, {PROGRAM_NAME}, {PROPERTY_ADDRESS}, {SCHEDULE_DATE} (the date the program was assigned) | {SERVICE_NAME}, {SERVICE_PRICE}, {PROPERTY_NAME} and other service variables |
| Estimate Accepted | {CUSTOMER_NAME}, {COMPANY_NAME}, {COMPANY_PHONE}, {PROGRAM_NAME} (lists programs and services), {PROPERTY_ADDRESS}, {SCHEDULE_DATE} (the date accepted) | {SERVICE_NAME}, {SERVICE_PRICE}, {PROPERTY_NAME} and other service variables |
| Customer Hold | {CUSTOMER_NAME}, {COMPANY_NAME}, {COMPANY_PHONE} | All service, property and date variables |
Email notes
- Rescheduled Service: when an office user reschedules, {SCHEDULE_DATE} is the new date. When a technician reschedules (skips) a service from the technician app, {SCHEDULE_DATE} is the original date that was skipped, and {SERVICE_PRICE} is not supported.
- Service Scheduled: {RESCHEDULED_REASON} is only filled in when the email is sent because a service was rescheduled. On a normal scheduling it appears as raw text, so leave it out of this template.
- Estimate Accepted: {PROGRAM_NAME} lists every program on the estimate and also the services, for example "Program: Lawn Care, Service: Aeration, Overseeding". {SERVICE_NAME} is not supported in this email.
- Program Assigned: {SCHEDULE_DATE} is the date the program was assigned, not a service date. Spraye automatically adds an "Access Your Account" button for the customer portal, so you don't need a link variable.
- Pre-Service Reminder: there is no variable for the number of days. If your template mentions it (for example "in 3 days"), type the number yourself to match your setting.
- Multiple services: when a customer has several services on the same day, Spraye sends a separate Service Scheduled, reminder and Service Completion email for each service.
Which variables work in each text message
Text messages support fewer variables than emails, and the list depends on your texting provider. Spraye is Spraye's built-in texting. Captivated applies if you have connected a Captivated account.
| Text message | Spraye texting | Captivated adds |
|---|---|---|
| Service Scheduled | {COMPANY_NAME}, {SERVICE_NAME}, {mm/dd/yyyy} | {PROPERTY_NAME}, {PROPERTY_ADDRESS} |
| Rescheduled Service | {COMPANY_NAME} | {SERVICE_NAME}, {PROPERTY_NAME}, {PROPERTY_ADDRESS}, {RESCHEDULED_REASON} |
| 1 Day Prior to Scheduled Date | {COMPANY_NAME} | {SERVICE_NAME}, {PROPERTY_NAME}, {PROPERTY_ADDRESS} |
| Pre-Service Reminder (X days) | {COMPANY_NAME} | {SERVICE_NAME}, {PROPERTY_NAME}, {PROPERTY_ADDRESS} |
| Service Completion | {COMPANY_NAME} | {SERVICE_NAME}, {PROPERTY_NAME}, {PROPERTY_ADDRESS} |
| On My Way | {TECHNICIAN_FIRST_NAME} | {SERVICE_NAME}, {PROPERTY_NAME}, {PROPERTY_ADDRESS} |
| Program Assigned | {COMPANY_NAME} | {PROGRAM_NAME}, {PROPERTY_NAME}, {PROPERTY_ADDRESS} |
| Estimate Accepted | {COMPANY_NAME} | {SERVICE_NAME}, {PROPERTY_NAME}, {PROPERTY_ADDRESS} |
Text message notes
- Character limit: text templates are limited to 160 characters with Spraye texting and 700 with Captivated. Keep in mind that variables are replaced with real details when sent, so the delivered text may be longer than your template.
- No date in most texts: only the Service Scheduled text has a date variable ({mm/dd/yyyy}). {SCHEDULE_DATE} does not work in any text message.
- No customer name, price or notes in texts: {CUSTOMER_NAME}, {SERVICE_PRICE}, {SERVICE_DESCRIPTION} and {SERVICE_NOTES} are email-only.
- One reminder text per customer: if a customer has several services on the same day, the 1 Day Prior and Pre-Service Reminder texts are sent once, for the first service.
- On My Way: {SERVICE_NAME} lists all services at that stop, separated by commas. Use each variable only once in this template; if a variable appears twice, only the first is filled in. {COMPANY_NAME} is not supported in this text. Technicians can edit the message before sending it.
Billing and payment messages
Service variables (such as {SERVICE_NAME} or {SCHEDULE_DATE}) do not work in invoice, past-due or payment messages, because those messages aren't tied to one service. These messages are set up elsewhere in Settings and have their own variables:
- Automated past-due reminder email: {CUSTOMER_NAME} (first name only), {INVOICE_AMOUNT}, {INVOICE_DUE_DATE}, {INVOICE_PDF_LINK}, {ACCOUNT_LINK}. The subject line supports {INVOICE_ID}.
- Automated past-due reminder text: {COMPANY_NAME}, {INVOICE_PDF_LINK}.
- Payment receipt text: {CUSTOMER_NAME}, {INVOICE_ID}, {PAYMENT_AMOUNT}, {PAYMENT_DATE}, {PAYMENT_METHOD}, {INVOICE_AMOUNT}, {COMPANY_NAME}, {COMPANY_PHONE}, {ACCOUNT_LINK}, {INVOICE_LINK}, {INVOICE_PDF_LINK}. Unlike other messages, any other variable is removed from this text rather than shown raw.
How to add variables to a template
- Hover over your profile name in the top navigation bar and select Settings.
- Scroll down to the Automated Emails & Text Messaging section.
- Find the message you want to customize (for example, Service Completion or 1 Day Prior to Scheduled Date).
- Type the variable into the email body or text message box, exactly as shown in the tables above.
- Click Save.
Tip: after changing a template, schedule a test service on your own test customer to see exactly what your customers will receive.