HTML Templates: Formatting Dates and Dollar Amounts
This is part three of our four-part series on HTML email templates in BigWave:
- What they are and why they matter
- The complete field-code cheat sheet
- Formatting dates and dollar amounts (you’re reading it)
- Alerts and everything else
In part two you dropped field codes into a template and let BigWave fill in the values. This post is about controlling how those values read once they’re filled in — so a total lands as $1,250.00 instead of 1250.00, and a date reads July 1, 2026 instead of a full timestamp.
Formatting field values
Every code drops in whatever value BigWave has on file, using a sensible default: a dollar amount comes out as 1250.00, a date comes out as the full 07/01/2026 02:30 PM (CST). Often that’s exactly what you want. When it isn’t, you can tell a code how to format itself by adding a format instruction after a vertical bar (|) inside the brackets:
[TotalSummary.TotalPricePlusTax|currency] → $1,250.00
[WO.ScheduledStartDateSite|date] → 07/01/2026
Why and how this works
When BigWave fills a code, it looks at the type of the underlying value — is it a date, a number, or plain text? The instruction after the | is then applied to match:
- Dates accept the friendly aliases
date,time, anddatetime, or any standard .NET date format string (likeMMMM d, yyyy). - Numbers accept the friendly aliases
currency,money,number, andpercent, or any standard .NET numeric format string (likeN0or0.00).
The aliases are just shorthand for the most common formats; underneath, BigWave hands your instruction to the same C# formatting library a developer would use, so anything that library understands works here too.
If the instruction doesn’t fit the value — a number alias on a date, a format on a plain-text field, or a format string that isn’t valid — BigWave can’t honor it, so it leaves the whole tag visible in the email (e.g. [WO.WOID|date]). That’s the same signal as a misspelled code: if you see brackets in the preview, something’s off. Always preview against a real work order so a stray tag never reaches a customer.
Date formatting
Using a scheduled date of Wednesday, July 1, 2026, 2:30 PM:
| Field code | What it becomes |
|---|---|
[WO.ScheduledStartDateSite] | 07/01/2026 02:30 PM (CST) (default — full date and time) |
[WO.ScheduledStartDateSite|date] | 07/01/2026 |
[WO.ScheduledStartDateSite|time] | 02:30 PM (CST) |
[WO.ScheduledStartDateSite|datetime] | 07/01/2026 02:30 PM (CST) |
[WO.ScheduledStartDateSite|MMMM d, yyyy] | July 1, 2026 |
[WO.ScheduledStartDateSite|ddd MMM d] | Wed Jul 1 |
[WO.ScheduledStartDateSite|yyyy-MM-dd] | 2026-07-01 |
[WO.ScheduledStartDateSite|currency] | [WO.ScheduledStartDateSite|currency] — ❌ a number alias can’t be applied to a date, so the tag prints as-is |
Number formatting
Using a total of 1250 and work order number 14695:
| Field code | What it becomes |
|---|---|
[TotalSummary.TotalPricePlusTax] | 1250.00 (default — two decimals, no symbol) |
[TotalSummary.TotalPricePlusTax|currency] | $1,250.00 |
[TotalSummary.TotalPricePlusTax|money] | $1,250.00 (alias of currency) |
[TotalSummary.TotalPricePlusTax|number] | 1,250.00 |
[TotalSummary.TotalPricePlusTax|N0] | 1,250 |
[TotalSummary.TotalPricePlusTax|C0] | $1,250 |
[WO.WOID|000000] | 014695 (zero-padded to six digits) |
[TotalSummary.TotalPricePlusTax|date] | [TotalSummary.TotalPricePlusTax|date] — ❌ a date alias can’t be applied to a number, so the tag prints as-is |
The
percentalias multiplies by 100. It’s meant for rate fields — a stored rate of0.0725formats as7.3%. Point it at a dollar amount like the total above and you’ll get125,000.0%, which is almost never what you want.
When formatting doesn’t take — and the fix
A format instruction only works on a date or a number. Point one at anything else and BigWave leaves the tag untouched:
| Field code | What happens | Why |
|---|---|---|
[TotalSummary.TotalPricePlusTaxString|currency] | Prints literally as [TotalSummary.TotalPricePlusTaxString|currency] | The …String totals are already formatted text, not numbers — there’s nothing left to format. |
[BillingAddress.AddressName|number] | Prints literally as [BillingAddress.AddressName|number] | A name is plain text; number formats don’t apply. |
[TotalSummary.TotalPricePlusTax|Z] | Prints literally as [TotalSummary.TotalPricePlusTax|Z] | Z isn’t a valid .NET format string. |
[DateCompleted|date] (no completion date yet) | “ (the field’s normal empty display) | An empty date keeps its default display; the format is simply ignored. |
The most common gotcha is that first row. Notice the totals in the cheat sheet end in String ([TotalSummary.TotalPricePlusTaxString]) — those come pre-formatted as currency text, which is why they don’t take a format instruction. To format a total yourself, use the numeric version without the String suffix — [TotalSummary.TotalPricePlusTax|currency] instead of [TotalSummary.TotalPricePlusTaxString].
A quick reference from the C# format library
Any format string the .NET library understands works after the |. The handful you’ll reach for most:
| Instruction | On the sample value | Result |
|---|---|---|
C / C0 / C2 | 1250 | $1,250.00 / $1,250 / $1,250.00 |
N / N0 / N2 | 1250 | 1,250.00 / 1,250 / 1,250.00 |
F0 / F2 | 1250 | 1250 / 1250.00 (no thousands separator) |
P0 / P1 | 0.0725 | 7% / 7.3% |
0.00 / #,##0 / 000000 | 1250 | 1250.00 / 1,250 / 001250 |
MM/dd/yyyy | Jul 1, 2026 | 07/01/2026 |
MMMM d, yyyy | Jul 1, 2026 | July 1, 2026 |
ddd / dddd | Jul 1, 2026 | Wed / Wednesday |
h:mm tt | 2:30 PM | 2:30 PM |
In a custom pattern, a 0 is a required digit (padding with zeros) and a # is an optional one (dropped when not needed) — which is exactly how [WO.WOID|000000] pads 14695 out to 014695.
These formatting rules apply to every email BigWave sends, not just invoices — the same |currency and |date instructions work on the alert and reminder codes in part four.