> 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/footers.md).

# Footers

Email footers — reusable footer blocks your templates insert.

**Where:** Email → Footers · `/projects/<project>/emails/footers`

A footer is the bottom part every email shares: who you are, where you are, and the links to manage preferences or unsubscribe. Templates insert it, so a new address is changed in one place. The list **Email Footers** shows every footer with its id (`emlftr_…`), its name and its translations. A new project has a `Default` footer.

<figure><img src="https://712692422-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FHy372bqsaex2cqS3ikhL%2Fuploads%2Fgit-blob-0659858a67e96f9b8012ba5e20d349da6d69f17c%2Ffooters-list-1.png?alt=media" alt="Email Footers list with three rows: Default (en) · Acme footer (en, de) · Old footer (en, de)"><figcaption><p>The footers list: `Default` (en) · `Acme footer` (en, de) · `Old footer` (en, de).</p></figcaption></figure>

## Columns, search and filters

| Column       | What it shows                                                                            |
| ------------ | ---------------------------------------------------------------------------------------- |
| Id           | The footer id, for example `emlftr_3xxahehZsa7l8kj90ytaxX`; press it to open the editor. |
| Footer Name  | The name, for example `Acme footer`.                                                     |
| Translations | The languages the footer has, for example `en, de`.                                      |

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

**Use it in a template:** write `@Model.Cmf.RenderFooter(Model.Email.FooterId)` where the block belongs. On the campaign form (or in the template's **Test** panel) the token `Email.FooterId` then needs a value: the footer id. A template can also name one fixed footer: `@Model.Cmf.RenderFooter("emlftr_3xxahehZsa7l8kj90ytaxX")` — then the send asks for nothing. The footer 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. Footers are kept per environment: TEST sends read TEST footers.

## What you can do here

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

## Do it from code

```ts
const { list } = await norbix.hub.notifications.getEmailFooters();
console.log(list.items.map((f) => `${f.viewId} ${f.displayName}`));
// [ 'emlftr_rAhi80bF5JNWXhFpcCy0J Default', 'emlftr_3xxahehZsa7l8kj90ytaxX Acme footer', 'emlftr_7gxtqgHUcjWJzjkLFi6tFP Partner footer' ]
```

```sh
norbix hub notifications email footers get
```

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