# Migrating from another consent banner

Step-by-step guide to migrate from Cookiebot, OneTrust, Termly, Iubenda, Klaro, or any other CMP to FlowConsent without breaking your tracking.

> Canonical: https://www.flowconsent.com/en/doc/migrating-from-other-banner
> Last updated: 2026-05-01
You already have a cookie banner from Cookiebot, OneTrust, Termly, Iubenda, Klaro, Axeptio, Didomi, or another CMP, and want to switch to FlowConsent. This guide gets you migrated without breaking your analytics or your compliance posture.

## Before you start

Have these ready:

- The list of third-party services currently on your site (your old CMP probably exports this)
- The category mapping you use today (necessary / analytics / marketing / preferences, or a custom split)
- Access to your site's `<head>` (template, CMS, or tag manager)
- About 30 minutes for the first migration

## 1. Create your FlowConsent banner

Sign up at [app.flowconsent.com](https://app.flowconsent.com) and create a banner pointing to your site. FlowConsent will scan the page and detect third-party services automatically.

> **Don't deploy yet.** Keep your old banner running until step 4.

## 2. Reconcile the service list

Open the **Services** tab in the Builder. Compare it to your old CMP's service list:

- For each service the auto-scan didn't catch, click **+ Add service** and configure it manually
- For each service the auto-scan flagged that you don't actually use anymore, archive it
- Verify the **category** for each service matches your previous setup. If marketing was previously sub-categorized (e.g. "advertising" vs "remarketing"), use the **Cookie list** tab to add a custom category

## 3. Match the look and copy

Open the **Style** tab to match your existing brand:

- Layout (most CMPs default to a bottom bar or a modal — pick the same)
- Primary color and accent color from your existing banner
- Border radius, font, button shape

Then **Information** + **Translations** for the copy. If you've spent time refining your old banner's wording, paste it as-is. FlowConsent doesn't impose specific phrasing.

**Important** — keep equal-size Accept and Reject buttons. CNIL and EDPB enforce this; if your old banner had a small "Reject" link or a hidden one, this is your chance to fix it.

## 4. Deploy and switch the snippet

In the **Deployment** tab, deploy your FlowConsent banner. Copy the snippet:

```html
<!-- FlowConsent CMP -->
<script src="https://YOUR-LICENSE-CODE.consent.flowconsent.com/cookie-manager.js?code=YOUR_LICENSE_CODE"></script>
```

Now in your site's `<head>`:

1. **Remove the old CMP's snippet** entirely (Cookiebot's `cd.cookiebot.com/uc.js`, OneTrust's `optanon.blob.core.windows.net`, etc.)
2. **Paste the FlowConsent snippet** in the same spot — as high as possible inside `<head>`, before any tracking script
3. Deploy your site

If your old CMP wrapped your tracking scripts (e.g. Cookiebot's `data-cookieconsent="statistics"` attribute), **leave those attributes in place** — FlowConsent honors the same convention via `data-service` attributes. You can review and adjust per-service in the **Services** tab.

## 5. Verify both before and after

In an incognito window on your site:

1. **Banner appears** on first visit
2. **Network tab is clean** before you click Accept — no GA, no Meta Pixel, no HubSpot fires
3. Click **Accept all** → tracking scripts fire as expected
4. Refresh → no banner, tracking continues to work
5. Open **Analytics → Sessions** in your FlowConsent dashboard — you should see the test session within ~1 minute

If something's off, check the [troubleshooting guide](/en/doc/cloudflare-deployment) or look at the **Logs** tab inside the banner for deploy errors.

## 6. Migrate historical consent records (optional)

If you need to keep proof of past consents for audit purposes, FlowConsent doesn't import legacy records from another CMP. Two options:

- **Keep your old CMP's export** as cold storage (most CMPs offer a CSV export). It's still valid evidence under GDPR.
- **Pro / Enterprise plans** — contact [support@flowconsent.com](mailto:support@flowconsent.com) for assisted import. We accept Cookiebot, OneTrust, Termly, and Iubenda exports.

## Common gotchas

- **Google Tag Manager users** — if your previous CMP fired tags through GTM via a custom event (e.g. `cookieconsent_accepted`), update the trigger to listen for FlowConsent's event. See the [JS API](/en/doc) for event names.
- **Sites with a service worker** — clear the service worker cache after deploying. Some PWAs cache the old CMP script aggressively.
- **CSP-protected sites** — add the FlowConsent worker domain to your Content-Security-Policy `script-src` directive. The exact domain depends on your plan: `consent.flowconsent.com` (Pro/Enterprise) or `your-worker.workers.dev` (Free).
- **Multi-language sites** — if your old CMP auto-detected the user's language, configure the same in **Information → Detection method** to avoid showing the wrong language.

## Cancelling the old CMP subscription

Once your FlowConsent banner has been live for at least 7 days with no compliance issues, you can cancel your old CMP. Most providers require 30-day notice — check your contract.
