Consulte a Política de Privacidade com um Banner de consentimento de rastreamento.

Preserve a confiança do comprador com um banner de consentimento de rastreamento no seu site do Kit Progressive Web App (PWA ). Com o banner, seus compradores podem ativar ou desativar o rastreamento de atividades padrão incluído em PWA Kit.

Este guia explica as opções padrão de implementação e personalização para o banner de consentimento de rastreamento.

A funcionalidade descrita neste guia não é compatível com uma vitrine híbrida.

Note

Pré-requisitos 

Para configurar e usar o banner de consentimento de rastreamento, crie seu site com Retail React App versão 6.0 ou posterior.

Implementação de consentimento de rastreamento padrão 

Interface do usuário do banner 

O banner de consentimento de rastreamento está disponível no template-retail-react-app/app/components/_app/index.jsx, para que você possa exibi-lo em qualquer página do seu site. O banner é definido em template-retail-react-app/app/hooks/use-dnt-notification.js.

Por padrão, o banner é semelhante a este exemplo.

Processo de consentimento de rastreamento

Não controlar valores 

Estes são os dois valores que definem o que o estado DNT é definido para:

  • effectiveDnt: É definido para o estado DNT padrão que você configurou ou está definido para false se você não configurou um estado DNT padrão. Esse valor é definido false se o comprador consentiu com o rastreamento ou true se optou por não rastreá-lo.
  • selectedDnt: É indefinido até que o comprador interaja com o banner de consentimento. Esse valor é definido false se o comprador consentiu com o rastreamento ou true se optou por não rastreá-lo.

Banner e fluxo de trabalho DNT 

Se um comprador fechar o banner ou não fizer uma seleção no banner, o estado DNT padrão será definido como false (rastrear atividade). Para alterar esse comportamento, consulte Configurar o estado DNT padrão. O banner reaparece na próxima vez que o comprador visitar seu site depois de realizar qualquer uma destas ações:

  • Feche o navegador
  • Atualizar dados do site
  • Limpe seus cookies

Este diagrama resume o comportamento do banner de consentimento de rastreamento e como o estado DNT dos compradores é definido quando visitam seu site.

Salvo indicação em contrário, todas as etapas no diagrama se aplicam tanto a compradores visitantes quanto a compradores conhecidos.

Processo de consentimento de rastreamento

Configurar o estado DNT padrão 

Opcionalmente, você pode especificar um estado DNT padrão que se aplica se um comprador fechar o banner de consentimento de rastreamento ou não fizer uma seleção no banner. Para fazer isso, defina a defaultDNT propriedade neste arquivo em seu projeto: {overridesDir}/app/components/_app-config/index.jsx.

  • defaultDnt={true}: Indica que a atividade do comprador não é rastreada.
  • defaultDnt={false}: Indica que a atividade do comprador é rastreada.

Neste exemplo, defaultDnt é definido como false.

1// More code here...
2
3   <CommerceApiProvider
4            shortCode={commerceApiConfig.parameters.shortCode}
5            clientId={commerceApiConfig.parameters.clientId}
6            organizationId={commerceApiConfig.parameters.organizationId}
7            siteId={locals.site?.id}
8            locale={locals.locale?.id}
9            currency={locals.locale?.preferredCurrency}
10            redirectURI={`${appOrigin}/callback`}
11            proxy={`${appOrigin}${commerceApiConfig.proxyPath}`}
12            headers={headers}
13            // Add your chosen default DNT state.
14            defaultDnt={false}
15            // Uncomment 'enablePWAKitPrivateClient' to use SLAS private client login flows.
16            // Make sure to also enable useSLASPrivateClient in ssr.js when enabling this setting.
17            // enablePWAKitPrivateClient={true}
18            logger={createLogger({packageName: 'commerce-sdk-react'})}
19        >
20            <MultiSiteProvider site={locals.site} locale={locals.locale} buildUrl={locals.buildUrl}>
21                <ChakraProvider theme={theme}>{children}</ChakraProvider>
22            </MultiSiteProvider>
23            <ReactQueryDevtools />
24   </CommerceApiProvider>
25
26   // More code here...

