Estimated reading time: 5 minutes
Introduction
Does Marketing celebrate the ROI of a campaign while Product sees a funnel that does not convert? That is exactly the problem that SaaS analytics platforms fail to solve.
Marketing measures acquisition with GA4 or Matomo. Product measures conversion with Mixpanel or Amplitude. Both make decisions about the same user and the same investment, but using different tools and data that do not fit together. The consequence: nobody can accurately determine whether acquisition is profitable when considering the actual experience within the product.
At Datadope, we solve this with Marketing Analytics based on OpenTelemetry and the W3C Baggage standard. The idea is simple: carry campaign attribution and the conversion funnel through the same telemetry pipeline, until they are linked to the actual order in the transactional backend.
- Single source for Marketing and Product: both teams consult the same dashboard using the same telemetry.
- Traceable attribution through to revenue: each UTM travels from the ad click to the order span.
- Funnel measured step by step: drop-off points and time per stage available with the same dimensions used by Marketing..
Figure 1: Overview of the Marketing Analytics dashboard.
1. The Marketing↔Product silo problem
When each team looks at its own tool, three things always escape your attention:
- Nobody has the combined picture. Marketing looks at GA4 and advertising platforms; Product looks at Mixpanel or Amplitude. These are different tools and data that do not fit together, and discussions about the same user take place across two different screens: investment decisions are made without knowing what happens to the user afterwards within the product.
- The figures are estimated. GA4 samples large queries and applies its own data-driven attribution model, whose logic you cannot audit. Figures vary between exports and do not reconcile with the revenue recorded in the backend.
- The data leaves your infrastructure. With GDPR, DMA and regulated sectors (banking, healthcare, public sector), relying on SaaS services that send telemetry to their own infrastructure is becoming increasingly unacceptable.
The solution: build a single source of truth anchored to the transactional backend, using the same OpenTelemetry pipeline you already use for observability.
2. Architecture: the complete stack
The objective is to connect the user’s click on the ad with the completed order in the backend, eliminating silos between Marketing and Product.
The components:
- OpenTelemetry Browser SDK: instruments the frontend, captures funnel events and parses UTM parameters on landing.
- W3C Baggage: the standard that propagates marketing attributes in HTTP headers through to the final microservice.
- Observability Stack (OTel Collector + Prometheus + OpenSearch + Jaeger + Grafana): the Collector enriches and flattens telemetry; Prometheus and Jaeger manage metrics and traces, and OpenSearch manages logs. Grafana unifies everything.
Figure 2: Architecture with OpenTelemetry and W3C Baggage.
3. Implementation
OpenTelemetry Baggage is what makes all of this possible. It allows UTMs to be injected into HTTP headers and to travel automatically through all microservices, without modifying them one by one.
3.1. Parsing UTMs and referrer on landing
When initialising the client, we extract the five standard UTM parameters from the URL and the document.referrer only if it is external. The values are cached in memory to be injected into each subsequent span in the session. A shared SpanProcessor reads those values and adds them to each new browser span. Result: every event in the session is tagged with its originating campaign without modifying each component. Propagation to the backend only takes place when the values exist, to avoid cluttering traces from sessions without a campaign.
3.2. Linking the order to events in the application backend.
Every time the website makes a request, we automatically attach the user’s source data (UTM parameters such as the originating platform and campaign, the referring page and the device type). Thus, when the purchase is completed, the checkout microservice collects that information and links it directly to the order record.
The conversion span (funnel.place_order) is additionally enriched with the product breakdown—names, quantities and prices as three positionally aligned strings—avoiding an explosion of indexed attributes with large baskets:
The Go service does not need to know anything about marketing: it simply reads from the baggage what was already travelling in the HTTP header.
4. The Operational Impact
A. Marketing and Product using the same dashboard.
The same dashboard serves both teams. Marketing reads campaign KPIs, originating platforms and conversion rate. Product reads the detailed funnel, drop-off points and time per stage. Everything is powered by the same OpenTelemetry telemetry.
The organisational silo is resolved technically by making both teams look at the same table. Marketing can ask “which TikTok campaign converts best in Chrome?”; Product can ask “in which browser does the add-to-basket step take longest?”; both consult the same view and the answers are consistent with each other, because there are no two incompatible data sources to reconcile.
Figure 3: Friction in the purchase process.
B. CAC and ROI anchored to the transactional backend
El atributo marketing.utm_source se inyecta en el mismo span.SetAttributes del microservicio de checkout que registra el importe del pedido.
Marketing y Producto miran el mismo panel. Al cruzar el revenue real con el gasto declarado por Marketing, el CAC deja de ser una estimación de la plataforma de anuncios y pasa a ser una cifra basada en nuestra instrumentación.
Figure 4: Finance dashboard.
5. The business impact
Beyond dashboards, this has a direct economic impact:
- Less investment wasted on traffic that does not convert: you identify campaigns that bring interested traffic but get stuck at a specific step in the funnel before the impact on revenue becomes serious.
- Decisions based on data that reconciles with the ERP: marketing KPIs use the same source that records sales. The arguments about “which report should we trust?” come to an end.
- No vendor lock-in or international transfer: because it is based on the OpenTelemetry standard, the data resides in your infrastructure. It simplifies the privacy policy compared with SaaS solutions.
Figura 5: Funnel de Conversión.
Conclusion
Modern observability is not about accumulating more tools: it is about bringing data that currently lives fragmented across parallel tools into a single source of truth. Applying OpenTelemetry and W3C Baggage to the problems of digital marketing and product analytics simultaneously is what allows Marketing and Product to stop looking at different dashboards and start making decisions based on the same data
If your Marketing team and your Product team are still arguing about which tool to look at before making a decision, there is a better way to do it.
Alejandro Naranjo.