<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Conteúdos sobre Cookies | Pink and Brain</title>
	<atom:link href="https://www.pinkandbrain.com/conteudos-sobre/cookies/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.pinkandbrain.com/conteudos-sobre/cookies/</link>
	<description>Ratos do Desenvolvimento Web, SEO e aquisição, propulsores de estratégias eficientes de marketing digital que geram vantagem competitiva.</description>
	<lastBuildDate>Fri, 07 Nov 2025 22:04:05 +0000</lastBuildDate>
	<language>pt-BR</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	

<image>
	<url>https://www.pinkandbrain.com/wp-content/uploads/2024/10/cropped-favicon-180x180-1-386x386.png</url>
	<title>Conteúdos sobre Cookies | Pink and Brain</title>
	<link>https://www.pinkandbrain.com/conteudos-sobre/cookies/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Componente de cookies com consentimento para o GA4</title>
		<link>https://www.pinkandbrain.com/criando-um-componente-de-cookies-com-consentimento-para-o-ga4/</link>
		
		<dc:creator><![CDATA[César Canteiro]]></dc:creator>
		<pubDate>Fri, 07 Nov 2025 22:04:04 +0000</pubDate>
				<category><![CDATA[Business intelligence]]></category>
		<category><![CDATA[Desenvolvimento web]]></category>
		<category><![CDATA[Dicas]]></category>
		<category><![CDATA[Cookies]]></category>
		<category><![CDATA[Desenvolvimento Web]]></category>
		<category><![CDATA[GA4]]></category>
		<category><![CDATA[Google Analytics]]></category>
		<category><![CDATA[LGPD ( Lei Geral de Proteção de Dados Pessoais)]]></category>
		<category><![CDATA[Marketing Digital]]></category>
		<category><![CDATA[Web Analytics]]></category>
		<guid isPermaLink="false">https://www.pinkandbrain.com/?p=13342</guid>

					<description><![CDATA[<p>Se você prefere criar seu próprio elemento de consent mode ao invés de usar recursos de terceiros, vamos explicar no detalhe como criar, desde o HTML, CSS e JS de um componente de cookies</p>
<p>O post <a href="https://www.pinkandbrain.com/criando-um-componente-de-cookies-com-consentimento-para-o-ga4/">Componente de cookies com consentimento para o GA4</a> apareceu primeiro em <a href="https://www.pinkandbrain.com">Pink and Brain</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Este conteúdo é destinada aos desenvolvedores que usam tags do <a href="https://www.pinkandbrain.com/elementos/google/" title="Google">Google</a> em um site e querem integrar o modo de consentimento a ele. Para uma introdução ao modo de consentimento, acesse <a href="https://developers.google.com/tag-platform/devguides/privacy?hl=pt-br#consent_mode_overview">Visão geral do modo de consentimento</a> e veja aqui o <a href="https://developers.google.com/tag-platform/security/guides/consent?consentmode=advanced&amp;hl=pt-br">guia completo do próprio Google de como implementar o consent mode</a> no seu site.</p>



<p>A implementação de um componente de cookies para consentimento ajustado no Google Analytics 4 (GA4) é fundamental para quem deseja ter <strong>controle total sobre a coleta de dados de usuários sem depender de plataformas terceirizadas, como AdOpt, plugins do WordPress ou outras soluções similares</strong>.</p>



<p>Criei este artigo tutorial de como <strong>criar um componente do zero <a href="https://www.pinkandbrain.com/elementos/html-hypertext-markup-language/" title="HTML">HTML</a>, CSS, JS e incluir dataLayer para classificar as informações obtidas de consentimento dos usuários sincronizados para o GA4</strong>. Você aprenderá como configurar um componente de cookies de maneira correta, <strong>garantindo conformidade com a Lei Geral de Proteção de Dados (LGPD)</strong>, <strong>melhores práticas de SEO e otimização de performance</strong>.</p>



<h2 class="wp-block-heading">Importância do Consent Mode para SEO e LGPD</h2>



<p>O <strong>Consent Mode</strong> é a maneira de equilibrar a coleta de dados e a privacidade do usuário. Ele permite que você ajuste o comportamento das tags do Google com base no status de consentimento dos usuários para cookies de publicidade e <a href="https://www.pinkandbrain.com/visualizacao-de-dados-e-analise-de-dados-existe-diferenca/" title="análise de dados">análise de dados</a> comportamentais, além obviamente de atender as premissas da Lei Geral de Proteção de Dados, ou seja, é crucial para os sites estarem passíveis de serem bem classificados nos mecanismos de pesquisas, já que o Google também usa essa prática como um fator de autoridade/credibilidade de um domínio.</p>



<ul class="wp-block-list">
<li><strong>Conformidade com a LGPD</strong>: A LGPD exige que os sites obtenham consentimento explícito dos usuários antes de coletar dados pessoais. Ao implementar um componente de consentimento de cookies, você pode garantir que está em conformidade com essas exigências.</li>



<li><strong>Impacto para SEO</strong>: O Consent Mode ajuda a coletar dados de comportamento dos usuários de forma agregada e anônima quando o consentimento não é dado, permitindo que você continue sua navegação, criar novas páginas, otimizar as que já tem, mostrar ou não elementos, enfim, ´sua imaginação que mandará. Outro ponto chave é que: configurar o consent mode irá dar crédito ao seu site, tornando mais autoridade.</li>
</ul>



<h2 class="wp-block-heading">Ganhos de performance e personalização</h2>



<p>Além da conformidade e otimização para SEO, a <strong>criação de um componente de cookies personalizado pode trazer ganhos de performance</strong>. Embora soluções de terceiros geralmente sejam leves, construir seu próprio componente elimina dependências adicionais de bibliotecas e scripts, potencialmente acelerando o carregamento da página.</p>



<h2 class="wp-block-heading">Personalização infinita (e o além)</h2>



<p>Outro benefício importante é a <strong>personalização infinita</strong>: você tem total controle sobre o estilo, funcionalidade e comportamento do componente de cookies, podendo ajustá-lo para atender às necessidades específicas do seu site e público.</p>



<p>As plataformas de mercado e plugins oferecem algo mais “engessado” e você certamente não conseguirá deixar a cara do seu design system.</p>



<h2 class="wp-block-heading">Exemplo de implementação de um componente de cookies</h2>



<p>Abaixo, você encontrará um exemplo de como implementar um componente de cookies personalizado utilizando HTML, <a href="https://www.pinkandbrain.com/elementos/javascript/" title="JavaScript">JavaScript</a> e dataLayer para ajustar o consentimento no GA4.</p>



<div class="wp-block-kevinbatdorf-code-block-pro padding-bottom-disabled cbp-has-line-numbers" data-code-block-pro-font-family="Code-Pro-Hack" style="font-size:.875rem;font-family:Code-Pro-Hack,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#D4D4D4;--cbp-line-number-width:calc(2 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#2b2b2b;color:#c7c7c7">HTML</span><span role="button" tabindex="0" style="color:#D4D4D4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><pre class="code-block-pro-copy-button-pre" aria-hidden="true"><textarea class="code-block-pro-copy-button-textarea" tabindex="-1" aria-hidden="true" readonly>&lt;div class="cookies-container lazy__image"&gt;
    &lt;div class="cookies-content"&gt;
        &lt;div class="flex__cookies"&gt;
            &lt;p&gt;Esse site trabalha com cookies 🍪 para &lt;strong&gt;melhorar as informações e a navegação dos nossos usuários&lt;/strong&gt;, mas não armazena nenhum tipo de informação pessoal. &lt;/p&gt;
            &lt;div class="cookies-pref"&gt;
                &lt;label title="Marque para saber mais sobre o perfil dos nossos usuários potenciais clientes." class="control control-checkbox"&gt;
                    &lt;input name="analytics" type="checkbox" checked="checked" data-function="analytics"/&gt;Permitir Cookies
                    &lt;div class="control_indicator"&gt;&lt;/div&gt;
                &lt;/label&gt;
                &lt;label title="Marque se quiser receber recomendações, promoções e dicas sobre a saúde auditiva." class="control control-checkbox"&gt;
                    &lt;input name="marketing" type="checkbox" data-function="marketing"/&gt;Marketing e Newsletter
                    &lt;div class="control_indicator"&gt;&lt;/div&gt;
                &lt;/label&gt;
            &lt;/div&gt;
        &lt;/div&gt;
        &lt;button class="cookies-save"&gt;Salvar e Continuar&lt;/button&gt;
    &lt;/div&gt;
&lt;/div&gt;</textarea></pre><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewbox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M4.5 12.75l6 6 9-13.5"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6"></path></svg></span><pre class="shiki dark-plus" style="background-color: #1E1E1E" tabindex="0"><code><span class="line"><span style="color: #808080">&lt;</span><span style="color: #569CD6">div</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">class</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">"cookies-container lazy__image"</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">div</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">class</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">"cookies-content"</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">div</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">class</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">"flex__cookies"</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">            </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">p</span><span style="color: #808080">&gt;</span><span style="color: #D4D4D4">Esse site trabalha com cookies 🍪 para </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">strong</span><span style="color: #808080">&gt;</span><span style="color: #D4D4D4">melhorar as informações e a navegação dos nossos usuários</span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">strong</span><span style="color: #808080">&gt;</span><span style="color: #D4D4D4">, mas não armazena nenhum tipo de informação pessoal. </span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">p</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">            </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">div</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">class</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">"cookies-pref"</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">                </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">label</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">title</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">"Marque para saber mais sobre o perfil dos nossos usuários potenciais clientes."</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">class</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">"control control-checkbox"</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">                    </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">input</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">name</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">"analytics"</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">type</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">"checkbox"</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">checked</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">"checked"</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">data-function</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">"analytics"</span><span style="color: #808080">/&gt;</span><span style="color: #D4D4D4">Permitir Cookies</span></span>
<span class="line"><span style="color: #D4D4D4">                    </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">div</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">class</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">"control_indicator"</span><span style="color: #808080">&gt;&lt;/</span><span style="color: #569CD6">div</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">                </span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">label</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">                </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">label</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">title</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">"Marque se quiser receber recomendações, promoções e dicas sobre a saúde auditiva."</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">class</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">"control control-checkbox"</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">                    </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">input</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">name</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">"marketing"</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">type</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">"checkbox"</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">data-function</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">"marketing"</span><span style="color: #808080">/&gt;</span><span style="color: #D4D4D4">Marketing e Newsletter</span></span>
<span class="line"><span style="color: #D4D4D4">                    </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">div</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">class</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">"control_indicator"</span><span style="color: #808080">&gt;&lt;/</span><span style="color: #569CD6">div</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">                </span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">label</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">            </span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">div</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">div</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">button</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">class</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">"cookies-save"</span><span style="color: #808080">&gt;</span><span style="color: #D4D4D4">Salvar e Continuar</span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">button</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">div</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #808080">&lt;/</span><span style="color: #569CD6">div</span><span style="color: #808080">&gt;</span></span></code></pre><span style="display:flex;align-items:flex-end;padding:10px;width:100%;justify-content:flex-end;background-color:#1E1E1E;color:#c7c7c7;font-size:12px;line-height:1;position:relative">HTML</span></div>



<h3 class="wp-block-heading">Configuração do GA4 e dataLayer</h3>



<p>Para garantir que as preferências de consentimento dos usuários sejam respeitadas e refletidas nas configurações do GA4, precisamos configurar o <code>dataLayer</code> e a inicialização do GA4 com o consentimento padrão negado.</p>



<div class="wp-block-kevinbatdorf-code-block-pro padding-bottom-disabled cbp-has-line-numbers" data-code-block-pro-font-family="Code-Pro-Hack" style="font-size:.875rem;font-family:Code-Pro-Hack,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#D4D4D4;--cbp-line-number-width:calc(2 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#2b2b2b;color:#c7c7c7">JavaScript</span><span role="button" tabindex="0" style="color:#D4D4D4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><pre class="code-block-pro-copy-button-pre" aria-hidden="true"><textarea class="code-block-pro-copy-button-textarea" tabindex="-1" aria-hidden="true" readonly>window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}

gtag('js', new Date());

// Configuração padrão do consentimento como "negado"
gtag('consent', 'default', {
     'ad_storage': 'denied',
     'analytics_storage': 'denied'
});

gtag('config', 'TAG_ID');</textarea></pre><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewbox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M4.5 12.75l6 6 9-13.5"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6"></path></svg></span><pre class="shiki dark-plus" style="background-color: #1E1E1E" tabindex="0"><code><span class="line"><span style="color: #9CDCFE">window</span><span style="color: #D4D4D4">.</span><span style="color: #9CDCFE">dataLayer</span><span style="color: #D4D4D4"> = </span><span style="color: #9CDCFE">window</span><span style="color: #D4D4D4">.</span><span style="color: #9CDCFE">dataLayer</span><span style="color: #D4D4D4"> || [];</span></span>
<span class="line"><span style="color: #569CD6">function</span><span style="color: #D4D4D4"> </span><span style="color: #DCDCAA">gtag</span><span style="color: #D4D4D4">(){</span><span style="color: #9CDCFE">dataLayer</span><span style="color: #D4D4D4">.</span><span style="color: #DCDCAA">push</span><span style="color: #D4D4D4">(</span><span style="color: #569CD6">arguments</span><span style="color: #D4D4D4">);}</span></span>
<span class="line"></span>
<span class="line"><span style="color: #DCDCAA">gtag</span><span style="color: #D4D4D4">(</span><span style="color: #CE9178">'js'</span><span style="color: #D4D4D4">, </span><span style="color: #569CD6">new</span><span style="color: #D4D4D4"> </span><span style="color: #DCDCAA">Date</span><span style="color: #D4D4D4">());</span></span>
<span class="line"></span>
<span class="line"><span style="color: #6A9955">// Configuração padrão do consentimento como "negado"</span></span>
<span class="line"><span style="color: #DCDCAA">gtag</span><span style="color: #D4D4D4">(</span><span style="color: #CE9178">'consent'</span><span style="color: #D4D4D4">, </span><span style="color: #CE9178">'default'</span><span style="color: #D4D4D4">, {</span></span>
<span class="line"><span style="color: #D4D4D4">     </span><span style="color: #CE9178">'ad_storage'</span><span style="color: #9CDCFE">:</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">'denied'</span><span style="color: #D4D4D4">,</span></span>
<span class="line"><span style="color: #D4D4D4">     </span><span style="color: #CE9178">'analytics_storage'</span><span style="color: #9CDCFE">:</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">'denied'</span></span>
<span class="line"><span style="color: #D4D4D4">});</span></span>
<span class="line"></span>
<span class="line"><span style="color: #DCDCAA">gtag</span><span style="color: #D4D4D4">(</span><span style="color: #CE9178">'config'</span><span style="color: #D4D4D4">, </span><span style="color: #CE9178">'TAG_ID'</span><span style="color: #D4D4D4">);</span></span></code></pre><span style="display:flex;align-items:flex-end;padding:10px;width:100%;justify-content:flex-end;background-color:#1E1E1E;color:#c7c7c7;font-size:12px;line-height:1;position:relative">JavaScript</span></div>



<h3 class="wp-block-heading">JavaScript para gerenciamento de cookies</h3>



<p>O script abaixo gerencia a coleta de consentimento dos cookies e atualiza o estado de consentimento no GA4 conforme as preferências do usuário.</p>



<div class="wp-block-kevinbatdorf-code-block-pro padding-bottom-disabled cbp-has-line-numbers" data-code-block-pro-font-family="Code-Pro-Hack" style="font-size:.875rem;font-family:Code-Pro-Hack,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#D4D4D4;--cbp-line-number-width:calc(2 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#2b2b2b;color:#c7c7c7">JavaScript</span><span role="button" tabindex="0" style="color:#D4D4D4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><pre class="code-block-pro-copy-button-pre" aria-hidden="true"><textarea class="code-block-pro-copy-button-textarea" tabindex="-1" aria-hidden="true" readonly>function cookies(functions) {
    const container = document.querySelector('.cookies-container');
    const save = document.querySelector('.cookies-save');
    if (!container || !save) return null;

    const localPref = JSON.parse(window.localStorage.getItem('cookies-pref'));
    if (localPref) activateFunctions(localPref);

    function getFormPref() {
        return [...document.querySelectorAll('[data-function]')]
            .filter((el) =&gt; el.checked)
            .map((el) =&gt; el.getAttribute('data-function'));
    }

    function activateFunctions(pref) {
        pref.forEach((f) =&gt; functions[f]());
        container.style.display = 'none';
        window.localStorage.setItem('cookies-pref', JSON.stringify(pref));
        updateConsent(pref); // Atualiza o consentimento no GA
    }

    function handleSave() {
        const pref = getFormPref();
        activateFunctions(pref);
    }

    save.addEventListener('click', handleSave);
}

function marketing() {
    console.log('Marketing Function');
}

function analytics() {
    console.log('Analytics Function');
}

// Função para atualizar o consentimento no GA
function updateConsent(pref) {
    const consentObject = {
        'ad_storage': 'denied',
        'analytics_storage': 'denied'
    };

    if (pref.includes('analytics')) {
        consentObject['analytics_storage'] = 'granted';
    }

    if (pref.includes('marketing')) {
        consentObject['ad_storage'] = 'granted';
    }

    gtag('consent', 'update', consentObject);
}

cookies({
    marketing,
    analytics,
});</textarea></pre><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewbox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M4.5 12.75l6 6 9-13.5"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6"></path></svg></span><pre class="shiki dark-plus" style="background-color: #1E1E1E" tabindex="0"><code><span class="line"><span style="color: #569CD6">function</span><span style="color: #D4D4D4"> </span><span style="color: #DCDCAA">cookies</span><span style="color: #D4D4D4">(</span><span style="color: #9CDCFE">functions</span><span style="color: #D4D4D4">) {</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #569CD6">const</span><span style="color: #D4D4D4"> </span><span style="color: #4FC1FF">container</span><span style="color: #D4D4D4"> = </span><span style="color: #9CDCFE">document</span><span style="color: #D4D4D4">.</span><span style="color: #DCDCAA">querySelector</span><span style="color: #D4D4D4">(</span><span style="color: #CE9178">'.cookies-container'</span><span style="color: #D4D4D4">);</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #569CD6">const</span><span style="color: #D4D4D4"> </span><span style="color: #4FC1FF">save</span><span style="color: #D4D4D4"> = </span><span style="color: #9CDCFE">document</span><span style="color: #D4D4D4">.</span><span style="color: #DCDCAA">querySelector</span><span style="color: #D4D4D4">(</span><span style="color: #CE9178">'.cookies-save'</span><span style="color: #D4D4D4">);</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #C586C0">if</span><span style="color: #D4D4D4"> (!</span><span style="color: #9CDCFE">container</span><span style="color: #D4D4D4"> || !</span><span style="color: #9CDCFE">save</span><span style="color: #D4D4D4">) </span><span style="color: #C586C0">return</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">null</span><span style="color: #D4D4D4">;</span></span>
<span class="line"></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #569CD6">const</span><span style="color: #D4D4D4"> </span><span style="color: #4FC1FF">localPref</span><span style="color: #D4D4D4"> = </span><span style="color: #4FC1FF">JSON</span><span style="color: #D4D4D4">.</span><span style="color: #DCDCAA">parse</span><span style="color: #D4D4D4">(</span><span style="color: #9CDCFE">window</span><span style="color: #D4D4D4">.</span><span style="color: #9CDCFE">localStorage</span><span style="color: #D4D4D4">.</span><span style="color: #DCDCAA">getItem</span><span style="color: #D4D4D4">(</span><span style="color: #CE9178">'cookies-pref'</span><span style="color: #D4D4D4">));</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #C586C0">if</span><span style="color: #D4D4D4"> (</span><span style="color: #9CDCFE">localPref</span><span style="color: #D4D4D4">) </span><span style="color: #DCDCAA">activateFunctions</span><span style="color: #D4D4D4">(</span><span style="color: #9CDCFE">localPref</span><span style="color: #D4D4D4">);</span></span>
<span class="line"></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #569CD6">function</span><span style="color: #D4D4D4"> </span><span style="color: #DCDCAA">getFormPref</span><span style="color: #D4D4D4">() {</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #C586C0">return</span><span style="color: #D4D4D4"> [...</span><span style="color: #9CDCFE">document</span><span style="color: #D4D4D4">.</span><span style="color: #DCDCAA">querySelectorAll</span><span style="color: #D4D4D4">(</span><span style="color: #CE9178">'[data-function]'</span><span style="color: #D4D4D4">)]</span></span>
<span class="line"><span style="color: #D4D4D4">            .</span><span style="color: #DCDCAA">filter</span><span style="color: #D4D4D4">((</span><span style="color: #9CDCFE">el</span><span style="color: #D4D4D4">) </span><span style="color: #569CD6">=&gt;</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">el</span><span style="color: #D4D4D4">.</span><span style="color: #9CDCFE">checked</span><span style="color: #D4D4D4">)</span></span>
<span class="line"><span style="color: #D4D4D4">            .</span><span style="color: #DCDCAA">map</span><span style="color: #D4D4D4">((</span><span style="color: #9CDCFE">el</span><span style="color: #D4D4D4">) </span><span style="color: #569CD6">=&gt;</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">el</span><span style="color: #D4D4D4">.</span><span style="color: #DCDCAA">getAttribute</span><span style="color: #D4D4D4">(</span><span style="color: #CE9178">'data-function'</span><span style="color: #D4D4D4">));</span></span>
<span class="line"><span style="color: #D4D4D4">    }</span></span>
<span class="line"></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #569CD6">function</span><span style="color: #D4D4D4"> </span><span style="color: #DCDCAA">activateFunctions</span><span style="color: #D4D4D4">(</span><span style="color: #9CDCFE">pref</span><span style="color: #D4D4D4">) {</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #9CDCFE">pref</span><span style="color: #D4D4D4">.</span><span style="color: #DCDCAA">forEach</span><span style="color: #D4D4D4">((</span><span style="color: #9CDCFE">f</span><span style="color: #D4D4D4">) </span><span style="color: #569CD6">=&gt;</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">functions</span><span style="color: #D4D4D4">[</span><span style="color: #9CDCFE">f</span><span style="color: #D4D4D4">]());</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #9CDCFE">container</span><span style="color: #D4D4D4">.</span><span style="color: #9CDCFE">style</span><span style="color: #D4D4D4">.</span><span style="color: #9CDCFE">display</span><span style="color: #D4D4D4"> = </span><span style="color: #CE9178">'none'</span><span style="color: #D4D4D4">;</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #9CDCFE">window</span><span style="color: #D4D4D4">.</span><span style="color: #9CDCFE">localStorage</span><span style="color: #D4D4D4">.</span><span style="color: #DCDCAA">setItem</span><span style="color: #D4D4D4">(</span><span style="color: #CE9178">'cookies-pref'</span><span style="color: #D4D4D4">, </span><span style="color: #4FC1FF">JSON</span><span style="color: #D4D4D4">.</span><span style="color: #DCDCAA">stringify</span><span style="color: #D4D4D4">(</span><span style="color: #9CDCFE">pref</span><span style="color: #D4D4D4">));</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #DCDCAA">updateConsent</span><span style="color: #D4D4D4">(</span><span style="color: #9CDCFE">pref</span><span style="color: #D4D4D4">); </span><span style="color: #6A9955">// Atualiza o consentimento no GA</span></span>
<span class="line"><span style="color: #D4D4D4">    }</span></span>
<span class="line"></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #569CD6">function</span><span style="color: #D4D4D4"> </span><span style="color: #DCDCAA">handleSave</span><span style="color: #D4D4D4">() {</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #569CD6">const</span><span style="color: #D4D4D4"> </span><span style="color: #4FC1FF">pref</span><span style="color: #D4D4D4"> = </span><span style="color: #DCDCAA">getFormPref</span><span style="color: #D4D4D4">();</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #DCDCAA">activateFunctions</span><span style="color: #D4D4D4">(</span><span style="color: #9CDCFE">pref</span><span style="color: #D4D4D4">);</span></span>
<span class="line"><span style="color: #D4D4D4">    }</span></span>
<span class="line"></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #9CDCFE">save</span><span style="color: #D4D4D4">.</span><span style="color: #DCDCAA">addEventListener</span><span style="color: #D4D4D4">(</span><span style="color: #CE9178">'click'</span><span style="color: #D4D4D4">, </span><span style="color: #9CDCFE">handleSave</span><span style="color: #D4D4D4">);</span></span>
<span class="line"><span style="color: #D4D4D4">}</span></span>
<span class="line"></span>
<span class="line"><span style="color: #569CD6">function</span><span style="color: #D4D4D4"> </span><span style="color: #DCDCAA">marketing</span><span style="color: #D4D4D4">() {</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #9CDCFE">console</span><span style="color: #D4D4D4">.</span><span style="color: #DCDCAA">log</span><span style="color: #D4D4D4">(</span><span style="color: #CE9178">'Marketing Function'</span><span style="color: #D4D4D4">);</span></span>
<span class="line"><span style="color: #D4D4D4">}</span></span>
<span class="line"></span>
<span class="line"><span style="color: #569CD6">function</span><span style="color: #D4D4D4"> </span><span style="color: #DCDCAA">analytics</span><span style="color: #D4D4D4">() {</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #9CDCFE">console</span><span style="color: #D4D4D4">.</span><span style="color: #DCDCAA">log</span><span style="color: #D4D4D4">(</span><span style="color: #CE9178">'Analytics Function'</span><span style="color: #D4D4D4">);</span></span>
<span class="line"><span style="color: #D4D4D4">}</span></span>
<span class="line"></span>
<span class="line"><span style="color: #6A9955">// Função para atualizar o consentimento no GA</span></span>
<span class="line"><span style="color: #569CD6">function</span><span style="color: #D4D4D4"> </span><span style="color: #DCDCAA">updateConsent</span><span style="color: #D4D4D4">(</span><span style="color: #9CDCFE">pref</span><span style="color: #D4D4D4">) {</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #569CD6">const</span><span style="color: #D4D4D4"> </span><span style="color: #4FC1FF">consentObject</span><span style="color: #D4D4D4"> = {</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #CE9178">'ad_storage'</span><span style="color: #9CDCFE">:</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">'denied'</span><span style="color: #D4D4D4">,</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #CE9178">'analytics_storage'</span><span style="color: #9CDCFE">:</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">'denied'</span></span>
<span class="line"><span style="color: #D4D4D4">    };</span></span>
<span class="line"></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #C586C0">if</span><span style="color: #D4D4D4"> (</span><span style="color: #9CDCFE">pref</span><span style="color: #D4D4D4">.</span><span style="color: #DCDCAA">includes</span><span style="color: #D4D4D4">(</span><span style="color: #CE9178">'analytics'</span><span style="color: #D4D4D4">)) {</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #9CDCFE">consentObject</span><span style="color: #D4D4D4">[</span><span style="color: #CE9178">'analytics_storage'</span><span style="color: #D4D4D4">] = </span><span style="color: #CE9178">'granted'</span><span style="color: #D4D4D4">;</span></span>
<span class="line"><span style="color: #D4D4D4">    }</span></span>
<span class="line"></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #C586C0">if</span><span style="color: #D4D4D4"> (</span><span style="color: #9CDCFE">pref</span><span style="color: #D4D4D4">.</span><span style="color: #DCDCAA">includes</span><span style="color: #D4D4D4">(</span><span style="color: #CE9178">'marketing'</span><span style="color: #D4D4D4">)) {</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #9CDCFE">consentObject</span><span style="color: #D4D4D4">[</span><span style="color: #CE9178">'ad_storage'</span><span style="color: #D4D4D4">] = </span><span style="color: #CE9178">'granted'</span><span style="color: #D4D4D4">;</span></span>
<span class="line"><span style="color: #D4D4D4">    }</span></span>
<span class="line"></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #DCDCAA">gtag</span><span style="color: #D4D4D4">(</span><span style="color: #CE9178">'consent'</span><span style="color: #D4D4D4">, </span><span style="color: #CE9178">'update'</span><span style="color: #D4D4D4">, </span><span style="color: #9CDCFE">consentObject</span><span style="color: #D4D4D4">);</span></span>
<span class="line"><span style="color: #D4D4D4">}</span></span>
<span class="line"></span>
<span class="line"><span style="color: #DCDCAA">cookies</span><span style="color: #D4D4D4">({</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #9CDCFE">marketing</span><span style="color: #D4D4D4">,</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #9CDCFE">analytics</span><span style="color: #D4D4D4">,</span></span>
<span class="line"><span style="color: #D4D4D4">});</span></span></code></pre><span style="display:flex;align-items:flex-end;padding:10px;width:100%;justify-content:flex-end;background-color:#1E1E1E;color:#c7c7c7;font-size:12px;line-height:1;position:relative">JavaScript</span></div>



