# Helper Functions

> Ready-made utility steps for formatting, conversion, and lookups, without writing a Code editor step.

**Helper Functions** is an app of small utility steps for everyday data work. It covers converting values, reshaping text, and similar chores that would otherwise need custom code.

Find it in the dock under **Tools → Data → Convert**, alongside **Formatting** and the built-in data steps.

> Helper Functions are **steps you place on the canvas**, not expressions you
> type into a field. There is no `{{ formatDate(...) }}` function syntax.
> Placeholders reference data, they do not call functions. See [Variable
> Reference Syntax](/reference/variable-syntax) for what a placeholder can
> contain.

## Setting it up

### Open the dock
Click **Tools** in the dock, then the **Data** category.

### Pick a function

Open **Helper Functions** and choose the operation you need. Each one is a normal step with its own inputs and output.

### Wire it up

Connect it into your flow. Reference its output downstream by step number, for example `{{ 3.result }}`.

Some functions do not appear in the catalogue, because a native step does the same job better. These are the ones you are most likely to go hunting for:

| Looking for             | Use instead                                                                                                  |
| ----------------------- | ------------------------------------------------------------------------------------------------------------ |
| Send HTTP request       | [HTTP Request](/build/action-steps/http-request)                                                             |
| Schedule task in future | [Wait](/build/action-steps/delay), or the [Scheduler Trigger](/build/triggers/scheduler) for a recurring job |
| Pause between steps     | [Wait](/build/action-steps/delay)                                                                            |
| Trigger workflow        | The [Subflow](/build/action-steps/trigger-workflow) step, which waits for the result                         |
| Send email              | The email connector for your provider, from the Apps panel                                                   |
| Send to S3              | The AWS connector from the Apps panel                                                                        |

If a function you expected is not in the list, check **Common Alternatives** below before assuming it is missing.

## Formatting

**Formatting** sits beside Helper Functions under **Tools → Data → Convert** and works the same way. Pick an action, and it becomes a step. It is where most everyday tidying lives.

| Group         | What it covers                                                                                                                                |
| ------------- | --------------------------------------------------------------------------------------------------------------------------------------------- |
| **Text**      | Trim whitespace, transform case, replace text, set a default when a value is empty, encode or decode a URL, convert between HTML and Markdown |
| **Extract**   | Pull an email address, phone number, URL or number out of a longer string, or match your own regular expression                               |
| **Date/Time** | Format a date, add or subtract time, compare two dates                                                                                        |
| **Numbers**   | Format a number, format a currency value                                                                                                      |
| **Data**      | Convert JSON to a string                                                                                                                      |

Reach for **Set Default Value** more often than seems necessary. An empty field arriving at a later step is one of the quieter ways a run goes wrong, and it costs one step to rule out.

## Common alternatives

Much of what you might reach for a helper function to do is handled by a dedicated step:

| You want to                        | Use                                                                               |
| ---------------------------------- | --------------------------------------------------------------------------------- |
| Reshape or reformat data           | [AI Data Transform](/build/ai-features/ai-transform)                              |
| Parse a JSON string                | [Parse JSON](/build/action-steps/parse-json)                                      |
| Break text into a list             | [Split Text](/build/action-steps/split-text)                                      |
| Strip HTML down to plain text      | [HTML to Text](/build/action-steps/html-to-text)                                  |
| Insert the current date or time    | `{{ $now }}` / `{{ $today }}` — see [Variable Syntax](/reference/variable-syntax) |
| Format, shift or compare a date    | [Date](/build/action-steps/date)                                                  |
| Group a list and count or total it | [Summarize](/build/action-steps/summarize)                                        |
| Anything not covered above         | [Code editor](/build/action-steps/code-execution)                                 |

For a one-off transformation, **AI Data Transform** is usually the quickest route. Describe the change in plain language rather than finding the right function.

For anything repeated, precise, or performance-sensitive, **Code editor** is the more predictable choice. It runs the same way every time, and is far easier to debug than a chain of small utility steps.

## What's Next?

- Describe a transformation instead of coding it with [AI Data Transform](/build/ai-features/ai-transform).
- Write it yourself in [Code editor](/build/action-steps/code-execution).
