Changelog
Changelog
Changelog
We ship new features, fixes, and improvements to Formo every week.
Changelog
We ship new features, fixes, and improvements to Formo every week.
Here are this week's highlights:
New Contract Events Pipeline
Improved Ask AI
Expanded Filter Operators and Breakdowns
Demo Project for New Workspaces
Improvements and Fixes
New Contract Events Pipeline
The contract events pipeline received a major upgrade this week. Setup is faster, you have more granular control over which contracts feed your analytics, and onchain activity is now attributable to the builder behind each transaction.

Recommended contracts. The Contracts page now surfaces contracts your project already interacts with based on transaction events but hasn't tracked yet. Add recommended contracts to get automatic transaction decoding and contract events.
Contract ingestion toggle. Each contract gets more granular ingestion controls. Each contract defaults as disabled to keep the contract's ABI available for transaction decoding while excluding it from event ingestion. Enable it for your core contracts to ingest its contract events.
Builder code attribution. Contract events now automatically extract the builder code from the source transaction, so you can attribute activity to the builder that made it.
Performance and reliability improvements. Pipelines spin up instantly. Automatic retries, dead-letter queues, and at-least-once delivery guarantees at any scale.
Available everywhere. The new contract events pipeline support every major EVM chain.
Improved Ask AI
Ask AI is now smarter, faster, and more reliable. The chat is easier to read, you can keep typing while it's still answering, and answers come back more quickly with greater accuracy.

Behind the scenes, the Formo Agent is now powered by the latest frontier model. The result is a deeper understanding of your data, sharper handling of complex questions, and cleaner charts.
Expanded Filter Operators and Breakdowns
Filters across Formo now support a richer set of operators.

String filters on Overview, Activity, Funnels (including segment filters on Boards), breakdown tabs (Sources, Pages, Events, Locations, Wallets, Chains) now accept
contains,starts with, andends withalongside the existing equals operators.Numeric filters on retention gain
notEqualsand>=/<=aliases, and Overview metric filters pick up>=and<=on the generic dimension chain.The Activity chart also gains a breakdown dropdown, so you can split the events time-series by channel, device, location, referrer, UTM, builder code, and more, using the same breakdown taxonomy as Overview.
The same operators and breakdowns are also available via the Formo API.
Demo Project for New Workspaces
New workspaces without an active project now see a fully populated demo project with realistic mock data across all of the analytics surfaces.

Explore the product end-to-end before you install Formo, including Overview, Activity, Funnels, Retention, Insights, Wallet Intelligence, Ask Formo, boards, and segments.
Improvements and Fixes
Expanded channel classification to detect ads, webmail, and mobile app referrers, so more sessions land in a meaningful attribution bucket instead of "Direct".
Added an optional
_is_deletedtombstone to the label upsert API, so backfilled imports can express "label removed at past time T" and point-in-time retention drops the wallet in the correct historical week.Added DefiLlama as a price oracle for token USD conversion, broadening coverage for long-tail tokens.
Added a user-configurable default timezone in account settings, so reports, exports, and charts render in your local timezone instead of UTC by default.
Released
@formo/cli1.0.2 with expanded coverage of alerts, boards, charts, contracts, events, profiles, and segments, so you can drive the full Formo API from your terminal or AI agents.Improved the Users page by hiding enrichment columns that have no data, so the table fits more useful columns on screen.
Improved Tinybird MCP reliability with reconnect and retry on closed connections, so long-running Ask Formo sessions no longer fail mid-answer.
Improved identity-graph clustering by splitting edge materialization into 8 hash shards, so clustering jobs finish reliably for the largest projects instead of timing out.
Improved
project_userslatency with a single-scan rewrite oflinked_addresses, speeding up the Users page for projects with many linked wallets.Fixed the activity feed in the profile drawer inheriting the Users table's page number, so opening a profile now always shows the latest event instead of an older page.
Fixed step reordering in the Form Builder silently dropping the welcome step.
Fixed a number-formatting bug where integers ending in zero (100, 2500) were corrupted to (1, 25).
Fixed event deduplication dropping events that arrived without a
message_idby stamping a UUID at ingest.Fixed the Insights weekly email occasionally failing to send, so digests now land reliably in your inbox.
Hidden the Transactions per Wallet card when no wallets have transacted, so empty states no longer clutter the Overview.
Added a master "All" row to the Create API Key dialog that toggles Read or Write across every scope at once, preserving the Read/Write invariants.
Added support for Robinhood Chain Testnet (chainId 46630).
Platform security and performance improvements.
Here are this week's highlights:
New Contract Events Pipeline
Improved Ask AI
Expanded Filter Operators and Breakdowns
Demo Project for New Workspaces
Improvements and Fixes
New Contract Events Pipeline
The contract events pipeline received a major upgrade this week. Setup is faster, you have more granular control over which contracts feed your analytics, and onchain activity is now attributable to the builder behind each transaction.

Recommended contracts. The Contracts page now surfaces contracts your project already interacts with based on transaction events but hasn't tracked yet. Add recommended contracts to get automatic transaction decoding and contract events.
Contract ingestion toggle. Each contract gets more granular ingestion controls. Each contract defaults as disabled to keep the contract's ABI available for transaction decoding while excluding it from event ingestion. Enable it for your core contracts to ingest its contract events.
Builder code attribution. Contract events now automatically extract the builder code from the source transaction, so you can attribute activity to the builder that made it.
Performance and reliability improvements. Pipelines spin up instantly. Automatic retries, dead-letter queues, and at-least-once delivery guarantees at any scale.
Available everywhere. The new contract events pipeline support every major EVM chain.
Improved Ask AI
Ask AI is now smarter, faster, and more reliable. The chat is easier to read, you can keep typing while it's still answering, and answers come back more quickly with greater accuracy.

Behind the scenes, the Formo Agent is now powered by the latest frontier model. The result is a deeper understanding of your data, sharper handling of complex questions, and cleaner charts.
Expanded Filter Operators and Breakdowns
Filters across Formo now support a richer set of operators.

