> ## Documentation Index
> Fetch the complete documentation index at: https://docs.os.default.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Action steps

> Send a webhook, redirect a visitor, transform a date, or create a variable.

Action steps perform a variety of jobs in a workflow: call an outside system, redirect a
visitor, work with dates, and store values for later steps to use.

<Note>
  Add a step in the **Workflows** builder with **Add Node**, then pick one of the steps below.
  Many fields accept data from the trigger or an earlier step: type `{{` to open the variable
  picker.
</Note>

## Send to Webhook

Sends an HTTP request to a URL you choose, so a workflow can push data to a system Default
does not connect to natively.

The endpoint must be reachable on the public internet over `http` or `https`. Default blocks
requests to `localhost` and to private or internal network addresses.

**Request**

| Field              | What it does                          | How to use it                                                                                                                             |
| ------------------ | ------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------- |
| **Request Type**   | The HTTP method.                      | Choose **POST**, **GET**, **PUT**, **PATCH**, or **DELETE**. **GET** requests are sent without a body.                                    |
| **Request URL**    | The endpoint the request is sent to.  | Enter the full URL, for example `https://api.example.com/leads`. Type `{{` to insert a value if the URL needs one.                        |
| **URL Parameters** | Query-string values added to the URL. | Add a key and value, for example `source` and `default`, appended as `?source=default`.                                                   |
| **Headers**        | Request headers.                      | Add a key and value for each header the endpoint expects. If you send a body and set no `Content-Type`, Default sends `application/json`. |

**Authorization** controls how Default authenticates: choose **None**, **API Key** (you set
an **API Key** and a **Header Name**, default `X-API-Key`), **Token** (a **Bearer Token**), or
**Basic** (a **Username** and **Password**).

**Body** has two tabs. **Fields** builds the body from key and value pairs. **JSON** lets you
write the raw JSON yourself (type `{{` to insert a value). A body is sent only with POST, PUT,
PATCH, and DELETE.

**Example response** is optional: paste a sample of the JSON your endpoint returns so later
steps can use its fields, and so the run log warns you if the live response looks different.

After the request runs, the response body and the HTTP status code are available to later
steps. To act on the result, add a **Multi-Branch** step and compare the status code. A
request that takes longer than 30 seconds is cancelled, and redirects are not followed.

## Redirect

Sends the visitor's browser to a URL. Useful at the end of a form-driven workflow.

| Field                  | What it does                          | How to use it                                                                                        |
| ---------------------- | ------------------------------------- | ---------------------------------------------------------------------------------------------------- |
| **URL to Redirect to** | Where to send the visitor.            | Enter the destination, for example `https://example.com/thank-you`.                                  |
| **URL Parameters**     | Query-string values added to the URL. | Optional. Add a key and value, for example `name` set to the lead's first name from an earlier step. |

## Date Transformer

Shifts a date forward or backward and saves the result for later steps. You can add more than
one transform.

For each transform:

| Field           | What it does             | How to use it                                                                                                     |
| --------------- | ------------------------ | ----------------------------------------------------------------------------------------------------------------- |
| **Input date**  | The date to shift.       | Pick a date or date-and-time value from the workflow, for example the meeting's scheduled time.                   |
| **Direction**   | Shift earlier or later.  | Choose **Before** or **After**.                                                                                   |
| **Unit**        | The unit of time.        | Choose **Minutes**, **Hours**, or **Days**.                                                                       |
| **Amount**      | How much to shift.       | Enter a number, for example `1`.                                                                                  |
| **Output name** | What to call the result. | Enter a name, for example `reminder_time`, to reference it in later steps. Use letters, numbers, and underscores. |

For example, set **Input date** to the meeting time, **Before**, **Days**, **Amount** `1`,
and **Output name** `reminder_time` to get the day before the meeting for a reminder step.

## Create Variable

Defines one or more named variables you can reuse in later steps. Each variable's value can
reference data from an earlier step or be a fixed value you type in.

| Field             | What it does            | How to use it                                                                         |
| ----------------- | ----------------------- | ------------------------------------------------------------------------------------- |
| **Variable name** | What to call the value. | Enter a name, for example `campaign_name` or `meta.source` (dot notation is allowed). |
| **Value**         | The value to store.     | Pick a value from an earlier step, or type a fixed value such as `Q3 inbound`.        |

Select **Add variable** to define another one in the same step. For example, set
`campaign_name` to a fixed value and `lead_score` to a value an enrichment step produced, then
reference both in a later CRM or notification step.

{/* TODO screenshot: Date Transformer with one transform */}

{/* verified against product:
   send-webhook (FE grouping/order) → apps/default-fe/.../node-sidebar/send-webhook/SendWebhookNodeConfigContent.tsx
   redirect / date-transformer labels + behavior
     → apps/default-api/.../workflows/registry/nodes/actions/{redirect,date-transformer}.ts
     + apps/default-fe/.../node-sidebar/date-transformer/*ConfigContent.tsx
   "Create Variable" rename (was "Set Workflow Attributes", PHX #2590)
     → apps/default-api/.../workflows/registry/nodes/actions/set-workflow-attributes.ts (display.label)
     → apps/default-fe/.../node-sidebar/set-workflow-attributes/SetWorkflowAttributesNodeConfigContent.tsx
       ("Variable name" / "Value" / "Add variable")
   Variable picker trigger character confirmed as `{{` (not `@`)
     → apps/default-api/.../workflows/registry/config.ts (AI_PROMPT_INPUT_MODE placeholder:
       "Type {{ to insert a data reference...") and TextConfigField.tsx comments.
   NOTE: several labels are registry-driven and will false-flag in the alignment lint.
   NOTE: `add_tag` ("Add Tag") is a real node type in the registry but is excluded from the
     add-node palette (apps/default-fe/.../_utils/registrySections.ts
     ADD_NODE_PALETTE_EXCLUDED_TYPES = ['add_tag', 'abstract-geo']); intentionally not
     documented here as an addable step; see the report for details. */}
