Scaling Web 3 attribution and measurement
How thirdweb and Base make matters (relatively) easy
The tools which I contemplate are similar to an engraving on copper plate from which may be taken a great number of impressions exactly alike. -Eli Whitney, inventor of interchangeable parts
The pioneer in what we now call internet analytics was a company called Urchin1 (rebranded as ‘Google Analytics’ following their acquisition), which was started by an underfunded and ragtag crew more typical do the late 1990s startup scene, way before million-dollar ‘seed’ rounds and MBAs bloviating on LinkedIn.
Attribution and user measurement barely existed at all, as most sales didn’t happen online, and anyhow there was no way to feed that result into that period’s primitive ad networks. Instead, you had ‘analytics’: the measurement of what the user did on your website, with some crude notion of user identity, tied to recently-invented cookies, and that’s about it.
Web 3 is in a similarly nascent state.
How Spindl does attribution (and soon, analytics) is analogous to Urchin ingesting server logs: we index subgraphs of the relevant blockchain, threading together events to generate a coherent user journey. In the same way that Urchin/Google Analytics combined server logs with a smattering of client-side events, Spindl ingests both onchain Web 3 and off-chain Web 2 events as an input to attribution, dashboarding, and everything else.
By providing thirdweb clients with a standard and comprehensive menu of smart contracts, not only is it much easier for developers to build onchain, it’s also much easier for companies like Spindl to work with those developers.
Onboarding a new attribution client at Spindl is relatively effortless to the developer or advertiser—often they have no code to integrate at all—but can be onerous to Spindl. We have to map their real-world business—game-play actions or complex financial transactions—to what’s happening on their deployed smart-contracts. Given the embryonic state of smart-contract development and the lack of standards there, that can often be a data science puzzle that takes many hours to decipher.
Infrastructure providers like thirdweb change that entire dynamic. By providing their clients with a standard and comprehensive menu of smart contracts, not only is it much easier for developers to build onchain, it’s also much easier for companies like Spindl to work with those developers.
Another Google Analytics analogy presents itself here: you know how when you set up a new Wordpress or Webflow site, the CMS asks you for your Google Analytics ID (often of the form UA-XXXXX2)? And it all somehow magically works, because Wordpress automatically fires all the right Google events at every point in the website, and your analytics just work by default? That’s exactly what’s like to use thirdweb and Spindl together: we’ll know where all the important events in your smart contracts are happening, and we can just ingest them by default.
In order to demonstrate the ease of ingesting a thirdweb app on Spindl, we did a quick little hackathon around a game they developed in a quick, little hackathon: Web 3 Warriors. Combining thirdweb’s GamingKit, and the Unity SDK, a couple of thirdweb developers hacked up a perfectly playable game with onchain elements like wallet integration, gasless transactions, and skinned in-game NFTs. Their technical walkthrough, complete with code examples, is here.
Completely permissionlessly, we built a Spindl dashboard using only standard thirdweb contracts as a guide, calculating core metrics like retention, LTV, ARPU, and revenue splits among game actions, all without any help from thirdweb other than polite encouragement.
It was trivial to chart the game’s DAUs, mints, revenue, and game count through time (given it as a hackathon project, usage slowly died after launch).
Whether users were minting the $BATTLE token, or buying armor or weapons, by using a thirdweb smart contract, developers get a suite of tools (including Spindl) essentially out of the box.
Monetization metrics like ARPUs were also simple to calculate (units are in the in-game currency), again thanks to thirdweb’s standard library of contracts.
After a a decent amount of early adoption, users churned out after the game’s novelty and the media cycle waned (without active re-engagement, most apps suffer debilitating churn).
There’s of course a third player in this analysis: Base, the new L2 incubated by Coinbase. How did they fare?3
The game generated about 1.6 Eth of Base transactions, and about 1 Eth in L1/Ethereum transactions (the fee split over time is interesting in its volatility). The transaction plot mirrored the usage plot more or less, as you’d expect.
A Spindl dashboard for Base, instead of having metrics by inbound channel like a typical attribution graph, would have these same metrics by pivoted by developer. We founded Spindl thinking it would be mostly developers trying to quantify their marketing channels; instead, we’ve had everyone from NFT marketplaces to Defi bridges asking where they’re sending users and value across the blockchain. Ultimately, everyone is a slice of the user journey, looking either upstream or downstream (or both).
thirdweb and standardized contracts made this very easy.
Eventually however, just like Urchin ingesting server logs now seems like a throwback to a cruder era, this business of Spindl chasing around events onchain to figure out the relevant ones will be considered primitive and anachronistic. Smart-contract developers will one day emit attribution events from their onchain transactions, just like mobile developers fire events via SDKs to their Web 2 attribution platforms like AppsFlyer.
Doing so will be an integral part of shipping to mainnet for any developer worried about growth; the marketing machinery simply won’t work without it. Infrastructure providers like thirdweb will code attribution into their contracts as a matter of course, just like Wordpress includes Google Analytics by default. Before that happens though, Spindl and other Web 3 marketing companies will have to prove the value of doing so to developers. “It’s early.”
Follow us for more on Web 3 marketing and measurement.
The ‘UTM’ parameters that still populate URLs even now stand for ‘Urchin Tracking Module’: they had to encode meta-data in the URL, for lack of alternative ways to pass state from one website to another. Twenty plus years later, we can ponder blockchain alternatives to sharing state across apps.
Like UTM, this is another Urchin Easter egg: UA originally stood for ‘Urchin Account’ (now Google claims it means ‘Universal Analytics’).
High-level views of user activity across an ecosystem—NFT liquidity across aggregators and marketplaces, bridging behavior across chains—is something we’re actively working on. We founded Spindl thinking developers needed to look up-funnel, and found almost as many onchain entities worried about what’s happening downfunnel from them.