String filters on Overview, Activity, Funnels (including segment filters on Boards), breakdown tabs (Sources, Pages, Events, Locations, Wallets, Chains) now accept
contains,starts with, andends withalongside the existing equals operators.Numeric filters on retention gain
notEqualsand>=/<=aliases, and Overview metric filters pick up>=and<=on the generic dimension chain.The Activity chart also gains a breakdown dropdown, so you can split the events time-series by channel, device, location, referrer, UTM, builder code, and more, using the same breakdown taxonomy as Overview.
The same operators and breakdowns are also available via the Formo API.
Demo Project for New Workspaces
New workspaces without an active project now see a fully populated demo project with realistic mock data across all of the analytics surfaces.

Explore the product end-to-end before you install Formo, including Overview, Activity, Funnels, Retention, Insights, Wallet Intelligence, Ask Formo, boards, and segments.
Improvements and Fixes
Expanded channel classification to detect ads, webmail, and mobile app referrers, so more sessions land in a meaningful attribution bucket instead of "Direct".
Added an optional
_is_deletedtombstone to the label upsert API, so backfilled imports can express "label removed at past time T" and point-in-time retention drops the wallet in the correct historical week.Added DefiLlama as a price oracle for token USD conversion, broadening coverage for long-tail tokens.
Added a user-configurable default timezone in account settings, so reports, exports, and charts render in your local timezone instead of UTC by default.
Released
@formo/cli1.0.2 with expanded coverage of alerts, boards, charts, contracts, events, profiles, and segments, so you can drive the full Formo API from your terminal or AI agents.Improved the Users page by hiding enrichment columns that have no data, so the table fits more useful columns on screen.
Improved Tinybird MCP reliability with reconnect and retry on closed connections, so long-running Ask Formo sessions no longer fail mid-answer.
Improved identity-graph clustering by splitting edge materialization into 8 hash shards, so clustering jobs finish reliably for the largest projects instead of timing out.
Improved
project_userslatency with a single-scan rewrite oflinked_addresses, speeding up the Users page for projects with many linked wallets.Fixed the activity feed in the profile drawer inheriting the Users table's page number, so opening a profile now always shows the latest event instead of an older page.
Fixed step reordering in the Form Builder silently dropping the welcome step.
Fixed a number-formatting bug where integers ending in zero (100, 2500) were corrupted to (1, 25).
Fixed event deduplication dropping events that arrived without a
message_idby stamping a UUID at ingest.Fixed the Insights weekly email occasionally failing to send, so digests now land reliably in your inbox.
Hidden the Transactions per Wallet card when no wallets have transacted, so empty states no longer clutter the Overview.
Added a master "All" row to the Create API Key dialog that toggles Read or Write across every scope at once, preserving the Read/Write invariants.
Added support for Robinhood Chain Testnet (chainId 46630).
Platform security and performance improvements.
Here are this week's highlights:
User Attribution Filters
Retention Cohorts by Label
Historical Label Backfills
Profiles Batch API
Improvements and Fixes
User Attribution Filters
The Users page now has an attribution mode toggle on the Wallets, Clusters, and Visitors tables, so you can switch between Any, First touch, and Last touch to see how a wallet looks under each attribution model without leaving the page.

This makes it easy to compare a campaign's first-touch reach against the wallets that actually converted under last-touch, and to spot the difference between users your channels introduced versus the ones they closed.
Retention Cohorts by Label
Retention cohorts now support filtering by user labels, so you can measure retention for the segments that actually matter to you.