<p>Aí está! finalizado..</p>



<p>Ah.. uma <strong>dica extra de como saber se está certinho ou não</strong>:</p>



<ol class="wp-block-list">
<li>Acesse seu DEV tools (crtl + shift + i no Windows)</li>



<li>Acesse o console</li>



<li>Digite dataLayer, clique e “enter”</li>



<li>Ele deverá aparecer como abaixo, inclusive antes da resposta do usuário e depois, em forma de linha do tempo</li>
</ol>



<figure class="wp-block-image wp-block-gallery has-nested-images columns-default is-cropped"><figure><img decoding="async" width="1178" height="1093" loading="lazy" src="https://www.pinkandbrain.com/wp-content/uploads/2024/09/checar-consent-mode-ga4-console-dev-tools.webp" alt="Checando os valores de consentimento envioados ao GA4" class="wp-image-13346" title="Checando os valores de consentimento envioados ao GA4"><figcaption>Checando os valores de consentimento envioados ao GA4</figcaption></figure><figcaption class="wp-element-caption">Checando os valores de consentimento envioados ao GA4</figcaption></figure>



<p>Implementar um <strong>componente de cookies para consentimento ajustado no GA4 permite que você tenha controle total sobre como o consentimento é gerenciado em seu site, atendendo às exigências da LGPD e melhorando-o para SEO e a performance do site</strong>. Com as orientações e exemplos fornecidos, você pode criar uma solução altamente personalizada e eficiente, sem a necessidade de dependências de terceiros.</p>



<p>Se precisar de mentes brilhantes do marketing digital e web analytics, venha bater um papo conosco. Somos ratos quando o assunto é Web Analytics.</p>
<p>O post <a href="https://www.pinkandbrain.com/criando-um-componente-de-cookies-com-consentimento-para-o-ga4/">Componente de cookies com consentimento para o GA4</a> apareceu primeiro em <a href="https://www.pinkandbrain.com">Pink and Brain</a>.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
