---
title: Integrazione sito web standard
slug: it-pubtech-cmp/integrazione-sito-web-standard
docTags: 
createdAt: 2022-04-07T08:56:13.000Z
---

All’interno di ciascun blocco sito web nella sezione **PubConsent**, troverai il pulsante **Impostazioni e Integrazione**.

### Cosa troverai all’interno

- **Panoramica delle mappature** – Rivedi le mappature regionali o globali che hai configurato.
- **Codice di integrazione** – Copia lo snippet di codice pronto all’uso per aggiungere PubConsent CMP al tuo sito in pochi clic.

### Come funziona

Con una **singola integrazione**, tutte le configurazioni effettuate nella tua dashboard vengono applicate automaticamente dal sistema. In questo modo, il tuo sito web rifletterà sempre esattamente le scelte di consenso e di mappatura che hai impostato.

Per l'integrazione assicurati si seguire le istruzioni e di non modificare il codice di integrazione poichè il codice di integrazione fornito nel pannello garantisce un supporto cross-browser della CMP e migliorie sulle prestazioni specifiche per il browser dell'utente.

:::hint{type="danger"}
***Fate attenzione ad evitare duplicati del tag script della CMP.***
:::

Per offrire agli utenti una esperienza migliore vi consigliamo di inserire il tag script della CMP all’interno del tag ed il più in cima possibile.&#x20;

:::hint{type="info"}
Segui le nostre guide per migliorare l'integrazione e l'esperienza dei tuoi utenti:

- &#x20;[Preconnect e priorità delle risorse](docId:8B5SLOghaY84-5CEYj4tW)&#x20;
:::

Oltre al codice di integrazione del codice JS potete configurare una callback che viene eseguita alla presenza e al cambio di un consenso da parte dell'utente.

Un'esempio qui sotto:

```html
...
<head>
    <!-- il codice di integrazione preso dal configuratore pubconsent è consigliabile metterlo in cima al tag head -->

	<script>
		var __pubtech_queue_on_consent = __pubtech_queue_on_consent || [];
        __pubtech_queue_on_consent.push(function publisherRead(cmpType, data) => {
            
        if (cmpType == 'TCF-V2-GDPR') {
	      console.log("ConsentData", data.consentBundle);
	  
	      console.log("ConsentObject", data.consentBaseApi);
	  
	      console.log("PublisherConsentObject", data.integrations.cookieConsents);
	    }
        });
	</script>
</head>
...
...
```

:::hint{type="info"}
Questa callback verra rimpiazzata per consentire una integrazione più fluida della CMP.
:::

Nella callback "**onConsent**" mostrata nell'esempio avrà in entrata 3 parametri:

- **consentData**: un oggetto che contiene sempre il campo privacyLaw che può essere 'TCF-V2-GDPR' oppure 'GOOGLE-CONSENT-MODE' quando la versione è GDPR contiene anche tcString, acString e pcString mentre quando la version è GOOGLE-CONSENT-MODE contiene delle stringhe e dei dati relativi. Queste stringhe rappresentano lo stato attuale delle scelte compiute dall'utente per ogni privacy law.
- **consentObject**: un oggetto che contiene informazioni aggiuntive sul consenso. Quando la privacy law è TCF-V2-GDPR ci sono informazioni relative al framework IAB mentre quando è GOOGLE-CONSENT-MODE ci sono le informazioni relative alla sola Google Consent Mode.
- **publisherConsentObject**: un oggetto che contiene le informazioni delle scelte fatte dall'utente sui cookie (informazioni che non appartengono al framework dello IAB). *Attualmente disponibile solo quando si applica la privacy law GDPR all'utente.*

## Esempio con la CMP TCF-V2-GDPR

La maggior parte dei publisher utilizza il **consentObject** per verificare la possibilità di erogare la pubblicità. Vi mostriamo qui sotto un esempio di una configurazione con una logica specifica per controllare che alcuni scopi dello IAB siano stati accettati dall'utente.

```javascript
__pubtech_queue_on_consent.push(function onConsent(cmpType, data) {
    const tcfData = data.consentBaseApi;
    const publisherConsentObject = data.integrations.cookieConsents;
    if (cmpType == 'TCF-V2-GDPR') {
       let purposeRequired;
       const purposeIdRequired = [1,2,3,4,5,6,7,8,9,10,11];
       purposeIdRequired.forEach(function start(id) {
           purposeRequired = (tcfData.purposeConsents.has(id) === true && purposeRequired !== false) ? true : false;
       })

       if (purposeRequired) {
          console.log('Cookie accepted');
       } else {
          console.log('Cookie refused');
       }

       console.log(publisherConsentObject.featureCookiesChoice); //Return true if is enabled
       console.log(publisherConsentObject.measurementCookiesChoice); //Return true if is enabled
       console.log(publisherConsentObject.userExperienceCookiesChoice); //Return true if is enabled
   }
  });
```

Se **purposeRequired** è **true** allora l'utente ha accettato tutti e **11** i **purpose** con gli **id** specificati. Inoltre, come mostrato con il parametro **publisherConsentObject&#x20;**&#xE8; possibile controllare gli altri tipi di cookie quelli non relativi all'advertisin&#x67;**.&#x20;**&#xA;**La lista completa dei purpose è disponibile&#x20;**[qui](https://iabeurope.eu/iab-europe-transparency-consent-framework-policies/#:~\:text=Categories%20Of%20Data-,A.%20Purposes,-Purpose%201)**.**

:::hint{type="danger"}
***Fate attenzione ad evitare duplicati del tag script della CMP.***
:::

:::hint{type="success"}
I cookie tecnici sono sempre abilitati per definizione, quindi non avete bisogno di controllare nessun flag.
:::

Una volta completata l'integrazione assicurati di bloccare i codici di terze parti per l'utilizzo dei cookie che hai configurato seguendo la [guida](docId:7wT7nB_1ci3dm8hz6mi3Y).

## Integrazione Google Consent Mode V2

L'integrazione del Google Consent Mode V2 può essere eseguito attraverso una delle due integrazioni disponibili:

- [Integrazione GTM (Consent Mode)](docId\:jX_zEsxXf9VlVxjZEuvIR)
- [Integrazione Gtag (Consent Mode)](docId\:sDkASRU4DHF1Y6NV68JS8)

