Saltar para o conteúdo
Blume
Esc
↑↓navegar↵abrir⌘Jpré-visualizar
Nesta página

Consentimento de cookies

Peça permissão aos leitores antes de o analytics rodar, com o banner próprio do Blume ou um gerenciador de consentimento hospedado como Osano ou Ethyca, configurado como adaptador no blume.config.ts.

Defina consent no blume.config.ts para pedir permissão aos leitores antes de o seu analytics rodar. Ele recebe um adaptador de blume/consent: o banner próprio do Blume ou um gerenciador de consentimento hospedado que você já usa.

import { defineConfig } from "blume";
import { googleAnalytics, posthog } from "blume/analytics";
import { native } from "blume/consent";

export default defineConfig({
  analytics: [
    googleAnalytics({ id: "G-XXXXXXXXXX" }),
    posthog({ key: "phc_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" }),
  ],
  consent: native({ policy: "/privacy" }),
});

Com consent definido, todos os adaptadores de analytics esperam. As tags deles ficam na página, mas só rodam quando o leitor permite o analytics, e aí rodam na ordem em que você os listou. Quem recusa nunca carrega essas tags. Essa pessoa também não vê a avaliação da página nem a caixa de comentário dela, já que as respostas não teriam para onde ir. O Vercel Web Analytics carrega de qualquer jeito, porque o componente dele não é uma tag que o Blume consiga reter. Mesmo assim, ele não envia nada até o leitor permitir o analytics.

Adaptadores

Adaptador Gerenciador de consentimento Obrigatório
native() Banner próprio do Blume —
osano() Osano customerId, configId
ethyca() Ethyca privacyCenter

O banner do Blume

O native() mostra um pequeno card no rodapé da página até o leitor responder. Ele traz Aceitar e Recusar lado a lado, então recusar é tão fácil quanto aceitar. A resposta fica salva no navegador do leitor, e o banner não aparece de novo depois disso.

consent: native({
  policy: "/privacy", // optional: links the banner to your privacy policy
}),

O policy aceita uma rota de página ou uma URL completa. O texto do banner vem traduzido em todos os idiomas integrados. Para mudar o texto, sobrescreva as strings de UI de consent (message, accept, decline, policy, settings) com i18n.ui.

O banner também funciona no blume dev, então você consegue vê-lo enquanto escreve. Já o analytics em si só carrega em builds de produção.

Osano

O osano() carrega o Osano Cookie Consent, que mostra o banner e a gaveta que você configurou no painel do Osano. O Blume roda o seu analytics assim que o Osano informa o consentimento de analytics do leitor, e roda de novo sempre que o leitor mudar a escolha. Os dois IDs estão na tag de script que o Osano te passa: https://cmp.osano.com/<customerId>/<configId>/osano.js.

import { osano } from "blume/consent";

consent: osano({ customerId: "AzZdRbSIoEzZU2", configId: "7b9e2f4a-…" }),

É o Osano que decide o que conta como consentimento em cada região, seguindo o modo de conformidade que você escolheu no painel dele.

Ethyca

O ethyca() carrega o gerenciador de consentimento Fides, da Ethyca, a partir da sua central de privacidade. Ele mostra o banner e o modal que você configurou no Fides. O Blume roda o seu analytics assim que o aviso de analytics do leitor estiver ativo. Isso acontece quando o leitor aceitou, quando não recusou ou quando o aviso só pede que ele confirme que está ciente.

import { ethyca } from "blume/consent";

consent: ethyca({
  privacyCenter: "https://privacy.example.com",
  propertyId: "FDS-XXXXXX", // optional: which Fides property to load
  notice: "analytics", // optional: the notice key that covers analytics
}),

O valor padrão de notice é analytics. Defina esse campo se o seu aviso de analytics no Fides usar outra chave.

Assim como o analytics, o Osano e o Fides só carregam em builds de produção, então testar no blume dev não cria nenhum registro de consentimento. Para testá-los antes de publicar, use blume build e blume preview.

Mudando uma resposta

Quando consent está definido, o rodapé do site mostra um link Configurações de cookies. Ele abre de novo o banner do Blume ou as preferências do gerenciador de consentimento hospedado. Se você trocar o rodapé pelo seu próprio Footer, é só colocar o atributo data-blume-consent-open em qualquer elemento para que ele funcione como esse link:

<button data-blume-consent-open type="button">Cookie settings</button>

Se um leitor permitir o analytics e depois voltar atrás, a página é recarregada, porque essa é a única forma de parar scripts que já começaram a rodar. A partir daí, o analytics fica desligado.

Seus próprios scripts

Você pode reter qualquer script seu do mesmo jeito: coloque type="text/plain" e data-blume-consent="analytics" nele, e o script vai rodar quando o leitor permitir o analytics. Para reagir às respostas por conta própria, escute o evento blume:consent no window. O detail.analytics dele traz a escolha do leitor. Já o window.blumeConsent.analytics guarda a escolha atual: fica null até o gerenciador de consentimento responder e depois vira true ou false.

window.addEventListener("blume:consent", (event) => {
  if (event.detail.analytics) {
    // start something that needs consent
  }
});

Última atualização a 28 de setembro de 2026

Esta página foi útil?