> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.meetgail.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.meetgail.com/_mcp/server.

# Secrets

> Store API keys, passwords, and tokens safely and reference them in a workflow by name.

Secrets are named, encrypted values that a workflow can use without ever having
the sensitive value typed into the workflow itself. An API key, a shared
password, a signing token: you store it once as a secret, give it a name, and
then refer to that name wherever a step needs it. The actual value stays
protected.

## Why use a secret

If you paste an API key straight into a step's settings, that key becomes part
of the workflow's design, visible to anyone who can open the workflow and stored
in its history. A secret avoids that. The value is encrypted when you save it,
and a step only ever sees the real value for the brief moment it needs to do its
job. It never shows up in run history, and it appears masked as `*******` when
you step through a run.

## Storing a secret

Create a secret with a short name and its value. A few rules apply to the name:

* Lowercase letters, numbers, and underscores only.
* Must start with a letter.
* Up to 64 characters.

Good names read like `crm_api_key`, `webhook_secret`, or `sftp_password`.

For safety, the value is write-only. After you save a secret, its value is
never shown again, not even to you. If a key changes, update the secret with
the new value (this is called rotating it). To use a different name, delete the
secret and create a new one.

## Using a secret in a workflow

Reference a secret by its group and name, the same way you reference any other
value:

```
secret.crm_api_key
```

In practice you pick it from the builder's value picker rather than typing it.
You can also combine a secret with other text in an
[expression](/platform/workflows/core-concepts/expressions/using-expressions-in-nodes), which is how
you build things like an authorization header:

```
"Bearer " + secret.crm_api_key
```

The secret stays protected even inside a combined value like this one.

## Fields that require a secret

Some steps ask for a credential directly, such as a Slack token, an SFTP
password or key, or a form service's API key. For these fields the builder shows
a secret picker instead of a plain text box, and the value must come from a
secret. This keeps credentials out of workflow definitions by default.

Changing or deleting a secret does not disturb runs already in progress; they
keep the value they started with. New runs pick up the change within a moment.
If you delete a secret that a workflow still refers to, later runs will fail
when they try to use the missing value.

## Related

#### [Variables & Data Flow](/platform/workflows/core-concepts/variables-data-flow)

See how secrets fit alongside the other groups of values.

#### [Expressions](/platform/workflows/core-concepts/expressions/using-expressions-in-nodes)

Combine a secret with other text to build headers and URLs.