2019-2021

Bio-Techne

Digital Marketing Analytics Specialist. Publicly traded biotech, NASDAQ TECH.

verified
  • Analytics infra
  • Ecommerce
  • Attribution
  • Paid media

Bio-Techne sold reagents and instruments through 7 sites, 200K+ productsSource note 4, in English and Chinese, against $84M+ ecommerceSource note 2 in revenue that finance already reported on.

The reporting existed. What did not exist was a measurement layer anyone could reason about. Each site had grown its own tagging, so the same event meant different things depending on which property fired it, and no one could say which channel had earned a given order. For a catalogue that size, that is not a reporting inconvenience: it is the reason marketing spend cannot be argued about with evidence.

  • The analytics infrastructure across the portfolio: tagging, the data layer, and attribution.
  • Demand generation across multiple business units, including the paid budget.
  • The BI channels that carried the numbers into reporting.

The tagging layer was a single Google Tag Manager container defined as JSON rather than assembled by hand in the interface: 170 tags, 182 triggers, 67 varsSource note 3. One container across all the properties, which is what made an event mean the same thing everywhere. Defining it as a file also meant it could be reviewed, diffed, and moved between environments, instead of being a configuration that only existed in a console.

On top of that sat a last-hit attribution model covering 28M annual, 380K+ pagesSource note 1, across two languages.

Measurement layer data flowEvents from the English and Chinese ecommerce properties, plus cross-domain journeys, feed one tag manager container defined as a file. The container writes a consistent data layer, which feeds a last-hit attribution model, which feeds the data lake and the business intelligence reporting that supports revenue reporting.Sites, EnglishSites, ChineseCross-domainOne container,defined as a fileConsistentdata layerLast-hitattributionData lake and BI,revenue reporting
One container is the load-bearing choice. Per-site tagging is faster to change and guarantees the same event stops meaning the same thing.

Last-hit is a deliberately simple model and worth defending. A multi-touch model would have been more sophisticated and less trusted, because at that point nobody agreed on what a touch was worth. A simple model that everyone understood, applied consistently across every property, gave the organisation a number it would actually use. Sophistication can come after agreement, not before it.

The output fed data lake BI channels for return on investment and customer journey reporting, which is where it connected to the revenue reporting finance was already producing.

  • One container, defined as a file. Rejected per-site containers. Per-site tagging is faster to change and guarantees the events drift apart.
  • Last-hit attribution over multi-touch. Chose the model that would be trusted and used over the model that would be more defensible in theory and argued about in practice.
  • Cross-domain tracking before campaign reporting. A journey that crosses two properties and looks like two sessions makes every downstream report wrong.
  • Both languages in one model. Kept the English and Chinese properties inside a single attribution scheme rather than reporting them separately, so the portfolio number was real.

The container replaced manual per-site setup across the portfolio, saving 65+ hoursSource note 5 of it.

Organic grew 20% YoYSource note 6. On paid, a $40K/mo, 118% conv volumeSource note 7 increase, run on the attribution the same infrastructure produced, which is the part that made the paid result arguable rather than asserted.

I would have written down what each event meant before building the container, not after. The definitions ended up encoded in the JSON, which is durable but only readable by someone who reads JSON, and a plain-language event dictionary would have saved every later conversation about whether two numbers meant the same thing. I would also have set a review cadence on the tagging, because a container this size drifts the moment it stops being anyone's job.