All articles

June 22, 2026 · Articles

HTML Templates for Alerts and Everything Else


This is part three of our series on HTML email templates in BigWave. Catch up on what templates are and how AI can build them for you and the complete invoice-email cheat sheet if you haven’t yet.

Invoices get the spotlight, but they’re far from the only email BigWave sends. Alerts, reminders, quotes, and other notifications all benefit from the same template treatment: design the layout once, and let field codes fill in the specifics every time one goes out.

The same idea, applied everywhere

Whatever the email type, the workflow is identical:

  1. Start with a layout — build it in any HTML editor, or have AI generate it from your logo and the text you want (see part one).
  2. Replace the sample text with field codes — the [square bracket] placeholders that BigWave fills in when the email is sent.
  3. Preview, fix any misspelled codes, and save.

The difference between an invoice email and an alert isn’t how you build it — it’s which codes you use and what action you’re prompting.

Same two rules apply: keep all styling inline, and if a code prints as literal [bracketed] text in the preview, it’s misspelled.

Building blocks that work across email types

Alerts, reminders, and other notifications are almost always tied to a work order, so they use WO. field codes — the same family of codes that pulls live job data into the email when it’s sent. (Heads up: the [BillingAddress.…] and [PaymentAddress.…] codes you may have seen elsewhere are for invoices and quotes and won’t resolve in an alert — stick with the WO. codes below.)

Recipient & customer details

Most alerts are about a specific customer and job, so these carry over directly:

Field codeWhat it becomes
[WO.AccountName]Customer / account name
[WO.Customer.EmailAddress]Customer email
[WO.WOID]Work order number
[WO.PONumber]Customer PO number
[WO.ScheduledStartDateSite]Scheduled / original job date
[WO.CustomField.PERMIT.PERMIT NUMBER]Any custom field — the pattern is [WO.CustomField.Group.Name] (permit #, status, priority, etc.)

Site & service address

Field codeWhat it becomes
[WO.Site.SiteName]Service site name
[WO.Site.StreetAddress]Service site street
[WO.Site.CSZ]Service site city/state/zip
[WO.Site.MainPhone]Service site phone
[WO.Site.Address.StreetAddress]Service address street (alternate form)
[WO.Site.Address.CSZ]Service address city/state/zip (alternate form)

Every outgoing email should identify you. These pull from the work order’s region:

Field codeWhat it becomes
[WO.Region.BillingAddressForDisplay]Your business mailing address
[WO.Region.MainPhone]Your phone
[WO.Region.EmailAddress]Your email

Conditional text — perfect for alerts

Conditional blocks really shine in notifications, where the message often changes based on status or urgency. Show text only when a condition is true ([#else] is optional):

[#if WO.ScheduledStartDateSite]
  Your service is scheduled for [WO.ScheduledStartDateSite].
[#else]
  We'll be in touch shortly to schedule your service.
[/if]

Compare values with >, >=, <, <=, ==, !=; combine conditions with && or ||. A bare field name tests whether it has a value at all — handy for “only show this line if there’s something to show.”

Putting it together: an inspection-due reminder

Here’s how the pieces fit into a real reminder email. Note the inline styling, the [HeaderLogo] block at the top (your logo drops in automatically), the conditional PO row, and the WO. codes standing in for real values:

[HeaderLogo]

<p>Hello [WO.AccountName],</p>

<p>This is a friendly reminder that your inspection for work order
   <strong>[WO.WOID]</strong> is coming due.</p>

<table style="width:100%;border-collapse:collapse;">
  <tr>
    <td style="padding:8px 0;"><strong>Permit Number</strong></td>
    <td align="right" style="padding:8px 0;">[WO.CustomField.PERMIT.PERMIT NUMBER]</td>
  </tr>
  <tr>
    <td style="padding:8px 0;"><strong>Original Job Date</strong></td>
    <td align="right" style="padding:8px 0;">[WO.ScheduledStartDateSite]</td>
  </tr>
  [#if WO.PONumber]
  <tr>
    <td style="padding:8px 0;"><strong>Customer PO</strong></td>
    <td align="right" style="padding:8px 0;">[WO.PONumber]</td>
  </tr>
  [/if]
</table>

<p style="font-size:14px;"><strong>Service Address</strong><br>
  [WO.AccountName]<br>
  [WO.Site.Address.StreetAddress]<br>
  [WO.Site.Address.CSZ]<br>
  [WO.Customer.EmailAddress]</p>

<p style="font-size:14px;"><strong>Site Address</strong><br>
  [WO.Site.SiteName]<br>
  [WO.Site.StreetAddress]<br>
  [WO.Site.CSZ]<br>
  [WO.Site.MainPhone]</p>

<hr>
<p style="font-size:12px;color:#6b7280;">
  [WO.Region.BillingAddressForDisplay]<br>
  Tel: [WO.Region.MainPhone] · Email: [WO.Region.EmailAddress]
</p>

Swap in your wording, adjust the layout, and you’ve got a reusable reminder that personalizes itself every time it goes out.

A few ideas to template

Once you’ve got the hang of it, the same approach covers a lot of ground:

  • Appointment reminders — confirm the date, site, and a contact number.
  • Job-status alerts — “Your work order [WO.WOID] is now complete.”
  • Quote emails — much like invoices; lean on the totals and line-item codes from part two.
  • Follow-ups and thank-yous — a branded note after a job wraps up.

Which codes are available depends on the email type. Not every code works in every context — an invoice-only total won’t have a value in a generic alert. When in doubt, preview against real data: anything that resolves to a value is fair game; anything that stays in brackets either doesn’t apply here or is misspelled.

Wrapping up the series

Across all three posts, the takeaway is the same: build the layout once, let field codes do the repetitive work. You don’t need to write HTML — AI can generate the template for you — and you don’t need to memorize every code, because previewing against real data shows you exactly what fills in.

Try BigWave free for 30 days

Streamline national service centers and help desks, manage assets, eliminate status meetings, and deliver reliably with less.