
Pipeline Attribution for B2B Crypto

Key takeaways
Tie each campaign to CRM deals and to onchain milestones. Count "integration live" and "volume routed" as pipeline stages next to your CRM stages, not as a separate report.
Split credit into sourced pipeline (the campaign created the opportunity) and influenced pipeline (the campaign touched an open opportunity). Report both.
Formo attributes web sessions and wallets. CRM stages, deal values, and contacts come from your CRM. Join the two on wallet address, user ID, or company domain.
Untagged channels (events, partner intros, grants) need a capture habit: a tagged link, a referral code, or a required CRM field.
Single-touch models on each wallet are a good start. Account-level multi-touch across a buying committee belongs in your CRM or warehouse.
Pipeline attribution for B2B crypto ties each campaign to the deals it created and to the onchain milestones those deals reach. It answers two questions: which campaigns started or moved real opportunities in your CRM, and which of those opportunities became a live integration, a deployed contract, or routed volume. You need web and wallet data, CRM stages, and onchain events in one view.
What is pipeline attribution in B2B crypto?
Pipeline attribution in B2B crypto gives credit for sales opportunities to the marketing and business development (BD) activity that created or moved them. Crypto adds a last mile: the deal is only real when the customer ships onchain. So the model links three things: the campaign touch, the CRM opportunity, and an onchain milestone such as a mainnet deploy.
This applies to any crypto company that sells to other teams: RPC and data infrastructure providers, wallet SDKs, custody, oracles, bridges, and protocols that grow through BD integrations.
Term | Meaning | System of record |
|---|---|---|
Touch | One interaction with a campaign: a visit from a tagged link, a booth scan, or an intro | Web analytics, event app, CRM |
Opportunity | A qualified deal with a stage and a value | CRM |
Sourced pipeline | Opportunity value where the campaign was the first touch for the account | CRM, with campaign data |
Influenced pipeline | Opportunity value where the campaign touched the account while the deal was open | CRM, with campaign data |
Onchain milestone | Testnet deploy, mainnet deploy, first volume, retained volume | Chain data, product analytics |
See the glossary entries for touchpoint and onchain attribution.
Why is B2B crypto attribution harder than SaaS attribution?
B2B crypto attribution is harder because the buyers are spread across many tools and identities. Developers read docs without logging in, decision makers meet you at conferences, and the final proof is a transaction, not a signed form. Pseudonymous wallets, offline intros, and long integration cycles break the simple form-fill model that SaaS teams use.
Four problems show up again and again:
Offline channels carry weight. Conferences, side events, and partner intros start many deals and leave no referrer.
The buying committee is wide. A BD lead, an engineer, a founder, and sometimes a DAO vote touch one deal.
The outcome is onchain. A signed contract does not mean usage. A deploy and routed volume do.
Cycles are long. An integration can take months, so weekly reporting misses most of the effect.
What is the difference between sourced and influenced pipeline?
Sourced pipeline is the value of opportunities that a campaign created: the campaign was the first recorded touch before the deal opened. Influenced pipeline is the value of opportunities that a campaign touched at any point while the deal was open. One deal can count as influenced by many campaigns, but it is sourced by only one.
Sourced | Influenced | |
|---|---|---|
Question it answers | Which campaigns start new deals? | Which campaigns help open deals move forward? |
Credit per deal | One campaign | Many campaigns |
Typical winners | Hackathons, X threads, partner intros, inbound docs traffic | Conferences, case studies, technical content, dinners |
Risk | Under-credits late-stage work | Double counts if you add influenced totals together |
Rule of thumb | Use it for budget allocation | Use it for content and event planning |
Write your rules down before you report. Formo itself does not apply a lookback window to wallet first touch: it uses the wallet's full history. So any time limit for sourced credit is a CRM rule that you choose.
How do you tie campaigns to pipeline and onchain outcomes?
You tie campaigns to pipeline in six steps. Define stages that mix CRM and onchain milestones. Tag every link. Capture the web and wallet layer with an SDK. Record onchain milestones as events. Join the data on a shared key. Then report sourced and influenced pipeline from one table.
Define one stage list. Put CRM stages and onchain milestones in one ordered list: lead, qualified, technical evaluation, testnet deploy, mainnet deploy, first volume, and revenue (contract signed and first invoice paid). Each stage needs one owner and one source of truth.
Tag every campaign link. Use UTM parameters on every X post, newsletter, deck, and event QR code. Give partners a referral code. The Formo web SDK detects
ref,referral,refcode,af, andreferrerquery parameters by default, and you can add your own.Capture the web and wallet layer. Install the SDK on your site, docs, and app. It captures page views and wallet events (connect, signature, transaction) with referrer, UTM, and referral context. Call
identifywhen a developer connects a wallet or signs in, and pass your own user ID if you have one.Record onchain milestones as events. Add the customer's or your own contracts in Formo to ingest their events, and use those events as funnel steps. If integrators append ERC-8021 builder codes to transactions, Formo parses them from calldata with no extra setup. A contract event inherits UTM and referrer data only when the same wallet had an SDK session in the last hour. Otherwise it counts as Direct, so an integrator's backend or deployer wallet usually shows no campaign. For milestones that live in your backend, such as "API key created", send a custom event with the server SDK.
Join on a shared key. Store the integrator's deployer wallets and your user ID on the CRM account. In Formo, you can write a CRM stage back onto a wallet profile as a custom label through the API, with an optional past timestamp for backfills. To go the other way, export events, users, and wallet profiles to Google Cloud Storage or Amazon S3 on a schedule.
Report from one table. Build one row per opportunity with first touch, all touches, stage dates, and onchain milestone dates.
Which campaigns fit which tracking method?
Each B2B crypto channel needs its own capture method, because only some channels produce a clickable link. Digital channels such as X, content, and newsletters can carry UTM tags into your web analytics. Physical and relationship channels such as conferences and partner intros must be logged in the CRM, ideally with a tagged link or referral code as a backup.
Channel | How to capture the touch | What to record | Common gap |
|---|---|---|---|
Conferences and side events | Badge scan or form into CRM; QR code with UTMs on the booth | Event name as campaign; contact on the account | Scans without a follow-up meeting count as noise |
X and Farcaster | UTM-tagged links; founder and BD posts tagged too | Post or thread as | In-app browsers can drop the referrer |
Technical content and docs | UTM on syndicated posts; organic search via referrer | Docs pages viewed before the first meeting | Docs readers stay anonymous until they connect or sign in |
Partner intros | Required "intro source" field in CRM; partner referral link | Partner name and intro date | Intros by DM never reach the CRM |
Grants | Application form with a campaign field; grantee wallets stored on the account | Grant round, grantee deployer wallets | Grant spend counted as marketing without an outcome |
Hackathons | Bounty page with UTMs; submission form asks for the team's wallets | Team wallets and repo; later deploys from those wallets | Teams use new wallets after the event |
Paid social and paid search also work, with or without UTMs. Formo maps ad click IDs to channels: gclid, gad_source, and msclkid to Paid Search, and fbclid, ttclid, twclid, li_fat_id, and rdt_cid to Paid Social.
How do you handle multi-touch attribution across a buying committee?
Handle multi-touch attribution at the account level, not the person level. Collect every touch from every contact and wallet that belongs to the account, then apply your model in the CRM or warehouse. Product analytics gives each wallet a first and last touch; the account model then combines those wallets with offline touches from the CRM.
In Formo, attribution is single-touch per user: first touch or last touch. Each wallet profile keeps first-touch and last-touch referrer, referral, and UTM values over the wallet's full history. Wallets that share a device cookie or the same identify user ID are linked, so one engineer's test wallets can be grouped into one cluster. Each wallet still keeps its own first and last touch, and visits before the first wallet connect stay on the anonymous visitor, not on the wallet. So combine the wallets of one account in your CRM or warehouse.
A practical committee model:
Map people and wallets to the account. Contacts by email domain, wallets by user ID or shared deployer wallet.
Start with a simple rule. Linear or position-based multi-touch attribution is enough.
Keep offline touches. A dinner or an intro is a touch, even if no analytics tool saw it.
What does Formo measure and what comes from the CRM?
Formo measures the web, wallet, and onchain side: visits, sources, wallet connects, transactions, contract events, and the attribution of each wallet. The CRM holds the commercial side: accounts, contacts, opportunities, stages, deal values, and offline touches. Pipeline attribution needs both, joined on a key that both systems store.
Data | Source of truth | Join key |
|---|---|---|
Visits, referrers, UTMs, referral codes, click IDs | Formo | Anonymous ID, wallet address |
Wallet connects, signatures, transactions | Formo | Wallet address |
Contract events and builder codes | Formo | Wallet address, contract |
Accounts, contacts, opportunities, stages, deal value | CRM | Email domain, account ID |
Offline touches (events, intros, dinners) | CRM | Contact, account ID |
Account to wallet mapping | CRM field, or Formo label via API | Wallet address, user ID |
Formo does not import CRM stages on its own. If you want them in Formo, push them as labels with the profiles API.
What mistakes break pipeline attribution?
Most failures come from missing joins, not from the wrong model. Teams track web traffic well, then lose the thread when a developer moves from docs to a wallet, or when a deal moves from email to a contract deploy. The fixes are simple habits. Apply them on every campaign.
No wallet on the account. Ask for deployer wallets during technical evaluation.
Untagged founder posts. The most-read posts often carry no UTMs.
Summing influenced pipeline. Influenced totals overlap. Never add them across campaigns.
Stopping at "contract signed". Track mainnet deploy and retained volume too.
Short funnel windows. Formo funnels default to a 2 hour conversion window. For integration journeys, set a window in days or weeks, or use an any-order funnel.
Frequently asked questions
Can Formo show pipeline value by campaign?
No, not on its own. Formo attributes web sessions, wallets, and onchain activity to channels, referrers, referral codes, and UTMs. Pipeline value and CRM stages come from your CRM. Join them in the CRM or a warehouse, or push stages into Formo as wallet labels through the API.
How do I attribute a partner intro?
Make "intro source" a required CRM field on new opportunities. Give each partner a referral link too, so self-serve visits from the partner's audience carry the code.
Should I use first-touch or last-touch for B2B crypto?
Use both, for different questions. First touch shows which campaigns start relationships. Last touch shows what moved the account just before the deal or the deploy. For account-level reporting, add a simple multi-touch rule in your CRM.
How do I count a hackathon team that deploys months later?
Collect the team's wallets at submission and store them on the CRM account or as a Formo label. When those wallets later deploy or send transactions to your contracts, you can match them back to the hackathon in your CRM or warehouse.
What onchain milestones should count as pipeline?
Use milestones that prove usage: testnet deploy, mainnet deploy, first volume, and volume that holds after 30 or 90 days. Keep the definitions fixed.
Do I need a lookback window for sourced pipeline?
That is your choice, and you set it in the CRM. Formo wallet profiles use the full history of each wallet for first and last touch, with no lookback window. Funnels use the date range you select.


