ブログに戻る
Technical

GetCookies vs Traditional CMPs: A Technical Comparison for Developers

GetCookiesチームDecember 29, 202515分で読めます
CMP ComparisonCookiebotOneTrustTermlyPerformanceDeveloper

TLDR: Traditional CMPs were built for compliance teams. GetCookies was built for developers. ~1.6 KB vs 100KB+, 5 minutes vs days, modern APIs vs callback hell.

Read full summary

A deep technical comparison of GetCookies vs traditional CMPs like Cookiebot, OneTrust, and Termly. Covers bundle size, installation complexity, Google Consent Mode implementation, API design, and real-world performance benchmarks.

Summary by Claude AI

The Moment I Knew CMPs Were Broken

I was consulting for a fintech startup. Fast-moving team, shipping daily. Their compliance officer had chosen OneTrust for cookie consent.

The implementation ticket sat in the backlog for two months. Two months. Not because it wasn't prioritized—because every developer who looked at it recoiled.

The documentation alone was 147 pages. They needed GTM. They needed a "consent initialization tag." They needed to map categories to triggers. They needed to configure the "OptanonWrapper" callback function.

When it finally shipped, their Lighthouse performance score dropped 23 points. Marketing complained that their pixel data looked wrong. Engineering estimated 40 hours of follow-up work.

I showed them GetCookies. One script tag. Five minutes. Performance impact: unmeasurable.

"Why didn't we know about this?" they asked.

Because nobody markets to developers. Traditional CMPs market to compliance teams.

The Market Gap

Let's be honest about who these tools were built for:

CMP Target User Core Assumption
OneTrust Enterprise compliance You have a dedicated legal/compliance team
Cookiebot Marketing/legal You have GTM expertise
Termly SMB legal You want bundled policies + consent
GetCookies Developers You just want it to work

Traditional CMPs assume you have:

  • A dedicated marketing ops team
  • Google Tag Manager expertise
  • Time to read 100-page implementation guides
  • Budget for enterprise pricing

If you're a developer trying to ship a compliant website, this experience is painful.

Technical Comparison

Bundle Size & Performance

CMP Initial Load Total Bundle Blocks Rendering
GetCookies ~1.6 KB ~20 KB No (async)
Cookiebot ~45KB ~45KB Yes (sync recommended)
OneTrust ~80KB ~150KB+ Depends on config
Termly ~35KB ~35KB Optional
CookieYes ~40KB ~40KB Yes

Why this matters: Every KB of JavaScript delays your First Contentful Paint. GetCookies loads a ~1.6 KB stub synchronously (to set consent defaults), then loads the full widget asynchronously. Your critical rendering path stays fast.

Installation Complexity

GetCookies: 1 Step

<script src="https://getcookies.co/api/v1/widget/loader.js"
        data-domain-id="abc123" async></script>

Done.

Cookiebot: 3+ Steps

<!-- Step 1: Cookiebot script -->
<script id="Cookiebot" src="https://consent.cookiebot.com/uc.js"
        data-cbid="xxx" data-blockingmode="auto" type="text/javascript"></script>

<!-- Step 2: Google Consent Mode (separate) -->
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('consent', 'default', {
  'ad_storage': 'denied',
  'analytics_storage': 'denied',
  // ... configure each signal
});
</script>

<!-- Step 3: GTM configuration for consent triggers -->
<!-- Step 4: Configure Cookiebot dashboard -->
<!-- Step 5: Map consent categories to GTM triggers -->

OneTrust: 4+ Steps

<!-- Step 1: OneTrust banner script -->
<script src="https://cdn.cookielaw.org/scripttemplates/otSDKStub.js"
        data-domain-script="xxx" type="text/javascript"></script>

<!-- Step 2: OneTrust consent wrapper -->
<script type="text/javascript">
function OptanonWrapper() { }
</script>

<!-- Step 3: Google Consent Mode integration (separate module) -->
<!-- Step 4: GTM consent initialization tag -->
<!-- Step 5: Dashboard configuration -->
<!-- Step 6: Category mapping -->
<!-- Step 7: Vendor list configuration -->

Google Consent Mode v2 Implementation

Since March 2024, Google requires Consent Mode v2 for EEA advertising.

GetCookies: Built-In, Zero Config

// Automatically included in loader.js
gtag('set', 'developer_id.dODAxZj', true);  // CMP Partner ID

gtag('consent', 'default', {
  'analytics_storage': 'denied',
  'ad_storage': 'denied',
  'ad_user_data': 'denied',        // v2 signal
  'ad_personalization': 'denied',   // v2 signal
  'functionality_storage': 'granted',
  'personalization_storage': 'denied',
  'security_storage': 'granted',
  'wait_for_update': 2000
});

You don't write this code. It's in the loader.

Traditional CMPs: Manual Integration

Most CMPs require you to:

  1. Install their CMP script
  2. Install a separate "Consent Mode integration" module
  3. Configure signal mappings in their dashboard
  4. Add a GTM tag for consent initialization
  5. Verify with Google Tag Assistant

GetCookies does all of this in one script tag.

Developer API Comparison

GetCookies: Modern, Clean

// Simple consent check
if (window.GetCookies.hasConsent('marketing')) {
  loadFacebookPixel();
}

// Get full consent object
const consent = window.GetCookies.getConsent();
// { id: 'uuid', categories: ['necessary', 'analytics'], timestamp: '...' }

