The Banner That Loads in the Footer: Consent After the Page Already Tracked
A site owner installed a consent platform, configured the categories, and watched the banner appear on every page. The setup looked complete. Then a network check on a fresh visit found the analytics tag firing in the first second, before the banner had rendered, before any choice existed. The platform was working. It was just working second. The tag had already fired by the time the platform told it to wait.
Load order is the consent defect most sites never test. The banner is visible, so the site looks compliant. The tags are invisible, so the firing order goes unnoticed. But consent is a timing question before it is a design question: a tag that fires before the default state is set has not waited for consent. It has run without it.
The gap between the tag and the platform
Google consent mode is built around a default. Before any tag fires, the site is supposed to set a default consent state, usually denied for analytics and advertising, and then update that state when the visitor chooses. The consent platform is the thing that sets the default. If the platform script loads after the analytics tag, the tag runs with no default in place, and in practice it runs as if consent were granted.
The CookieYes troubleshooting guide names this failure directly. It says the consent platform tag has to fire first, through the consent initialization trigger, and that tags fired before the default consent is set are a configuration error. The fix is not a setting inside the banner. It is the tag order in the container: the platform tag first, everything else after. A site that loads its analytics in the page head and its consent platform in the footer has the order backwards, and no banner design fixes that.
Why the footer is where it ends up
Developers put scripts in the footer for a good reason: page speed. A script in the footer does not block rendering, so the page feels faster. That is the right instinct for most scripts, and the wrong one for the consent platform, because the consent platform is not a feature script. It is the gate. A gate that arrives after the traffic has passed is decoration.
The Biscotti consent mode guide adds the consequence. Consent mode v2 has been mandatory for EEA and UK traffic since March 6, 2024, and the four signals have to be set before the tags that depend on them. A site with the platform in the footer is not just slow to ask. It is sending Google tags with no consent signal at all, which means Google treats the traffic as unconsented, and the site loses the measurement and remarketing it was trying to protect. The speed optimization costs the data it was meant to serve.
The fix, in order
Move the consent platform script to the head, before any tag that depends on it. That is the whole fix, and it is worth doing in one change rather than debating it. The platform script is small, and the page speed cost of loading it early is real but tiny, measured in milliseconds against a compliance gap measured in every visit.
Then set the default state in the page itself, not in the tag manager. A short inline script before the tag manager sets analytics_storage and ad_storage to denied, and the platform updates them when the visitor chooses. That way, even if the platform is slow, the tags have a default to obey. The CookieYes guide recommends exactly this pattern: the default is set in the page, the platform updates it, and no tag fires in the gap between the two.
Finally, test it the way a visitor experiences it. Open a fresh browser, open the network tab, and load the homepage. The first request carrying an identifier should come after the consent platform has loaded, not before. If it comes first, the order is still wrong, and the banner is still decoration. Run the same test on a slow connection, where the gap is widest, and on mobile, where the footer arrives last.
Keep reading: where the CMP script has to sit, the banner on small screens, and the sentence that moves the accept rate cover the nearby cases in this series.
Frequently asked questions
Does it matter where the consent platform script loads?
Yes, more than the banner design. The platform sets the default consent state, and any tag that fires before that default is set runs without consent. The platform script has to load before every tag that depends on it, which usually means the head, not the footer.
Can I keep the platform in the footer and set the default in the tag manager?
No. The tag manager itself loads after the page head, so a default set inside it arrives after the tags it is supposed to govern. Set the default in a short inline script in the page head, before the tag manager loads.
How do I know if my tags are firing before consent?
Open a fresh browser with the network tab open and load the homepage. If any request carrying an identifier, a cookie, or a fingerprint fires before the consent platform script loads, the order is wrong. Test on a slow connection, where the gap is widest.
Will moving the platform to the head slow the page down?
Slightly, by milliseconds. The platform script is small, and the cost is real but tiny against a compliance gap that affects every visit. A fast page that tracks without consent is not a fast page worth having.