# Dynamic variables (/features/variables)



<Callout title="Being written">
  This page is a stub.
</Callout>

A replacement is a fixed string unless it holds a name in `{{$…}}`, which is
filled in afresh every time it fires — the date, a random number, a UUID, the
clipboard, what you have selected.

The same grammar works in three other places: **Type Text**, **Show Alert** and
**Open URL**. In a URL the substituted values are percent-encoded and the
template's own `?`, `&` and `:` are left alone, so a variable can safely supply
a query value — or the whole address.

Two names are worth knowing before the rest:

* `{{$clipboardText}}` — what is on the pasteboard. Never written to
  history, whatever the pasteboard says about itself, because that is where
  one-time codes and session URLs end up.
* `{{$selectedText}}` — what is selected in the front application. Read
  through Accessibility where the app exposes it, and through a synthesised
  <kbd>⌘</kbd><kbd>C</kbd> where it does not. It stands in actions but not in
  snippets: a snippet fires mid-word, when nothing is selected.

## To write [#to-write]

* The full catalogue, and which surface each name stands in
* Arguments — formatting a date, shifting it, bounding a random number
* The playground
