Vedere Protect Privacy with a Tracking Consent Banner (Protezione della privacy con un banner di consenso al tracciamento).

Preserva la fiducia degli acquirenti con un banner di consenso al monitoraggio sul sito del kit Progressive Web App (PWA). Con il banner, gli acquirenti possono attivare o disattivare il monitoraggio delle attività predefinito incluso in PWA Kit.

Questa guida spiega le opzioni di implementazione e personalizzazione predefinite per il banner di consenso al monitoraggio.

La funzionalità descritta in questa guida non è supportata in uno storefront ibrido.

Note

Prerequisiti 

Per configurare e utilizzare il banner di consenso al monitoraggio, creare il sito con Retail React App versione 6.0 o successiva.

Implementazione predefinita del consenso al monitoraggio 

Interfaccia utente banner 

Il banner di consenso al monitoraggio è disponibile in template-retail-react-app/app/components/_app/index.jsx, pertanto puoi visualizzarlo su qualsiasi pagina del tuo sito. Il banner è definito in template-retail-react-app/app/hooks/use-dnt-notification.js.

Per impostazione predefinita, il banner è simile a questo esempio.

Tracciamento del processo di consenso

Non tenere traccia dei valori 

Questi sono i due valori che definiscono l’impostazione dello stato DNT:

  • effectiveDnt: È impostato sullo stato DNT predefinito configurato dall’utente o è impostato su false se non è stato configurato uno stato DNT predefinito. Questo valore è impostato su false se l’acquirente ha acconsentito al monitoraggio o true se ha rinunciato al monitoraggio.
  • selectedDnt: Non è definito finché l’acquirente non interagisce con il banner di consenso. Questo valore è impostato su false se l’acquirente ha acconsentito al monitoraggio o true se ha rinunciato al monitoraggio.

Flusso di lavoro banner e DNT 

Se un acquirente chiude il banner o non effettua una selezione nel banner, lo stato DNT predefinito è impostato su false (monitora attività). Per modificare questo comportamento, vedere Configurare lo stato DNT predefinito. Il banner viene nuovamente visualizzato la prossima volta che l’acquirente visita il sito dopo aver eseguito una delle seguenti azioni:

  • Chiudi il browser
  • Aggiornare i dati del sito
  • Cancella i loro cookie

Questo diagramma riepiloga il comportamento del banner di consenso al monitoraggio e il modo in cui viene impostato lo stato DNT degli acquirenti quando visitano il sito.

Salvo diversa indicazione, tutti i passaggi del diagramma si applicano sia agli acquirenti ospiti che agli acquirenti noti.

Tracciamento del processo di consenso

Configurazione dello stato DNT predefinito 

Facoltativamente, è possibile specificare uno stato DNT predefinito che si applica se un acquirente chiude il banner di consenso al monitoraggio o non effettua una selezione nel banner. A tale scopo, impostare la defaultDNT proprietà in questo file nel progetto: {overridesDir}/app/components/_app-config/index.jsx.

  • defaultDnt={true}: Indica che l’attività dell’acquirente non viene monitorata.
  • defaultDnt={false}: Indica che l’attività dell’acquirente viene monitorata.

In questo esempio, defaultDnt è impostato su 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...

Personalizzazione del banner di consenso al monitoraggio 

Facoltativamente, è possibile personalizzare il banner di consenso al monitoraggio modificandone alcune parti, ad esempio l’aspetto o il testo. Per fare ciò, hai queste due scelte.

  1. Utilizzare API e hook come descritto in Gestione delle preferenze di monitoraggio degli acquirenti.

o

  1. Eseguire l’override del file di intestazione nel modello di base completando questi passaggi.

    • Se non l’hai già fatto, nel tuo progetto PWA Kit, crea una cartella chiamata hooks in {overridesDir}/app.
    • Creare un file richiamato use-dnt-notification.js nella hooks cartella.
    • Copiare e incollare questo codice in use-dnt-notification.js. In questo esempio, viene eseguito selectedDnt il rendering di un banner personalizzato controllato dal DntNotification componente. Inoltre, utilizziamo la funzione per applicare la updateDnt preferenza di monitoraggio di un acquirente come valore booleano. Vedere Valori Do Not Track.
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 hai eseguito l’override del app/components/_app/index.jsx file nel tuo progetto PWA Kit, utilizza l’hook useDntNotification per visualizzare il banner di consenso al tracciamento personalizzato.
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}

Sopprimere il tracciamento in base allo stato DNT 

Facoltativamente, è possibile aggiungere codice nel progetto PWA Kit per attivare o impedire azioni in base alle preferenze di monitoraggio di un acquirente o allo stato DNT predefinito.

Da utilizzare effectiveDnt per attivare o impedire azioni come le chiamate API. Ad esempio, le chiamate API per accedere a Google Analytics. Vedere Valori Do Not Track.

In questo esempio, viene utilizzata l’operazione effectiveDnt per attivare una chiamata API di analisi con l’obiettivo di raccogliere dati in base alle interazioni di un acquirente con un sito. I dati possono fornire informazioni su fattori quali il comportamento degli acquirenti, il traffico sul sito web o le prestazioni di vendita.

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}

Considerazioni 

  • Se un acquirente rinuncia al monitoraggio (lo stato DNT è impostato su true) o lo stato DNT non è impostato:

    • Gli eventi di Einstein vengono soppressi. Ciò significa che l’attività di un acquirente sul sito non è inclusa nelle dashboard dei report&.
    • Le metriche di Active Data vengono raccolte se la funzionalità è stata abilitata come descritto in Active Data. Tuttavia, tutti i dati degli acquirenti sono resi anonimi.
  • PWA Kit sostituisce qualsiasi configurazione di monitoraggio predefinita impostata nelle preferenze sulla privacy in Business Manager. Il sito PWA Kit applica una delle seguenti configurazioni:

    • PWA Kit: La configurazione di monitoraggio predefinita o personalizzata descritta in questa guida.
    • Shopper Login and API Access Service (SLAS): Se il banner di consenso al monitoraggio è stato personalizzato utilizzando lo SLAS, il sito applica la configurazione di monitoraggio descritta in Gestione delle preferenze di monitoraggio degli acquirenti.

Risoluzione dei problemi relativi al consenso al monitoraggio 

In questa sezione viene suggerita una soluzione per un errore comune che può verificarsi durante l’utilizzo del banner di consenso al monitoraggio.

Il banner non viene visualizzato o il comportamento è imprevisto 

Causa: I problemi relativi a CSS o JavaScript possono ostacolare la funzionalità o causare la visualizzazione errata o assente del banner su determinati dispositivi o browser.

Soluzione suggerita: Testare il banner in più browser e dispositivi per garantire una funzionalità coerente. Presta particolare attenzione ai browser con politiche sui cookie più rigorose (ad esempio, Intelligent Tracking Prevention di Safari). Prova diverse dimensioni e risoluzioni dello schermo per assicurarti che il banner sia reattivo e facile da usare. Verificare che il banner non interferisca con le funzionalità del sito o con le interazioni con gli acquirenti.

Vedere anche