Here is a text-only summary and technical breakdown designed for a post on Coder Legion.
Modern digital analytics and ad tracking face massive conversion data loss due to ad-blockers, browser privacy features like Safari ITP, and network instability. Relying solely on standard client-side tracking tags leads to incomplete dataset reporting, broken attribution models, and inefficient marketing spend.
To solve this challenge, we built an open-source extension for Adobe Experience Platform (AEP) Tags (formerly Launch) that merges client-side pixel tracking with server-side conversion delivery.
Key Architectural Pillars
- Dual-Track Execution: Captures events directly in the browser via TikTok's client-side library while simultaneously firing a parallel server-side payload to TikTok's Business Events API endpoint using asynchronous network calls.
- Cross-Channel Event Deduplication: Every event invocation automatically resolves or generates a shared RFC 4122 v4 UUID event identifier. This matching identifier is attached to both the client-side call and the server-side payload, allowing TikTok’s processing engine to merge redundant hits seamlessly and avoid double-counting conversions.
- In-Browser PII Normalization & Hashing: Privacy regulations and API specifications require that personally identifiable information (PII) such as email addresses, phone numbers, and external user IDs are hashed before transmission. The extension normalizes user input (stripping whitespace and forcing lowercase) and executes SHA-256 hashing directly inside the client engine using the browser's native Web Crypto API, backed by an optimized JavaScript fallback for legacy environments.
- Single Page Application (SPA) Resilience: Modern JavaScript frameworks do not reload the page on route changes. The extension monkey-patches the browser's native History API routes (pushState and replaceState) and attaches popstate listeners to automatically capture virtual pageview events without requiring manual custom code triggers for every page navigation.
- Fault-Tolerant Execution Pipeline: Unhandled tracking exceptions should never halt other analytics or tag management rule executions. All client-side calls are wrapped in robust error handling, script loading is bound to a strict 5-second timeout, and server-side API requests enforce a 10-second request timeout to guarantee non-blocking promise resolution.
Project Package Structure Overview
The extension is structured according to the official Adobe Extension Development Kit (SDK) specifications:
- Manifest Configuration: Maps all underlying JavaScript modules, action definitions, and user interface views for global configuration and rule building.
- Core Action Libraries: Separate execution files handling script injection, standard event processing, custom event parsing, user identification calls, and manual SPA pageview triggers.
- Data Element Resolvers: Individual interface files allowing tag managers to map values dynamically from their existing Adobe data layer.
- Utility Modules: Lightweight functions handling client-side SHA-256 hashing, UUID v4 generation, SPA URL listeners, and console/badge debugging helpers.
- User Interface Views: HTML and JavaScript extension views leveraging Adobe's Extension Bridge script to capture configuration settings and provide data element pickers.
- Automated Test Suites: Comprehensive unit testing using Jest to validate data resolution, PII hashing correctness, API payload formatting, and timeout fallbacks.
How You Can Contribute & Support
Maintaining enterprise tracking software requires continuous updates to support changing privacy standards, browser updates, and API version upgrades.
We are inviting developers, martech engineers, and analytics specialists to participate in the project. You can help by testing the codebase in your tag management sandboxes, contributing bug fixes or feature requests on GitHub, or supporting the project through GitHub Sponsors to help fund our upcoming Adobe Exchange Marketplace certification and server-side Edge Network implementation.