How to Build Personalization into Crypto and DeFi Apps with Formo Profiles API

How to Build Personalization into Crypto and DeFi Apps with Formo Profiles API

How to Build Personalization into Crypto and DeFi Apps with Formo Profiles API

Yos Riady

Yos Riady

Last Updated

Last Updated

Updated

TL;DR: Formo gives crypto and DeFi teams the same profile intelligence that Segment and Klaviyo provide for Web2, built natively for wallet addresses and onchain apps. Fetch enriched wallet profiles, filter by on-chain behavior, and build real-time personalization into your crypto app.

Personalization has become a baseline expectation across consumer software. Klaviyo reports that 74% of consumers expect brands to provide personalized experiences, and platforms like Segment and Hightouch have built entire businesses around helping companies deliver on that promise through unified customer profiles and real-time data activation.

But in crypto and DeFi, most applications still treat every wallet the same way. A user who has been staking ETH for three years, holds six figures across multiple protocols, and has a verified Coinbase account sees the same landing page as someone connecting a wallet for the first time. The data to differentiate these users exists on-chain, but the tooling to act on it at the application layer has been missing.

Formo's Profiles API closes that gap. It transforms raw wallet addresses into 360-degree user profiles, combining on-chain transaction history, token balances, DeFi positions, social identities across 15+ platforms, behavioral labels, and first-party analytics data.

Crypto and DeFi teams get the same personalization infrastructure that Web2 companies rely on, but designed for a world where the primary identifier is a wallet address, the data is public and cross-application, and users move between chains and protocols constantly.

This guide covers:

  • What the Profiles API does, and what data it returns

  • How to use the Profiles API with search, filtering, and sorting

  • How Formo compares to Web2 CDPs like Segment, Klaviyo, and Hightouch

  • Concrete use cases for personalization, CRM, compliance, and segmentation

  • How to get started with authentication, endpoints, and your first API call

  • Frequently asked questions

What Is the Profiles API?

The Profiles API provides enriched wallet intelligence. Every blockchain address that interacts with your application gets a profile that merges on-chain and off-chain data into a single, queryable record. Formo describes this as turning anonymous wallets into actionable, onchain personas.

A wallet profile includes:

  • On-chain activity: total transaction count, first and last on-chain timestamps, per-chain breakdowns across Ethereum, Polygon, Arbitrum, Base, Optimism, BNB Chain, Avalanche, and dozens more

  • Portfolio data: net worth in USD aggregated across all chains, token balances with price data, DeFi app positions with protocol names and USD values

  • Social identity: ENS, Farcaster, Lens, Basenames, Twitter/X, Discord, Telegram, GitHub, LinkedIn, email, Reddit, Instagram, Facebook, TikTok, YouTube, and personal websites

  • User Lifecycle: automatically segments users as New, Returning, Power User, Churned, or Resurrected based on engagement patterns

  • Wallet labels: Coinbase verification status, sanctions screening via Chainalysis, Passport humanity scores

  • First-party data: session counts, first/last seen timestamps, revenue, volume, points, device type, browser, OS, country, and full UTM attribution (first-touch and last-touch)

How to Use the Profiles API

The Profiles API provides two main endpoints. The Get Profile API fetches a single enriched profile for any wallet address. The Search Profiles API lets you query across your entire user base with advanced filter conditions.

The Search Profiles API accepts a conditions array where each condition specifies a field, operator (eq, neq, gt, gte, lt, lte, in, nin), and value. Conditions combine with and or or logic, and results support pagination up to 1,000 per request with sorting by fields like net_worth_usd, tx_count, or last_onchain.

The expand parameter controls which additional data collections are included in the response. Options are apps, chains, tokens, and labels, each capped at 50 items. Omitting expand fields keeps the response lean for use cases where you only need the core profile.

How It Compares to Web2 CDPs

If you have used Segment's Profile API, Klaviyo's customer data platform, or Hightouch's audience and activation features, the mental model is familiar. Segment gives you a unified customer profile stitched from website events, mobile interactions, and third-party data. Klaviyo builds 360-degree profiles with RFM scoring, predictive analytics, and real-time segmentation for e-commerce. Hightouch syncs warehouse data into audience segments and activates them across marketing and product channels.

