August 10, 2026
gm, builders! Here’s your roundup of this week’s insights.
Highlights
-
Privy Wallet Clustering
-
Filter by Data Source
-
Allowlists for Token-Gated Forms
-
Revenue and Volume by Ad Platform
-
Improved API, MCP, CLI Coverage
-
Historical Wallet Profiles API
-
Delete Profile Properties and Labels API
-
Reading List
Privy Wallet Clustering
The latest Web SDK now automatically links Privy linked wallets in one call: pass the Privy user object and the SDK identifies every linked wallet and groups them into a wallet cluster.
For apps using Privy embedded wallets, identify(user) reads every wallet linked to the Privy account and tags each one with the same DID, so they cluster into a single user. The primary wallet the user is active on is used for attribution.
Are you using Privy? Upgrade to the latest SDK or learn more about the Privy integration .
Filter by Data Source
The dashboard now supports a Data source filter, available on the Overview, Activity, and Users pages. You can now better understand cross-platform data from web to mobile on a single view.
Use the data source filter to segment your key metrics and KPIS by where the data actually came in, such as web , mobile , or onchain . The filter makes it easy to compare KPIs between web and mobile platforms or separate onchain and server-side events from web traffic.
Thanks for reading Onchain Growth Insights by Formo! Subscribe for free to receive new posts and support my work.
Allowlists for Token-Gated Forms
You can now restrict a form to a list of wallet addresses you upload as a CSV. Useful for private alphas or any form where the target audience is an allowlist you already hold. Available for both EVM and Solana.
Your list never leaves your device. Your browser turns the CSV into a bloom filter, a compact bit array that answers “is this address on the list?” without containing the addresses.
Get started with allowlists .
Revenue and Volume by Ad Platform
Revenue and Volume are now available in the Ads chart, so you can see which campaigns produce revenue rather than clicks. Both Revenue and Volume are attributed per event, classified at ingest from the click ID or a paid utm_medium .
Grouping by ad platform is also live on the API: pass metric_column=paid_source to revenue by metric and volume by metric , which return paid rows only, or group_by=paid_source to revenue overview .
See ad attribution to learn more.
Improved API, MCP, CLI Coverage
Most of what you can do in the dashboard, you can now do from the API, the MCP server, and the CLI. Every dashboard action reachable by a coding agent means Formo is agent-ready: point Claude or Cursor at the MCP server and it can query your analytics, manage boards and alerts, and manage wallet profiles for you.
-
MCP : 8 new tools, including
execute_saved_chart,reorder_charts, and the profile write tools for updating properties, upserting and deleting labels, and importing wallets. -
API : 4 chart routes (reorder, move, duplicate, and saved-query execution) are now in the reference with their required permissions.
-
CLI :
@formo/cli1.3.0 supports the latest additions and changes
Browse the MCP tools and the API reference to learn more.
Historical Wallet Profiles API
Historical wallet data is now available on the API and the CLI, in addition to the wallet profile page.
Pass a timestamp to a profile read and Formo returns the stored enrichment snapshot closest to that instant, so you can reconstruct net worth, holdings, and app positions as they stood before a campaign, an airdrop, or a churn event.
See the Profiles API and CLI docs for reference.
Delete Profile Properties and Labels API
Profile properties can now be deleted through the API. Send null as a property value to unset it, in the same call where you set others. Every key you do not mention is left untouched.
A deleted property reads as null everywhere: profile reads, the Users table, search, and filters such as notEmpty .
Labels gain a dedicated delete endpoint and MCP tool, which remove a label outright rather than marking it deleted at a past timestamp with _is_deleted .
See update properties and delete label .