Keeping Edge Delivery Sites Fast and Compliant: Consent Management Best Practices
Consent banners are usually treated as a legal checkbox. On an Edge Delivery Services (EDS) site, they’re also a performance feature: if you wire consent badly, you can add extra blocking scripts, delay personalization, and ship unnecessary network calls on every page.
This post outlines a pragmatic way to integrate a Consent Management Platform (CMP) with Adobe Experience Platform Web SDK on EDS, with a focus on staying fast.
Why Consent Design Affects Performance
Modern consent setups do three things that impact runtime performance:
- Control when data can be sent
Web SDK will only send events once consent is “in”, “out”, or “pending” is resolved. Used correctly, this prevents wasted calls and lets you drop a lot of conditional logic that would otherwise run on every page.
Consent overview - Gate all marketing tech behind one decision
Instead of letting every tag or pixel decide independently, a CMP sends a single signal that Web SDK and your tags consume. That’s fewer scripts evaluating consent on their own, and fewer race conditions to manage.
Implement consent with a consent management platform (CMP) - Avoid double work when preferences change
When you callsetConsent, Web SDK updates its consent cookie and uses it on the next page load. That avoids repeated discovery calls or extra server-side lookups just to re-learn the same preference.
setConsent
On a fast, edge-cached site like EDS, the goal is simple: collect just enough information, just in time, without adding extra blocking work to every request.
Pattern 1: Let the CMP Lead, Web SDK Follow
Treat your CMP as the source of truth for the banner UI and categories, and Web SDK as the transport layer for those decisions.
Recommended flow:
-
Load CMP early, but light
- Include the CMP script as part of your base HTML or a very early block.
- Avoid large frameworks just for the banner; keep the dependency tree small.
-
Set Web SDK default consent to “out” or “pending”
- In the Web SDK tag extension, configure Default consent to
OutorPending, depending on your legal stance. Out: drop events until explicit consent.Pending: queue events until consent is granted or denied, then send or discard.
Consent configuration settings
- In the Web SDK tag extension, configure Default consent to
-
Listen for CMP events and call
setConsent- When the user makes a choice (accept all, reject all, or granular), map that to the Adobe consent model (Adobe 2.0 or IAB TCF 2.0) and call
setConsentvia Web SDK or Tags action. - Call
setConsenton every page load, using the CMP’s stored state, so Web SDK always has a fresh, explicit view.
Integrate the Experience Platform Web SDK to process customer consent data
- When the user makes a choice (accept all, reject all, or granular), map that to the Adobe consent model (Adobe 2.0 or IAB TCF 2.0) and call
-
Only send events after consent is resolved
- Use
defaultConsent = "out"or"pending"to prevent Web SDK from sending events before the CMP has fired its decision. - Once
setConsentreturns,sendEventcalls will either send or be suppressed automatically.
- Use
This keeps Web SDK logic simple and avoids extra conditional code spread across your EDS blocks.
Pattern 2: Keep Flicker and Consent in Sync
On EDS you often pre-hide containers to avoid personalization flicker. If you combine that with consent, be careful not to trap the page under a hidden layer.
Practical guidance:
-
If default consent is “pending” and you use prehiding:
- Show the consent banner immediately.
- If the user opts out, remove prehiding as soon as the
setConsentcall resolves, because no personalized content will be rendered.
-
If the user opts in, let Web SDK handle the prehiding lifecycle around the personalization call.
Manage flicker
The key is to avoid scenarios where:
- Consent is unresolved,
- Personalization is disabled, and
- Your prehiding never gets removed.
That’s a pure UX and performance hit with no upside.
Pattern 3: Make Consent the Gate for All Martech
On an EDS site you want as few scripts as possible doing work on first paint. Use consent as the single gate for all non-essential marketing technology.
Best practices:
-
Fire Web SDK and other tags through Adobe Tags (Data Collection), not inline script sprawl.
-
Use a single rule that:
- Waits for the CMP’s “decision ready” event.
- Sets Web SDK consent.
- Then triggers your analytics / personalization / advertising rules.
-
Suppress non-essential vendors entirely when consent is “out” instead of letting them load and noop in the browser.
This reduces the number of scripts that even attempt to run on the initial view, which directly improves metrics like TTFB, FCP, and Total Blocking Time.
Pattern 4: Keep the EDS Stack Simple
A few EDS-specific notes:
-
Edge Delivery doesn’t ship its own CMP; you integrate your chosen solution (for example, OneTrust) like on any other site.
FAQ: OneTrust integration -
Because EDS HTML is static and aggressively cached, most of your consent logic (banner, CMP,
setConsent) should live in front-end code and Tags rules, not in a server-side rendering layer. -
Avoid duplicating consent state:
- Let the CMP own category flags.
- Let Web SDK own its consent cookie.
- Use mapping logic in one place (usually Tags) to bridge between them.
The result is a predictable, debuggable flow that doesn’t require special handling per route or block.
Quick Checklist
Use this as a condensed “best practices” list for an EDS + Web SDK + CMP setup:
-
Default Web SDK consent to
outorpendinguntil the CMP decides. -
Always call
setConsentwhen the user’s choice is known, and again on each page load. -
Gate all Web SDK
sendEventcalls and non-essential tags behind the CMP signal. -
Coordinate prehiding and consent so you don’t introduce long-lived flicker or hidden content.
-
Keep the CMP implementation light: minimal dependencies, no extra framework just for the banner.
-
Test flows for:
- First visit (no consent cookie)
- Opt-in → navigation
- Opt-out → navigation
- Changing consent mid-session
Done well, consent management becomes a performance optimization rather than a tax: you collect less, more intentionally, and you give EDS room to stay fast even as your data and personalization stack grows.