> For the complete documentation index, see [llms.txt](https://codemash.gitbook.io/codemash/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://codemash.gitbook.io/codemash/cloud/emails/signatures.md).

# Signatures

Email signatures — reusable signature blocks your templates insert.

**Where:** Email → Signatures · `/projects/<project>/emails/signatures`

A signature is the sender block at the end of an email — a name, a role, a link. Several templates share it, so a new phone number or title is changed in one place. The list **Email Signatures** shows every signature with its id (`emlsgn_…`), its name and its translations. A new project has a `Default` signature.

<figure><img src="https://712692422-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FHy372bqsaex2cqS3ikhL%2Fuploads%2Fgit-blob-f2500d92ef71b9114f12c2ae1682419adbdd46fc%2Fsignatures-list-1.png?alt=media" alt="Email Signatures list with three rows: Default (en) · Support team (en, de) · Holiday greeting (en, de)"><figcaption><p>The signatures list: `Default` (en) · `Support team` (en, de) · `Holiday greeting` (en, de).</p></figcaption></figure>

## Columns, search and filters

| Column         | What it shows                                                                               |
| -------------- | ------------------------------------------------------------------------------------------- |
| Id             | The signature id, for example `emlsgn_2zT7jxLqeylWMYCPLzDSpm`; press it to open the editor. |
| Signature Name | The name, for example `Support team`.                                                       |
| Translations   | The languages the signature has, for example `en, de`.                                      |

The list has no filter. **Create Signature** opens an empty editor.

**Use it in a template:** write `@Model.Cmf.RenderSignature(Model.Email.SignatureId)` where the block belongs. On the campaign form (or in the template's **Test** panel) the token `Email.SignatureId` then needs a value: the signature id. A template can also name one fixed signature: `@Model.Cmf.RenderSignature("emlsgn_2zT7jxLqeylWMYCPLzDSpm")` — then the send asks for nothing. The signature is rendered in the campaign's **Send in specific language**, else in the project default language; it does not follow each recipient's own language. A missing value fails the send with `CM-ERRORS-EMAILS-021`, naming the token. Signatures are kept per environment: TEST sends read TEST signatures.

## What you can do here

* [Create or edit a signature](/codemash/cloud/emails/signatures/editor.md) — **Create Signature**, or press an id
* [Delete a signature](/codemash/cloud/emails/signatures/delete.md) — **Actions → Delete** in the editor

## Do it from code

```ts
const { list } = await norbix.hub.notifications.getEmailSignatures();
console.log(list.items.map((s) => `${s.viewId} ${s.displayName}`));
// [ 'emlsgn_3nuSuYf8fk85nIBosVJJL0 Default', 'emlsgn_2zT7jxLqeylWMYCPLzDSpm Support team', 'emlsgn_3cVUUuYSphkPhASWGSskJl Sales team' ]
```

```sh
norbix hub notifications email signatures get
```

API: [Get Email Signatures](/codemash/api-reference/notifications/email/get-email-signatures.md)
