
GoHighLevel Workflow Formatter Actions: Date, Text & Maths (2026)
By Dr Priya Jaganathan, GoHighLevel Certified Admin · HL Growth Partner, Australia · Updated 1 October 2026 · 9 min read
Some links below are affiliate links — if you sign up through them, HL Growth Partner may earn a commission at no extra cost to you. It never changes what we recommend.
GoHighLevel workflow formatter actions are the quiet workhorses that turn messy form data into clean, usable values: tidy names, consistent phone numbers, readable dates and correctly formatted dollar amounts. Most agencies ignore them until a client complains that an SMS said "Hi JOHN" or showed a date in American order.
This guide walks through each HighLevel formatter action, what it actually does, and the real builds we use them for in Australian sub-accounts. You will also learn how to pass a formatter's output into later steps and how to test the lot before it touches a live contact.
Quick Facts
| Where to find them | Automation > Workflows, then the plus (+) button to add an action |
| Formatter actions | Date/Time Formatter, Number Formatter, Text Formatter |
| Date/Time Formatter options | Format Date, Format Date & Time, Compare Dates |
| Number Formatter options | Text to Number, Format Number, Format Phone Number, Format Currency, Random Number |
| Companion action | Math Operation: add, subtract, multiply or divide numbers; add or subtract days, months or years on dates |
| Order of operations | Not supported inside a single Math Operation step; chain several steps instead |
What GoHighLevel workflow formatter actions actually do
A formatter action takes an input, usually a contact field, a trigger value or a custom value, transforms it, and hands the result to the next steps in the workflow. It does not change the contact record on its own.
That second point catches people out. A formatter produces an output; it does not save anything until you pass that output into an action such as Update Contact Field, an SMS, an email or a webhook.
Think of formatters as the data-cleaning layer of your automation. They sit between "the form was submitted" and "send the message", and they make sure what goes out looks like a human typed it carefully.
The Date/Time Formatter: GHL date formatting without the headaches
The Date/Time Formatter has three options. Each one detects the incoming format automatically, so you mainly choose what you want out the other side.
- Format Date converts a date into a format you pick from a list.
- Format Date & Time does the same for values that include a time.
- Compare Dates takes a start date and an end date and returns the difference in days.
Real use cases for Australian businesses
The most common job is turning a stored date into day-month-year order before it lands in an SMS. Australian clients read 04/05 as 4 May, and a reminder that says otherwise creates no-shows.
Compare Dates is brilliant for "days until" logic. Compare today against a policy expiry or membership end date, then route the contact with an If/Else branch based on the number of days returned.
If you are building expiry sequences, our walkthrough on setting up renewal reminder workflows shows where a Compare Dates step slots in neatly.
The Number Formatter: GHL number and currency formatting for SMS and email
The Number Formatter covers five jobs. Below is how we use each one in client builds.
| Option | What it does | Typical use |
|---|---|---|
| Text to Number | Turns a text value such as "$12,345.67" into a plain number | Cleaning a quote amount captured in a text field before maths |
| Format Number | Applies a numeric format to a value | Adding thousands separators to a figure in a report email |
| Format Phone Number | Reformats a phone number, for example into international format | Normalising numbers before sending to another platform by webhook |
| Format Currency | Formats a number as currency for a chosen locale | Showing "$1,250.00" rather than "1250" in an SMS |
| Random Number | Generates a random number | Simple split tests or random team assignment |
Format Currency is the one clients notice. A deposit request that reads "$450.00" looks professional; "450" looks like a typo, and it is a five-minute fix.
Text to Number matters more than it seems. If a value arrives as text with symbols and commas, convert it first, then calculate with it, then format it back to currency for the message.
The Text Formatter: HighLevel formatter actions for clean names and messages
The Text Formatter is the broadest of the three. It handles capitalisation, cleaning, extracting and replacing text.
- Upper Case, Lower Case and Title Case for consistent capitalisation.
- Split breaks text into segments using a separator you enter.
- Trim shortens text to a set length, with options to skip characters from the start and add an ellipsis.
- Find returns the position of the first match of a piece of text.
- Replace swaps specified text for a new value.
- Default Value returns a fallback when the input is empty.
- Word Count and Remove HTML Tags for analysis and plain-text cleanup.
Normalising name capitalisation
Leads type their names however they like: "sarah", "SARAH" or "sArah". Run the first name through Title Case, then write the result back with Update Contact Field so every future message greets them properly.
Splitting a full name
Some lead forms and imported lists only capture "Full Name". Use Split with a space as the separator to pull out the first part for the first name field. Check the output in a test run, because names with prefixes or double-barrelled surnames will not always split cleanly.
Default values for empty fields
Default Value saves awkward messages. If the first name is blank, return "there" so the SMS reads "Hi there" instead of "Hi ,".
Math Operation and the GHL date and number formatter combo
Math Operation is not a formatter, but it is the partner you will reach for most. It adds, subtracts, multiplies or divides numeric fields, and adds or subtracts days, months or years on date fields.
Unlike the formatters, it writes its result straight into a field. In the update field dropdown you can choose from Standard Fields, Custom Fields or Custom Values, and the source and destination must be the same field type.
Two limits to plan around. Complex expressions needing order of operations are not supported in one step, so break calculations into several actions. Date maths also only takes positive increments, so use subtract rather than a negative number.
Example: calculate a 30% deposit
- Math Operation: multiply the "Quote Amount" custom field by 0.3 and store it in a "Deposit Amount" monetary field.
- Number Formatter: Format Currency on "Deposit Amount" for an Australian locale.
- Send SMS: insert the formatted output from step 2 into the message.
Example: compute a renewal date
- Math Operation: add 12 months to "Start Date" and store it in a "Renewal Date" date field.
- Date/Time Formatter: Format Date on "Renewal Date" into day-month-year order.
- Send Email: reference the formatted date in the body.
Not on HighLevel yet? Start with a free 30-day trial here — long enough to build everything in this guide before you pay a cent.
Referencing formatter outputs in later workflow steps
Each formatter step creates an output value. In any later action, open the custom value picker (the {} icon in the message or field editor) and select the output from that specific formatter step.
Name every formatter step clearly, such as "Format: deposit AUD" or "Text: first name title case". When a workflow has four formatters, the picker becomes guesswork unless the step names tell you what each one holds.
Decide whether the value needs to live beyond this workflow run. If it does, write it to a custom field with Update Contact Field. If it is only for one message, reference the step output directly and skip the extra field.
For values shared across the whole sub-account, such as a standard deposit percentage, store them centrally. Our guide to setting up GoHighLevel custom values covers the naming approach we use.
| Where the value goes | Best approach |
|---|---|
| A single SMS or email in this workflow | Reference the formatter step output directly |
| Future workflows, reports or smart lists | Save it with Update Contact Field into a custom field |
| A branching decision | Feed the output into an If/Else condition |
| An external platform | Send the output in a webhook payload |
Branching on formatter output is where these actions really pay off. See our guide to If/Else conditions in workflows for structuring those branches.
When formatters are not enough
If you need something formatters cannot do, like parsing a messy address or complex conditional maths, the Custom Code action in GoHighLevel workflows is the next step up. Try formatters first, though, because they are easier for the next admin to read.
Testing GoHighLevel workflow formatter actions before go-live
Formatters fail quietly. A blank input, an unexpected date format or a stray currency symbol produces a wrong value rather than an error, so you have to look.
- Create a test contact with deliberately messy data: lowercase name, blank fields, unusual phone formats.
- Run the workflow against that contact using the builder's test option or the real trigger.
- Open the workflow's execution logs and check each formatter step's input and output.
- Confirm the final SMS or email reads correctly on an actual phone.
- Repeat with a "clean" contact to make sure you have not broken the normal case.
Our full process for testing and debugging GoHighLevel workflows covers execution logs in more detail.
For exact option behaviour, the official HighLevel help articles on the Number Formatter action and the Math Operation action are worth bookmarking, as HighLevel updates these actions regularly.
Common mistakes to avoid
- Assuming a formatter saves to the contact. It only produces an output until you write it back with Update Contact Field.
- Doing maths on a text value. Convert with Text to Number first, or the calculation will not behave as expected.
- Trying to fit a whole formula into one Math Operation step. Break it into ordered steps instead.
- Leaving steps with default names, which makes the custom value picker confusing later.
- Forgetting blank inputs. Add a Default Value step for fields that are often empty.
- Only testing with tidy data. Real leads are messy, so test with messy contacts.
If you want your workflows audited and rebuilt with clean, formatter-driven data from day one, book a strategy call with the HL Growth Partner team.
Or if you just need the software first: grab the 30-day HighLevel trial and book us when you're ready to scale it.
Frequently asked questions
What are GoHighLevel workflow formatter actions?
They are workflow actions that transform data mid-automation. The main ones are the Date/Time Formatter, Number Formatter and Text Formatter, which reformat dates, numbers, currency, phone numbers and text so later steps use clean values.
Does a formatter action update the contact record?
No. A formatter creates an output value for later steps to use. To keep the result on the contact, add an Update Contact Field action and insert the formatter output into the relevant field.
How do I use a formatter's output in an SMS or email?
Open the message editor in a later step and use the custom value picker. Select the output from the specific formatter step, which is why clear step names make a big difference.
Can I add days to a date field in GoHighLevel?
Yes, with the Math Operation action. It can add or subtract days, months or years on a date field and store the result in the same or a different date field. Use positive values only, choosing subtract when you need an earlier date.
How do I format currency in Australian dollars for an SMS?
Use the Number Formatter with the Format Currency option and choose the appropriate locale and currency. Then insert that formatter step's output into your SMS rather than the raw field value.
Can I split a full name into first and last names?
Yes. Use the Text Formatter's Split option with a space as the separator, then save the result into the right contact fields. Test it with a few unusual names first, as prefixes and multi-part surnames may not split as you expect.
Why is my Math Operation giving the wrong answer?
The usual causes are a text value being used as a number, or a multi-part formula squeezed into one step. Convert text first with Text to Number, and break formulas into separate Math Operation steps in the right order.
Related Articles on HL Growth Partner
Data and fields
Workflow building blocks
- Wait steps and business hours in workflows
- Workflow goals and exit conditions
- Inbound and outbound webhooks guide
