← Guides·Data Privacy

Data Privacy

Website vendor audit: a quarterly checklist

Run a quarterly audit of the vendors on your website: which scripts load, what each sends and to whom, and whether it is declared and waits for consent.

David PombarSwiss army knife at Trackingplan
7 min read · 1647 words

TL;DR A website vendor audit answers four questions for every third party on your site: does it load, what does it send, to whom, and is it declared in your consent banner and held until the visitor agrees. Run it once a quarter, on the same pages and the same three consent states, with a named owner for each step. This guide is the checklist; for the wider compliance picture, start with privacy compliance for analytics.

Your consent banner lists the vendors you declared. Your pages load the vendors you actually have. The two lists start the same and drift apart: a campaign adds a pixel, a CMS plugin brings its own analytics, a chat widget loads a second script, a release moves a tag out of the consent trigger. Nobody decides that the lists should differ. They just do, a little more every month.

A quarterly vendor audit puts them back in line. It is not a legal review. It is the inventory a legal review needs.

Why vendor lists drift between audits

Vendors arrive through more doors than the one your privacy team watches. The tag manager is only one of them:

Two overlapping lists: vendors declared in the consent banner and vendors that load on the site. The overlap is declared and loading; one side shows vendors declared but no longer loading; the other shows vendors loading but never declared.
The audit sorts every vendor into one of three groups. The right-hand group is the one that needs action first. Vendor names are illustrative.

The result is three groups. Vendors that are declared and load are fine, pending the consent check. Vendors that are declared and no longer load make your banner longer than it needs to be. Vendors that load and were never declared are the finding.

Before you start: scope, states, and owners

Decide three things before you open a browser, and keep them the same every quarter so audits compare.

The pages. Not the whole site: one page per template that matters. Home, a landing page that receives paid traffic, a product or content page, search results, the sign-up or lead form, the checkout and its confirmation page, and a logged-in page. Templates differ in what they load, so cover each one.

The consent states. Three runs per page: banner not answered, everything rejected, everything accepted. Add a partial choice if your banner offers categories, and a second market if your banner behaves differently by region.

The owners. One person owns the audit; each step has its own owner.

A table of the five audit steps with an owner for each: inventory by analytics or marketing operations, payloads by analytics, CMP declaration by the privacy lead, consent behavior by the privacy lead with analytics, and remediation by engineering and marketing.
One owner per step, named before the audit starts. Roles are an example; use the ones your team has.

Step 1: list what loads

Use a clean browser profile with no extensions, cookies cleared, and the browser’s network tools open. For each page and each consent state, load the page, wait, scroll, and use the main interaction on it: submit the form, add to cart, run a search.

Chrome DevTools has what you need. Its Network panel can filter by domain, and it can export the session as a HAR file. The sanitized export leaves out cookie and authorization headers, which is the version to keep as evidence.

From the requests, build the inventory:

  1. Group requests by domain. Your own domains go aside; everything else is a third party.
  2. Map each domain to a vendor. Several domains often belong to one vendor; note them together.
  3. Record where it loaded from. The tag manager, a template, a plugin, or another vendor’s script. This is who will have to remove it.
  4. Mark the pages and states where it appeared.

Step 2: record what each vendor sends, and to whom

A vendor on the list is not yet a finding. What it receives is. For each vendor, open two or three of its requests and write down what they carry.

One row of a vendor inventory: the vendor, its domains, how it loads, the data it receives (page URL, referrer, event names, a user identifier, cookies set), the consent category declared, and the result in each of the three consent states.
One row per vendor. The data column is what changes most between quarters. Illustrative values.

Look for four kinds of data:

Then the recipient: the vendor itself, or a vendor of the vendor. If a script sends data to domains that are not its own, that is a recipient your declaration may need to name.

Step 3: compare with what your CMP declares

Now put the inventory next to the configuration of your consent banner.

The output of this step is a short list of differences, each with the vendor, the page, and the owner who will fix it.

A declared vendor that fires before the visitor answers is still a finding. Go back to the three runs from step 1 and read them per vendor:

A timeline of one page load: the page loads, the banner appears, the visitor answers. Strictly necessary requests run from the start; a pixel that fires before the answer is marked as a finding; analytics and advertising requests start only after acceptance.
What a clean page load looks like, and the request the audit is looking for. Illustrative timeline.

One case needs a decision rather than a check. With Google’s advanced consent mode, Google tags load before the visitor answers and, while consent is denied, send measurements without cookies. That is by design. Whether it is acceptable for your site and markets is a decision for your privacy lead, and the audit records the decision so the next one does not reopen it. For a step-by-step method to catch tags that fire too early, see the audit guide to tags firing before consent.

Step 5: decide, fix, and record

Each finding ends in one of four decisions:

  1. Remove. The vendor is no longer used. Delete the tag, the snippet, or the plugin, and remove it from the banner.
  2. Gate. The vendor is needed but fires too early. Move it behind the right consent category.
  3. Declare. The vendor is legitimate and behaves correctly, but the banner does not name it. Add it.
  4. Accept. The behavior is intended, such as a strictly necessary service. Record why.
The quarterly vendor audit as a one-page checklist: scope and owners, list what loads, record payloads and recipients, compare with the CMP, check consent behavior, and decide, fix, and record, each with its owner and its output.
The whole audit on one page. Keep the same pages, states, and owners every quarter.

Close the audit with a dated record: the inventory, the HAR files, the findings, the decisions, and who made them. Next quarter starts from it, and the difference between the two inventories is often the most useful page of the report.

Between audits: catch changes as they happen

A quarterly audit is a snapshot of a few pages in a few states. Vendors change every week. A pixel added on Monday has three months to fire before the next audit sees it.

Trackingplan watches the requests your real visitors send, on every page, device, and market, and checks every vendor and every payload against the consent state that travels with each hit. Its consent and cookie monitoring lists every destination, cookie, domain, and pixel it detects, works out which of them require consent, and warns you when data is sent without it, when a new cookie appears, or when a pixel behaves unexpectedly. Findings land in your privacy channel with the hits, the vendor, the market, and the regulation involved.

It observes and reports; it does not block tags. The quarterly audit stays, and gets shorter: it starts from a list of what changed instead of an empty spreadsheet.

Frequently asked questions

How often should I audit the vendors on my website?

Once a quarter is a workable rhythm for a full audit: often enough to catch vendors added by campaigns, plugins, and releases, rare enough to do properly. Between audits, monitoring on real traffic covers the changes that happen in the meantime.

A cookie audit lists what is stored in the visitor’s browser. A vendor audit lists who receives data from your pages, which includes vendors that set no cookies at all, server-side destinations, and scripts loaded by other scripts. A cookie audit is one step of a vendor audit.

Who should own the website vendor audit?

One person owns the audit as a whole, usually the analytics lead or the privacy lead, and each step has its own owner: analytics or marketing operations for the inventory, the privacy lead or DPO for the CMP declaration and the consent decisions, and engineering for removing scripts.

Not always. Some services are classified as strictly necessary, and Google’s advanced consent mode sends measurements without cookies before consent by design. Whether each of those is acceptable for your site and markets is a decision for your privacy lead or DPO, and the audit records it.

David PombarSwiss army knife at Trackingplan

Read more from David, a Senior Product Strategist with 18+ years in digital product development and an atypical error detection knack.

Trackingplan

See everything. Miss nothing.

Your implementations audited around the clock with real-time, real-user data. Real-time alerts about errors or changes in your data, campaigns, pixels, privacy and consent. Let AI flag issues before they cost you.