Consulte Proteger la privacidad con un Banner de consentimiento de seguimiento.

Conserve la confianza del comprador con un banner de consentimiento de seguimiento en su sitio del kit de Progressive Web App (PWA). Con el banner, los compradores pueden activar o desactivar el seguimiento de actividad predeterminado incluido en PWA Kit.

En esta guía se explican las opciones predeterminadas de implementación y personalización para el banner de consentimiento de seguimiento.

La funcionalidad descrita en esta guía no es compatible con un storefront híbrido.

Note

Requisitos previos 

Para configurar y usar el banner de consentimiento de seguimiento, cree su sitio con Retail React App versión 6.0 o posterior.

Implementación predeterminada del consentimiento de seguimiento 

Interfaz de usuario del banner 

El banner de consentimiento de seguimiento está disponible en template-retail-react-app/app/components/_app/index.jsx, por lo que puede mostrarlo en cualquier página de su sitio. El banner se define en template-retail-react-app/app/hooks/use-dnt-notification.jsformato .

De forma predeterminada, el banner tiene un aspecto similar a este ejemplo.

Proceso de consentimiento de seguimiento

No realizar un seguimiento de los valores 

Estos son los dos valores que definen en qué se establece el estado DNT:

  • effectiveDnt: Se establece en el estado DNT predeterminado que configuró o se establece si false no configuró un estado DNT predeterminado. Este valor se establece en false si el comprador dio su consentimiento para el seguimiento o true si el comprador optó por no participar en el seguimiento.
  • selectedDnt: No está definido hasta que el comprador interactúa con el banner de consentimiento. Este valor se establece en false si el comprador dio su consentimiento para el seguimiento o true si el comprador optó por no participar en el seguimiento.

Flujo de trabajo de banner y DNT 

Si un comprador cierra el banner o no realiza una selección en el banner, el estado DNT predeterminado se establece en false (seguimiento de actividad). Para cambiar ese comportamiento, consulte Configurar el estado DNT predeterminado. El banner vuelve a aparecer la próxima vez que el comprador visita su sitio después de realizar cualquiera de estas acciones:

  • Cierre el navegador
  • Actualizar los datos del sitio
  • Borrar sus cookies

Este diagrama resume el comportamiento del banner de consentimiento de seguimiento y cómo se establece el estado DNT de los compradores cuando visitan su sitio.

A menos que se indique lo contrario, todos los pasos del diagrama se aplican tanto a los compradores invitados como a los compradores conocidos.

Proceso de consentimiento de seguimiento

Configurar el estado DNT predeterminado 

Opcionalmente, puede especificar un estado DNT predeterminado que se aplica si un comprador cierra el banner de consentimiento de seguimiento o no realiza una selección en el banner. Para ello, establezca la defaultDNT propiedad de este archivo en el proyecto: {overridesDir}/app/components/_app-config/index.jsx.

  • defaultDnt={true}: Indica que no se realiza un seguimiento de la actividad del comprador.
  • defaultDnt={false}: Indica que se realiza un seguimiento de la actividad del comprador.

En este ejemplo, defaultDnt se establece en 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 el banner de consentimiento de seguimiento 

Opcionalmente, puede personalizar el banner de consentimiento de seguimiento cambiando partes del mismo, como la apariencia o el texto. Para ello, tienes estas dos opciones.

  1. Use API y enlaces como se describe en Administrar preferencias de seguimiento de compradores.

o

  1. Anule el archivo de banner en la plantilla base completando estos pasos.

    • Si aún no lo has hecho, en tu proyecto de PWA Kit, crea una carpeta llamada hooks in {overridesDir}/app.
    • Cree un archivo llamado use-dnt-notification.js en la hooks carpeta.
    • Copie y pegue este código en use-dnt-notification.js. En este ejemplo, lo usamos selectedDnt para renderizar un banner personalizado controlado por el DntNotification componente. Además, usamos la función para aplicar la updateDnt preferencia de seguimiento de un comprador como un valor booleano. Consulte No realizar seguimiento de 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}
  • Si has anulado el archivo en tu app/components/_app/index.jsx proyecto de PWA Kit, utiliza el useDntNotification gancho para mostrar tu banner de consentimiento de seguimiento 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 el seguimiento en función del estado de DNT 

Opcionalmente, puede agregar código en su proyecto de PWA Kit para activar o impedir acciones basadas en la preferencia de seguimiento de un comprador o su estado DNT predeterminado.

Utilícelo effectiveDnt para activar o impedir acciones como llamadas a API. Por ejemplo, llamadas a la API para acceder a Google Analytics. Consulte No realizar seguimiento de valores.

En este ejemplo, lo usamos effectiveDnt para activar una llamada a la API de Analytics con el objetivo de recopilar datos basados en las interacciones de un comprador con un sitio. Los datos pueden proporcionar información sobre factores como el comportamiento del comprador, el tráfico del sitio web o el rendimiento de las ventas.

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}

Consideraciones 

  • Si un comprador opta por no participar en el seguimiento (el estado DNT está establecido en true) o el estado DNT no está establecido:

    • Los eventos de Einstein se suprimen. Esto significa que la actividad de un comprador en su sitio no se incluye en los paneles de informes&.
    • Las métricas de Active Data se recopilan si habilitó la característica como se describe en Active Data. Sin embargo, todos los datos de los compradores son anónimos.
  • PWA Kit anula cualquier configuración de seguimiento predeterminada que establezca en las preferencias de privacidad de Business Manager. El sitio de PWA Kit aplica cualquiera de estas configuraciones:

    • PWA Kit: La configuración de seguimiento predeterminada o personalizada que se describe en esta guía.
    • Shopper Login and API Access Service (SLAS): Si personalizó el banner de consentimiento de seguimiento mediante SLAS, su sitio aplica la configuración de seguimiento descrita en Gestionar preferencias de seguimiento del comprador.

Solución de problemas de consentimiento de seguimiento 

En esta sección se proporciona una solución sugerida para un error común que puede encontrar al usar el banner de consentimiento de seguimiento.

El banner no aparece o el comportamiento es inesperado 

Causa: Los problemas de CSS o JavaScript pueden obstaculizar la funcionalidad o hacer que el banner se muestre incorrectamente o no se muestre en absoluto en ciertos dispositivos o navegadores.

Solución sugerida: Pruebe el banner en varios navegadores y dispositivos para garantizar una funcionalidad coherente. Preste especial atención a los navegadores con políticas de cookies más estrictas (por ejemplo, la prevención de seguimiento inteligente de Safari). Pruebe diferentes tamaños de pantalla y resoluciones para asegurarse de que el banner sea receptivo y fácil de usar. Confirme que el banner no interfiera con ninguna funcionalidad del sitio ni con las interacciones de los compradores.

Consulte también