Making UTM compliance the default with a self-service governance app
Misconfigured tracking links were eroding attribution and turning Ops into a manual dependency. Designed a PowerApp that generates standardized campaign names, validates querystrings in real time, and enforces URL construction rules at the point of creation.
Designed the governance model, enforcement rules, and edge-case handling, and built the application.
The problem
Spreadsheet-based generators offered no real-time validation and broke on common edge cases — Adobe Analytics CID handling, hash fragment positioning, delimiter order. The issue was not training or discipline; the governance framework had no enforcement layer, so it collapsed under operational pressure.
Context
Marketers building campaign links had inconsistent understanding of URL composition, producing malformed parameters and inconsistent naming. Errors were frequent and hard to catch before launch, so Operations became the manual bottleneck for link creation.
Illustrative diagram
- 01Spreadsheet generators, no validation
- 02Malformed UTMs and inconsistent naming
- 03Ops as a manual dependency
- 04Attribution errors caught after launch
- 01Controlled taxonomy at the point of creation
- 02Real-time validation and auto-correction
- 03Full self-service for marketers
- 04Every link logged and auditable
What I did
How I approached it
- 01Missing enforcement, not missing documentationDiagnosed why the governance framework kept collapsing under operational pressure.
- 02Made the compliant path the fastest pathSo governance didn't depend on anyone's discipline.
- 03Catalogued real edge cases firstCID requirements, hash fragments, and delimiter order, taken from live links before any validation logic was written.
- 04AI as a logic accelerator, not a decision-makerTranslated governance rules into PowerApps formulas, generated nested conditionals and regex validation, and simulated failure modes — while rule design and enforcement thresholds stayed mine.
What I built
Supporting materials
Build detail


Diagrams and figures are representative. Proprietary architecture, internal system names, and confidential customer details are omitted or generalized.