Formo does the same thing for Web3. Instead of cookies and email addresses as the primary identifier, Formo uses wallet addresses and resolves them into rich profiles with on-chain history, token balances, cross-chain activity, and decentralized social identities. Where Segment stitches together events from Mixpanel, Stripe, and Zendesk, Formo aggregates data from Ethereum, Polygon, Arbitrum, Base, and dozens of other networks into a single profile.

The structural advantage is that Web3 data is inherently public and cross-application. A wallet's history on Uniswap, Aave, and OpenSea is all visible on-chain. Formo's Profiles API aggregates this public data alongside your first-party analytics, giving you context that a Web2 CDP could never provide, because the underlying data simply does not exist in traditional systems. You see not just what a user did on your platform, but their entire on-chain footprint.

Use Cases

Real-Time Personalization

This is where the Profiles API has the most immediate impact. When a wallet connects, fetch the profile and adapt the experience in real time. A DeFi protocol can show yield strategies relevant to the tokens the user already holds. An NFT marketplace can surface collections on the chains where the user is most active. A token launch page can skip the onboarding tutorial for a power user with 500+ transactions and instead show advanced features.

The pattern is the same one that drives hyper-personalization in e-commerce, where platforms like Klaviyo use purchase history, browsing behavior, and predictive scoring to tailor every touchpoint. The difference is that Formo pulls from on-chain activity that spans the entire ecosystem, not just your own application. You know the user's DeFi positions on Aave, their NFT holdings on OpenSea, and their social identity on Farcaster before they take a single action on your site.

Consider the concrete implementation: a user connects with a wallet that has a net worth above $100K, verified Coinbase account, and active DeFi positions on three chains. Your frontend fetches the profile, checks the lifecycle field (Power User), reads the net_worth_usd, and renders an experience calibrated for a sophisticated user. A first-time visitor with an empty wallet gets a guided onboarding flow instead.

Web3 CRM and User Intelligence

Build a Web3-native CRM by combining the Search Profiles API with your internal data. The search endpoint accepts a conditions array where each condition specifies a field, operator, and value. Operators include eq, neq, gt, gte, lt, lte, in, and nin, and you can combine conditions with and or or logic.

For example, you can query for all users with net worth above $10,000 who were last active in the past 7 days and hold tokens on Base, then get paginated, sortable results. Your growth team can use this to identify high-value users for outreach, track whale activity across your platform, or build internal dashboards that show wallet-level detail alongside engagement metrics.

Wallet-Aware Customer Support

When a user reaches out for help, pull their profile instantly. Support agents see the user's transaction history, connected social identities, lifecycle stage, session data, and past interactions without needing to ask the user to explain their situation. The Profiles API resolves identities across ENS, Farcaster, Discord, and other platforms, so agents can verify who they are talking to and pull in relevant context. This mirrors what companies like Klaviyo provide for e-commerce support, where agents see the customer's full purchase history alongside the support ticket.

Compliance and Risk Monitoring

The Profiles API includes sanctions screening through Chainalysis integration and Coinbase verification status via Ethereum Attestation Service. Use the labels expand field to access OFAC sanctions.designated and coinbase.verified_account data points. You can check these on every wallet connection, building compliance gates directly into your application logic. For regulated DeFi protocols and centralized exchanges, this turns a manual compliance step into an automated API call.

Audience Segmentation for Campaigns

Search profiles to build targeted segments for airdrops, token distributions, or marketing campaigns. Filter by on-chain behavior (transaction count, net worth, chain activity), combine with social data (verified Farcaster users, ENS holders), and sort results by net_worth_usd, tx_count, last_onchain, or first_onchain. The Profiles API supports pagination up to 1,000 results per request, so you can iterate through your entire user base programmatically and export cohorts for downstream tools.

How to Get Started

Getting up and running takes two steps.

  • Step 1: Generate an API key. Log into your Formo dashboard, navigate to your workspace settings, and create an API key. Formo uses scope-based permissions, so select the profiles:read scope when generating your key. Your key goes in the Authorization header as a Bearer token.

  • Step 2: Fetch your first wallet profile. Look up any address to get the full enriched profile:

