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

> ## Agent Instructions
> Automate.ax automations are TypeScript programs.
> Use Bun for installation and command examples.
> Use Automate.ax for the product name and automate.ax for the package, CLI, and domain.
> Treat documented public APIs as current; do not invent transitional or deprecated names.

# Parameters

> Declare project-specific values that make automation code portable.

Parameters keep IDs, addresses, limits, and other project-specific values out of your automation source. You declare their fields in code, then set their values in **Parameters & Accounts** when you first deploy the project.

```ts theme={null}
import { automation } from "automate.ax"
import { resend } from "automate.ax/resend"

export default automation(
  "Send the onboarding sequence",
  {
    parameters: [
      {
        label: "Onboarding segment ID",
        name: "onboardingSegmentId",
        type: "text",
      },
      {
        label: "Onboarding topic ID",
        name: "onboardingTopicId",
        type: "text",
      },
    ],
  },
  ({ parameters }) => {
    const enrolled = resend
      .onContactEvent()
      .filter(
        ({ event, segmentIds }) =>
          (event.type === "contact.created" ||
            event.type === "contact.updated") &&
          segmentIds?.includes(parameters.onboardingSegmentId) === true,
      )

    resend.sendEmail({
      from: "Onboarding <hello@example.com>",
      to: enrolled.email,
      subject: "Welcome",
      text: "Welcome aboard!",
      topicId: parameters.onboardingTopicId,
    })
  },
)
```

The parameter `name` becomes a typed property of `parameters`. The field format is the same one used by dashboard run forms, including text, email, URL, number, date, date-time, select, radio, multi-select, checkbox, and file fields. Add `defaultValue` to non-file fields when a project should not need to enter a value during initial setup.

Parameter values belong to a project version. A new version inherits values for unchanged automation and parameter names. Changing a value in **Parameters & Accounts** runs planning again and republishes the active code with the new value.

Parameters are ordinary configuration, not secrets. Use integration accounts for credentials and provider authorization.

Use `{ name: "document", type: "file" }` to select a file in **Parameters & Accounts**. CLI setup prompts for its local path. Your automation receives a `File`, including its contents, filename, and media type. Files are stored directly with the parameter values and inherited by later project versions. Existing files remain selected when you reopen settings; replace or remove them there. Set `required: false` to receive `null` when no file is selected. File fields do not accept `defaultValue`.
