[ Case study ]
The utility's customer-portal analytics used client-side tags that fired before consent and occasionally captured account numbers in URLs; legal flagged it, marketing lost most measurement, and nobody could say which tags fired what, where.
CLIENT a regional utility company — FOCUS Move the boundary server-side
Representative examplesEvery case study in this library is an illustrative composite of the kind of engagement we deliver — written to show our method and standards, not to name clients.
The utility serves households across one region, and its customer portal — billing, usage data, outage reporting — is treated internally as an essential service with an uptime expectation to match. Marketing sits beside that portal, promoting efficiency programs and tariff switches, but the portal team ships on its own cadence and answers to its own risk review. After legal flagged what client-side tags had been doing, most measurement was simply switched off, and the marketing team spent a year planning campaigns with almost no data. The culture had become: when in doubt, untag it.
The utility's customer-portal analytics used client-side tags that fired before consent and occasionally captured account numbers in URLs; legal flagged it, marketing lost most measurement, and nobody could say which tags fired what, where.
We proposed moving the boundary server-side: a first-party tagging layer receives portal events, enforces consent state, and strips identifiers before anything reaches a vendor, so the browser never talks to third parties directly. URL and payload scrubbing would run by default with an allowlist legal reviews and signs, making the account-number class of incident structurally impossible rather than policed. The layer deploys redundantly with health checks that alert operations, and its failure degrades measurement — never the portal. The point was to give marketing durable measurement while giving legal something it could actually audit: one door, one policy, one log.
Just as important is what we ruled out, and why:
A first-party server-side tagging layer receives portal events, enforces consent state, and strips identifiers before anything reaches a vendor — the browser never talks to third parties directly.
URL and payload scrubbing runs with an allowlist reviewed by legal, so the account-number class of incident is structurally prevented.
The tagging layer is deployed redundantly with health checks that alert ops, and its failure degrades measurement, never the portal.
Delivered by the growth pod — analytics specialist over 8 weeks, with working increments reviewed with the client every week.
Obstacle
The first billing day after cutover pushed the tagging layer past its autoscaling ceiling, adding latency to event delivery while the portal itself stayed unaffected.
Handled: No customer impact reached the portal, which was the design's whole test; we raised the instance limits, added a load test against billing-day volume to staging, and set alerts below the new ceiling.
Obstacle
Legal's allowlist review stalled when counsel asked to see every vendor destination and payload shape — a reasonable request we had scoped as a one-week item.
Handled: We split the review: destinations first so enforcement could go live, payload shapes second, and produced the audit log format counsel wanted so future reviews read a report, not raw traffic.
The headline: all portal measurement flowing through the first-party tagging layer with consent enforced and identifiers stripped — Client-side exposure → server-side enforcement, read from Legal review sign-off. A second check: vendor-bound requests carrying account identifiers since cutover at 0.
Marketing plans campaigns again, and the portal team stopped seeing the marketing stack as a threat after the first quarter passed with zero vendor-bound identifiers and no portal incidents. Legal moved from gatekeeper to auditor: the redaction report arrives monthly, gets read, and raises no follow-ups. The phrase too risky to touch has left the vocabulary, replaced by a one-page measurement policy that says what is collected, what is refused, and who approves a change — and the answer to who approves is a person, not a shrug.
The result was read from Legal review sign-off against the pre-engagement baseline over the stated window, with a guardrail check on vendor-bound requests carrying account identifiers since cutover. Where platform-reported numbers and business outcomes differ, this record says which layer it is quoting.
What we would do differently
We would load-test the tagging layer against the portal's billing-day peak in staging — the first billing day taught us the autoscaling limits, and the fix was easy but the surprise wasn't.
[ Related service ]
[ Related builds ]
11 disconnected properties 1 with attributionSingle property reporting campaign-to-test-drive journeys per rooftop
Monday spreadsheet ritual one standing reportLeadership reviewing from the live report with definitions on record
[ Next step ]
Next case study