Personalizar o banner de consentimento de rastreamento 

Opcionalmente, você pode personalizar o banner de consentimento de rastreamento alterando partes dele, como a aparência ou o texto. Para isso, você tem essas duas opções.

  1. Use APIs e ganchos conforme descrito em Gerenciar preferências de rastreamento do comprador.

ou

  1. Substitua o arquivo de banner no modelo base concluindo estas etapas.

    • Se você ainda não tiver feito isso, em seu projeto PWA Kit, crie uma pasta chamada hooks. {overridesDir}/app
    • Crie um arquivo chamado use-dnt-notification.js na hooks pasta.
    • Copie e cole este código no use-dnt-notification.js. Neste exemplo, usamos selectedDnt para renderizar um banner personalizado que é controlado pelo DntNotification componente. Além disso, usamos a função para aplicar a updateDnt preferência de rastreamento de um comprador como booleano. Consulte Não controlar valores.
1import React, {useEffect} from 'react'
2import PropTypes from 'prop-types'
3import {FormattedMessage, useIntl} from 'react-intl'
4import {
5    Button,
6    Modal,
7    ModalContent,
8    ModalBody,
9    ModalCloseButton,
10    useDisclosure,
11    Heading,
12    Stack,
13    Text,
14    Flex
15} from '@salesforce/retail-react-app/app/components/shared/ui'
16import {useDNT} from '@salesforce/commerce-sdk-react'
17import {useLocation} from 'react-router-dom'
18
19export const DntNotification = ({isOpen, onOpen, onClose}) => {
20    const {selectedDnt, updateDNT} = useDNT()
21    const {formatMessage} = useIntl()
22    const location = useLocation()
23
24    useEffect(() => {
25        if (selectedDnt === undefined) {
26            onOpen()
27        } else {
28            onClose()
29        }
30    }, [location, selectedDnt])
31
32    const onCloseNotification = () => {
33        updateDNT(null)
34        onClose()
35    }
36
37    return (
38        <Modal
39            size="sm"
40            data-testid="sf-dnt-notification"
41            blockScrollOnMount={false}
42            closeOnOverlayClick={false}
43            trapFocus={false}
44            isOpen={isOpen}
45            onOpen={onOpen}
46            onClose={onCloseNotification}
47        >
48            <ModalContent
49                position="fixed"
50                bottom="4"
51                right="4"
52                maxW="400px"
53                pointerEvents="all"
54                containerProps={{
55                    pointerEvents: 'none'
56                }}
57                border="2px solid"
58            >
59                <ModalCloseButton
60                    aria-label={formatMessage({
61                        id: 'dnt_notification.button.assistive_msg.close',
62                        defaultMessage: 'Close consent tracking form'
63                    })}
64                />
65                <ModalBody pb={8} bg="white" marginTop={4}>
66                    <Heading as="h3" fontSize={25} width="100%" marginBottom={5}>
67                        <FormattedMessage
68                            defaultMessage="Your Privacy Matters to Us"
69                            id="dnt_notification.title"
70                        />
71                    </Heading>
72                    <Flex direction="column">
73                        <Text>
74                            <FormattedMessage
75                                defaultMessage="We collect data to improve your experience, deliver personalized content or ads, and better understand how our site is used. By selecting 'Accept,' you agree to our use of tracking technologies. "
76                                id="dnt_notification.description"
77                            />
78                        </Text>
79                        <Stack direction="column" spacing={4} mt={4} align="flex-end">
80                        <>
81                            <Button
82                                onClick={() => {
83                                    updateDNT(true)
84                                    onClose()
85                                }}
86                                width="100%"
87                            >
88                                <FormattedMessage defaultMessage="Decline" id="dnt_notification.button.decline" />
89                            </Button>
90                            <Button
91                                onClick={() => {
92                                    updateDNT(false)
93                                    onClose()
94                                }}
95                                width="100%"
96                            >
97                                <FormattedMessage defaultMessage="Accept" id="dnt_notification.button.accept" />
98                            </Button>
99                        </>
100                        </Stack>
101                    </Flex>
102                </ModalBody>
103            </ModalContent>
104        </Modal>
105    )
106}
107
108DntNotification.propTypes = {
109    isOpen: PropTypes.bool.isRequired,
110    onOpen: PropTypes.func.isRequired,
111    onClose: PropTypes.func.isRequired
112}
113
114/**
115 *
116 * @returns {Object} - Object props to be passed into the DntNotification component
117 */
118export const useDntNotification = () => {
119    const {isOpen, onOpen, onClose} = useDisclosure()
120
121    return {
122        isOpen,
123        onOpen,
124        onClose
125    }
126}
  • Se você substituiu o app/components/_app/index.jsx arquivo em seu projeto PWA Kit, utilize o useDntNotification gancho para exibir seu banner de consentimento de rastreamento personalizado.
