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.
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.
Step 1 of 10The tag is already on this store. The box on this page is not this step.
shop.example
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.
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.
Once the tag is live, the first reading usually arrives within a few minutes of the next customer reaching a payment page.
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
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.
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.
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.
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.
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.
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.
We do not certify your SAQ. These are the cases the dashboard cannot pretend to cover.
googletagmanager.com. The monitor must not depend on the thing it watches. GTM may be a duplicate; it is not the install.checkout.shopify.com.script-src / connect-src for the script host and the beacon host.Two requirements, in force since 31 March 2025. Neither is complicated; both are tedious to do by hand and impossible to do from memory.
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.
Something that notices when the page or its security headers change without authorisation, checked at least weekly, as the customer's browser received them.
The honest answer is that your acquiring bank decides, and it turns on one thing: where the card fields live.
| Your setup | Card fields are | Usually |
|---|---|---|
| WooCommerce with a gateway on the page | On your own site | in scope |
| Custom or headless build | On your own site | in scope |
| Magento, Stripe Elements embedded | In an embedded frame on your page | depends on your acquirer |
| BigCommerce with its own checkout | On the platform | reduced, ask them |
| Shopify hosted checkout | On Shopify | usually 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?
Tracking checks need nothing installed. This does, and the reason is uncomfortable.
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.
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.
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.
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.