A biblioteca oferece integrações nativas para as ferramentas mais comuns, eliminando a necessidade de código manual para o carregamento condicional de scripts de terceiros. As categorias usadas pelas integrações são sempre lidas da prop categories do ConsentProvider (fonte única de verdade).
O componente ConsentScriptLoader gerencia o carregamento desses scripts automaticamente, disparando-os apenas quando o usuário concede consentimento para a categoria correspondente.
A biblioteca oferece integrações nativas para as ferramentas mais comuns, eliminando a necessidade de código manual para o carregamento condicional de scripts de terceiros.
O componente ConsentScriptLoader gerencia o carregamento desses scripts automaticamente, disparando-os apenas quando o usuário concede consentimento para a categoria correspondente.
analyticscreateGoogleAnalyticsIntegration(config)measurementId e configurações adicionais para o gtag.import { createGoogleAnalyticsIntegration, ConsentScriptLoader } from 'react-lgpd-consent'
const integrations = [
createGoogleAnalyticsIntegration({
measurementId: 'G-XXXXXXXXXX',
config: { anonymize_ip: true },
})
]
<ConsentScriptLoader integrations={integrations} />
analyticscreateGoogleTagManagerIntegration(config)gtmId e dataLayerName.import { createGoogleTagManagerIntegration } from 'react-lgpd-consent'
const integrations = [
createGoogleTagManagerIntegration({ gtmId: 'GTM-XXXXXXX' })
]
marketingcreateFacebookPixelIntegration(config)pixelId e autoTrack para PageView.import { createFacebookPixelIntegration } from 'react-lgpd-consent'
const integrations = [
createFacebookPixelIntegration({ pixelId: 'YOUR_PIXEL_ID', autoTrack: true })
]
analyticscreateHotjarIntegration(config)siteId, version e modo debug.import { createHotjarIntegration } from 'react-lgpd-consent'
const integrations = [createHotjarIntegration({ siteId: '123456', version: 6 })]
analyticscreateMixpanelIntegration(config)token e configurações customizadas.import { createMixpanelIntegration } from 'react-lgpd-consent'
const integrations = [createMixpanelIntegration({ token: 'YOUR_TOKEN' })]
analyticscreateClarityIntegration(config)projectId.import { createClarityIntegration } from 'react-lgpd-consent'
const integrations = [createClarityIntegration({ projectId: 'abcdef' })]
functionalcreateIntercomIntegration(config)app_id.import { createIntercomIntegration } from 'react-lgpd-consent'
const integrations = [createIntercomIntegration({ app_id: 'your_app_id' })]
functionalcreateZendeskChatIntegration(config)key.import { createZendeskChatIntegration } from 'react-lgpd-consent'
const integrations = [createZendeskChatIntegration({ key: 'your_zendesk_key' })]
functionalcreateUserWayIntegration(config)accountId.import { createUserWayIntegration } from 'react-lgpd-consent'
const integrations = [createUserWayIntegration({ accountId: 'USERWAY_ACCOUNT_ID' })]
Para simplificar a configuração de múltiplas integrações, a biblioteca oferece templates e funções de ajuda.
suggestCategoryForScript(name: string): Sugere a categoria LGPD apropriada para um nome de script conhecido.createECommerceIntegrations, createSaaSIntegrations, createCorporateIntegrations: Templates de negócio que agrupam as integrações mais comuns para cada setor.INTEGRATION_TEMPLATES: Constante com presets de IDs e categorias para cada template.import { ConsentProvider, ConsentScriptLoader, createECommerceIntegrations } from 'react-lgpd-consent'
function App() {
const integrations = createECommerceIntegrations({
googleAnalytics: { measurementId: 'G-XXXX' },
facebookPixel: { pixelId: '1234567890' },
hotjar: { siteId: '999999' },
})
return (
<ConsentProvider categories={{ enabledCategories: ['analytics', 'marketing', 'functional'] }}>
<ConsentScriptLoader integrations={integrations} />
{/* Seu app */}
</ConsentProvider>
)
}
A biblioteca inclui funcionalidades experimentais para facilitar a auditoria e o mapeamento de cookies.
categorizeDiscoveredCookies usa heurísticas para sugerir a categoria de um cookie.import { discoverRuntimeCookies, categorizeDiscoveredCookies } from 'react-lgpd-consent'
// 1. Descobre cookies em tempo de execução
const discovered = discoverRuntimeCookies()
// 2. Categoriza e registra no catálogo de cookies do modal
categorizeDiscoveredCookies(discovered, true)
Para evitar hydration mismatch e vazamento de scripts:
ConsentProvider dentro de um Client Component e carregue-o com dynamic(..., { ssr: false }) a partir do RootLayout (Server Component).ConsentScriptLoader para carregar GTM/GA4 somente após consentimento e inicialize o Consent Mode v2 com gtag('consent','default', denied) antes de qualquer script.QUICKSTART.md para ordem dos provedores/estilos (MUI/Emotion) e checklist SSR.Se precisar de uma integração que não é oferecida nativamente, você pode criar a sua implementando a interface ScriptIntegration.
interface ScriptIntegration {
id: string // ID único para o script
category: string // Categoria de consentimento que habilita o script
src: string // URL do script
init?: () => void // Função opcional para executar após o carregamento
attrs?: Record<string, string> // Atributos HTML para a tag <script>
}
A partir da versão 0.4.5, a biblioteca dispara automaticamente eventos padronizados no dataLayer para facilitar rastreamento, auditoria LGPD e integrações com o Google Tag Manager.
consent_initializedDisparado quando o sistema de consentimento é inicializado (após hidratação).
Payload:
{
event: 'consent_initialized',
consent_version: '0.4.5',
timestamp: '2025-10-25T13:52:33.729Z',
categories: {
necessary: true,
analytics: false,
marketing: false
}
}
Exemplo de uso no GTM:
consent_initialized{{categories.analytics}}, {{categories.marketing}}, etc.consent_updatedDisparado sempre que o usuário atualiza suas preferências de consentimento.
Payload:
{
event: 'consent_updated',
consent_version: '0.4.5',
timestamp: '2025-10-25T13:52:33.729Z',
origin: 'modal', // 'banner' | 'modal' | 'reset' | 'programmatic'
categories: {
necessary: true,
analytics: true,
marketing: false
},
changed_categories: ['analytics']
}
Exemplo de uso no GTM:
consent_updated{{changed_categories}} contém analyticsNo GTM, crie as seguintes variáveis de camada de dados:
DLV - Consent Categories
categoriesDLV - Consent Origin
originDLV - Changed Categories
changed_categoriesAcionador: Consent Initialized
consent_initializedAcionador: Consent Updated - Analytics Accepted
consent_updated{{DLV - Consent Categories}}.analytics igual a trueG-XXXXXXXXXXConsent Updated - Analytics AcceptedCrie uma tag para registrar mudanças de consentimento em um sistema de auditoria:
// Tag HTML customizada no GTM
<script>
(function() {
var auditData = {
timestamp: {{DLV - timestamp}},
origin: {{DLV - Consent Origin}},
categories: {{DLV - Consent Categories}},
changed: {{DLV - Changed Categories}}
};
// Enviar para seu sistema de auditoria
fetch('/api/consent-audit', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(auditData)
});
})();
</script>
Para casos avançados, você pode disparar eventos manualmente:
import { pushConsentUpdatedEvent } from 'react-lgpd-consent'
// Disparar evento após mudança programática
const handleCustomUpdate = () => {
const newPreferences = {
necessary: true,
analytics: true,
marketing: false
}
pushConsentUpdatedEvent(newPreferences, 'programmatic')
}
import type {
ConsentEvent,
ConsentEventOrigin,
ConsentInitializedEvent,
ConsentUpdatedEvent
} from 'react-lgpd-consent'
// Origem da ação
type ConsentEventOrigin = 'banner' | 'modal' | 'reset' | 'programmatic'
// Evento de inicialização
interface ConsentInitializedEvent {
event: 'consent_initialized'
consent_version: string
timestamp: string
categories: Record<string, boolean>
}
// Evento de atualização
interface ConsentUpdatedEvent {
event: 'consent_updated'
consent_version: string
timestamp: string
origin: ConsentEventOrigin
categories: Record<string, boolean>
changed_categories: string[]
}
| Ferramenta | Categoria Recomendada | Justificativa |
|---|---|---|
| Google Analytics | analytics |
Coleta estatísticas de uso |
| Google Tag Manager | analytics |
Container de tags analíticas |
| Facebook Pixel | marketing |
Publicidade direcionada |
| Hotjar/FullStory | analytics |
Análise comportamental |
| UserWay/AccessiBe | functional |
Funcionalidade de acessibilidade |
| Live Chat | functional |
Funcionalidade de suporte |
| YouTube/Vimeo | social |
Conteúdo de redes sociais |