Payment page script monitoring — PCI 6.4.3 and 11.6.1

Manifest is Tagnovo's payment-page script monitor for PCI DSS v4.0.1. It builds the authorized inventory 6.4.3 asks for, watches scripts and headers at least weekly for 11.6.1, and writes an attested evidence pack. Tagnovo is not a QSA and does not certify compliance.

Free, no account. We load the shop — home, a collection, a product, and the cart. We do not load checkout: an empty cart is sent to the basket. The tag is what sees the payment page.

Simulation

A walkthrough of how it works

Step 1 of 10The tag is already on this store. The box on this page is not this step.

shop.example

Manifest is already on this store.

shop.example

Install the tag

Tracking checks need nothing installed. Manifest does, and it is worth knowing why: skimmers check whether a browser is being driven by software and stay quiet if it is. Only a script running in real customers' browsers sees what was actually delivered.

Paste this into your theme, before the closing head tag

<script type="application/json" id="tagnovo-cfg">{"k":"pk_live_…"}</script> <script src="https://m.tagnovo.com/m.js" data-key="pk_live_…" async></script>
Copy the tagHow to install

It reads the scripts on the page and nothing else. Loaded asynchronously. A third-party snippet can be dropped by privacy browsers and filter lists. The WordPress plugin is the first-party path: it prints the tag and relays the heartbeat on this site.

No payment-page patterns yet. Sampling stays at 5% until you declare them.

We are waiting for the first reading

No reading yet from shop.example

Once the tag is live, the first reading usually arrives within a few minutes of the next customer reaching a payment page.

WooCommerce and WordPress

The plugin is the first-party path: it prints the tag and relays the heartbeat on this site, so a privacy browser does not treat the heartbeat as a third-party tracker. You can instead print the snippet from the theme functions file — that is the third-party head snippet, and privacy browsers and filter lists can drop it. Do not install only through Tag Manager, and do not run both.

pk_live_…

Or print it from the theme functions file

add_action('wp_head', static function (): void {
  echo '<script type="application/json" id="tagnovo-cfg">{"k":"pk_live_…"}</script>
<script src="https://m.tagnovo.com/m.js" data-key="pk_live_…" async></script>';
}, 1);

Child theme, so a parent update does not wipe it. This is not the plugin relay. Exclude m.tagnovo.com in optimizers.

Download the pluginInstall notesfunctions.phpWordPress guideCopy functions.php

Shopify

The App Store install is not available yet. A storefront snippet watches the storefront only — not Shopify-hosted checkout. Hosted checkout is usually a lighter questionnaire; whether 6.4.3 and 11.6.1 apply to pages you still serve is a question for your acquirer.

Shopify guideSAQ A or A-EP

BigCommerce

A Scripts API app that injects the tag is not built. Paste the snippet into the theme head. Default checkout is hosted by BigCommerce, so reduced scope is likely. The tag can watch checkout you host yourself. The scanner still cannot load an empty checkout.

BigCommerce guide

Magento

A Magento module is not built. Paste the snippet into the theme head. Checkout on your own site is typically full scope, and only the tag sees it — from a visitor who already has a cart.

Magento guide

Headless, PrestaShop, Squarespace, custom

There is no installer. Paste the snippet into the document head, before the closing head tag. PrestaShop and Squarespace are recognised by a scan; they still use this path. Tag Manager is not an install.

Manual install guide

Not through Google Tag Manager

Tag Manager is one of the things we watch. If you only added this in Tag Manager, a blocked container silences the monitor. Install the plugin or the head snippet. GTM may be added as a duplicate; it is not the install.

Optimizer exclusions

The plugin marks same-origin ingest uncacheable and asks LiteSpeed, WP Rocket, W3TC, and Autoptimize to leave the tag alone. A functions.php print has no handle — exclude m.tagnovo.com if a combiner still rewrites it. Purge the page cache after a key rotate.

When the tag will not see

We do not certify your SAQ. These are the cases the dashboard cannot pretend to cover.

  • Tag Manager only. Filter lists block googletagmanager.com. The monitor must not depend on the thing it watches. GTM may be a duplicate; it is not the install.
  • Third-party head snippet, no first-party path. Privacy browsers and filter lists can drop a cross-site script or beacon. The WordPress plugin is the first-party path that exists. Waiting or a quiet-tag alert is the signal.
  • Shopify hosted checkout. The storefront tag does not run on checkout.shopify.com.
  • Payment iframes (Stripe Elements, hosted fields). Cross-origin iframe scripts are invisible.
  • A CSP missing script-src / connect-src for the script host and the beacon host.
  • A consent banner set to block essentials. The plugin default is essential; a merchant can still override it.
  • No payment-page patterns. Sampling stays at 5% and the PCI queue looks empty.
  • Unverified store. The snippet is not issued until the store is verified.
  • First 14 days. Absence alerts are off while the model learns. “Receiving (learning)” is not a clean bill of health.
  • A rotated key still in a page cache. Purge the cache.
  • A custom or preview origin that is not allowlisted. Beacons return 204; add the origin.
  • AMP, in-app webviews, email HTML. Not a storefront.
This is a simulation of Manifest — install, Waiting for the tag, Pages, approve, then a pack. Specimen of the queue, not eighteen rows, and not from the box on this page. Not a live store.

What the rules actually ask for

Two requirements, in force since 31 March 2025. Neither is complicated; both are tedious to do by hand and impossible to do from memory.

An authorized inventory

Every script on a page that takes card details, with a written reason it is there, a named person who approved it, and a way of confirming it has not been altered.

PCI DSS 6.4.3 solution

A way to spot changes

Something that notices when the page or its security headers change without authorisation, checked at least weekly, as the customer's browser received them.

PCI DSS 11.6.1 solution

Does this even apply to you?

The honest answer is that your acquiring bank decides, and it turns on one thing: where the card fields live.

Where card fields live, and typical scope
Your setupCard fields areUsually
WooCommerce with a gateway on the pageOn your own sitein scope
Custom or headless buildOn your own sitein scope
Magento, Stripe Elements embeddedIn an embedded frame on your pagedepends on your acquirer
BigCommerce with its own checkoutOn the platformreduced, ask them
Shopify hosted checkoutOn Shopifyusually reduced

We are not assessors and this table is not advice. If you are unsure, the question to put to your acquirer is short: which self-assessment questionnaire do you expect from us, and do 6.4.3 and 11.6.1 apply?

Why a scan is not enough for this one

Tracking checks need nothing installed. This does, and the reason is uncomfortable.

Skimmers hide from scanners

Card-skimming scripts check whether the browser is being driven by software and go quiet if it is. A scanner gets served the clean version of a compromised page. That is the whole point of the technique.

So we watch from inside

One small script in your page reports what real customers' browsers actually received. It never blocks the page, it fails silently, and it is the only way to see what a scanner cannot.

What your assessor gets

A generated pack, not a spreadsheet someone kept up to date by hand. Every check we ran in the period, every change we saw, who reviewed it, and a checksum on the cover so nobody can argue it was edited afterwards.

See what is in a pack

Checks in the period
1,488
Changes seen
7
Left unreviewed
0
Attested by
A named person

A specimen pack. Live numbers belong to a store that has been watched.

$149 per store, on top of any plan

Start with a free scan of the shop. If a tag is silent on the storefront, you have spent two minutes. Checkout is only observed by the tag, from a visitor who already has a cart.