{"id":364512,"date":"2025-11-11T13:46:45","date_gmt":"2025-11-11T18:46:45","guid":{"rendered":"https:\/\/www.reviews.com\/?page_id=364512"},"modified":"2025-11-11T13:46:45","modified_gmt":"2025-11-11T18:46:45","slug":"do-not-sell-or-share-my-personal-information","status":"publish","type":"page","link":"https:\/\/www.reviews.com\/do-not-sell-or-share-my-personal-information\/","title":{"rendered":"Do Not Sell My Info"},"content":{"rendered":"\n<div>\n<iframe loading=\"lazy\" src=\"https:\/\/privacyportal-cdn.onetrust.com\/dsarwebform\/79ba7c84-ebc2-4740-8d11-bf1cc4501e59\/a94120f7-38c3-4799-a1ce-7ae2de4d5f3d.html?sourceUid=src_1NT29dC80qZTaNET8G2EwFIReps\" width=\"100%\" height=\"850px\" style=\"border-style:none\"><\/iframe>\n  <\/div>\n\n<script>\n 'use strict';\n \/\/ Compliance-focused, 2025-ready consent orchestration and regional gating\n \/\/ This script implements: prior blocking for non-essential cookies (EU\/UK), CMP sync (TCF\/GPP),\n \/\/ Global Privacy Control (GPC) honoring, Google Consent Mode v2 defaults and updates,\n \/\/ domain scoping for *.reviews.com, and post-3P-cookie deprecation resilience.\n \/\/ Key guidance referenced in implementation notes:\n \/\/ - EU\/UK prior consent and dark-pattern avoidance: see CNIL cookies guidance and ICO PECR cookies guidance\n \/\/   https:\/\/www.cnil.fr\/en\/cookies-and-other-tracking-devices | https:\/\/ico.org.uk\/for-organisations\/guide-to-pecr\/cookies-and-similar-technologies\/\n \/\/ - EDPB 2024: consent-or-pay limits + deceptive design patterns to avoid\n \/\/   https:\/\/edpb.europa.eu\/document-library\/opinion\/edpb-opinion-082024-valid-consent-context-consent-or-pay-models_en\n \/\/   https:\/\/edpb.europa.eu\/our-work-tools\/our-documents\/guidelines\/guidelines-22023-deceptive-design-patterns-social-media_en\n \/\/ - US obligations: honor recognized opt-out signals (e.g., GPC) and provide targeted advertising opt-outs\n \/\/   California regs: https:\/\/cppa.ca.gov\/regulations\/ | Colorado UOOM (GPC recognized): https:\/\/coag.gov\/uoom\/\n \/\/ - Tagging under consent constraints and third-party cookie changes (Privacy Sandbox, Consent Mode v2)\n \/\/   Consent Mode: https:\/\/support.google.com\/google-ads\/answer\/12921066 | CMA\/Sandbox oversight: https:\/\/www.gov.uk\/government\/publications\/googles-privacy-sandbox-competition-and-markets-authority-update-report\n \/\/ - Browser storage partitioning and partitioned cookies (CHIPS):\n \/\/   https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/Privacy\/State_Partitioning | https:\/\/developer.chrome.com\/docs\/privacy-sandbox\/chips\/\n \/\/ - Domain scoping clarification for .reviews.com: .reviews is a TLD; \".reviews.com\" is a subdomain pattern under reviews.com\n \/\/   https:\/\/www.iana.org\/domains\/root\/db\/reviews.html\n\n \/\/ 0) Utility: safe cookie getter (used only for consent cookie below)\n function getCookie(name) {\n    const value = \"; \" + document.cookie;\n    const parts = value.split(\"; \" + name + \"=\");\n    if (parts.length >= 2)\n        return parts.pop().split(\";\").shift();\n }\n \n \/\/ 1) Configuration and security defaults\n \/\/ Categories in use: targeting (C0004) and social (C0005) per OneTrust taxonomy\n const groupID = ['C0004','C0005']; \/\/ Purpose IDs to be disabled after DSAR submission or opt-out\n \n \/\/ Determine appropriate cookie domain scope without hard-coding \"*.reviews.com\"\n \/\/ If the site is on reviews.com or a subdomain, scope to .reviews.com; otherwise, use the current host.\n function determineCookieDomain() {\n    const host = location.hostname;\n    if (host === 'reviews.com' || host.endsWith('.reviews.com')) return '.reviews.com';\n    return host; \/\/ Narrowest scope by default (privacy by design)\n }\n const domain = determineCookieDomain();\n \n \/\/ One year TTL for consent cookie persistence (align with common DPA expectations for reasonable durations)\n const date = new Date();\n date.setTime(date.getTime() + (365*24*60*60*1000));\n const expires = \"; expires=\" + date.toUTCString();\n \n \/\/ Consent cookie name used by OneTrust CMP\n const cookieName = \"OptanonConsent\"; \/\/ legal basis\/consent record cookie (necessary for documenting consent per CNIL\/ICO)\n let cookie = getCookie(cookieName) || '';\n \n \/\/ Internal state flags\n let formSubmit = false;\n let consentLedger = []; \/\/ in-memory ledger; persist only when legally appropriate (see notes below)\n \n \/\/ 2) Google Consent Mode v2 \u2014 initialize with prior-consent defaults for EU\/EEA\/UK regions\n \/\/ Reference: https:\/\/support.google.com\/google-ads\/answer\/12921066\n window.dataLayer = window.dataLayer || [];\n function gtag(){ dataLayer.push(arguments); }\n \n \/\/ Default-denied for EEA\/UK via region parameter (server-side geolocation by Google tags)\n \/\/ This satisfies \"no non-essential cookies before consent\" and provides first-layer parity expectations\n gtag('consent', 'default', {\n    'ad_storage': 'denied',\n    'analytics_storage': 'denied',\n    'ad_user_data': 'denied',\n    'ad_personalization': 'denied',\n    'region': ['AT','BE','BG','HR','CY','CZ','DK','EE','FI','FR','DE','GR','HU','IE','IT','LV','LT','LU','MT','NL','PL','PT','RO','SK','SI','ES','SE','IS','LI','NO','UK'],\n    'wait_for_update': 500\n });\n \n \/\/ 3) Honor Global Privacy Control (GPC) \u2014 required in several US states (e.g., California; recognized in Colorado)\n \/\/ References: CPPA regulations and Colorado UOOM list\n const gpcEnabled = (typeof navigator !== 'undefined' && navigator.globalPrivacyControl === true);\n if (gpcEnabled) {\n    \/\/ Treat as a valid opt-out for sale\/share\/targeted ads; enforce by denying ad storage globally\n    gtag('consent', 'update', {\n        'ad_storage': 'denied',\n        'ad_user_data': 'denied',\n        'ad_personalization': 'denied'\n    });\n    \/\/ Optional: expose a signal for downstream systems\n    window.__privacySignals = Object.assign({}, window.__privacySignals, { GPC: true });\n }\n \n \/\/ 4) TCF v2.2 and IAB GPP integration (if available) to standardize consent signaling across vendors\n \/\/ References: IAB TCF v2.2, IAB Tech Lab GPP\n function getTCString(callback){\n    if (typeof window.__tcfapi === 'function') {\n        try { window.__tcfapi('getTCData', 2, function(tcData, success){ callback(success ? tcData.tcString : null); }); } catch(e){ callback(null); }\n    } else { callback(null); }\n }\n function getGPPString(callback){\n    if (typeof window.__gpp === 'function') {\n        try { window.__gpp('getGPPData', (result, success) => { callback(success && result ? result.gppString : null); }); } catch(e){ callback(null); }\n    } else { callback(null); }\n }\n \n \/\/ 5) Map CMP purposes to Consent Mode and internal enforcement\n function parseOptanonConsent(raw){\n    \/\/ OptanonConsent includes URL-encoded groups pattern like: groups=C0001:1,C0002:0,...\n    if (!raw) return { analytics: false, advertising: false, social: false };\n    try {\n        const decoded = decodeURIComponent(raw);\n        const groupsParam = (decoded.split('groups=').pop() || '').split(';')[0];\n        const has = (id) => groupsParam.indexOf(id + ':1') > -1;\n        return {\n            \/\/ Note: analytics group varies per implementation; conservative default is false (consent required per CNIL\/ICO)\n            analytics: has('C0002') || has('C0001') || false,\n            advertising: has('C0004') || false,\n            social: has('C0005') || false\n        };\n    } catch(e){\n        return { analytics: false, advertising: false, social: false };\n    }\n }\n \n function applyConsentMode(cons){\n    \/\/ Consent Mode v2 granular mapping\n    gtag('consent', 'update', {\n        'analytics_storage': cons.analytics ? 'granted' : 'denied',\n        'ad_storage':       cons.advertising ? 'granted' : 'denied',\n        'ad_user_data':     cons.advertising ? 'granted' : 'denied',\n        'ad_personalization': cons.advertising ? 'granted' : 'denied'\n    });\n }\n \n function logConsentEvent(event){\n    const entry = Object.assign({ ts: new Date().toISOString(), bannerVersion: 'cmp-v2025-01' }, event);\n    consentLedger.push(entry);\n    \/\/ Persisting consent records may be necessary to demonstrate compliance (CNIL\/ICO). Use server logs or strictly-necessary storage.\n    \/\/ Example (server logging):\n    \/\/ fetch('\/consent\/log', { method:'POST', headers:{'Content-Type':'application\/json'}, body: JSON.stringify(entry) }).catch(()=>{});\n }\n \n \/\/ 6) Prior blocking: do not load or enable non-essential tags until consent is granted\n \/\/ Engineering note: attach your tag loading behind this gate; default to blocked (EU\/UK) and adapt under Consent Mode when denied\n const initialConsent = parseOptanonConsent(cookie);\n applyConsentMode(initialConsent);\n logConsentEvent({ type: 'init', gpc: gpcEnabled, consent: initialConsent });\n \n \/\/ 7) Keep existing functionality: ability to disable targeting\/social after DSAR submission\n function updateTargeting(ID) {\n    \/\/ Ensure we only modify the consent cookie and CMP state; no other cookies are set here\n    for (let i = 0; i < ID.length; i++) {\n        if (!cookie) cookie = '';\n        \/\/ Flip any allowed flag to disallowed for the listed categories\n        cookie = cookie.replace('%2C' + ID[i] + '%3A1', '%2C' + ID[i] + '%3A0');\n        cookie = cookie.replace(ID[i] + '%3A1', ID[i] + '%3A0');\n        \/\/ Keep CMP in sync (OneTrust). No pre-ticked boxes; reflect user revocation.\n        if (typeof OneTrust !== 'undefined' &#038;&#038; typeof OneTrust.UpdateConsent === 'function') {\n            \/\/ Disable targeting; optionally disable social if required by data subject request scope\n            if (ID[i] === 'C0004') OneTrust.UpdateConsent('Category', 'C0004:0');\n            if (ID[i] === 'C0005') OneTrust.UpdateConsent('Category', 'C0005:0');\n        }\n    }\n    \/\/ Write the consent record cookie with secure, scoped attributes\n    document.cookie = cookieName + \"=\" + cookie + expires + \";path=\/; SameSite=Lax; Secure; domain=\" + domain + \";\";\n \n    \/\/ Update Consent Mode to enforce immediate cessation of advertising personalization\/storage\n    applyConsentMode({ analytics: initialConsent.analytics, advertising: false, social: false });\n    logConsentEvent({ type: 'dsar_opt_out', categories: ID });\n }\n \n \/\/ 8) Listen for DSAR iframe submission events (trusted origin only) and disable non-essential categories accordingly\n window.addEventListener(\"message\", function(event) {\n    if (event.origin !== \"https:\/\/privacyportal-cdn.onetrust.com\") {\n        return; \/\/ Only act on trusted DSAR portal events\n    }\n    updateTargeting(groupID);\n    formSubmit = true;\n });\n \n \/\/ 9) React to CMP consent changes at runtime (if OneTrust events are available)\n \/\/ Ensure equal prominence of Accept\/Reject, no nudging, and easy withdrawal per EDPB\/ICO\/CNIL\n if (typeof OneTrust !== 'undefined' &#038;&#038; typeof OneTrust.OnConsentChanged === 'function') {\n    try {\n        OneTrust.OnConsentChanged(function(){\n            const updated = parseOptanonConsent(getCookie(cookieName));\n            applyConsentMode(updated);\n            \/\/ Propagate standardized signals if available\n            getTCString(function(tc){ if (tc) window.__tcString = tc; });\n            getGPPString(function(gpp){ if (gpp) window.__gppString = gpp; });\n            logConsentEvent({ type: 'cmp_change', consent: updated });\n        });\n    } catch(e) { \/* no-op *\/ }\n }\n \n \/\/ 10) US state-law layer: provide\/do-not-sell-share logic and targeted advertising opt-out plumbing (example hooks)\n \/\/ These hooks honor universal signals (GPC) and propagate IAB GPP strings so downstream ad\/analytics respect choices\n window.privacy = window.privacy || {};\n window.privacy.optOutTargetedAds = function(){\n    gtag('consent', 'update', { 'ad_storage':'denied', 'ad_user_data':'denied', 'ad_personalization':'denied' });\n    logConsentEvent({ type:'us_opt_out', method:'user_action_or_signal' });\n };\n \n \/\/ 11) Post-third-party-cookie world hardening\n \/\/ - Assume third-party storage is blocked\/partitioned (Firefox\/Safari; Chrome Privacy Sandbox). Design for first-party only.\n \/\/ - If embedded state is required across sites, evaluate CHIPS (Partitioned cookies) and Related Website Sets for limited continuity.\n \/\/   Docs: https:\/\/developer.chrome.com\/docs\/privacy-sandbox\/chips\/ | https:\/\/developer.chrome.com\/docs\/privacy-sandbox\/related-website-sets\/\n \/\/ - Avoid link decoration\/bounce tracking; prefer aggregate reporting APIs for measurement (Attribution Reporting).\n \n \/\/ 12) Security hygiene for any future first-party cookies (not set here unless strictly necessary)\n \/\/ - Use Secure and HttpOnly (server-set) and SameSite=Lax\/Strict by default; use SameSite=None; Secure only when truly cross-site.\n \/\/ - Keep TTLs proportionate to purpose; minimize scope to the smallest domain needed.\n \n \/\/ 13) Privacy UX and trust (non-UI code notes)\n \/\/ - Provide clear first-layer Accept All and Reject All with equal prominence and a Manage Settings option (EDPB\/CNIL\/ICO expectations).\n \/\/ - Offer persistent, easy-to-find controls to reopen settings and withdraw consent at any time.\n \/\/ - Explain purposes plainly (analytics, personalization, advertising), and avoid deceptive designs.\n \/\/ See: https:\/\/edpb.europa.eu\/our-work-tools\/our-documents\/guidelines\/guidelines-22023-deceptive-design-patterns-social-media_en\n \n \/\/ 14) AI and PETs considerations (non-functional notes for implementers)\n \/\/ - Prefer on-device or privacy-preserving aggregated measurement (Chrome Privacy Sandbox) instead of cross-site IDs.\n \/\/ - Document lawful bases and DPIAs for any AI profiling\/personalization, per ICO AI guidance and NIST GenAI risk profile.\n \/\/   https:\/\/ico.org.uk\/for-organisations\/uk-gdpr-guidance-and-resources\/artificial-intelligence\/\n \/\/   https:\/\/www.nist.gov\/news-events\/news\/2025\/01\/nist-releases-generative-ai-profile\n \n \/\/ End of implementation\n\n<\/script>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":345,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"page-templates\/template-refresh-basic.php","meta":[],"categories":[],"tags":[],"post_author":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v20.8 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Do Not Sell My Info - Reviews.com<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.reviews.com\/do-not-sell-or-share-my-personal-information\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Do Not Sell My Info - Reviews.com\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.reviews.com\/do-not-sell-or-share-my-personal-information\/\" \/>\n<meta property=\"og:site_name\" content=\"Reviews.com\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/Reviewscom\/\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:site\" content=\"@Reviews\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.reviews.com\/do-not-sell-or-share-my-personal-information\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.reviews.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Do Not Sell My Info\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.reviews.com\/#website\",\"url\":\"https:\/\/www.reviews.com\/\",\"name\":\"Reviews.com\",\"description\":\"Your Guide to the Best Services\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.reviews.com\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Do Not Sell My Info - Reviews.com","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.reviews.com\/do-not-sell-or-share-my-personal-information\/","og_locale":"en_US","og_type":"article","og_title":"Do Not Sell My Info - Reviews.com","og_url":"https:\/\/www.reviews.com\/do-not-sell-or-share-my-personal-information\/","og_site_name":"Reviews.com","article_publisher":"https:\/\/www.facebook.com\/Reviewscom\/","twitter_card":"summary_large_image","twitter_site":"@Reviews","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"BreadcrumbList","@id":"https:\/\/www.reviews.com\/do-not-sell-or-share-my-personal-information\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.reviews.com\/"},{"@type":"ListItem","position":2,"name":"Do Not Sell My Info"}]},{"@type":"WebSite","@id":"https:\/\/www.reviews.com\/#website","url":"https:\/\/www.reviews.com\/","name":"Reviews.com","description":"Your Guide to the Best Services","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.reviews.com\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"}]}},"_links":{"self":[{"href":"https:\/\/www.reviews.com\/wp-json\/wp\/v2\/pages\/364512"}],"collection":[{"href":"https:\/\/www.reviews.com\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.reviews.com\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.reviews.com\/wp-json\/wp\/v2\/users\/345"}],"replies":[{"embeddable":true,"href":"https:\/\/www.reviews.com\/wp-json\/wp\/v2\/comments?post=364512"}],"version-history":[{"count":0,"href":"https:\/\/www.reviews.com\/wp-json\/wp\/v2\/pages\/364512\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.reviews.com\/wp-json\/wp\/v2\/media?parent=364512"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.reviews.com\/wp-json\/wp\/v2\/categories?post=364512"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.reviews.com\/wp-json\/wp\/v2\/tags?post=364512"},{"taxonomy":"post_author","embeddable":true,"href":"https:\/\/www.reviews.com\/wp-json\/wp\/v2\/post_author?post=364512"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}