<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Privacy on Chris Liatas</title><link>https://liatas.com/tags/privacy/</link><description>Recent content in Privacy on Chris Liatas</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Tue, 02 Jun 2026 12:30:00 +0300</lastBuildDate><atom:link href="https://liatas.com/tags/privacy/index.xml" rel="self" type="application/rss+xml"/><item><title>Self-hosted cookie consent + GA4 Consent Mode v2 on Hugo</title><link>https://liatas.com/posts/hugo-self-hosted-cookie-consent-ga4/</link><pubDate>Tue, 02 Jun 2026 12:30:00 +0300</pubDate><guid>https://liatas.com/posts/hugo-self-hosted-cookie-consent-ga4/</guid><description>&lt;div class="headerclaim"&gt;The following assume basic knowledge of &lt;a href="https://en.wikipedia.org/wiki/General_Data_Protection_Regulation"&gt;GDPR&lt;/a&gt;, Hugo installed and an existing Hugo project. This is the modern replacement for two older posts here that used OneTrust + Google Tag Manager.&lt;/div&gt;

&lt;p&gt;Years ago I wrote about adding a &lt;a href="https://liatas.com/posts/hugo-gdpr-cookie-consent-banner"&gt;cookie-consent banner&lt;/a&gt; and &lt;a href="https://liatas.com/posts/hugo-google-tag-manager"&gt;Google Tag Manager&lt;/a&gt; to a Hugo site. Both relied on third-party, account-based services (OneTrust, GTM) and the now-dead &lt;a href="https://github.com/osano/cookieconsent"&gt;Osano cookie-consent&lt;/a&gt; library. This post describes the setup that replaced them here — &lt;strong&gt;free, self-hosted, and opt-in by default&lt;/strong&gt;, suitable for laws about the European audience:&lt;/p&gt;</description></item></channel></rss>