> ## Documentation Index
> Fetch the complete documentation index at: https://www.courier.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

> ## Agent Instructions
> Install the Courier skill before writing code: `npx skills add trycourier/courier-skills`. It carries the verified SDK shapes and the rules you cannot get wrong.
> Authenticate every request with `Authorization: Bearer <API_KEY>`. A workspace has several environments and each has its own keys, which are plain `pk_` strings with no environment prefix. Start with Test.
> Send with `client.send.message`, the default import of the v7 Node SDK. Reference a template by its `nt_` id or its alias.
> A send accepts a bare Elemental element list, but storing content on a template requires the top-level elements wrapped in a channel element.
> Templates and journeys can be built in the Courier app or created through the API. Either way they live in the workspace and are referenced by ID when you send.
> The hosted MCP server is https://mcp.courier.com. For a briefing on what Courier is and when to use it, read https://www.courier.com/llms.txt.
> Prefer the Guides tab for how-do-I questions and the Docs tab for how-does-it-behave questions. The API reference lives under /api-reference.

# Classic Designer (Legacy)

> The previous template editor, still sending, with no new templates built in it.

export const AppLink = ({href, children, name, bare}) => {
  const label = children || name || "Open in Courier";
  if (bare) {
    return <a href={href} target="_blank" rel="noreferrer">{label}</a>;
  }
  return <a className="cx-endpoint" data-kind="app" href={href} target="_blank" rel="noreferrer">
      <span className="cx-endpoint-label">{label}</span>
      <span className="cx-endpoint-method" aria-hidden="true">↗</span>
    </a>;
};

export const Doc = ({href, children, name, bare}) => {
  const label = children || name || href;
  if (bare) {
    return <a href={href}>{label}</a>;
  }
  return <a className="cx-endpoint" data-kind="doc" href={href}>
      <span className="cx-endpoint-label">{label}</span>
      <span className="cx-endpoint-method">DOC</span>
    </a>;
};

Classic Designer is the block-based editor that came before <Doc href="/docs/design/templates/design-studio">Design Studio</Doc>. It is no longer the editor new templates are built in.

## Existing templates keep sending

Nothing changes for a template built in Classic Designer. It stays in your workspace, it keeps its id and its alias, and it keeps sending on the same channels. There is no deadline to move it and no migration step to run.

## Which editor a template uses

Open the template in <AppLink href="https://app.courier.com/content/templates">Templates</AppLink>. The console labels the two editors **Design Studio v2** and **Design Studio Classic**, and the one that opens is the one the template was built in.

The template id does not tell you. Both editors produce `nt_` ids, so a template's id says nothing about which editor owns it.

## New templates

Build new templates in <Doc href="/docs/design/templates/design-studio">Design Studio</Doc>. It covers the same channels, adds the block set documented in <Doc href="/docs/design/templates/blocks">block settings</Doc>, and its templates are addressed by the same <Doc href="/docs/design/templates/template-settings">id and alias</Doc>.
