# Turn on Managed Transfers and brand it
URL: https://musicapi.com/docs/managed-transfers/turn-on-and-brand.md

> Turn the hosted flow on, pick the transfer destination, choose the content types, and brand the pages with your colours, fonts, CSS and your own domain.

Product: MusicAPI Managed Transfers. Section: Managed Transfers.

## Turn it on

Managed Transfers is on or off per account.

- A **transferring** sign-up has it on from the start, with Demoify as the destination.
- An **integrating** account has it off. [Contact us](https://schedule.musicapi.com/) to turn it on.

While it is off, the transfer pages stay hidden in the dashboard, the hosted flow refuses to start, and the transfer APIs answer `403`.

## Set the destination

Open **Transfer Branding** in the account menu. The **Transfer destination** is the service every transfer moves into. The hosted flow cannot start without one.

1. Set up the integration of your service under **Integrations** first, with your developer app (see [Set up each service](https://musicapi.com/docs/connect-users/how-sign-in-works.md#set-up-each-service)).
2. Pick it as the **Transfer destination**.

Until then, Demoify stays the destination of a transferring sign-up, so you can test the whole flow on the first day.

## Choose the content

Each integration has an **Entity types offered to users** setting: playlists, followed playlists, liked tracks, albums, artists. The wizard offers only the types you turn on, and only the types that the source service can read.

## Brand the pages

The **Theme tokens** of the Transfer Branding page skin every hosted page. Every token is optional.

| Token             | What it sets                                                                  |
| ----------------- | ----------------------------------------------------------------------------- |
| Mode              | Light or dark                                                                 |
| Accent colour     | Buttons, links, progress                                                      |
| Background colour | The page                                                                      |
| Surface colour    | Cards and panels                                                              |
| Button radius     | A pixel length, for example `8px`                                             |
| Heading font      | The font family of the headings. Load the font yourself in the custom CSS.    |
| Custom CSS        | Added to every hosted page. Markup is refused, so no tag can be opened there. |

The **Live preview** shows your changes before you press **Publish theme**. Your logo and business name come from the account settings.

## Custom domain

Run the flow on your own host, for example `transfer.example.com`.

1. **Save the domain**

   Enter it as the **Custom domain** on the Transfer Branding page. The status shows "pending setup on our side".
2. **Contact us**

   Our servers accept traffic only through Cloudflare, so we add your domain to our configuration and tell you the DNS record to create. [Contact us](https://schedule.musicapi.com/).
3. **Link to the full path**

   The page still lives under your slug: `https://transfer.example.com/{slug}/transfer`. The root of the domain is not a transfer entry point.

Your custom domain counts as an accepted return URL by itself, for exactly that host over `https`. Once we verified the domain, the `launchUrl` of a [pre-authorized session](https://musicapi.com/docs/managed-transfers/preauthorized-sessions.md) uses it too.

## Transfer emails

We do not email your users about their transfers. This setting is off by default for every account.

When you turn it on, we send one email when a transfer ends, to the address that the source service gave us. The email has the MusicAPI brand, not yours. It shows the results and links to the results page.

To turn it on, open **API & webhooks** in the dashboard and switch on **Email my users when a transfer ends (MusicAPI-branded)**.

> **Use webhooks for your own email:** We recommend [webhooks](https://musicapi.com/docs/webhooks/set-up-and-verify.md). `transfer.completed` and `transfer.failed` tell your backend that a transfer ended. Then you send your users an email in your own brand.

## Set it up with an AI agent

The [MusicAPI MCP server](https://musicapi.com/docs/ai/mcp-server.md) has `update_managed_transfers_settings`: the theme, the custom domain, the destination and the transfer emails, in one call from Claude, Cursor or ChatGPT.
