Template Formatting in iDialogue Templates

Template Formatting in iDialogue Templates

This guide shows how to format numbers, currency, percentages, and dates inside iDialogue templates for PDF/HTML generation. All examples assume your data comes from a Data Context Definition (DCD) and is available in the template. The syntax is based on Twig and Pebble.

Filters vs. Functions

  • Filters use pipe syntax and feel like a transformation: {{ opportunity.Amount | formatCurrency() }}
  • Functions use call syntax: {{ formatCurrency(opportunity.Amount) }}
  • Both are available; pick whichever reads best for your team. Filters and functions share the same defaults and behaviors.

Currency Formatting

Default USD with commas and two decimals:

<td>{{ opportunity.Amount | formatCurrency() }}</td>

Custom symbol and pattern:

<td>{{ opportunity.Amount | formatCurrency(currencySymbol="USD ", format="¤#,##0.00") }}</td>

Function style:

<td>{{ formatCurrency(opportunity.Amount) }}</td>

Behavior: null/blank values render as 0.00; numeric strings are parsed safely.

Number Formatting

Thousands separators and two decimals:

<td>{{ lineItem.UnitPrice | formatNumber(format="#,##0.00") }}</td>

Integer quantities:

<td>{{ formatNumber(lineItem.Quantity, format="#,##0") }}</td>

Behavior: null/blank → 0; numeric strings are parsed safely.

Percent Formatting

Show as percent without scaling (expects 0–100 already):

<td>{{ lineItem.Discount | formatPercent() }}</td>

Scale fractional values (e.g., 0.15 → 15%):

<td>{{ formatPercent(lineItem.Discount, scale=true) }}</td>

Custom pattern:

<td>{{ lineItem.Discount | formatPercent(format="#0.0'%'") }}</td>

Behavior: null/blank → 0%; numeric strings are parsed safely.

Date Formatting

Default pattern yyyy-MM-dd:

<td>{{ formatDate(opportunity.CloseDate) }}</td>

Custom pattern:

<td>{{ opportunity.CloseDate | formatDate(pattern="MMM d, yyyy") }}</td>

Behavior: accepts ISO date strings (e.g., 2024-03-01) or epoch millis; null/blank → empty string.

DateTime Formatting

Default pattern yyyy-MM-dd HH:mm z:

<td>{{ formatDateTime(quote.IssuedAt) }}</td>

Custom pattern:

<td>{{ quote.IssuedAt | formatDateTime(pattern="MMM d, yyyy HH:mm") }}</td>

Behavior: accepts ISO date-time (e.g., 2024-03-01T15:30:00Z) or epoch millis; null/blank → empty string.

Quick Cut-and-Paste Examples

Line items table with all formatters (filter style):

{% for li in lineItems %}
<tr>
  <td>{{ li.Name }}</td>
  <td>{{ li.ProductCode }}</td>
  <td>{{ li.Quantity | formatNumber(format="#,##0") }}</td>
  <td>{{ li.UnitPrice | formatCurrency() }}</td>
  <td>{{ li.Discount | formatPercent(scale=true) }}</td>
  <td>{{ li.TotalPrice | formatCurrency() }}</td>
</tr>
{% endfor %}

Same table using functions:

{% for li in lineItems %}
<tr>
  <td>{{ li.Name }}</td>
  <td>{{ li.ProductCode }}</td>
  <td>{{ formatNumber(li.Quantity, format="#,##0") }}</td>
  <td>{{ formatCurrency(li.UnitPrice) }}</td>
  <td>{{ formatPercent(li.Discount, scale=true) }}</td>
  <td>{{ formatCurrency(li.TotalPrice) }}</td>
</tr>
{% endfor %}

Defaults and Fallbacks

  • Locale defaults to en_US for number/currency/percent.
  • Currency symbol defaults to $; override with currencySymbol.
  • Percent defaults to no scaling; set scale=true to multiply by 100.
  • Null/blank values render safe defaults instead of throwing (e.g., 0, 0.00, 0%, or empty string for dates).
  • Numeric strings are parsed to numbers automatically; non-numeric strings fall back to the null/default value.

Tips for Salesforce Admins/Developers

  • Keep templates simple: prefer filters for inline readability; switch to functions if your team finds them clearer.
Generated 2026-03-17T05:03:49.107116Z
iDialogue Agent

Ask about this page, related knowledge or specific iDialogue product and support features.