curl -sS \
  -H "Authorization: Bearer YOUR_API_KEY" \
  "https://api.formo.so/v0/profiles/0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045?expand=apps,chains,tokens,labels"
curl -sS \
  -H "Authorization: Bearer YOUR_API_KEY" \
  "https://api.formo.so/v0/profiles/0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045?expand=apps,chains,tokens,labels"
curl -sS \
  -H "Authorization: Bearer YOUR_API_KEY" \
  "https://api.formo.so/v0/profiles/0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045?expand=apps,chains,tokens,labels"

Next Steps

To start building with the Profiles API:

  1. Create your Formo account and set up a project

  2. Create an API key in your workspace settings with profiles:read scope

  3. Read the full API reference for endpoint details, request/response schemas, and error handling

  4. Explore wallet profiles for a deeper look at profile data fields and enrichment sources

  5. Integrate into your stack by calling the API from your backend, building real-time features with profile data, and creating personalized experiences based on wallet intelligence

Whether you are personalizing a DeFi interface, building a Web3 CRM, or segmenting users for a token launch, the Profiles API gives you the data layer to make it happen.

Frequently Asked Questions

What is the Formo Profiles API?

The Profiles API provides enriched wallet intelligence for any EVM blockchain address. It returns on-chain activity, token holdings, DeFi positions, social identities across 15+ platforms (ENS, Farcaster, Lens, Discord, Twitter/X, and more), net worth estimates, lifecycle stage, and behavioral labels. You can fetch a single profile with the Get Profile API or search across your entire user base with the Search Profiles API using advanced filter conditions.

How do I authenticate with the Formo Profiles API?

All API requests require a Bearer token in the Authorization header. You generate workspace API keys from the Formo dashboard with scope-based permissions. The Profiles API requires a key with profiles:read permission. You can create separate keys for different scopes to follow the principle of least privilege.

What blockchains does the Profiles API support?

The Profiles API aggregates data across all major EVM-compatible chains including Ethereum, Polygon, Arbitrum, Optimism, Base, BNB Chain, Avalanche, Linea, Scroll, zkSync, Blast, and more. When you include expand=chains, each profile returns per-chain net worth, transaction counts, and first/last activity timestamps.

Can I filter and search wallet profiles programmatically?

Yes. The Search Profiles API accepts a conditions array where each condition specifies a field, op (operator), and value. Supported operators are eq, neq, gt, gte, lt, lte, in, and nin. You can filter across user fields, chain data, app positions, token holdings, and labels. Conditions combine with and or or logic, and results support pagination up to 1,000 per request with sorting by fields like net_worth_usd, tx_count, or last_onchain.

How does Formo compare to Web2 CDPs like Segment or Klaviyo?

Formo brings the same capabilities that Segment and Klaviyo offer for Web2 (360-degree profiles, behavioral segmentation, real-time querying) but built natively for blockchain data. Instead of cookies and email addresses, Formo resolves wallet addresses into rich profiles with on-chain history, token balances, social identities, and cross-chain activity. The public nature of blockchain data also means Formo can surface cross-application context that traditional CDPs cannot access.

What social identities does the Profiles API resolve?

The Profiles API resolves wallet addresses to identities across ENS, Farcaster, Lens, Basenames, Twitter/X, Discord, Telegram, GitHub, LinkedIn, email, Reddit, Instagram, Facebook, TikTok, YouTube, and personal websites. This data is sourced from ENS records, Web3Bio, and on-chain attestations.

What lifecycle stages does the Profiles API assign?

The Profiles API automatically classifies each wallet into a lifecycle stage: New (first-time engagement), Returning (consistent visits), Power User (active 5+ days in the last 30), Churned (30+ days inactive), or Resurrected (previously inactive, now re-engaged). These stages update automatically as user behavior changes, giving you a ready-made segmentation layer without any custom logic.

Table of contents

Share this post

Measure what matters

Formo makes analytics and attribution simple for onchain apps.

Measure what matters

Formo makes analytics and attribution simple for onchain apps.

Measure what matters

Formo makes analytics and attribution simple for onchain apps.