
Account-Based Attribution for Crypto

Key takeaways
Credit the organization that buys, such as a DAO, a fund, or a protocol team that pays from a Safe, not a single wallet. One account has several people and many wallets.
Group wallets into accounts only with evidence. Shared login and device links are deterministic. CRM and self-reported company data are inferred, so label them that way.
Account first touch is the earliest touch by any member. Account last touch is the last touch before the opportunity was created.
Report sourced pipeline and influenced pipeline as two separate numbers. Never add them.
Onchain actions from a Safe usually look like Direct traffic. The account roll-up recovers the campaign that started the deal.
Account-based attribution for crypto credits marketing to the organization that buys, not to a single wallet. That organization is a protocol team, a DAO, a fund, or a company, and it often acts onchain through a Safe multisig with several signers. You group the wallets and people of each account, collect every touch across them, and report which campaigns sourced or influenced the account's pipeline.
What is account-based attribution in crypto?
Account-based attribution assigns campaign credit to an account instead of a person or a wallet. In crypto, an account is the organization behind a set of addresses and people: a protocol team, a DAO, a fund, or a company. You join web touches, wallet activity, and CRM records per account, then measure which campaigns created or moved pipeline.
First-touch attribution asks which campaign brought a visitor. Account-based attribution asks which campaigns brought an account to a deal. That matters when a head of engineering, a treasury signer, and a founder must all agree.
The approach is common in B2B. In 6sense's 2024 Account-Based Marketing Benchmark (published March 12, 2025; 1,332 B2B marketers across two surveys), 64% said their teams have an ABM program or a broader target-account approach. Crypto infrastructure companies sell the same way: RPC providers, wallet SDKs, custody, data platforms, and protocols that sell integrations to other protocols. Resolving wallets into accounts is covered in our guide to account intelligence for crypto. This article covers what to do with those accounts in attribution.
Why does wallet-level attribution break for B2B crypto?
Wallet-level attribution gives credit to one address. A B2B deal involves many people, devices, and wallets, and the wallet that pays is often a Safe that never visited your site. So wallet-level reports split one deal into unrelated journeys and miss the touch that started it.
A common pattern for an infrastructure company:
A developer at a lending protocol reads your docs after a conference talk. They have no wallet connected.
Two weeks later, their head of growth clicks a LinkedIn ad and connects a personal wallet in your demo.
A treasury signer pays from the protocol's Safe.
Wallet-level reports show three stories and no account journey. Multi-wallet behavior makes this worse. A YouGov survey of 1,000 active crypto users in the US and UK, run for the 2025 State of Onchain UX report by Reown and Nansen, found that 62% manage two or more wallets (Decrypt, April 30, 2025). The Safe Ecosystem Foundation counted 61.11 million Safe accounts at the end of Q1 2026 in its Q1 2026 report (published April 23, 2026).
What counts as an account for a B2B crypto company?
An account is the organization that signs the contract or the transaction. In crypto it can be a registered company, a protocol team, a DAO, or a fund. Each type shows up onchain in a different way, so decide per type which addresses and people belong to it before you count any touch.
Account type | How it acts onchain | People who see your marketing | Good evidence to link a wallet |
|---|---|---|---|
Protocol team | Deployer wallets, team multisig, treasury | Engineers, BD lead, founders | Login with identify, signed message |
DAO | Governance contracts, Safe treasury | Delegates, grant committee | Governance post that names the Safe |
Fund | Fund Safe, custody, trading wallets | Partners, analysts, operations | CRM record from a call, form entry |
Company with embedded wallets | Wallets it creates for its users | Product and growth team | Your app login (user ID) |
Exchange or custodian | Pooled deposit and hot wallets | BD and listings team | Never link pooled addresses |
A Safe is a smart account (a smart contract wallet) with multisig logic: a set of owners and a threshold of owners that must confirm each transaction. Owners can be EOAs (externally owned accounts), other smart accounts, or passkeys. Treat the Safe as the account's onchain identity and its owners as members of the buying group. The owner list is public onchain, but an owner address does not tell you who the person is. Confirm that with the team.
How do you group wallets into accounts?
Group wallets into accounts with an evidence ladder. Use deterministic links (a shared login or the same device) to join wallets to a person. Use CRM, form, or self-reported data to join people to an account, and mark those links as inferred. Never merge on weak signals such as shared funding sources or timing.
Evidence | Strength | Use it to |
|---|---|---|
Same user ID from your login, sent with identify | Deterministic | Join wallets to one person |
Same device cookie (anonymous ID) | Strong | Join wallets to one person |
Signed message linking a wallet to a company | Deterministic | Join a wallet to an account |
Work email domain in the CRM | Inferred | Join a person to an account |
Wallet given on a form or a call | Inferred, self-reported | Join a wallet to an account |
Safe owners matched to known team wallets | Inferred | Join a Safe to an account |
Shared funding source, similar timing | Weak | Research only, never merge |
In Formo, wallets link only through the anonymous ID cookie (same browser or device, across sessions and days) and the user ID you set with identify. Formo does not use IP addresses, device fingerprinting, onchain transfers, or funding sources. These are person-level links. To join people to an account, write your CRM account ID as a custom label on each wallet, plus a second label for the evidence source, such as crm_email or self_reported. Formo accepts custom labels from the dashboard and the Profiles API, and you can filter users by them.
Do not send the CRM account ID as the identify user ID. Clusters group wallets through shared user IDs, so every team member would merge into one "user". Keep the user ID for the person and the label for the account.
How do you attribute campaigns to accounts?
To attribute campaigns to accounts, collect the touches of every wallet and contact in the account, sort them by time, and pick the account's first touch and its last touch before the opportunity. Then tag each opportunity as sourced or influenced per campaign. The steps work with any CRM.
List target accounts. Give each protocol, DAO, or fund a CRM account ID and a type.
Identify people. Call identify with your own user ID after login, so each person's wallets join.
Map wallets to accounts. Write the account ID and evidence source as labels on each known wallet, including the Safe.
Collect touches. Pull each wallet's first-touch and last-touch fields. Add offchain touches from the CRM, such as events and calls.
Roll up to the account. Take the earliest touch by any member, and the latest touch before the opportunity.
Classify pipeline. The campaign with the account's first touch before the opportunity sourced it. Campaigns that touched the account while the opportunity was open influenced it.
Report by campaign. Show sourced pipeline, influenced pipeline, and won revenue, with the account count behind each number.
On Formo wallet profiles, first touch and last touch use the wallet's full history, with no lookback window. Each field (each UTM parameter, the referrer, the referral code, and the ad click) is resolved on its own. So a wallet's first utm_source and first referrer can come from different visits. Pick one field, such as utm_campaign, as the account's channel of record, and use it the same way every quarter.
Report sourced and influenced pipeline as two separate numbers at the account level. For how to define each one and handle a buying committee, see pipeline attribution for B2B crypto.
How do account-level first touch and last touch work?
Account-level first touch is the earliest touch by any person or wallet in the account. Account-level last touch is the latest touch before a set milestone, usually opportunity creation. Compute both across all members, then store them on the account record in your CRM.
Example (illustrative dates and campaigns): a lending protocol buys an RPC plan.
Date | Member | Touch | Source |
|---|---|---|---|
Aug 4 | Developer, no wallet yet | Visited docs from a conference QR code |
|
Aug 19 | Head of growth, personal EOA | Clicked a LinkedIn ad, connected in demo | Paid Social |
Aug 21 | Sales | Opportunity created | CRM |
Sep 2 | Head of growth, same wallet | Opened a newsletter link | |
Sep 20 | Protocol Safe | Paid onchain | Direct |
The conference sourced the deal: it is the account's first touch. The LinkedIn ad is the account's last touch before the opportunity. The newsletter influenced the deal, because it touched the open opportunity. If your rules also give influence credit to touches before the opportunity, write that rule down and apply it every quarter.
Two details matter. First, the developer's visit is anonymous until they connect or log in, and Formo keeps pre-connect touches on the anonymous profile, not on the wallet. Add the developer to the account in your CRM when they sign up. Second, a Formo contract event inherits the attribution of the same wallet's SDK session from the last hour, else it is Direct. A Safe that signs in its own interface usually shows as Direct. Only the account roll-up connects that payment to the conference.
What mistakes should you avoid?
Most errors in account-based attribution come from merging wallets that do not belong together, or from crediting campaigns for touches that came from noise. Both make weak campaigns look strong. Check your model against these four rules before you share a report with sales or leadership.
Merging on weak evidence. Exchanges fund thousands of unrelated wallets, so shared funding is not proof of one account.
Linking pooled addresses. Exchange deposit wallets, routers, bridges, and bundlers belong to no single account.
Counting the Safe as a person. A Safe is the account's wallet. Its signers are people.
Crediting bots. Formo labels known crawlers and automated clients with the device type Bots but keeps them in visitor counts. Filter them out with the Device filter.
How does Formo support account-based attribution?
Formo covers the wallet and web side of account-based attribution: identity, touches, and onchain activity for each wallet. Your CRM keeps the accounts, contacts, and opportunities. You join the two with custom labels on the Formo side and exports into the CRM or warehouse.
Identity. Wallets join to a person through the anonymous ID cookie or your identify user ID. The Clusters tab on the Users page shows multi-wallet groups.
Account labels. Write custom labels one wallet at a time, or up to 100 per batch request.
Touches. Wallet profiles store first-touch and last-touch UTM parameters, referrer, referral code, and ad click. Google and Microsoft click IDs map to Paid Search. Meta, TikTok, X, LinkedIn, and Reddit click IDs map to Paid Social.
Onchain activity. Add your contracts in project settings, and their events appear on wallet profiles next to web activity.
Export. Export a segment as CSV or query the Profiles API. Data sync to Google Cloud Storage or Amazon S3 is in development; contact Formo support for access.
Formo does not create CRM accounts or compute sourced and influenced pipeline. Do the account roll-up in your CRM or warehouse, where the opportunity dates live.
Frequently asked questions
What is account-based attribution?
Account-based attribution assigns marketing credit to an organization instead of one person or wallet. It joins the touches of every member of the account and measures which campaigns created or moved its pipeline.
How is it different from wallet-level attribution?
Wallet-level attribution credits the touches of one address. Account-based attribution combines all people, wallets, and Safes of one organization, so a deal that starts with a developer and closes with a treasury signer is one journey.
Can I attribute a Safe multisig to a campaign?
Yes, through the account. A Safe usually signs in its own interface, so its onchain actions rarely carry campaign data. Link the Safe to the account, then use the account's first touch.
How do I link wallets to a company?
Use deterministic links where you can, such as a login with identify or a signed message. Add CRM or self-reported links as inferred, with a label for the source. Never merge wallets on shared funding or timing alone.
Does Formo use a lookback window for first touch?
No. Wallet profiles use each wallet's full history for first touch and last touch. Funnel breakdowns use the selected date range.
Related articles
Glossary: identity resolution, wallet clustering.


