RUM community plugins

A personal community project under @kyletaylored, MIT licensed.Not provided or supported by Datadog.

Privacy, consent and security

These plugins get installed on checkout pages, so they have to be safer by default than hand-written tracking code. Every rule below lives in the shared core, not in individual adapters, and the conformance suite fails a release that breaks one.

No payment data, ever

Adapters read the platform's event payloads, never DOM inputs. Card numbers, CVV, expiry and billing addresses are stripped in the core even when a platform payload includes them — the fixtures deliberately carry a card_number so that stripping is exercised rather than assumed.

PII is off by default

Consent

When a consent adapter is present it runs first and sets trackingConsent = 'not-granted'before the SDK starts, which stops RUM collecting anything, not just this plugin's actions. Commerce adapters additionally hold their own events, including setUser, until consent is granted.

Nothing is queued. Events that happen while the decision is pending are dropped, not buffered, so a later grant never backfills pre-consent activity. One consequence worth stating plainly: a declined visitor sends nothing at all, so RUM cannot report opt-in rate. A consent plugin describes only the categories of sessions that opted in.

Size limits

Supply chain

Declared footprint

Each adapter declares the platform globals it reads, the events it subscribes to, the storage keys it writes and the RUM APIs it calls. The gallery renders that as a permissions screen, debug mode prints it to the console, and the conformance suite compares it against what the adapter actually did during its fixture run — so an adapter cannot quietly call an API it did not declare.

What the tests actually check

RuleChecked by
Action names are in the schema, with the right family prefixConformance suite, every adapter
Attribute names and types match the schemaConformance suite
No blocked key is ever sent, on actions or on setUserConformance suite plus core unit tests
Email and name appear only when opted inConformance suite
items[] capped, strings truncatedConformance suite plus core unit tests
One purchase per transaction_id, across a reloadConformance suite plus a real-browser test
Nothing leaves the browser before consentA real-browser test with the intake intercepted
The declared footprint matches the runConformance suite plus the manifest check