Manual HTML Installation
Place immediate defaults before tags and load the banner once.
Content and code last checked 2026-10-06 by ConsentEase product documentation. This is a review of the written content and code, not a test on a live third-party platform.
Requirements
You need permission to edit the published site's head and tracking configuration. Select the correct website in ConsentEase and copy Installation → embed code.
Insert the full code
Paste both blocks as the first element in the page head, above GTM/Google tags. Do not add them through a GTM Custom HTML tag:
<!-- ConsentEase: paste this whole block as the FIRST element in <head>, above Google Tag Manager / gtag.js. Do not add it through a GTM Custom HTML tag. Keep the data-cfasync, data-no-optimize, data-no-defer and nowprocket attributes: they stop caching plugins from delaying the banner. -->
<script data-cfasync="false" data-no-optimize="1" data-no-defer="1" nowprocket>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('consent', 'default', {
'ad_storage': 'denied',
'ad_user_data': 'denied',
'ad_personalization': 'denied',
'analytics_storage': 'denied',
'functionality_storage': 'denied',
'personalization_storage': 'denied',
'security_storage': 'granted',
'wait_for_update': 500
});
gtag('set', 'ads_data_redaction', true);
gtag('set', 'url_passthrough', true);
window.uetq = window.uetq || [];
window.uetq.push('consent', 'default', {'ad_storage': 'denied'});
</script>
<!-- ConsentEase: consent banner (keep it directly below the block above) -->
<script data-cfasync="false" data-no-optimize="1" data-no-defer="1" nowprocket src="https://consentease.io/api/consent/YOUR_PUBLIC_ID/script.js" async></script>
Use the real public ID from your dashboard. The public ID may appear in HTML; a private API key must never appear here.
Ordering and security policies
Keep default initialization synchronous. The banner loader is asynchronous. Avoid optimisers that defer the default block until after trackers.
If Content Security Policy blocks installation, review the exact console violation. Authorise only required scripts/connections and handle the inline block with your site's nonce/hash strategy. Do not disable CSP or add broad wildcard exceptions as a shortcut.
Multiple pages
Install through one shared head/template so every intended route has the same order. For dynamically loaded trackers, configure their consent checks too; adding an inventory entry alone does not control them.
Verify the published site
Use separate fresh browser contexts for no choice, accept, reject and custom preferences. Check tag consent requirements, network traffic, storage and reopening preferences. Test relevant routes and mobile layouts. A theme installation does not prove coverage of checkout, embedded frames or hosted third-party pages.