Media Activation: Delivery & Changelog

A changelog system built from scratch for delivery publishing. It records 500 events a day across more than 5 million rows, and it removed the CM360 round-trip for over 100 internal agency users.

Media Activation publishes line item placements to external systems, starting with CM360. The internal media agency team had no way to see what changed in the delivery view without opening CM360 directly, so every discrepancy became a support request. More than 100 users were affected.

The existing changelog was a plain append log. It had no query management, no categorization, and no structured output the UI could consume. Extending it was risky, because the old system had accumulated complexity, so I built a new one. It is 80% net-new and shares only the ActiveRecord integration layer and the table schema. Reusing the schema avoided a data migration, and owning the logic gave full control over query management and event structure. The tradeoff is some duplication with the old system that will need consolidating later.

The core is a before-and-after snapshot. Before a save, the system captures a filtered hashmap of the tracked fields. After the save, a change calculator compares old and new values key by key and produces a structured diff. It includes only tracked fields, which keeps the JSONB payload lean. The diff then flows into a categorization layer, and the server formats it into the structure the UI needs. The diff logic lives in one place, so event grouping stays consistent. Virtual list pagination keeps long histories from slowing the render.

The delivery tab sits on an open-source client-side state chart library that couples the UI tightly to the backend. A full refactor would have risked regressions across every existing delivery flow, so I worked alongside the library and kept contact with its surface to a minimum.

Since launch it has recorded 500 events a day and more than 5 million rows in production, and it removed the CM360 round-trip for over 100 internal agency users.