What you get
Enrichment writes three datasets, all queryable in the SQL editor and joined together incontact_360.
- Wallet metrics
- Activity summary
- NFT holdings
One row per wallet in
user_onchain_metrics:Derived scores
Two fields are computed rather than fetched. Both are heuristics, useful for ranking and segmentation, not accounting.Engagement score (0–100)
A weighted blend of recent activity, capped so no single signal dominates:
A wallet with 20+ transactions, activity most days, a few collections, and a five-figure portfolio approaches 100. A dormant wallet trends toward zero.
Estimated LTV
A weighted blend biased toward realized value:churn_risk is not an enrichment field. It’s derived at query time in contact_360 from last_activity_at: low within 30 days, medium at 30–60, high beyond 60. Enrichment supplies the activity timestamps that drive it.Supported chains
Onchain Suite reads wallet and on-chain activity directly from each network, so your audiences and automations work wherever your users are.EVM
Ethereum · Base · Arbitrum · OP Mainnet · Polygon · zkSync · BNB Chain · Avalanche · Gnosis · Celo · Scroll · Sei · Kaia · Flow EVM · Hyperliquid · Arc · Robinhood Chain · ADI Chain
Non-EVM
Solana · Bitcoin · Tron · Aptos · Sui · Starknet
Cosmos
Sovren (
sovr-1) and other Cosmos (CometBFT) chains, tracked natively for on-chain events and wallet balanceseth-sepolia, base-sepolia-testnet, and solana-devnet).
Coverage depth varies by network. EVM chains and Solana return the full picture, portfolio value, NFT holdings, activity, and the derived engagement score and LTV. Cosmos chains contribute on-chain events (licenses, activation, rewards, governance, see Contract-Based Flows) and wallet balances that feed segments and automations.
When enrichment runs
1
On profile view (automatic)
Opening a contact profile that has a wallet triggers enrichment if it’s never been enriched or is more than 7 days stale. This keeps active profiles fresh without any work from you.
2
On project-settings save (automatic)
Saving project settings that include contract addresses enriches the holders of those contracts in the background.
3
On demand
Refresh a specific wallet, your contacts, or a contract’s holders whenever you need current numbers.
Enriching on demand
Three ways to enrich beyond the automatic paths:
Enrichment is asynchronous, the request returns as soon as the work is queued. Progress is visible as a live queue count, and the workspace reports itself idle once everything has drained. Each wallet’s
last_enriched_at advances when its refresh completes, so you can also tell per wallet.
Enrichment jobs are deduplicated per wallet and chain, so enqueuing the same wallet twice in quick succession won’t double-spend credits.
Syncing holders
Enrichment refreshes wallets you already have. Sync does the other half: it discovers the current holders of your configured contracts and adds the new ones as contacts, growing your audience from on-chain reality. Run it from the dashboard whenever you want to pull in holders you don’t have yet. Owner, Admin, or Editor can start a sync. A sync runs in two phases. First it reads the current holders of every contract you’ve configured and, for each holder that isn’t already a contact, adds a wallet contact and records that contract balance, this is where new wallets enter your audience. Then it enriches, refreshing metrics for the wallets in the run, both the ones you already had and the ones just discovered. While it runs you can watch two live counts: how many wallets are being processed, and how many brand-new contacts have been discovered and added. Discovery never changes existing contacts, and it stops adding once you reach your plan’s contact limit.Sync vs enrich: the credit difference
Both pull from indexed on-chain data, but they cost very differently, and the difference is deliberate.Reach for Sync to pull in holders you don’t have yet, it’s cheap because it looks up the holder list once per contract. Reach for Enrich when you need each wallet’s portfolio, activity, and scores refreshed, which is where the per-wallet credit cost lives. Discovery adds contacts without spending per-wallet credits; the enrich phase is what draws down your budget.
Cost and limits
Enrichment consumes wallet-data credits, up to 4 per wallet, covering balances, transactions, NFTs, and portfolio. The portfolio call is skipped when it isn’t needed, so a wallet often costs fewer. Each paid plan includes a monthly allowance:
Once the allowance is exhausted, new enrichment is blocked, though the SQL editor and your already-enriched data keep working. On Pay as you go, enrichment draws from your balance at $10 per 10,000 credits (about 4¢ a wallet) rather than a monthly allowance.
Recent results are held briefly, a few minutes for transactions, a little longer for balances, portfolio, and NFTs, so re-enriching the same wallet within those windows reuses the fresh data and doesn’t re-spend credits, unless you explicitly force a refresh.
Using enriched data
Query it in SQL
user_onchain_metrics, wallet_activity_summary, nft_holdings, and the joined contact_360 view.Build audiences
Whales, dormant holders, high-LTV wallets, save any query as a segment.
Score and prioritize
Engagement score feeds contact health and churn signals.
Personalize messages
Reference wallet traits as merge variables in campaigns.
contact_360, where enrichment is already joined to identity and email engagement:
Campaign merge variables for on-chain fields (like
portfolioValueUsd) render from contact metadata, not directly from the enrichment tables. The enrichment tables feed analytics and segmentation through contact_360; for per-recipient personalization, the value needs to be present in the contact’s metadata.
