Overview
Most automations need a few small data tweaks before the interesting work happens: pull a value out of nested JSON, format a timestamp for Slack, clean up a string before it lands in a Project title. Utility actions cover those one-liners, so you do not need a custom script or a separate AI call.
TL;DR: Five utility actions cover most data-shaping work in Taskade automations:
utils.jsonExtract(JSONPath),utils.formatDate,utils.textReplace,utils.textRegexMatch, andtaskade.setProjectTitle. They are deterministic, fast, and cheaper than asking AI. Pair them with the HTTP Webhook trigger and Branch to build pipelines end to end. See the Utility Actions overview for the full catalogue.
utils.jsonExtract
Pull values out of nested JSON with a JSONPath expression. Taskade uses the jsonpath-plus library under the hood, so any standard JSONPath query works (the dollar-sign root, dot/bracket child access, wildcards, filters). Note: JSONPath is a different language from jq; queries written for jq will not work here.
Sample input:
{
"user": { "id": 42, "email": "[email protected]" },
"items": [
{ "sku": "TSK-001", "qty": 2 },
{ "sku": "TSK-002", "qty": 1 }
]
}
Common queries:
| Path | Returns |
|---|---|
$.user.email |
"[email protected]" |
$.items[0].sku |
"TSK-001" |
$.items[*].sku |
["TSK-001", "TSK-002"] |
$..qty |
[2, 1] |
Pipe the result into the next action with the @ reference picker, or with {{ }} syntax in any string field.
utils.formatDate
Convert a date or timestamp into the format your downstream step expects. Lives in the same Utilities piece as jsonExtract.
Common patterns:
| Input | Format string | Result |
|---|---|---|
2026-05-06T10:30:00Z |
MMM D, YYYY |
May 6, 2026 |
2026-05-06T10:30:00Z |
dddd, h:mma |
Wednesday, 10:30am |
1715000000 (Unix seconds) |
YYYY-MM-DD |
2024-05-06 |
Use it before posting to Slack, writing into a Project's Table view, or stamping a project title with the date the automation ran.
utils.textReplace
Find a literal string or a regex and swap it. Both modes are supported in the same action.
| Mode | Find | Replace | Input | Output |
|---|---|---|---|---|
| Literal | staging |
production |
https://staging.example.com |
https://production.example.com |
| Regex | \s+ (with g flag) |
- |
Order Number 42 |
Order-Number-42 |
Regex follows the standard JavaScript syntax with flags, so global, case-insensitive, and multiline replacements all work as expected.
utils.textRegexMatch
Test whether a value matches a regular expression. Returns true or false, so you can drop the result straight into a Branch condition without an extra step.
| Pattern | Input | Result |
|---|---|---|
^urgent |
urgent: prod down |
true |
\d{4}-\d{2}-\d{2} |
2026-05-06 |
true |
@example\.com$ |
[email protected] |
false |
Pair textRegexMatch with Branch to route on free-form text fields like email subjects, ticket categories, or webhook bodies.
taskade.setProjectTitle
Rename the project a step is acting on. This action lives in the Taskade piece (not Utilities), but it pairs so often with the four above that we cover it here.
Most useful when a webhook trigger creates a fresh project and you want to label it after a customer or order ID.
Title template: Onboarding for {{trigger.body.customer_name}}
Resulting title: Onboarding for Globex
Run it right after the action that creates the project, so the new title is visible everywhere the project appears.
End-to-end: webhook → branch in six steps
Most real automations chain two or three utilities together. Here is the canonical pattern: a webhook arrives, you pull a field, build a title, rename the project, then branch on a flag.
- HTTP Webhook trigger receives the payload.
utils.jsonExtractpulls$.customer.nameout of the body.utils.formatDateturns the trigger timestamp intoMay 6, 2026.taskade.setProjectTitleapplies a title built from name and date.utils.textRegexMatchtestspriorityagainst^p[01]$.- Branch routes the high-priority path to Slack and the rest to the backlog.
Six steps, zero AI credits, finishes in well under a second. This is the pattern that powers most production webhooks at Taskade.
When to use a utility instead of AI
Utility actions are deterministic, fast, and cheap. Reach for them when:
- The transform is well-defined (JSON extraction, formatting, regex matching).
- You need the same answer every run.
- You want to keep credits low on the hot path.
Reach for Ask AI only when the transform needs reasoning, summarization, or pattern recognition that does not fit a regex.
Related guides
- Utility Actions overview — All seven utilities with input/output reference
- HTTP Webhook Trigger — Pair with
jsonExtractfor incoming payloads - Branch Action — Conditional routing on
textRegexMatchresults - Structured Output — Typed JSON from AI when you need reasoning
- Project Export — Export the renamed project as Markdown
