DB SEO Manager
Open Source — GPL v2 DB SEO Manager SEO completa per WordPress, costruita prima di tutto per il GDPR. Niente…
Hub privacy unificato per l’ecosistema plugin DB. Genera la Privacy Policy che riflette davvero quello che il sito fa, raccoglie i trattamenti dichiarati dai plugin attivi, traccia richieste DSAR e consensi (cookie e form), archivia ogni versione del documento. Un solo posto per la conformità GDPR completa di un sito WordPress.
Quando un sito WordPress usa più plugin che trattano dati personali — banner cookie, moduli di contatto, analytics, registri consensi — la normativa privacy chiede un’unica informativa che descriva tutti questi trattamenti insieme (artt. 13-14 GDPR), non un documento per plugin. Costruirla a mano significa stare dietro a ogni modifica di configurazione: cambi un’impostazione e l’informativa si disallinea.
DB Privacy Hub fa il contrario: raccoglie automaticamente le dichiarazioni dei plugin attivi tramite un filter pubblico, vi aggiunge i dati del titolare, individua i destinatari, importa le sezioni cookie, e produce un documento sempre coerente con quello che il sito sta effettivamente facendo. Pubblicarlo come pagina WordPress è un click.
Ogni plugin DB dichiara i propri trattamenti via un filter pubblico. L’Hub raccoglie, non duplica logica.
I dati restano nel database WordPress locale. Nessun servizio cloud, nessuna telemetria, nessun phone-home.
Storico DSAR, archivio versioni Privacy Policy, dichiarazione esplicita dei responsabili. Strumenti per dimostrare conformità (art. 5.2 GDPR).
Cambi un’impostazione del Cookie Manager o del Form Builder, rigenera la Privacy Policy, il documento riflette la nuova realtà.
Cinque filter pubblici documentati: dbph_processing_register, dbph_user_data_exporters, dbph_user_data_erasers, dbph_consents_register, dbph_policy_destinatari. Più API pubblica DBPH_Policy_Archive::get_current_version_id().
Funziona anche senza altri plugin DB, con detection automatica dei destinatari più comuni (reCAPTCHA, SMTP, webhook).
Documento conforme artt. 13-14 GDPR in italiano: titolare, finalità, trattamenti specifici, cookie, destinatari, diritti, conservazione, reclamo. Pubblicabile come pagina WordPress in un click.
Toggle opzionale (default ON) che inserisce nella Privacy Policy un blocco operativo passo passo: come esercitare i diritti, modalità di richiesta, tempi di risposta del titolare (1 mese ex art. 12.3), reclamo al Garante.
Pagina admin che mostra tutti i trattamenti dichiarati dai plugin DB attivi tramite il filter dbph_processing_register. Vista unica per audit interni e per dimostrare il registro al Garante.
Tabella custom che registra ogni richiesta di accesso, rettifica, cancellazione, limitazione, opposizione, portabilità o no decisioni automatizzate. Stati operativi: pending, confirmed, in lavorazione, completata, scaduta, rifiutata.
Form per registrare richieste arrivate via email, PEC, raccomandata. Coprono tutti gli 8 diritti GDPR, anche quelli non gestiti dal flusso WordPress nativo (rettifica, limitazione, opposizione, profilazione, revoca consenso).
Calcolo automatico della scadenza di evasione (30 giorni dalla richiesta). Codice colore: verde > 10 giorni, arancione 1-10 giorni, rosso scaduta. Card riepilogativa con totali aggregati.
Vista unificata di tutti i consensi raccolti dai plugin DB attivi: cookie banner (Cookie Manager), checkbox form (Form Builder), futuri eventi. Ogni riga è linkata alla versione esatta della Privacy Policy in vigore al momento.
Snapshot automatico ad ogni pubblicazione/rigenerazione. Diff side-by-side rispetto alla versione precedente. ID univoco di versione (v#7) accessibile pubblicamente via API per linkare i consensi al documento esatto che l’utente ha letto.
Form per dichiarare i soggetti con cui hai stipulato un Data Processing Agreement: hosting, SMTP, CDN. Le dichiarazioni esplicite hanno priorità sulla detection automatica.
Filter dbph_user_data_exporters e dbph_user_data_erasers permettono ad ogni plugin DB di dichiarare i propri dati personali da includere nelle richieste GDPR.
Dropdown intelligente: crea una nuova pagina WordPress oppure sovrascrivi il contenuto di una esistente preservandone titolo e slug. Backup automatico pre-sovrascrittura nello Storico Policy.
Bottone “Esporta CSV” su Storico DSAR e Registro consensi. BOM UTF-8 per Excel italiano. Rispetta i filtri attivi. Utile per produrre il registro al Garante in caso di ispezione.
Plugin che ancora usano il vecchio filter dbseo_processing_register del SEO Manager 1.2.x continuano a funzionare. Deprecation warning solo in modalità debug.
La generazione del documento è deterministica e tracciabile. Ogni sezione del documento finale ha una fonte chiara nei dati del sistema.
dbph_processing_register → sezione “Trattamenti specifici” (3 trattamenti dal Cookie Manager, eventualmente del Form Builder, ecc.)Quando un’impostazione cambia (es. aggiungi un nuovo trattamento, dichiari un nuovo responsabile, attivi reCAPTCHA su un form), basta cliccare “Pubblica / Aggiorna contenuto” e la Privacy Policy si rigenera coerente.
Tutti i plugin DB compatibili dichiarano i propri trattamenti tramite il filter dbph_processing_register, le proprie callback DSAR tramite dbph_user_data_exporters e dbph_user_data_erasers, e le proprie fonti di consenso tramite dbph_consents_register. Nessuna configurazione manuale richiesta.
DB Cookie Manager 3.2.0+ — dichiara Raccolta consenso, Registro consensi, Scanner cookie. Espone l’API pubblica DBCM_Policy_Generator::get_sections() per importare le sezioni cookie nella Privacy Policy. Ogni consenso cookie viene linkato all’ID della versione Privacy Policy in vigore al momento.
DB Form Builder 2.11.0+ — dichiara i trattamenti dei moduli, abilita la menzione DSAR nella Privacy Policy, salva la prova del consenso (testo letto, timestamp, URL informativa, version ID) per ogni submission. Esposto al Registro consensi unificato.
DB SEO Manager 1.3.0+ — dichiara i trattamenti tecnici SEO (analytics, IndexNow, monitor 404, redirect log) e i meta SEO autoriali via il filter dbph_user_data_exporters.
Ogni “evento privacy” sul sito viene tracciato in modo da soddisfare l’obbligo di accountability dell’art. 5.2 GDPR (il titolare deve essere in grado di dimostrare la conformità). L’architettura collega tutti i pezzi:
v#7, hash SHA-256, timestampwp_dbcm_consent_log con IP-hash, categorie accettate, ua aggregato, linking policy_version=7wp_dbfb_submissions con testo letto, timestamp consenso, URL informativa, linking policy_version=7wp_dbph_dsar_log con stato pending → confirmed → completed, scadenza GDPR calcolatav#8, ID corrente aggiornato. Eventi futuri linkano a v#8, eventi storici restano linkati a v#7
In caso di ispezione del Garante o contestazione di un utente, il titolare può dimostrare in modo documentale: “L’utente Mario Rossi ha cliccato ‘Accetta tutto’ il 15/03/2026 alle 14:32, nel momento in cui era in vigore la versione v#7 della Privacy Policy, di cui possediamo lo snapshot completo con hash SHA-256 verificabile”. Questo livello di tracciabilità non è raggiungibile con i tool privacy commerciali generici, perché producono documenti standard slegati dalla realtà tecnica del sito.
Ogni plugin DB conosce solo i propri trattamenti. Si aggancia al filter e dichiara con un contratto fisso:
add_filter( 'dbph_processing_register', function( $register ) {
$register[] = array(
'id' => 'mioplugin_invio_form',
'label' => __( 'Invio modulo contatti', 'mioplugin' ),
'status' => 'active',
'purpose' => __( 'Gestire le richieste di contatto.', 'mioplugin' ),
'legal_basis' => __( 'Consenso (art. 6.1.a GDPR).', 'mioplugin' ),
'data_collected' => __( 'Nome, email, oggetto, messaggio.', 'mioplugin' ),
'retention' => __( '365 giorni, poi cancellazione automatica.', 'mioplugin' ),
'transfers' => __( 'Nessuno.', 'mioplugin' ),
);
return $register;
} );
Stesso pattern per i diritti di accesso e cancellazione. Ogni plugin dichiara i suoi dati personali, l’Hub li ribalta sui filter core di WordPress:
add_filter( 'dbph_user_data_exporters', function( $exporters ) {
$exporters['mio-plugin'] = array(
'label' => __( 'Mio Plugin', 'mio-plugin' ),
'callback' => 'mio_plugin_export_user_data',
);
return $exporters;
} );
Il policy generator individua automaticamente alcuni destinatari (reCAPTCHA, plugin SMTP, webhook). Plugin terzi possono aggiungere i propri:
add_filter( 'dbph_policy_destinatari', function( $dest ) {
$dest[] = array(
'name' => 'Stripe Inc.',
'description' => __( 'Servizio di pagamento.', 'mio' ),
'country' => __( 'Stati Uniti (extra-UE)', 'mio' ),
);
return $dest;
} );
Ogni plugin che raccoglie consensi (cookie, form, registrazione, ecc.) dichiara la propria fonte. L’Hub aggrega tutto in vista cronologica unificata e propaga ai filtri:
add_filter( 'dbph_consents_register', function( $sources ) {
$sources['mio_plugin_consensi'] = array(
'label' => __( 'Mio Plugin — Consensi', 'mio' ),
'icon' => 'admin-network',
'count' => array( 'Mio_Plugin', 'count_consents' ),
'query' => array( 'Mio_Plugin', 'query_consents' ),
'export' => array( 'Mio_Plugin', 'query_consents' ),
);
return $sources;
} );
Ogni riga ritornata dal callback query deve avere chiavi: id, timestamp, subject, consent_type, consent_text, policy_version, extra.
I plugin DB chiamano questa API al momento di un consenso per linkare la riga di consenso alla versione esatta della Privacy Policy in vigore. È il pilastro del meccanismo di accountability completo:
if ( class_exists( 'DBPH_Policy_Archive' ) &&
method_exists( 'DBPH_Policy_Archive', 'get_current_version_id' ) ) {
$policy_version = (int) DBPH_Policy_Archive::get_current_version_id();
} else {
$policy_version = 0; // Hub non installato
}
// Salva $policy_version insieme al consenso
$wpdb->insert( $consent_log_table, array(
'user_id' => $user_id,
'consent_text' => $text,
'policy_version' => $policy_version,
// ...
) );
Restituisce 0 se nessuna policy è ancora stata pubblicata: i plugin terzi devono trattare questo caso come “policy non disponibile al momento”.
Menu top-level Privacy con icona scudo, posizionato tra Commenti e Aspetto.
| Pagina | Funzione |
|---|---|
| Registro trattamenti | Vista di tutti i trattamenti dichiarati dai plugin DB attivi via filter (art. 30 GDPR) |
| Genera Privacy Policy | Form titolare + toggle “Esercita i tuoi diritti” + selettore pagina destinazione + anteprima documento + azioni di pubblicazione/download |
| Responsabili esterni | Form ripetibile per dichiarare i responsabili ex art. 28 GDPR (DPA) |
| Storico DSAR | Tabella richieste artt. 15-22 con timestamp, scadenza GDPR colorata (verde/arancione/rosso), statistiche aggregate, export CSV |
| Registra DSAR manuale | Form per registrare richieste arrivate via email/PEC/raccomandata fuori dal flusso WordPress (1.2.0) |
| Registro consensi | Vista unificata di tutti i consensi raccolti (cookie + form + altri), filtri data/fonte/identificativo, export CSV (1.3.0) |
| Storico Policy | Snapshot delle versioni del documento con ID univoco (v#N), visualizzazione e diff side-by-side |
| Funzionalità | Prezzo |
|---|---|
| Privacy Policy generator (artt. 13-14 GDPR) | GRATIS |
| Sezione “Esercita i tuoi diritti” nella Privacy Policy | GRATIS |
| Registro trattamenti unificato (art. 30 GDPR) | GRATIS |
| Storico richieste DSAR (artt. 15-22 GDPR) | GRATIS |
| Tracking richieste pending non confermate | GRATIS |
| Promemoria scadenze GDPR (art. 12.3) | GRATIS |
| Registrazione DSAR manuali (email/PEC) | GRATIS |
| Registro consensi unificato (cookie + form + altri) | GRATIS |
| Linking versione Privacy Policy ai consensi (art. 7.1) | GRATIS |
| Dichiarazione responsabili esterni (art. 28) | GRATIS |
| Versionamento Privacy Policy + diff side-by-side | GRATIS |
| Detection automatica destinatari (reCAPTCHA, SMTP, webhook) | GRATIS |
| Importazione sezioni cookie da DB Cookie Manager | GRATIS |
| Selettore pagina destinazione (crea o sovrascrivi) | GRATIS |
| Export CSV (Storico DSAR + Registro consensi) | GRATIS |
| Export documento in formato Markdown | GRATIS |
| Aggiornamenti automatici da GitHub | GRATIS |
| Supporto | Community (GitHub Issues) |
Nessun tier Pro. Nessun limite di utilizzo. Nessun costo nascosto.
wp_page_for_privacy_policy)Gli aggiornamenti successivi arrivano automaticamente tramite il pannello Plugin di WordPress.
db-privacy-hub/ ├── db-privacy-hub.php # bootstrap, hook, costanti ├── README.md ├── uninstall.php # cleanup completo alla disinstallazione ├── assets/ │ └── css/ │ ├── admin.css # stili admin specifici plugin │ └── db-admin-ui.css # design system condiviso suite DB └── inc/ ├── class-admin.php # menu admin, render pagine, handler ├── class-register.php # raccoglitore filter trattamenti ├── class-policy-generator.php # compositore documento Privacy Policy ├── class-responsabili.php # storage responsabili ex art. 28 ├── class-policy-archive.php # archivio versioni + diff + API get_current_version_id() (1.3.0) ├── class-dsar.php # bridge filter DSAR ├── class-dsar-log.php # registro richieste DSAR + DSAR manuali (1.2.0) + scadenze (1.2.0) ├── class-consents-register.php # aggregatore consensi via filter pubblico (1.3.0) ├── class-deprecated-aliases.php # compat filter legacy SEO Manager └── class-updater.php # GitHub auto-updater
Funziona anche senza gli altri plugin DB?
Sì. Senza altri plugin DB il registro è vuoto e la sezione “Trattamenti specifici” della Privacy Policy lo segnala. Ma il documento viene comunque generato con i dati del titolare, i responsabili dichiarati, la detection automatica dei destinatari e il boilerplate normativo. Funziona da solo, ma dà il meglio in ecosistema.
Il plugin sostituisce il consulente privacy?
No. Il plugin produce un documento tecnicamente accurato basato sulla configurazione effettiva del sito, ma la verifica giuridica e l’adattamento al contesto specifico del titolare (settore, finalità di marketing, eventuale DPIA, ecc.) restano una responsabilità professionale.
Sostituisce DB Cookie Manager?
No, è complementare. Cookie Manager gestisce il consenso (banner, blocco preventivo, registro consensi), Privacy Hub raccoglie le sue dichiarazioni e produce la Privacy Policy completa che le include. La cookie policy autonoma (linkata dal banner) resta gestita dal Cookie Manager.
Ho già una pagina “Privacy Policy” esistente. La perdo?
No. Il selettore pagina permette di scegliere se creare una nuova pagina oppure sovrascrivere il contenuto di una esistente. La sovrascrittura preserva titolo e slug, modifica solo il contenuto. Una revisione viene salvata da WordPress (recuperabile da Pagine → Modifica → Revisioni). Inoltre il contenuto pre-sovrascrittura viene archiviato anche nello Storico Policy del Privacy Hub.
Funziona in multisite?
Sì. Ogni sito ha le proprie option, le proprie tabelle DSAR/archivio, la propria pagina privacy. La disinstallazione è multisite-aware.
Cosa succede se installo il Privacy Hub e poi lo disinstallo?
L’uninstall.php rimuove le tabelle wp_dbph_dsar_log e wp_dbph_policy_archive e tutte le option dbph_*. La pagina Privacy Policy che hai pubblicato resta come pagina WordPress normale e non viene cancellata: contiene contenuto che potresti voler conservare.
Compatibilità con il vecchio SEO Manager 1.2.x?
Sì. Il filter legacy dbseo_processing_register continua a funzionare grazie al modulo DBPH_Deprecated_Aliases. Plugin terzi che si agganciavano al vecchio filter vengono rilevati automaticamente. Il filter legacy verrà rimosso in DB Privacy Hub 2.0.0.
Posso aggiungere richieste DSAR arrivate via email?
Sì, dalla 1.2.0. La pagina Privacy → Registra DSAR manuale permette di documentare richieste arrivate fuori dal flusso WordPress (email, PEC, raccomandata, telefono) e tutti gli 8 diritti GDPR. Le richieste manuali sono modificabili ed eliminabili dall’admin, a differenza di quelle WP native che restano read-only.
Cosa succede se non rispondo a una DSAR entro 30 giorni?
L’art. 12.3 GDPR fissa il termine di 1 mese per evadere una richiesta, prorogabile a 3 mesi nei casi complessi. Lo Storico DSAR mostra la scadenza con codice colore: verde (>10 giorni residui), arancione (1-10 giorni), rosso (scaduta). È un promemoria: il sistema non invia notifiche automatiche, sta all’admin controllare la dashboard regolarmente. In caso di mancata risposta, l’utente può proporre reclamo al Garante (art. 77).
Cos’è esattamente la “versione Privacy Policy” linkata ai consensi?
Ogni volta che pubblichi/aggiorni la Privacy Policy, l’Hub crea uno snapshot completo nello Storico Policy con un ID progressivo (v#1, v#2, ecc.) e un hash SHA-256. Quando un utente accetta i cookie o compila un form, il consenso viene salvato con il riferimento all’ID della versione attuale. In caso di contestazione futura puoi dimostrare in modo documentale: “L’utente ha accettato il giorno X leggendo la versione v#7, di cui possediamo lo snapshot completo”. Questo è il livello di accountability richiesto dall’art. 7.1 GDPR.
I miei consensi vecchi (raccolti prima dell’aggiornamento) sono visibili?
Dipende dal plugin. I consensi cookie raccolti con DB Cookie Manager pre-3.2.0 hanno policy_version=0, sono visibili nel Registro consensi unificato ma senza linking alla versione documento. I consensi form raccolti con DB Form Builder pre-2.11.0 NON appaiono nel Registro consensi unificato per scelta di design (mostriamo solo dati che soddisfano effettivamente l’obbligo di prova del consenso). Le submission pre-2.11.0 restano comunque visibili in Form Builder con il badge “Consenso non documentato (versione precedente)”.
Posso esportare il registro al Garante?
Sì. Sia lo Storico DSAR sia il Registro consensi hanno il bottone “Esporta CSV” che genera un file con BOM UTF-8 (apertura corretta in Excel italiano) contenente tutti i dati con timestamp, tipo di evento, identificativi mascherati, hash di verifica, versione policy linkata. Rispetta i filtri attivi (data range, tipo, fonte). È pensato esattamente per produrre il registro al Garante in caso di ispezione.
Registro consensi unificato + version ID Privacy Policy
dbph_consents_register: ogni plugin dichiara la propria fonte di consensi tramite callback count, query, exportDBPH_Policy_Archive::get_current_version_id(): restituisce l’ID dello snapshot Privacy Policy attualmente in vigore. Letta da Cookie Manager e Form Builder al momento di un consenso per linkare al documento esatto che l’utente leggevadbph_policy_current_version aggiornata automaticamente ad ogni snapshot (zero costo per i plugin che la consultano)Suite accountability avanzata
pending all’invio dell’email di conferma; passa a confirmed quando l’utente clicca il link; passa a expired dopo 7 giorni se mai confermatadbph_dsar_cleanup_pending per il cleanup automatico delle pendingwp_dbph_dsar_log 1.0 → 2.0 con colonne source, channel, description; righe pre-esistenti migrate come source = wp_nativeSelettore pagina di destinazione
Bugfix dedup filter legacy
merge_legacy da 5 a 999 per consentire la dedup corretta per idAccountability suite
wp_dbph_dsar_logPrima release pubblica
dbph_processing_registerdbph_user_data_exporters e dbph_user_data_erasers per gli exporter/eraser dei plugin DBwp_page_for_privacy_policyOpen Source — GPL v2 DB SEO Manager SEO completa per WordPress, costruita prima di tutto per il GDPR. Niente…
DB Site Analytics Tracciamento visite server-side: nessun cookie, nessun servizio esterno, solo visite reali. I dati restano nel tuo database.…
Open Source — GPL v2 DB Event Manager Gestione eventi con iscrizione, QR code personale, check-in da telefono e survey…