// Programmatic control
window.GetCookies.showPreferences();
window.GetCookies.reset();

// Event-based
window.addEventListener('getcookies:consent', (e) => {
  console.log('Categories:', e.detail);
});

Cookiebot: Callback-Based

// Check consent
if (Cookiebot.consent.marketing) {
  loadFacebookPixel();
}

// Wait for ready
window.addEventListener('CookiebotOnAccept', function() {
  if (Cookiebot.consent.marketing) {
    // ...
  }
});

// No promise-based API
// No programmatic update without showing dialog

OneTrust: Complex Object Model

// Check consent (requires knowing category IDs)
if (OnetrustActiveGroups.includes('C0004')) {
  loadFacebookPixel();
}

// Wait for ready
function OptanonWrapper() {
  // This function is called by OneTrust
  // You must define it globally
}

// Event handling
OneTrust.OnConsentChanged(function() {
  // Callback style
});

Third-Party Pixel Integration

When users consent, you need to tell third-party pixels.

GetCookies: Automatic

// Built into GetCookies - happens automatically on consent

// Meta Pixel
fbq('consent', hasMarketing ? 'grant' : 'revoke');

// TikTok
hasMarketing ? ttq.enableCookie() : ttq.disableCookie();

// Pinterest
pintrk('setconsent', hasMarketing);

// Microsoft Clarity
clarity('consent', hasAnalytics || hasMarketing);

// Plus dataLayer push for GTM triggers

You don't write this. It happens automatically.

Traditional CMPs: Manual GTM Configuration

With most CMPs, you need to:

  1. Create GTM triggers for each consent category
  2. Create GTM variables for consent state
  3. Modify each tag to use consent triggers
  4. Test extensively

Real-World Performance Impact

We tested a typical marketing site with Google Analytics, Meta Pixel, and Hotjar:

Metric No CMP GetCookies Cookiebot OneTrust
LCP 1.2s 1.3s (+0.1s) 1.8s (+0.6s) 2.1s (+0.9s)
FCP 0.8s 0.9s (+0.1s) 1.4s (+0.6s) 1.6s (+0.8s)
TBT 120ms 135ms (+15ms) 280ms (+160ms) 350ms (+230ms)
CLS 0.02 0.02 (none) 0.08 (+0.06) 0.12 (+0.10)

GetCookies adds minimal overhead. Traditional CMPs can significantly impact Core Web Vitals.

Pricing Comparison

Tier GetCookies Cookiebot OneTrust Termly
Free Yes (generous) 1 domain, limited No Yes (branding)
Starter $9/mo €12/mo Contact sales $10/mo
Pro $29/mo €26/mo Contact sales $24/mo
Enterprise Custom Custom $$$$ Custom

GetCookies offers competitive pricing without the enterprise sales process.

When to Choose GetCookies

Choose GetCookies if you:

  • Want one-line installation
  • Care about performance (Core Web Vitals)
  • Need Google Consent Mode v2 without complexity
  • Prefer modern JavaScript APIs
  • Value developer experience
  • Want affordable, transparent pricing

Consider alternatives if you:

  • Need complex approval workflows (OneTrust)
  • Run 200+ vendor TCF strings (specialized TCF CMPs)
  • Require on-premise deployment (enterprise CMPs)
  • Have a dedicated compliance team who loves dashboards

Migration Guide

From Cookiebot

  1. Remove Cookiebot script
  2. Remove any Consent Mode integration scripts
  3. Add GetCookies loader
  4. Remove GTM consent triggers (GetCookies pushes to dataLayer automatically)

From OneTrust

  1. Remove OneTrust scripts
  2. Remove OptanonWrapper function
  3. Add GetCookies loader
  4. Update any code checking OnetrustActiveGroups to use GetCookies.hasConsent()

From Termly

  1. Remove Termly script
  2. Add GetCookies loader
  3. Update consent checks to GetCookies API

Migration typically takes 15-30 minutes.

The Bottom Line

Traditional CMPs were built when "compliance" meant enterprise software with enterprise complexity.

GetCookies was built for the modern web: fast, simple, developer-friendly.

If you've been struggling with CMP complexity, give GetCookies a try. It takes 5 minutes to set up, and you might wonder why cookie consent was ever hard.


Ready to switch? Get started free

よくある質問

How does GetCookies bundle size compare to other CMPs?
GetCookies loads a ~1.6 KB stub loader, while Cookiebot loads ~45KB, OneTrust loads 80-150KB+, and Termly loads ~35KB. This significantly impacts Core Web Vitals and page load times.
Do I need GTM to use GetCookies?
No, GetCookies works without Google Tag Manager. It automatically sets consent defaults and pushes events to dataLayer. However, it also provides a GTM template if you prefer that approach.
How does GetCookies handle third-party pixels?
GetCookies automatically notifies Meta Pixel, TikTok, Pinterest, Microsoft Clarity, Hotjar, and others when consent changes. No manual GTM trigger configuration required.
G

GetCookiesチーム

ノルウェー・オスロのGetia AS、GetCookiesチームが執筆・更新しています。この記事はクッキー同意に関する一般的な情報であり、法的助言ではありません。

自分のサイトを無料でスキャン

無料プランでは1つのサイトでバナーを表示でき、Cookieスキャンは月3回まで。カード登録も営業電話もありません。