Template variables

Inject {{variables}} into job URLs, headers, and body — resolved server-side at run time, never stored in git.

Template variables let you embed dynamic values into a job’s URL, request headers, or request body using {{double_braces}} syntax. The variable is resolved server-side at run time — the raw value is never written to your manifest, never committed to git, and never visible in the CLI diff output.

Syntax

Wrap the variable name in {{ }}:

jobs:
  - id: notify-slack
    kind: http
    method: POST
    url: https://hooks.slack.com/services/{{slack_path}}
    headers:
      Authorization: "Bearer {{api_token}}"
    body: '{"event": "nightly-backup-complete"}'

  - id: stripe-reconcile
    kind: http
    method: POST
    url: https://api.example.com/finance/reconcile
    headers:
      Authorization: "Bearer {{stripe_secret_key}}"
    schedule: "0 6 * * *"
    timezone: Europe/Berlin

Variable names must start with a letter and may contain letters, digits, and underscores (a–z, A–Z, 0–9, _).

Where variables can be used

Job fieldSupported
url
Header values
body
schedule
id / name
method

Defining variable values

Variable values are stored in the account-level variable store, accessible in the dashboard under Settings → Variables. Values are encrypted at rest and never returned in plain text by the API.

  1. Open Settings → Variables in the dashboard.
  2. Click Add variable.
  3. Enter the name (must match the {{name}} used in your manifest exactly) and the secret value.
  4. Save — the variable is immediately available to all jobs.

Template variables vs. ${ENV} placeholders

The YAML manifest supports two injection mechanisms that serve different purposes:

{{template}}${ENV}
ResolvedServer-side at run timeCLI-side at apply time
Stored in manifestName onlyLiteral value after substitution
Visible in CLI diffName onlyResolved value
Use caseThird-party tokens the server holdsCI environment identifiers, build refs

Use {{template}} when the value is a long-lived secret that should never appear in your shell history, CI logs, or git history. Use ${ENV} for values your CI environment already manages, such as deployment tags or environment names.

Heartbeat jobs

Template variables are not supported in heartbeat job fields — heartbeat jobs have no URL or body fields managed by SteadyCron. The ping URL assigned to a heartbeat check is stable and immutable.

  • Manifest reference — full list of job fields and their accepted values.
  • YAML & CLI — how validate, plan, and apply handle variable names in diffs.