Phase 7: analytics rebuilt from the raw events every night
Dashboards now read aggregates only, and a nightly job reconciles those aggregates against the raw events so drift repairs itself.
Dashboards now read aggregates only, and a nightly job reconciles those aggregates against the raw events so drift repairs itself.
The 10:1 rule, minimum sizes for common materials, and why the quiet zone matters more than the size itself.
One stores the data itself and can never change. The other stores a link we resolve. The right choice depends on where it gets printed.
Bot filtering, unique-visitor definitions and people who scan and then close the page. The gap is normal — here is what causes it.
A naming convention that survives contact with a real campaign, and the rule about not overwriting parameters already on the URL.
How unique visitors are counted with a daily-rotating salted hash, and what that deliberately makes impossible.
Codes placed on escalators, codes with no reason to scan, codes cropped past the quiet zone. All avoidable.
They solve the same problem in different physical situations. Sometimes the answer is both, pointing at the same destination.