Tag Template Formatting Options
When generating documents in ScopeStack, formatting values — such as displaying 12345.67 as $12,345.67 — depends on the option you choose when uploading your template. This article explains the two approaches available for Tag Templates and when to use each.
The “Formatting for Tag Templates” Option
When uploading a Tag Template, you will see a toggle called Formatting for Tag Templates.
On this screen: The document template form shows a row of four fields across the top: Name, Template Format (a dropdown with options “Mail Merge Template (Legacy)” and “Tag Template”), Data Format (V1 or V2), and a field labeled Formatting for Tag Templates. The Formatting field appears as a checkbox labeled “Include date, time, and currency formatted fields for Tag Templates.” This field is only visible and active when the Template Format is set to “Tag Template” — it is hidden when Mail Merge Template is selected.
This option was added in November 2025 to bring date, time, and currency formatting to Tag Templates — capabilities that were previously only available in the legacy Mail Merge format.
Important: If you enable this option on an existing template, you will need to update the tags in your Word, PowerPoint, or Excel file to use the formatting wrapper syntax described below. Existing tags will not automatically apply formatting.
Formatting Enabled
With Formatting for Tag Templates enabled, you can apply formatting wrappers to transform raw values in the output:
.value— outputs the raw value without transformation.to_currency— formats the number as currency, following the currency defined on the project’s rate table.to_short_date— formats a date value using the short date format from your account settings.to_formatted_time— formats a time value using your account’s time format settings
When formatting is enabled, all date and currency values must have a formatting wrapper applied. Values without a wrapper will appear as raw numbers.
Example tag with currency formatting:
{hourly_rate.to_currency}Example tag with date formatting:
{project.start_date.to_short_date}Here is an example of a T&M pricing table with formatting enabled:
On this screen: A Word document is open showing a T&M pricing table. The table cells contain tag syntax such as
{hourly_rate.to_currency}and{project.start_date.to_short_date}. These tags use the.to_currencyand.to_short_dateformatting wrappers enabled by the Formatting for Tag Templates option. The tags appear as plain text in the Word file and are replaced with formatted values when the document is generated.
And the corresponding generated output:
On this screen: The generated Word document showing the T&M pricing table with formatted values. Hours and rates appear with currency formatting — for example,
$1,250.00— with thousands separators and two decimal places. Date fields appear in the short date format configured in your account settings (e.g.,06/15/2025).
Notice the commas in the thousands place — that is the currency formatter at work.
Formatting Disabled
With Formatting for Tag Templates disabled, formatting wrappers like .to_currency are not available. Instead, you can handle formatting manually using raw number transformations and unit values from the merge data.
Example:
{currency.unit}{hourly_rate*1|toFixed:2}In this example:
currency.unitsupplies the currency symbol (e.g.,$)hourly_rateis the numeric value from the merge data*1coerces the value to a number (JSON may treat decimal numbers as strings in some cases)toFixed:2rounds to two decimal places
The full list of available filters is in the Docxtemplater built-in filters documentation .
Note: For ScopeStack-specific filters (date, array, image, join, and more), see the Template Expression Reference.
Here is an example of the same T&M pricing table with formatting disabled:
On this screen: A Word document shows the same T&M pricing table with tags that use the manual formatting approach. Cells contain syntax like
{currency.unit}{hourly_rate*1|toFixed:2}wherecurrency.unitsupplies the currency symbol andtoFixed:2rounds the numeric value to two decimal places. This approach produces correct output but does not add thousands separators (commas) the way the.to_currencywrapper does.
And the corresponding output:
On this screen: The generated Word document showing the same T&M pricing table produced without the formatting wrappers. Values such as
$1250.00appear without thousands separators — the currency symbol comes fromcurrency.unitandtoFixed:2ensures two decimal places, but no comma grouping is applied. The table structure and all other content is identical to the formatting-enabled version.
The numbers render correctly, but totals in the thousands will not include commas, unlike the currency-formatted output.
Which Option Should I Use?
Enable Formatting for Tag Templates if:
- You want clean date and currency output without constructing formatting expressions manually.
- You are migrating from the legacy Mail Merge format and want equivalent formatting behavior.
Leave formatting disabled if:
- You need precise control over number formatting beyond what the wrappers provide.
- Your template already handles formatting manually and you do not want to rewrite the tags.
Styling rich text and lists
Several fields hold Markdown / rich text rather than plain values — Text Blocks, Language Fields, Service Descriptions, Terms & Conditions, and the narrative summaries (executive summary, responsibilities, and so on). You render these with the double-tilde (rich text) tag:
{~~project.text_blocks.signatures}
{~~formatted_service_description}(See How Tag Templates Work for the tag syntax.) This section covers how that rendered content is styled.
Rendered content takes the style of its tag’s paragraph. When a double-tilde tag renders, the content adopts the paragraph style of the line where the tag sits in your template. So you control the font, size, weight, and color of the rendered text — lists included — by applying a paragraph style to that line. Define a paragraph style with the look you want, apply it to the paragraph that holds the tag, and every generated document renders that content in your style. The style applies to everything the tag outputs: if a field has a lead-in sentence followed by a list, both take the style.
Lists are numbered by the engine. Author lists with standard Markdown (1. for numbered, - for bulleted). At generation time the engine builds a proper Word list and applies the numbering directly to the paragraphs. Two things come from the engine and are not changed by a paragraph style:
- The number format (1, 2, 3) and the bullet character.
- The list indentation.
A paragraph style changes a list’s font, weight, and color, but not its numbering or indentation. Both render consistently by default.
Coming from V1 (Mail Merge) templates? V1 mapped Markdown lists to Word styles named ListNumber and ListBullet. Tag Templates do not use those named styles — creating a ListNumber style has no effect in a Tag Template. Use the paragraph-style approach above instead.
Legacy Mail Merge Templates
Mail Merge templates (the legacy V1 format) using V2 merge data support the same formatting wrappers natively — .to_currency, .to_long_date, .to_short_date, .to_formatted_time — using the << field.to_currency >> syntax. No toggle is required.
If you are still on Mail Merge templates, see V1 Mail Merge Templates (Legacy Reference).