OneTrust Cookie Consent Validator: A Release QA Checklist
Follow the checks on your own website. Install the free extension to compare cookie activity before and after a consent choice.
The OneTrust banner appears. The buttons work. Then someone opens the Network panel and finds an analytics request that started before the visitor made a choice. That is the gap this validation checklist is designed to investigate: the difference between the consent interface and what the deployed website does.
Use this page when you need to sign off a website release, review an agency handover or repeat a consent check after a tag change. It is a technical test plan, not a OneTrust certification. ConsentScope observes browser activity; it does not inspect your OneTrust tenant or issue a legal verdict. For installation troubleshooting, use the separate OneTrust configuration guide.
Define what a passing OneTrust test means
Write down the intended behavior before opening a scanner. Which services must stay off before a choice? Which category enables each service? Does the website use basic Google tag blocking or an advanced Consent Mode integration? A test is useful only when the reviewer can compare the observation with a specific expectation.
Give each test a URL, region, browser and session state. Include at least one page that contains an optional service, such as a video, chat widget or conversion form. The homepage may not load the integration that breaks on a product page. Use a test account where authentication is needed, and avoid capturing real customer information.
| Test condition | Expected evidence | What needs investigation |
|---|---|---|
| Fresh visit | Consent interface and baseline requests before any choice | Optional identifiers created before their category is allowed |
| Reject optional purposes | Saved rejection and no new disallowed activity | A request starts when the reject button is pressed |
| Accept one category | Only the selected services become available | Analytics approval also starts advertising |
| Withdraw a previous grant | A changed preference and stopped future collection | The label changes, but the loaded SDK keeps sending |
| Navigate or reload | The saved choice is still applied | A route-specific component bypasses the gate |
Prepare a clean browser session
Close existing private windows before opening a new one, or use a dedicated test profile. Private tabs can share a session, so opening another tab is not necessarily a clean reset. If you clear site data manually, include the relevant parent domain and storage entries. Record the reset method so the next reviewer can reproduce it.
Open ConsentScope and the browser developer tools before reloading the target page. Do not click the banner yet. Keep one record of what happened on initial load and another of what happened after interaction. A cookie already stored during an earlier accepted visit is different evidence from a fresh cookie write in this test.
Check the deployed domain script and category mapping
Confirm that production is serving the intended OneTrust domain script and published configuration. A correct setting in an administrator's preview does not prove the public page uses that setting. Record the identifier visible in the page source and ask the implementation owner to match it to the intended property.
Build a short mapping from service to category to loading path. For example, a marketing pixel may arrive through GTM on the homepage and through a theme integration on product pages. Fixing the GTM tag leaves the second copy untouched. Search by the vendor's identifier as well as its domain; two paths can load the same service.
Run Reject and partial-consent tests separately
Start clean for each scenario. Choose Reject, wait through the same observation window used for the baseline, then follow an internal link. Check requests and new storage writes, not just whether the banner disappeared. Reopen preferences to confirm the saved category state matches the choice.
For partial consent, choose a single optional category and save. Observe the newly allowed service, but also look for services that should remain off. This catches integrations that treat any saved preference as a blanket grant. If the chosen category has no service on this page, use another representative URL rather than concluding that the gate works.
Test withdrawal while the service is already running
Accept the relevant category first and confirm that the service starts. Then reopen OneTrust preferences and revoke it without resetting the browser. Trigger the same interaction again. This tests a different code path from an initial rejection: the application must deal with a library that is already loaded.
OneTrust exposes events for category and preference changes. Use its Web CMP events reference when checking the integration. A preference-center-open event is not the same as permission to collect data. After a change, compare the actual category state with the service's behavior.
Do not skip client-side navigation
In a single-page application, opening a new route does not necessarily reload the document. A lazy-loaded component can introduce a tracker even when the initial route passed. Test direct entry to a route, navigation into it and browser Back after rejection. Repeat with one category accepted.
Keep OneTrust's SPA integration guidance beside the test record. Check the requirements for your deployed version rather than adding another generic banner script to every component. Duplicate initialization can make consent symptoms harder to interpret.
Example: turn a finding into a fixable ticket
Illustrative case: a product page creates an analytics identifier on a fresh visit. The homepage does not. After rejection, the product page sends another analytics request. These are sample observations, not results from an actual client audit.
| Ticket field | Example entry |
|---|---|
| Scope | Product template, logged out, fresh profile |
| Steps | Open page, leave banner untouched, record baseline, reject, reload |
| Observed | New analytics identifier and a subsequent collection request |
| Expected | Analytics stays disabled under the documented category rule |
| Next investigation | Inspect the product template and its tag-manager path for a second installation |
| Acceptance check | Repeat the same steps on homepage and product page after the fix |
Attach the relevant request, consent phase and observation time. Use Initiator Trace as a lead, not as proof of a complete JavaScript call stack. A Debug Snapshot can preserve context for a private engineering ticket. Review the export before sharing it.
Questions that come up during validation
Does a visible OneTrust banner mean the site passes?
No. It confirms that an interface rendered. The deployed scripts still need to respect its categories, and the saved choice needs to survive the tested navigation paths. Keep UI checks and request checks in the same test record.
Does a request under denied Google consent always mean a failure?
No. Advanced Google Consent Mode can produce cookieless pings. Compare the intended integration, consent state and actual storage behavior. The Consent Mode checker helps inspect supported signals; use Tag Assistant for tag-level verification.
Can I validate every page with one online scan?
The free online cookie audit visits one public URL without making a consent choice. It is a baseline, not a full interaction test. Use the extension for Reject and withdrawal, then include other templates in the scope.
What should an agency give the client?
Provide the tested URLs, conditions, findings, excluded areas and retest status. Do not present a zero-issue scan as a whole-site guarantee. The PDF reporting workflow supports a readable handoff; recurring portfolio checks use the separate Monitor and Agency plans.
Does your OneTrust setup stop cookies before consent?
Follow this checklist with ConsentScope. Compare cookie activity before and after your consent choice, then investigate anything unexpected.
Free page-level checks. No account or payment required.