1import {
2    DntNotification,
3    useDntNotification
4} from '{overridesDir}/app/hooks/use-dnt-notification'
5
6const App = (props) => {
7   ...
8   const dntNotification = useDntNotification()
9   ...
10   
11   return (
12        ...
13        // Put the consent tracking banner in your chosen location in your code by adding the dntNotification component.
14        <DntNotification {...dntNotification} />
15        ...
16   )
17}

Suprimir rastreamento com base no estado DNT 

Opcionalmente, você pode adicionar código em seu projeto PWA Kit para acionar ou impedir ações com base na preferência de rastreamento do comprador ou no estado DNT padrão.

Use effectiveDnt para acionar ou impedir ações como chamadas de API. Por exemplo, chamadas de API para acessar o Google Analytics. Consulte Não controlar valores.

Neste exemplo, usamos effectiveDnt para acionar uma chamada de API do Analytics com o objetivo de coletar dados com base nas interações de um comprador com um site. Os dados podem fornecer insights sobre fatores como comportamento do comprador, tráfego do site ou desempenho de vendas.

1import {
2    useDNT
3} from '@salesforce/commerce-sdk-react'
4function reportClickTracking() {
5  const {effectiveDnt} = useDNT()
6  if (effectiveDnt) {
7    return
8  }
9  return fetch('https://tracking.example.com/collect')
10}

Considerações 

  • Se um comprador optar por não ter rastreamento (o estado DNT está definido como true) ou o estado DNT não estiver definido:

    • Einstein eventos são suprimidos. Isso significa que a atividade de um comprador em seu site não está incluída nos Painéis de relatórios&.
    • As métricas do Active Data serão coletadas se você tiver habilitado o recurso conforme descrito em Active Data. No entanto, todos os dados do comprador são anonimizados.
  • PWA Kit substitui qualquer configuração de rastreamento padrão definida em preferências de privacidade no Business Manager. Seu site PWA Kit aplica uma destas configurações:

    • PWA Kit: A configuração de rastreamento padrão ou personalizada descrita neste guia.
    • Shopper Login and API Access Service(SLAS): Se você personalizou o banner de consentimento de rastreamento usando SLAS, seu site aplicará a configuração de rastreamento descrita em Gerenciar preferências de rastreamento do comprador.

Solucionar problemas de consentimento de rastreamento 

Esta seção fornece uma solução sugerida para um erro comum que você pode encontrar ao usar o banner de consentimento de rastreamento.

O banner não aparece ou o comportamento é inesperado 

Causa: Problemas de CSS ou JavaScript podem dificultar a funcionalidade ou fazer com que o banner seja exibido incorretamente ou não seja exibido em determinados dispositivos ou navegadores.

Solução sugerida: Teste o banner em vários navegadores e dispositivos para garantir uma funcionalidade consistente. Preste especial atenção aos navegadores com políticas de cookies mais rigorosas (por exemplo, a Prevenção de Rastreamento Inteligente do Safari). Teste diferentes tamanhos de tela e resoluções para garantir que o banner seja responsivo e fácil de usar. Confirme se o banner não interfere em nenhuma funcionalidade do site ou nas interações do comprador.

Consulte também