Siehe Protect Privacy with a Tracking Consent Banner (Datenschutz mit einem Tracking-Einwilligungsbanner).

Bewahren Sie das Vertrauen der Kunden mit einem Tracking-Einwilligungsbanner auf Ihrer Progressive Web App (PWA) Kit-Website. Mit dem Banner können sich Ihre Käufer für die standardmäßige Aktivitätsverfolgung entscheiden, die im PWA Kit enthalten ist.

In diesem Leitfaden werden die standardmäßigen Implementierungs- und Anpassungsoptionen für das Banner für die Nachverfolgungseinwilligung erläutert.

Die in diesem Leitfaden beschriebene Funktionalität wird in einer Hybrid-Storefront nicht unterstützt.

Note

Voraussetzungen 

Um das Tracking-Einwilligungsbanner zu konfigurieren und zu verwenden, erstellen Sie Ihre Website mit der Retail React App Version 6.0 oder höher.

Implementierung der standardmäßigen Tracking-Einwilligung 

Banner-Benutzeroberfläche 

Das Banner für die Nachverfolgungseinwilligung ist in template-retail-react-app/app/components/_app/index.jsx verfügbar, sodass Sie es auf jeder Seite Ihrer Website anzeigen können. Das Banner wird in template-retail-react-app/app/hooks/use-dnt-notification.jsdefiniert.

Standardmäßig sieht das Banner ähnlich wie in diesem Beispiel aus.

Tracking-Einwilligungsprozess

Werte nicht nachverfolgen 

Dies sind die beiden Werte, die definieren, auf was der DNT-Status festgelegt ist:

  • effectiveDnt: Ist auf den DNT-Standardstatus festgelegt, den Sie konfiguriert haben, oder auf den Sie festgelegt sind, wenn false Sie keinen DNT-Standardstatus konfiguriert haben. Dieser Wert wird so festgelegt, ob false der Käufer dem Tracking zugestimmt hat oder true ob er sich gegen das Tracking entschieden hat.
  • selectedDnt: Ist nicht definiert, bis der Käufer mit dem Einwilligungsbanner interagiert. Dieser Wert wird so festgelegt, ob false der Käufer dem Tracking zugestimmt hat oder true ob er sich gegen das Tracking entschieden hat.

Banner und DNT-Workflow 

Wenn ein Käufer das Banner schließt oder keine Auswahl im Banner trifft, wird der Standard-DNT-Status auf false (Aktivität verfolgen) gesetzt. Informationen zum Ändern dieses Verhaltens finden Sie unter Konfigurieren des DNT-Standardstatus. Das Banner wird wieder angezeigt, wenn der Käufer Ihre Website das nächste Mal besucht, nachdem er eine der folgenden Aktionen ausgeführt hat:

  • Schließen Sie den Browser
  • Aktualisieren von Websitedaten
  • Löschen Sie ihre Cookies

Dieses Diagramm fasst das Verhalten des Tracking-Einwilligungsbanners zusammen und wie der DNT-Status der Käufer festgelegt wird, wenn sie Ihre Website besuchen.

Sofern nicht anders angegeben, gelten alle Schritte im Diagramm sowohl für Gastkäufer als auch für bekannte Käufer.

Tracking-Einwilligungsprozess

Konfigurieren des DNT-Standardstatus 

Optional können Sie einen DNT-Standardstatus angeben, der gilt, wenn ein Käufer das Banner für die Tracking-Einwilligung schließt oder keine Auswahl im Banner trifft. Legen Sie dazu die defaultDNT Eigenschaft in dieser Datei in Ihrem Projekt fest: {overridesDir}/app/components/_app-config/index.jsx.

  • defaultDnt={true}: Gibt an, dass die Käuferaktivität nicht verfolgt wird.
  • defaultDnt={false}: Gibt an, dass die Käuferaktivität nachverfolgt wird.

In diesem Beispiel defaultDnt ist auf falsefestgelegt.

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...

Anpassen des Tracking-Einwilligungsbanners 

Optional können Sie das Banner für die Nachverfolgungseinwilligung anpassen, indem Sie Teile davon ändern, z. B. das Erscheinungsbild oder den Text. Um dies zu tun, haben Sie diese beiden Möglichkeiten.

  1. Verwenden Sie APIs und Hooks, wie unter Verwalten der Einstellungen für das Käufer-Tracking beschrieben.

