Conversions
Conversions are the heart of how Specify works. Every campaign is measured on whether real users actually use your product — not on impressions, clicks, or proxies.
This page covers how we define a conversion, how we attribute it, and how you can audit every one.
The conversion window
Once we’ve served an impression to a user, we watch all of their wallets for the next 14 days.
If within that window we see them convert to your product onchain, we attribute that conversion to the impression. This window is long enough to capture the research cycles typical of web3 users, who often don’t act immediately, but short enough that attribution stays meaningful.
Defining a conversion
Before a campaign launches, we have a conversation with you about what counts as a conversion.
For most projects this is simple: the main onchain action you’d expect from a new user. A first swap on a DEX, a first deposit into a lending protocol, a first mint.
- Standard conversions — the primary action that defines “this person is now a user”
- Niche conversions — more specific actions (e.g. a swap above a certain size, a deposit into a particular pool) can be accommodated, though they typically result in a higher cost per conversion. We discuss this after a test campaign once we have real performance data
Getting this definition right matters more than most advertisers expect. Too broad and you’ll pay for activity that doesn’t represent real adoption. Too narrow and you’ll miss users who genuinely converted through a slightly different path.
View-through attribution
Because we’re watching wallets, not waiting for clicks, we can attribute view-through conversions — users who saw the ad, didn’t click, but later came to your product and converted.
This matters enormously in web3. Security-conscious DeFi users are trained not to click ads — clicking unknown links is one of the fastest ways to get drained. They’ll see your ad, remember the name, and navigate to your product directly through a bookmark or a trusted aggregator.
Click-based attribution misses these users entirely. View-through attribution captures them.
No tracking pixels required
For the majority of web3 projects, there’s no technical implementation needed on your side.
We don’t require tracking pixels, SDKs, or JavaScript tags. Conversions happen onchain and we observe them directly from the chain. You run your campaign, we handle the measurement.
Offchain data integrations
Some products have important activity that doesn’t happen fully onchain — centralised exchanges, hybrid platforms, or products with significant offchain user flows. For these cases we can do a custom integration to consume your offchain data and use it for attribution.
The simplest setup is an API we can call to fetch a paginated list of transactions from your product. What we need:
- Wallet address performing the transaction
- Transaction hash (or an equivalent unique identifier)
- Timestamp
With that, we can match activity against impressions the same way we do with purely onchain data.
How much data we need
- Minimum — 45 days of historical data before the campaign start date, plus daily data during the campaign. The 45 days lets us apply exclusion targeting so we don’t waste impressions on users already active in your product.
- Ideal — full historical data. This is the most complete dataset and lets us properly distinguish returning inactive users (lapsed, worth re-engaging) from brand new acquisitions (never touched your product before) — a distinction that meaningfully changes how we report campaign performance.
Attributing USD value
To attach a USD value to each conversion — useful for ROAS calculations and for our own pricing logic — we can call third-party APIs, usually ones you already use, to convert transaction data into a dollar amount.
This is set up during campaign onboarding and runs automatically once live.
Wallet grouping
Most active web3 users operate multiple wallets — a hot wallet for daily use, a hardware wallet for size, sometimes a separate wallet per chain or per protocol.
Specify groups a user’s wallets together so that one conversion can include multiple transactions across multiple wallets.
Practically, this means:
- Lower costs for you — you’re not charged multiple times for what is really one user converting
- More volume attributed — activity that would otherwise look like separate unrelated events is correctly consolidated into a single conversion
Auditability
Every conversion is listed in your campaign dashboard.
For each converted user you can see:
- The impression that triggered attribution
- All wallets grouped to that user
- Every transaction that made up the conversion
- Timestamps, transaction hashes, and USD values
Nothing is hidden behind a black-box attribution model. If we charged for a conversion, you can see exactly what it was and verify it onchain yourself.