---
title: Delega della Persistenza del Consenso
slug: it-pubtech-cmp/delega-della-persistenza-del-consenso
docTags: 
createdAt: 2025-10-23T13:50:19.218Z
---

Questa funzionalità permette all'editore di prendere in carico la gestione della persistenza delle stringhe di consenso. Quando `delegateConsentPersist` è abilitato (configurazione presente nel configuratore), la CMP non salverà direttamente i cookie o i dati nel `localStorage`, ma fornirà all'editore tutte le informazioni necessarie per farlo.

## Come Abilitare la Funzionalità

È possibile abilitare questa opzione tramite il configuratore della CMP oppure sovrascrivendo la configurazione a livello di pagina.

Per abilitarla solo per una pagina specifica, è sufficiente inserire il seguente codice nell'elemento `<head>` della pagina, prima di qualsiasi altro script:

```html
<script>
    window.__pub_tech_override_cmp_config = {
        delegateConsentPersist: true
    };
</script>
```

## Come Salvare le Stringhe di Consenso

Una volta abilitata la funzionalità, è necessario "ascoltare" l'evento di consenso per ricevere le stringhe da persistere. Questo può essere fatto utilizzando la coda di eventi `__pubtech_queue_on_consent`.

Ecco un esempio di come implementare la logica di salvataggio:

```javascript
window.__pubtech_queue_on_consent = window.__pubtech_queue_on_consent || []; 

function executeOnConsent(cmpType, { consentBundle, consentBaseApi, integrations }) {
    // L'oggetto 'integrations' contiene i metadati necessari.
    console.log("L'oggetto da usare è ", integrations);

    // 'integrations.metadata.consentStrings' contiene l'elenco dei consensi
    // che la CMP si aspetta di trovare al ricaricamento della pagina.
    if (integrations.metadata.consentStrings) {
        console.log("Stringhe di consenso da persistere:", integrations.metadata.consentStrings);

        integrations.metadata.consentStrings.forEach(consentString => {
            if (consentString.type === 'cookie') {
                // Esempio di come salvare un cookie
                // NOTA: È consigliabile usare una funzione robusta per la gestione dei cookie,
                // che gestisca correttamente attributi come 'expires', 'path', 'domain'.
                document.cookie = `${consentString.key}=${consentString.value}; max-age=31536000; path=/`;
                console.log(`Cookie "${consentString.key}" salvato.`);
            } else if (consentString.type === 'localStorage') {
                localStorage.setItem(consentString.key, consentString.value);
                console.log(`Valore "${consentString.key}" salvato in localStorage.`);
            }
        });
    }

    // Questo flag indica se il consenso è stato generato da un'interazione diretta dell'utente (es. click).
    console.log("Il consenso è stato generato da un click dell'utente? ", integrations.metadata.consentUpdate ? "Sì" : "No");
}

__pubtech_queue_on_consent.push(executeOnConsent);
```

### Dettagli delle Stringhe di Consenso

L'array `integrations.metadata.consentStrings` conterrà oggetti con la seguente struttura:

- `key`: Il nome della chiave da utilizzare per la persistenza (es. il nome del cookie).
- `type`: Il tipo di storage da utilizzare (`cookie` o `localStorage`).
- `value`: La stringa di consenso da salvare.

È fondamentale che l'editore garantisca la corretta persistenza di queste stringhe affinché la CMP possa funzionare correttamente nelle visite successive dell'utente.