oder

  1. Überschreiben Sie die Bannerdatei in der Basisvorlage, indem Sie die folgenden Schritte ausführen.

    • Wenn Sie dies noch nicht getan haben, erstellen Sie in Ihrem PWA Kit-Projekt einen Ordner mit dem Namen hooks in {overridesDir}/app.
    • Erstellen Sie eine Datei, die in dem hooks Ordner aufgerufen wird use-dnt-notification.js.
    • Kopieren Sie diesen Code, und fügen Sie ihn in use-dnt-notification.jsein. In diesem Beispiel verwenden selectedDnt wir es, um ein benutzerdefiniertes Banner zu rendern, das von der DntNotification Komponente gesteuert wird. Außerdem verwenden wir die updateDnt Funktion, um die Tracking-Präferenz eines Käufers als booleschen Wert anzuwenden. Weitere Informationen finden Sie unter Werte nicht nachverfolgen.
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}
  • Wenn Sie die app/components/_app/index.jsx Datei in Ihrem PWA Kit-Projekt überschrieben haben, verwenden Sie den useDntNotification Hook, um Ihr benutzerdefiniertes Banner für die Nachverfolgungseinwilligung anzuzeigen.
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}

Unterdrücken der Nachverfolgung basierend auf dem DNT-Status 

Optional können Sie Ihrem PWA Kit-Projekt Code hinzufügen, um Aktionen basierend auf der Nachverfolgungspräferenz eines Käufers oder Ihrem DNT-Standardstatus auszulösen oder zu verhindern.

Verwenden Sie diese Option effectiveDnt, um Aktionen wie API-Aufrufe auszulösen oder zu verhindern. Zum Beispiel API-Aufrufe für den Zugriff auf Google Analytics. Weitere Informationen finden Sie unter Werte nicht nachverfolgen.

In diesem Beispiel verwenden effectiveDnt wir, um einen Analyse-API-Aufruf auszulösen, mit dem Ziel, Daten basierend auf den Interaktionen eines Käufers mit einer Website zu sammeln. Die Daten können Erkenntnisse über Faktoren wie Käuferverhalten, Website-Traffic oder Verkaufsleistung liefern.

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}

Erwägungen 

  • Wenn ein Käufer das Tracking deaktiviert (der DNT-Status ist auf true) oder der DNT-Status nicht festgelegt:

    • Einstein-Ereignisse werden unterdrückt. Das bedeutet, dass die Aktivitäten eines Käufers auf Ihrer Website nicht in den Berichts-Dashboards &enthalten sind.
    • Metriken für aktive Daten werden erfasst, wenn Sie die Funktion aktiviert haben, wie unter Aktive Daten beschrieben. Alle Käuferdaten sind jedoch anonymisiert.
  • PWA Kit überschreibt alle standardmäßigen Tracking-Konfigurationen, die du in den Datenschutzeinstellungen im Business Manager festgelegt hast. Ihre PWA Kit-Website wendet eine der folgenden Konfigurationen an:

    • PWA Kit Die standardmäßige oder benutzerdefinierte Nachverfolgungskonfiguration, die in diesem Handbuch beschrieben wird.
    • Käufer-Login und API-Zugriffsdienst (SLAS): Wenn Sie das Banner für die Tracking-Einwilligung mithilfe von SLAS angepasst haben, wendet Ihre Website die Tracking-Konfiguration an, die unter Verwalten der Tracking-Einstellungen für Käufer beschrieben ist.

Problembehandlung bei der Nachverfolgungseinwilligung 

In diesem Abschnitt finden Sie einen Lösungsvorschlag für einen häufigen Fehler, der bei der Verwendung des Banners für die Nachverfolgungseinwilligung auftreten kann.

Das Banner wird nicht angezeigt oder das Verhalten ist unerwartet 

Ursache: CSS- oder JavaScript-Probleme können die Funktionalität beeinträchtigen oder dazu führen, dass das Banner auf bestimmten Geräten oder Browsern falsch oder gar nicht angezeigt wird.

Vorgeschlagene Lösung: Testen Sie das Banner in mehreren Browsern und Geräten, um eine konsistente Funktionalität zu gewährleisten. Achten Sie besonders auf Browser mit strengeren Cookie-Richtlinien (z. B. Intelligent Tracking Prevention von Safari). Testen Sie verschiedene Bildschirmgrößen und Auflösungen, um sicherzustellen, dass das Banner reaktionsschnell und benutzerfreundlich ist. Vergewissern Sie sich, dass das Banner die Funktionalität der Website oder die Interaktionen der Käufer nicht beeinträchtigt.

Siehe ebenfalls