Systems Library · measurement

Attribution Contract

One routing table, identical tracked links every time, a CI check that fails when a CTA would arrive unattributed, and a funnel that reports NOT_MEASURED instead of inventing a rate.

v1.0.0 Free · MIT 18 passing tests stable zero dependencies

At a glance

OutcomeOne routing table, identical tracked links every time, a CI check that fails when a CTA would arrive unattributed, and a funnel that reports NOT_MEASURED instead of inventing a rate.
RequirementsNode.js 18 or newer a decision about what your channels are called no dependencies
PlatformsNode.js 18+ · macOS · Linux · Windows · Docker · GitHub Actions · GitLab CI
Setuplow — 20-30 minutes to declare your channels, longer if your existing tags need reconciling
Validationnpm test — 18 tests
DeliveryDirect download from this site. No account, no email, no checkout.
LicenceMIT — read the terms
UpdatesSemver, published as new versions. Nothing auto-updates.

Get it

Every file is served directly from this site. Download the tree, or read it first — the README is the documentation and the tests are the specification.

mkdir -p attribution-contract && cd attribution-contract
for f in README.md LICENSE CHANGELOG.md package.json src/attribution.mjs src/routing.mjs src/cli.mjs examples/routing.example.json examples/links.example.json examples/sample-output.txt test/attribution.test.mjs; do
  mkdir -p "$(dirname "$f")" && curl -fsSL -o "$f" "https://stratumpraxis.com/systems/packages/attribution-contract/$f"
done
node --test test/*.test.mjs

Files

Before you rely on it

Read the Known limitations section of the README before you wire this into anything that matters. Every one of these systems is a floor, not a proof: it catches the failures it was written to catch, and it will not catch a failure nobody has described to it yet.

There are no testimonials, results or revenue claims on this page because there is no verified purchase or customer outcome to report for it.