You can send a custom label like open_interest, define a cohort to wallets that carry that label (e.g. open_interest > 1000), and watch how they retain over time, instead of being limited to event-based cohorts.
Carry-forward is built into the retention logic, so a label written once (or sporadically) is correctly applied to every subsequent week until the next event for that key.
Historical Label Backfills
The Create Label API now accepts an optional timestamp on each label write, so you can record labels at a point in the past instead of always at server time:
Current time: omit
timestampand the label is recorded at the moment you send it. This is the right default for live signals you're sending as users earn them.Historical data: pass an ISO-8601
timestampto record the label at a specific point in the past. This lets you backfill historical readings (for example, last quarter'sopen_interestsnapshot) so retention cohorts can evaluate each label value at the correct point in time.
This pairs especially well with cohorts based on numeric thresholds, where the value you cared about on a user's signup day may not be the value they carry today.
Profiles Batch API
The Profiles API now has batch endpoints for user labels and properties, so you can upsert up to 100 wallets in a single request instead of one wallet per call. Perfect for a nightly data syncs and cron jobs.

Both endpoints return partial-success results, so a single bad row doesn't fail the whole batch.
Improvements and Fixes
Added CSV export for analytics overview charts on Countries, Pages, Sources, Devices, Wallets, and Chains.
Added links from overview page charts to the users page so you can click any row to drill into the underlying wallets matching selected filters.
Added page size selector to the Activity and Users tables.
Improved accuracy for visitor and session counts on overview charts so they match the headline KPIs, using shared first-touch attribution model.
The Channel filter on the Users page now segments wallets by the channel that brought them in on their very first session, matching first-touch attribution on the Overview Channel chart.
Show full country names in the legend and tooltip of the Countries chart, in place of two-letter ISO codes.
Added
afandreferrerto the Web SDK's default tracked referral parameters so common affiliate and referrer query strings are captured out of the box.Added a workspace ID field to workspace settings, so support can debug your issues faster.
Improved Ask AI error diagnostics so transient failures are actually debuggable, with richer error context captured for our team.
Improved Ask AI response quality with reorganized system prompts and tighter SQL and chart guardrails.
Improved Ask AI tool-call resilience so mid-stream errors fall back gracefully instead of breaking the response.
Improved user clusters query performance.
Fixed Boards chart pagination scrolling to the wrong chart.
Fixed the date-picker disappearing on Boards.
Fixed the missing template title and description on the Dashboard template.
Fixed user count inflation in overview charts caused by anonymous ID churn from automated bots.
Platform security and performance improvements.
Here are this week's highlights:
User Attribution Filters
Retention Cohorts by Label
Historical Label Backfills
Profiles Batch API
Improvements and Fixes
User Attribution Filters
The Users page now has an attribution mode toggle on the Wallets, Clusters, and Visitors tables, so you can switch between Any, First touch, and Last touch to see how a wallet looks under each attribution model without leaving the page.

This makes it easy to compare a campaign's first-touch reach against the wallets that actually converted under last-touch, and to spot the difference between users your channels introduced versus the ones they closed.
Retention Cohorts by Label
Retention cohorts now support filtering by user labels, so you can measure retention for the segments that actually matter to you.

You can send a custom label like open_interest, define a cohort to wallets that carry that label (e.g. open_interest > 1000), and watch how they retain over time, instead of being limited to event-based cohorts.
Carry-forward is built into the retention logic, so a label written once (or sporadically) is correctly applied to every subsequent week until the next event for that key.
Historical Label Backfills
The Create Label API now accepts an optional timestamp on each label write, so you can record labels at a point in the past instead of always at server time:
Current time: omit
timestampand the label is recorded at the moment you send it. This is the right default for live signals you're sending as users earn them.Historical data: pass an ISO-8601
timestampto record the label at a specific point in the past. This lets you backfill historical readings (for example, last quarter'sopen_interestsnapshot) so retention cohorts can evaluate each label value at the correct point in time.
This pairs especially well with cohorts based on numeric thresholds, where the value you cared about on a user's signup day may not be the value they carry today.
Profiles Batch API
The Profiles API now has batch endpoints for user labels and properties, so you can upsert up to 100 wallets in a single request instead of one wallet per call. Perfect for a nightly data syncs and cron jobs.

Both endpoints return partial-success results, so a single bad row doesn't fail the whole batch.
Improvements and Fixes
Added CSV export for analytics overview charts on Countries, Pages, Sources, Devices, Wallets, and Chains.
Added links from overview page charts to the users page so you can click any row to drill into the underlying wallets matching selected filters.
Added page size selector to the Activity and Users tables.
Improved accuracy for visitor and session counts on overview charts so they match the headline KPIs, using shared first-touch attribution model.
The Channel filter on the Users page now segments wallets by the channel that brought them in on their very first session, matching first-touch attribution on the Overview Channel chart.
Show full country names in the legend and tooltip of the Countries chart, in place of two-letter ISO codes.
Added
afandreferrerto the Web SDK's default tracked referral parameters so common affiliate and referrer query strings are captured out of the box.Added a workspace ID field to workspace settings, so support can debug your issues faster.
Improved Ask AI error diagnostics so transient failures are actually debuggable, with richer error context captured for our team.
Improved Ask AI response quality with reorganized system prompts and tighter SQL and chart guardrails.
Improved Ask AI tool-call resilience so mid-stream errors fall back gracefully instead of breaking the response.
Improved user clusters query performance.
Fixed Boards chart pagination scrolling to the wrong chart.
Fixed the date-picker disappearing on Boards.
Fixed the missing template title and description on the Dashboard template.
Fixed user count inflation in overview charts caused by anonymous ID churn from automated bots.
Platform security and performance improvements.
Here are this week's highlights:
Wallet Clusters
Filter by Channel
New Dashboard Templates
Improved Geolocation
Improvements and Fixes
Wallet Clusters
Introducing a new wallet Clusters tab on the Users page. Clusters are groups of wallets associated with a single user.
Using identity resolution, multiple wallet addresses are grouped into identity-stitched user clusters: one row per wallet cluster.

Clustering happens automatically behind the scenes with minimal setup required. Here's how clustering works:
First, an explicit
user_idfrom the SDK identify event (for example, a Privy user ID or an in-app custom user id) merges every wallet identified under it into one cluster.Then, wallets without an explicit user ID are still grouped by
anonymous_id, using the earliest-seen canonical address as the cluster key.Otherwise, the wallet stands as its own single-address cluster.
Each cluster row shows the sum of individual wallet data including net worth, socials, labels, first and last seen, volume, revenue, and demographics.
Filter by Channel
You can now filter data by channel based on a 12-channel taxonomy such as Organic Social, Paid Search, Referrals, and more.

The twelve channels are:
Channel | How it's classified |
|---|---|
Paid Search | Paid signal + search-engine referrer ( |
Paid Video | Paid signal + video-platform referrer ( |
Paid Social | Paid signal + social-platform referrer ( |
| |
Referrals |
|
Display |
|
AI | Referrer is an AI assistant (ChatGPT, Claude, Perplexity, Gemini, DeepSeek, Copilot, etc.) |
Organic Search |
|
Organic Social |
|
Organic Video | Video-platform referrer with no paid signal |
Referrers | Any other non-empty referrer not matched above |
Direct | No referrer, no UTM, no click IDs (typed URL, bookmark, stripped referrer) |
Filter by Channel works across every chart and metric on the overview page (top sources, top pages, top locations, top chains, top events, top wallets, KPIs, revenue, volume, wallets, transactions).
Learn more about Channels.
New Dashboard Templates
Three new dashboard templates are now available. Choose from the following templates when you create a custom board, to help you get started:
User Retention & Cohorts Dashboard
User Segments Dashboard
Feature Adoption Dashboard

Each template ships with prebuilt charts and SQL queries against your project's custom events so you can set up a working board more quickly. Pick a template and create your first custom board in a few clicks.
Need more help? Check out How to Build a Custom Dashboard.
Improved Geolocation
Improved country detection for sesions and users is now live with server-side geolocation. This works together with a browser-timezone fallback to improve data accuracy for users with non-default timezones and VPNs.
Audience insights, top countries, and country breakdowns across the dashboard report countries is now more accurate than before.
Analytics remains privacy-friendly: no IP addresses are logged or stored anywhere in Formo. Read more about what we collect.
This improvement is live today. No SDK upgrade is required.
Improvements and Fixes
Added dashboard template previews so you can see the charts inside a template before creating it.
Added a new Tracking Plan Generator free tool that outputs a recommended event taxonomy, property schemas, and SDK code snippets for web and mobile to help users get started more quickly.
Added page and session scopes to the Filter by Page filter, so you can fllter for both sessions that viewed page X and data for a specific page X.
Added a refresh button to the Users table so you can pull fresh data without reloading the whole page.
Improved Format SQL performance in the SQL editor, with faster formatting on large queries.
Improved the churn analysis section on the Insights page.
Fixed an edge case with Solana wallet profiling.
Minor UI and UX fixes.
Performance improvements and security fixes.
Here are this week's highlights:
Wallet Clusters
Filter by Channel
New Dashboard Templates
Improved Geolocation
Improvements and Fixes
Wallet Clusters
Introducing a new wallet Clusters tab on the Users page. Clusters are groups of wallets associated with a single user.
Using identity resolution, multiple wallet addresses are grouped into identity-stitched user clusters: one row per wallet cluster.

Clustering happens automatically behind the scenes with minimal setup required. Here's how clustering works:
First, an explicit
user_idfrom the SDK identify event (for example, a Privy user ID or an in-app custom user id) merges every wallet identified under it into one cluster.Then, wallets without an explicit user ID are still grouped by
anonymous_id, using the earliest-seen canonical address as the cluster key.Otherwise, the wallet stands as its own single-address cluster.
Each cluster row shows the sum of individual wallet data including net worth, socials, labels, first and last seen, volume, revenue, and demographics.
Filter by Channel
You can now filter data by channel based on a 12-channel taxonomy such as Organic Social, Paid Search, Referrals, and more.

The twelve channels are:
Channel | How it's classified |
|---|---|
Paid Search | Paid signal + search-engine referrer ( |
Paid Video | Paid signal + video-platform referrer ( |
Paid Social | Paid signal + social-platform referrer ( |
| |
Referrals |
|
Display |
|
AI | Referrer is an AI assistant (ChatGPT, Claude, Perplexity, Gemini, DeepSeek, Copilot, etc.) |
Organic Search |
|
Organic Social |
|
Organic Video | Video-platform referrer with no paid signal |
Referrers | Any other non-empty referrer not matched above |
Direct | No referrer, no UTM, no click IDs (typed URL, bookmark, stripped referrer) |
Filter by Channel works across every chart and metric on the overview page (top sources, top pages, top locations, top chains, top events, top wallets, KPIs, revenue, volume, wallets, transactions).
Learn more about Channels.
New Dashboard Templates
Three new dashboard templates are now available. Choose from the following templates when you create a custom board, to help you get started:
User Retention & Cohorts Dashboard
User Segments Dashboard
Feature Adoption Dashboard

Each template ships with prebuilt charts and SQL queries against your project's custom events so you can set up a working board more quickly. Pick a template and create your first custom board in a few clicks.
Need more help? Check out How to Build a Custom Dashboard.
Improved Geolocation
Improved country detection for sesions and users is now live with server-side geolocation. This works together with a browser-timezone fallback to improve data accuracy for users with non-default timezones and VPNs.
Audience insights, top countries, and country breakdowns across the dashboard report countries is now more accurate than before.
Analytics remains privacy-friendly: no IP addresses are logged or stored anywhere in Formo. Read more about what we collect.
This improvement is live today. No SDK upgrade is required.
Improvements and Fixes
Added dashboard template previews so you can see the charts inside a template before creating it.
Added a new Tracking Plan Generator free tool that outputs a recommended event taxonomy, property schemas, and SDK code snippets for web and mobile to help users get started more quickly.
Added page and session scopes to the Filter by Page filter, so you can fllter for both sessions that viewed page X and data for a specific page X.
Added a refresh button to the Users table so you can pull fresh data without reloading the whole page.
Improved Format SQL performance in the SQL editor, with faster formatting on large queries.
Improved the churn analysis section on the Insights page.
Fixed an edge case with Solana wallet profiling.
Minor UI and UX fixes.
Performance improvements and security fixes.
Here are this week's highlights:
Lifecycle Settings
At-Risk Lifecycle Stage
x402 and MPP Support
Unique Visitors
Improvements and Fixes
Lifecycle Settings
Lifecycle thresholds are now configurable per project from your project settings page.

Defaults like "Power user = 5 active days in last 30 days" don't fit every product, so you can now tune the windows for New, Returning, Power user, At Risk, Churned, and Resurrected lifecycles to match how your team defines engagement.
New At Risk Lifecycle Stage
You can now see a new At Risk lifecycle stage that flags previously engaged users whose activity has slowed but who haven't fully churned yet.
At Risk is the right lifecycle to retain them with an intervention campaign before they're gone for good, and it surfaces consistently across the Users page, Lifecycle reports, and wallet profile labels.
x402 and MPP Support for Profiles API
The Profiles API is now available to AI Agents via x402 (Base) and MPP (Tempo.) Agents can pay 0.05 USDC per request to get enriched wallet profile data with no API key required.

This unlocks pay-per-call agent access to wallet enrichment and personalization use cases based on onchain data.
Unique Visitors
Formo now tracks Unique Visitors, equivalent to GA's Active Users. Unique Visitors counts distinct anonymous_ids over the selected period, deduplicating across sessions and days.
This gives you a clean top-of-funnel KPIs alongside wallets, transactions, and revenue, and a like-for-like comparison with the visitor metric most teams already report from web analytics.
Improvements and Fixes
Added Binance verification labels, automatically tagging wallets that hold a Binance Account Bound Token so you can segment KYC-verified users.
Added a billing period selector on the Usage page so you can page through previous billing periods to inspect historical event and MAU consumption.
Added a hover dropdown for Dashboards when the sidebar is collapsed, so you can switch boards without expanding the nav.
Fixed duplicating a board so chart settings and positions are copied alongside the layout.
Improved form digest cron resilience, retrying through transient 522s from upstream origins instead of failing the run.
Performance improvements and security fixes.
Here are this week's highlights:
Lifecycle Settings
At-Risk Lifecycle Stage
x402 and MPP Support
Unique Visitors
Improvements and Fixes
Lifecycle Settings
Lifecycle thresholds are now configurable per project from your project settings page.

Defaults like "Power user = 5 active days in last 30 days" don't fit every product, so you can now tune the windows for New, Returning, Power user, At Risk, Churned, and Resurrected lifecycles to match how your team defines engagement.
New At Risk Lifecycle Stage
You can now see a new At Risk lifecycle stage that flags previously engaged users whose activity has slowed but who haven't fully churned yet.
At Risk is the right lifecycle to retain them with an intervention campaign before they're gone for good, and it surfaces consistently across the Users page, Lifecycle reports, and wallet profile labels.
x402 and MPP Support for Profiles API
The Profiles API is now available to AI Agents via x402 (Base) and MPP (Tempo.) Agents can pay 0.05 USDC per request to get enriched wallet profile data with no API key required.

This unlocks pay-per-call agent access to wallet enrichment and personalization use cases based on onchain data.
Unique Visitors
Formo now tracks Unique Visitors, equivalent to GA's Active Users. Unique Visitors counts distinct anonymous_ids over the selected period, deduplicating across sessions and days.
This gives you a clean top-of-funnel KPIs alongside wallets, transactions, and revenue, and a like-for-like comparison with the visitor metric most teams already report from web analytics.
Improvements and Fixes
Added Binance verification labels, automatically tagging wallets that hold a Binance Account Bound Token so you can segment KYC-verified users.
Added a billing period selector on the Usage page so you can page through previous billing periods to inspect historical event and MAU consumption.
Added a hover dropdown for Dashboards when the sidebar is collapsed, so you can switch boards without expanding the nav.
Fixed duplicating a board so chart settings and positions are copied alongside the layout.
Improved form digest cron resilience, retrying through transient 522s from upstream origins instead of failing the run.
Performance improvements and security fixes.
Here are this week's highlights:
Behavior Filters Based on First-Seen
Transaction Frequency Chart
Query Parameter Redaction
Sticky Referrer Tracking
Improvements and Fixes
Behavior Filters Based on First-Seen
Behavior filters now support First-seen relative time windows to make targeting much more precise.

Until now, behavior filters were limited to rolling windows ("did X in the last N days"). You can now anchor windows to each user's first-seen timestamp, so you can ask questions like:
Users who visited the Trading Competition page within 2 hours of their first session (attribute engagement directly to the campaign that brought them in).
Users who connected a wallet, deposited, and clicked "Enroll" within their first 24 hours (first-day activation funnel).
Users who came back to transact more than 7 days after first-seen (true returning users vs. same-session conversions).
Together these mean better attribution to specific campaigns, sharper onboarding activation analysis, and more targeted segments.
Learn more in the Wallet Segmentation guide.
Transaction Frequency Chart
A new transaction frequency chart on the Users page show you how often your users transact.

View the distribution of transaction counts per wallet to distinguish one-time users from power users, spot drop-off between first and second transactions, and target wallets by activity tier.
Query Parameter Redaction
You can now strip sensitive query parameters before events are stored or sent. Pass a list of query parameter names and the SDK redacts matching keys (case-insensitive) from event properties.

Learn more in the Web SDK docs.
Sticky Referrer Tracking
The Web SDK now keeps first-touch referrer sticky across an entire session, so internal navigation no longer overwrites the source that brought a user in.
This means cleaner channel reports, more accurate first-touch attribution, and no more "self-referral" noise from internal page-to-page navigation.
Improvements and Fixes
Hardened AI Insights generation so Acquisition, Activation, and Behavioral cards reliably render on the page and in the weekly email.
Improved Ask AI response quality with an eval-and-review harness, tighter prompt rules, and better date and tool-selection handling.
Extracted
volume,revenue, andpointsto typed columns on events for faster, more reliable revenue and volume queries across dashboards and the SQL Explorer.Fixed a bug with filtering by Referrer URLs.
Steered invited users to join their team's existing workspace during onboarding instead of accidentally creating a new one.
Added wallet icons (via RDNS) to the Top Wallets chart for quicker visual identification of which wallets your users are connecting with.
Standardized all destructive-action confirmation modals to a single "type the resource name to confirm" pattern across projects, workspaces, dashboards, charts, and API keys.
Added an upgrade button to the Usage page, mirroring the Billing page placement.
Upgraded
@formo/analyticsto v1.32.0 across all 17 example apps.Improved infrastructure monitoring for faster incident detection.
Performance and security improvements.
Here are this week's highlights:
Behavior Filters Based on First-Seen
Transaction Frequency Chart
Query Parameter Redaction
Sticky Referrer Tracking
Improvements and Fixes
Behavior Filters Based on First-Seen
Behavior filters now support First-seen relative time windows to make targeting much more precise.

Until now, behavior filters were limited to rolling windows ("did X in the last N days"). You can now anchor windows to each user's first-seen timestamp, so you can ask questions like:
Users who visited the Trading Competition page within 2 hours of their first session (attribute engagement directly to the campaign that brought them in).
Users who connected a wallet, deposited, and clicked "Enroll" within their first 24 hours (first-day activation funnel).
Users who came back to transact more than 7 days after first-seen (true returning users vs. same-session conversions).
Together these mean better attribution to specific campaigns, sharper onboarding activation analysis, and more targeted segments.
Learn more in the Wallet Segmentation guide.
Transaction Frequency Chart
A new transaction frequency chart on the Users page show you how often your users transact.

View the distribution of transaction counts per wallet to distinguish one-time users from power users, spot drop-off between first and second transactions, and target wallets by activity tier.
Query Parameter Redaction
You can now strip sensitive query parameters before events are stored or sent. Pass a list of query parameter names and the SDK redacts matching keys (case-insensitive) from event properties.

Learn more in the Web SDK docs.
Sticky Referrer Tracking
The Web SDK now keeps first-touch referrer sticky across an entire session, so internal navigation no longer overwrites the source that brought a user in.
This means cleaner channel reports, more accurate first-touch attribution, and no more "self-referral" noise from internal page-to-page navigation.
Improvements and Fixes
Hardened AI Insights generation so Acquisition, Activation, and Behavioral cards reliably render on the page and in the weekly email.
Improved Ask AI response quality with an eval-and-review harness, tighter prompt rules, and better date and tool-selection handling.
Extracted
volume,revenue, andpointsto typed columns on events for faster, more reliable revenue and volume queries across dashboards and the SQL Explorer.Fixed a bug with filtering by Referrer URLs.
Steered invited users to join their team's existing workspace during onboarding instead of accidentally creating a new one.
Added wallet icons (via RDNS) to the Top Wallets chart for quicker visual identification of which wallets your users are connecting with.
Standardized all destructive-action confirmation modals to a single "type the resource name to confirm" pattern across projects, workspaces, dashboards, charts, and API keys.
Added an upgrade button to the Usage page, mirroring the Billing page placement.
Upgraded
@formo/analyticsto v1.32.0 across all 17 example apps.Improved infrastructure monitoring for faster incident detection.
Performance and security improvements.
Here are this week's highlights:
Filter by Page
Angular SDK support
Crossmint and OpenFort examples
Improvements and Fixes
Filter by Page
You can view the performance of specific pages with the new Page filter. The Overview and Activity pages now support filtering by Page, such as specific vault or campaign page.
You can also click any row in the Top Pages chart to apply the page filter inline, the same way segments work elsewhere in the dashboard.
Angular SDK support
The Web SDK now supports Angular. Non-React frameworks (Angular, Vue, Svelte, vanilla JS) can now use Formo without React types. React and Next.js apps continue to work as before.
See the Angular example and the docs for more details.
Crossmint and OpenFort examples
The examples repo now includes end-to-end integrations for Crossmint embedded wallets and OpenFort smart wallets.
Crossmint is a platform for companies and agents to integrate stablecoin rails — including wallets, onramps, stablecoin orchestration & more.
OpenFort is the wallet stack for agentic and stablecoin payments —one open-source SDK instead of five vendors.
Improvements and Fixes
Added Angular SDK support.
Added Crossmint and OpenFort wallet examples to the examples repo.
Added a rolling curve view and richer tooltip to the Retention chart.
Refined bounce rate to an engagement-aware definition so single-page sessions with real engagement no longer inflate the metric.
Replaced the cohort-analysis Insights with volume and revenue Insights.
Added ENS name support to the public profiles API.
Added a copy button to Top Pages chart rows in the Analytics Overview.
Restricted the Formo MCP OAuth flow to Scale and Enterprise plans, matching API key access.
Restricted Weekly Insights emails to paid workspaces.
Fixed the referrer URL filter not applying on the overview page.
Fixed funnel conversion-window editor display drifting from execution.
Fixed a datepicker visual glitch when selecting a date range.
Fixed the Retention chart so still-maturing weeks render as blank instead of 0%, removing the false churn cliff on the newest cohort. AI insight rules and weekly email prompts were updated in the same pass so missing weekly retention is no longer misread as churn.
Fixed token-gated forms SIWE verification for smart-contract wallets on non-mainnet chains.
Fixed empty segments dropdown on public boards.
Fixed invalid MCP tools list error.
Migrated all SDK repos to pnpm 11 with a 7-day minimum release age for stricter supply-chain protection.
Hardened GitHub Actions across SDK repos (SHA-pinned third-party actions, command-injection fixes in the release workflow, protected credentials.)
Performance and security fixes across the platform.
Here are this week's highlights:
Filter by Page
Angular SDK support
Crossmint and OpenFort examples
Improvements and Fixes
Filter by Page
You can view the performance of specific pages with the new Page filter. The Overview and Activity pages now support filtering by Page, such as specific vault or campaign page.
You can also click any row in the Top Pages chart to apply the page filter inline, the same way segments work elsewhere in the dashboard.
Angular SDK support
The Web SDK now supports Angular. Non-React frameworks (Angular, Vue, Svelte, vanilla JS) can now use Formo without React types. React and Next.js apps continue to work as before.
See the Angular example and the docs for more details.
Crossmint and OpenFort examples
The examples repo now includes end-to-end integrations for Crossmint embedded wallets and OpenFort smart wallets.
Crossmint is a platform for companies and agents to integrate stablecoin rails — including wallets, onramps, stablecoin orchestration & more.
OpenFort is the wallet stack for agentic and stablecoin payments —one open-source SDK instead of five vendors.
Improvements and Fixes
Added Angular SDK support.
Added Crossmint and OpenFort wallet examples to the examples repo.
Added a rolling curve view and richer tooltip to the Retention chart.
Refined bounce rate to an engagement-aware definition so single-page sessions with real engagement no longer inflate the metric.
Replaced the cohort-analysis Insights with volume and revenue Insights.
Added ENS name support to the public profiles API.
Added a copy button to Top Pages chart rows in the Analytics Overview.
Restricted the Formo MCP OAuth flow to Scale and Enterprise plans, matching API key access.
Restricted Weekly Insights emails to paid workspaces.
Fixed the referrer URL filter not applying on the overview page.
Fixed funnel conversion-window editor display drifting from execution.
Fixed a datepicker visual glitch when selecting a date range.
Fixed the Retention chart so still-maturing weeks render as blank instead of 0%, removing the false churn cliff on the newest cohort. AI insight rules and weekly email prompts were updated in the same pass so missing weekly retention is no longer misread as churn.
Fixed token-gated forms SIWE verification for smart-contract wallets on non-mainnet chains.
Fixed empty segments dropdown on public boards.
Fixed invalid MCP tools list error.
Migrated all SDK repos to pnpm 11 with a 7-day minimum release age for stricter supply-chain protection.
Hardened GitHub Actions across SDK repos (SHA-pinned third-party actions, command-injection fixes in the release workflow, protected credentials.)
Performance and security fixes across the platform.
Here are this week's highlights:
OAuth on Formo MCP
Segments on Funnels
Event Exclusions in Flow Charts
Improvements and Fixes
OAuth on Formo MCP
The Formo MCP server now supports OAuth, so you can add it as a remote MCP connector in Claude, ChatGPT, Cursor, and other clients. Connect your Formo account with the tools you already use.

Learn more in the MCP docs.
Segments on Funnels
You can now filter Funnels by any saved segment, the same way you can on the Users and Activity pages.
Pick a segment from the chart controls and the entire funnel recomputes against that cohort, so you can compare conversion across audiences without duplicating charts.

Learn more in the Segments docs.
Event Exclusions in Flow Charts
Flow charts (user paths) now support an event exclusion filter. Pick events to leave out of the path entirely and the chart reflows around only the events you care about.
This is the fastest way to clean up noisy flows without changing what you instrument.
Improvements and Fixes
Added
cmd+enterkeyboard shortcut to submit on all code editors.Added unsubscribe controls usage limit alerts.
Fixed Ask AI stopping after the initial request.
Fixed datepicker not rendering on the Number charts edit preview.
Fixed errors when deleting a newly created board.
Fixed flow chart undercount where long converters were dropped from the end-step branch.
Fixed device, browser, and OS aggregations losing
unknownvalues.Fixed minor billing UI bugs.
Fixed orphaned instance page events in the Web SDK.
Fixed a Formo MCP
tools/list400 error.Performance and security fixes across the platform.
Here are this week's highlights:
OAuth on Formo MCP
Segments on Funnels
Event Exclusions in Flow Charts
Improvements and Fixes
OAuth on Formo MCP
The Formo MCP server now supports OAuth, so you can add it as a remote MCP connector in Claude, ChatGPT, Cursor, and other clients. Connect your Formo account with the tools you already use.

Learn more in the MCP docs.
Segments on Funnels
You can now filter Funnels by any saved segment, the same way you can on the Users and Activity pages.
Pick a segment from the chart controls and the entire funnel recomputes against that cohort, so you can compare conversion across audiences without duplicating charts.

Learn more in the Segments docs.
Event Exclusions in Flow Charts
Flow charts (user paths) now support an event exclusion filter. Pick events to leave out of the path entirely and the chart reflows around only the events you care about.
This is the fastest way to clean up noisy flows without changing what you instrument.
Improvements and Fixes
Added
cmd+enterkeyboard shortcut to submit on all code editors.Added unsubscribe controls usage limit alerts.
Fixed Ask AI stopping after the initial request.
Fixed datepicker not rendering on the Number charts edit preview.
Fixed errors when deleting a newly created board.
Fixed flow chart undercount where long converters were dropped from the end-step branch.
Fixed device, browser, and OS aggregations losing
unknownvalues.Fixed minor billing UI bugs.
Fixed orphaned instance page events in the Web SDK.
Fixed a Formo MCP
tools/list400 error.Performance and security fixes across the platform.
Here are this week's highlights:
Performance improvements
Last-touch attribution for funnels
Funnel and Flow public API endpoints
Performance improvements
We've completed significant performance improvements across the platform, including wallets, transactions, top pages, top sources, funnels, and flow charts.
Last-touch attribution for funnels
Funnels now support last-touch attribution as a first-class breakdown option, letting you credit the most recent source, campaign, or referrer before a user converted.
This complements first-touch attribution and gives growth and marketing teams a clearer view of which channels are actually driving conversion at the moment of action, rather than only the channel that introduced the user.
Open any existing funnel and toggle the attribution type to last-touch to see how your numbers shift. Learn more in the Funnels documentation.
Funnel and Flow public API endpoints
Funnels and Flows are now available through the public Query API, so you can pull conversion and user-journey data programmatically into dashboards, notebooks, and downstream systems.
The OpenAPI spec has been updated alongside the new endpoints, making it easy to generate clients and explore the schema. If you build internal tooling on top of Formo, point your scripts and integrations at the new endpoints.
See the API overview for more.
Here are this week's highlights:
Performance improvements
Last-touch attribution for funnels
Funnel and Flow public API endpoints
Performance improvements
We've completed significant performance improvements across the platform, including wallets, transactions, top pages, top sources, funnels, and flow charts.
Last-touch attribution for funnels
Funnels now support last-touch attribution as a first-class breakdown option, letting you credit the most recent source, campaign, or referrer before a user converted.
This complements first-touch attribution and gives growth and marketing teams a clearer view of which channels are actually driving conversion at the moment of action, rather than only the channel that introduced the user.
Open any existing funnel and toggle the attribution type to last-touch to see how your numbers shift. Learn more in the Funnels documentation.
Funnel and Flow public API endpoints
Funnels and Flows are now available through the public Query API, so you can pull conversion and user-journey data programmatically into dashboards, notebooks, and downstream systems.
The OpenAPI spec has been updated alongside the new endpoints, making it easy to generate clients and explore the schema. If you build internal tooling on top of Formo, point your scripts and integrations at the new endpoints.
See the API overview for more.
Here are this week's highlights:
AI SQL Helpers
Ask AI Follow-up Questions
Funnels Compare Mode
Area Chart
Global Search
Profile Side Panel
Query API
Improvements and Fixes
AI SQL helpers
Three new AI helpers now sit next to the SQL editor on both the Explorer page and the create/edit chart page
Explain this Query describes what a SQL query does in plain English.
Generate SQL turns a prompt into SQL.
Format SQL cleans up an existing query in place.

Ask AI Follow-up Questions
Every Ask AI response now ends suggested follow-up questions you can click to keep digging.

The suggestions are generated from the conversation so far and the project's saved charts, events, and segments, so they stay relevant to the data you're actually looking at instead of pulling you off-topic.
Funnels Compare Mode
The funnel chart now has a Compare mode toggle in its date controls, mirroring the one on the overview page, so you can put two date ranges side by side.

Each step now also shows the median time to convert from the previous step, so you can see where users stall, not just where they drop.
Area Charts
You can now create Area Charts.

Area charts support stacking out of the box. It's available alongside Line, Bar, Number, and the other existing chart types.
Global Search
Hit Cmd+K (or Ctrl+K) anywhere in the app to open a command palette. Jump to key pages, custom boards, segments, past chats, and settings even more quickly.

If your query does not match a known action, ask the question directly to Ask AI.

Profile Side Panel
On the Users page, clicking a user now opens its profile in a side panel instead opening a new tab for a smoother experience.

The side panel keeps your filtered list visible so you can scan a cohort and dip into individual wallets without losing context. A link to the standalone profile page is still there when you want to bookmark and share it.
Query API
The full Query API is now live, with 18 public endpoints that expose the same backed data that powers every chart on the Formo dashboard. Use this to build internal tooling and dashboards with Formo data.
Improvements and Fixes
Added standardized public API error codes.
Added Idempotency-Key support on writes to public API.
Added new Formo CLI
profiles updateandprofiles labels create/deletecommands.Added a
user_idfield to wallet profile data so server-side identifiers can be carried alongside wallet identity.Added a Send Test Alert action to alerts so you can verify your webhook endpoint and payload.
Added URL validation for external SSO and OAuth redirects for security.
Refactored account and workspace onboarding flow.
Standardized filter field naming across the public API surface.
Fixed sticky table column rendering and users filter bar UI issue.
Performance improvements and fixes.
Here are this week's highlights:
AI SQL Helpers
Ask AI Follow-up Questions
Funnels Compare Mode
Area Chart
Global Search
Profile Side Panel
Query API
Improvements and Fixes
AI SQL helpers
Three new AI helpers now sit next to the SQL editor on both the Explorer page and the create/edit chart page
Explain this Query describes what a SQL query does in plain English.
Generate SQL turns a prompt into SQL.
Format SQL cleans up an existing query in place.

Ask AI Follow-up Questions
Every Ask AI response now ends suggested follow-up questions you can click to keep digging.

The suggestions are generated from the conversation so far and the project's saved charts, events, and segments, so they stay relevant to the data you're actually looking at instead of pulling you off-topic.
Funnels Compare Mode
The funnel chart now has a Compare mode toggle in its date controls, mirroring the one on the overview page, so you can put two date ranges side by side.

Each step now also shows the median time to convert from the previous step, so you can see where users stall, not just where they drop.
Area Charts
You can now create Area Charts.

Area charts support stacking out of the box. It's available alongside Line, Bar, Number, and the other existing chart types.
Global Search
Hit Cmd+K (or Ctrl+K) anywhere in the app to open a command palette. Jump to key pages, custom boards, segments, past chats, and settings even more quickly.

If your query does not match a known action, ask the question directly to Ask AI.

Profile Side Panel
On the Users page, clicking a user now opens its profile in a side panel instead opening a new tab for a smoother experience.

The side panel keeps your filtered list visible so you can scan a cohort and dip into individual wallets without losing context. A link to the standalone profile page is still there when you want to bookmark and share it.
Query API
The full Query API is now live, with 18 public endpoints that expose the same backed data that powers every chart on the Formo dashboard. Use this to build internal tooling and dashboards with Formo data.
Improvements and Fixes
Added standardized public API error codes.
Added Idempotency-Key support on writes to public API.
Added new Formo CLI
profiles updateandprofiles labels create/deletecommands.Added a
user_idfield to wallet profile data so server-side identifiers can be carried alongside wallet identity.Added a Send Test Alert action to alerts so you can verify your webhook endpoint and payload.
Added URL validation for external SSO and OAuth redirects for security.
Refactored account and workspace onboarding flow.
Standardized filter field naming across the public API surface.
Fixed sticky table column rendering and users filter bar UI issue.
Performance improvements and fixes.
Here are this week's highlights:
User Properties and Labels
Workspace Audit Log
Improved Wallet Search
Improvements and Fixes
User Properties and Labels
You can now add first-party user properties and custom user labels for wallet profiles, on the dashboard and the API.

Set a custom display name, email, socials, avatar, location, and other identity fields on a wallet profile. Tag wallets with custom labels (VIP tier, KYC status, etc). Custom user labels work with all existing features including segments, filters, and charts out of the box.
With first-party data alongside the web, product, and onchain data Formo already collects, you can now use Formo as the single source of truth for your DeFi app. No more manually stitching together a separate CRM, analytics tool, and internal database. Push user properties and labels into Formo's customer data platform, then use the unified profile across product analytics, attribution, segmentation, and outreach.
Workspace Audit Log
Workspaces now record an Audit Log of who did what: invites, role changes, project updates, billing changes, and other key actions.

This is designed for SOC2 readiness and is useful for any team that wants visibility into workspace changes, especially when multiple team members have admin access.
Improved Wallet Search
You can now search wallets from social profiles on the Users page and Profile Search API . Search based on a partial address, ENS name, Twitter handle, or any social identifier and Formo will find the matching wallet profile.
Improvements and Fixes
Added confirmation step to destructive deletes on projects, segments, boards, contracts, and API keys.
Added a row-limit control to SQL Explorer so you can control the size of large queries.
Added raw results table to charts so you can inspect the underlying numbers behind them.
Added volume to weekly email reports so you can see week-over-week change at a glance.
Added MCP and API setup instructions to the API keys page so it's easier to get started.
Added a feedback link to the sidebar so it's easier to share what's working and what isn't.
Added 2FA status to the workspace members page.
Added ENS name support to the Activity page search bar.
Added time-based sorting to the Activity page.
Added a tooltip to the board global datepicker explaining how the selected range applies to charts.
Replaced the underlying engine for Sankey visualizations for faster, more consistent rendering.
Improved handling for unknown values from device, browser, and OS tracking.
Improved label value filtering to be case-insensitive.
Improved error handling and API key validation across the API.
Improved Ask AI's handling of date variables in queries and charts.
Improved Web SDK location detection to only emit valid country codes.
Fixed an issue with SQL Editor exports to JSON and CSV.
Fixed an issue with the weekly email report.
Performance and scalability improvements across the platform
Here are this week's highlights:
User Properties and Labels
Workspace Audit Log
Improved Wallet Search
Improvements and Fixes
User Properties and Labels
You can now add first-party user properties and custom user labels for wallet profiles, on the dashboard and the API.

Set a custom display name, email, socials, avatar, location, and other identity fields on a wallet profile. Tag wallets with custom labels (VIP tier, KYC status, etc). Custom user labels work with all existing features including segments, filters, and charts out of the box.
With first-party data alongside the web, product, and onchain data Formo already collects, you can now use Formo as the single source of truth for your DeFi app. No more manually stitching together a separate CRM, analytics tool, and internal database. Push user properties and labels into Formo's customer data platform, then use the unified profile across product analytics, attribution, segmentation, and outreach.
Workspace Audit Log
Workspaces now record an Audit Log of who did what: invites, role changes, project updates, billing changes, and other key actions.

This is designed for SOC2 readiness and is useful for any team that wants visibility into workspace changes, especially when multiple team members have admin access.
Improved Wallet Search
You can now search wallets from social profiles on the Users page and Profile Search API . Search based on a partial address, ENS name, Twitter handle, or any social identifier and Formo will find the matching wallet profile.
Improvements and Fixes
Added confirmation step to destructive deletes on projects, segments, boards, contracts, and API keys.
Added a row-limit control to SQL Explorer so you can control the size of large queries.
Added raw results table to charts so you can inspect the underlying numbers behind them.
Added volume to weekly email reports so you can see week-over-week change at a glance.
Added MCP and API setup instructions to the API keys page so it's easier to get started.
Added a feedback link to the sidebar so it's easier to share what's working and what isn't.
Added 2FA status to the workspace members page.
Added ENS name support to the Activity page search bar.
Added time-based sorting to the Activity page.
Added a tooltip to the board global datepicker explaining how the selected range applies to charts.
Replaced the underlying engine for Sankey visualizations for faster, more consistent rendering.
Improved handling for unknown values from device, browser, and OS tracking.
Improved label value filtering to be case-insensitive.
Improved error handling and API key validation across the API.
Improved Ask AI's handling of date variables in queries and charts.
Improved Web SDK location detection to only emit valid country codes.
Fixed an issue with SQL Editor exports to JSON and CSV.
Fixed an issue with the weekly email report.
Performance and scalability improvements across the platform
Load more
Turn data into action
Measure what matters and make impactful decisions with Formo.
Turn data into action
Measure what matters and make impactful decisions with Formo.
Turn data into action
Measure what matters and make impactful decisions with Formo.
Compare
Ask AI about Formo
Compare
Ask AI about Formo