Text Transform
Transform messy strings, normalize CRM data, run quick math, or format dates without leaving the workflow editor. Text Transform gives you a single dropdown with contextual inputs so every formatting option lives in one streamlined action.
Overview
Section titled “Overview”Use Text Transform any time you need to massage CRM values before writing them back to HubSpot or sending them downstream—names, emails, deal amounts, close dates, and more.
Configuration
Section titled “Configuration”Input Fields
Section titled “Input Fields”Text (Required)
Section titled “Text (Required)”Enter static text or use personalization tokens to reference properties. You can also combine both.
Examples:
{{contact.firstname}}{{deal.amount}}Customer {{contact.firstname}} has {{deal.amount}}Custom static textTransformation Type (Required)
Section titled “Transformation Type (Required)”Choose the operation to run. The UI automatically reveals any additional inputs that transformation needs (e.g., “Number to add” or “Currency code”).
Conditional Inputs (automatic)
Section titled “Conditional Inputs (automatic)”Depending on the dropdown selection, you may see extra fields:
| Transformation | Extra fields |
|---|---|
prefix, suffix | prefixValue, suffixValue |
replace | replaceSearchValue, replaceReplaceValue, replaceAll |
add_number, subtract_number, multiply_number, divide_number | Matching addNumberValue, subtractNumberValue, etc. |
round_number | roundNumberPrecision |
format_number | formatNumberLocale, formatNumberMinimumFractionDigits, formatNumberMaximumFractionDigits |
format_currency | formatCurrencyLocale, formatCurrencyCode, formatCurrencyDisplay |
format_date | formatDateLocale, formatDateStyle, formatTimeStyle, formatDateTimezone |
All other transforms just need the base text.
Output Fields
Section titled “Output Fields”transformedText (String)
Section titled “transformedText (String)”The formatted result you can map into properties or later workflow steps.
Input: 1234.5Transform: format_currency (locale=en-US, currency=USD)Output (transformedText): $1,234.50Available Transformations
Section titled “Available Transformations”Text formatting
Section titled “Text formatting”lowercase,uppercase: enforce consistent casingtitle_case: capitalizes every word (great for names)capitalize_first: only capitalizes the very first charactertrim,trim_start,trim_end: remove whitespaceprefix,suffix: prepend or append static textreplace: simple find-and-replace with optional “replace all”
Numeric & currency operations
Section titled “Numeric & currency operations”add_number,subtract_number,multiply_number,divide_number: lightweight math for lead scores, counters, or projectionsround_number: keep a defined number of decimal placesformat_number: locale-aware thousands separators and decimal symbolsformat_currency: full currency strings with locale, currency code, and symbol/name controls
Date & time formatting
Section titled “Date & time formatting”format_date: feed ISO dates/datetimes and output localized strings with your preferred style, timezone, and optional time component
Examples
Section titled “Examples”1. Normalize company names
Section titled “1. Normalize company names”- Text:
acme industries - Transform:
title_case - Output:
Acme Industries
2. Add pipeline tags automatically
Section titled “2. Add pipeline tags automatically”- Text:
{{deal.dealname}} - Transform:
prefix - Extra field
prefixValue:[Enterprise] - Output:
[Enterprise] Customer Portal Expansion
3. Update engagement scores inline
Section titled “3. Update engagement scores inline”- Text:
{{contact.hs_lead_score}} - Transform:
add_number - Extra field
addNumberValue:5 - Output:
72
4. Format ARR as currency
Section titled “4. Format ARR as currency”- Text:
{{deal.arr}} - Transform:
format_currency - Extra fields:
formatCurrencyLocale = en-US,formatCurrencyCode = USD - Output:
$24,500.00
5. Send human-readable close dates
Section titled “5. Send human-readable close dates”- Text:
{{deal.closedate}} - Transform:
format_date - Extra fields:
formatDateStyle = long,formatTimeStyle = none,formatDateLocale = en-US,formatDateTimezone = America/New_York - Output:
September 30, 2025
Note: Locale codes use hyphens (e.g., en-US, fr-FR, de-DE) not underscores.
Locale Codes Reference
Section titled “Locale Codes Reference”When using format_number, format_currency, or format_date, you can specify locale codes to control how numbers and dates are displayed. All locale codes use hyphens (not underscores).
Common Locale Codes
Section titled “Common Locale Codes”| Region | Code | Number Format | Currency Format |
|---|---|---|---|
| United States | en-US | 1,234.56 | $1,234.56 |
| United Kingdom | en-GB | 1,234.56 | £1,234.56 |
| Germany | de-DE | 1.234,56 | 1.234,56 € |
| France | fr-FR | 1 234,56 | 1 234,56 € |
| Japan | ja-JP | 1,234.56 | ¥1,235 |
| Spain | es-ES | 1.234,56 | 1.234,56 € |
| Italy | it-IT | 1.234,56 | 1.234,56 € |
If left empty, all locale fields default to en-US.
Common Use Cases
Section titled “Common Use Cases”Data normalization
Section titled “Data normalization”- Normalize casing for emails and names
- Trim whitespace before writing properties
- Add prefixes/suffixes for attribution tags
Revenue & scoring
Section titled “Revenue & scoring”- Increment numeric counters on each workflow pass
- Round metrics to whole numbers for dashboards
- Present ARR/MRR in currency format when notifying teams
Reporting & comms
Section titled “Reporting & comms”- Format ISO dates for internal notifications
- Output localized numbers for regional teams
- Perform find-and-replace before syncing data to other systems
Best Practices
Section titled “Best Practices”- Trim first: Remove leading/trailing whitespace before other transforms.
- Validate inputs: Use if/then branches to ensure text or numeric values exist before transforming.
- Locale format: Always use hyphens in locale codes (
en-US, noten_US). If you enter underscores, they’ll be auto-converted, but it’s better to use the correct format. - Plan for locale: Match locale/timezone to your target audience to avoid confusion. Defaults to
en-USif left empty. - Chain actions: Pair with Search & Replace or Match Regex for more advanced flows.
- Keep originals: Store the original value if you might need to audit or revert later.
Transformation Reference
Section titled “Transformation Reference”| Transformation | Input | Output |
|---|---|---|
lowercase | John.Doe@EXAMPLE.com | john.doe@example.com |
uppercase | sku-42 | SKU-42 |
title_case | john doe | John Doe |
capitalize_first | enterprise upgrades | Enterprise upgrades |
trim | hello | hello |
prefix | Renewal (prefix [VIP] ) | [VIP] Renewal |
replace | HubSpot CRM (replace CRM → Platform) | HubSpot Platform |
add_number | 67 (+5) | 72 |
round_number | 123.4567 (precision 2) | 123.46 |
format_number | 1234567.89 (locale de-DE) | 1.234.567,89 |
format_currency | 2500 (USD, en-US) | $2,500.00 |
format_date | 2025-09-22T14:30:00Z (long, UTC) | September 22, 2025 |
Related Actions
Section titled “Related Actions”- Search & Replace — For pattern-based transformations
- Match Regex — Validate strings before applying replacements