OnchainSuite · onchainsuite.com/retention-playbook/defi

DeFi growth and retention strategy

How email and in-app keep deposits in place, warn borrowers before liquidation, and bring capital back after it moves.

In DeFi, keeping a user means keeping their capital, and capital moves when the spread moves. As sUSDe's yield went from 7.5% to 4.9%, its staked deposits fell from $6.16B to $1.21B, by DefiLlama's numbers. One month after Arbitrum's incentive programme ended, WOOFi's TVL had gone from $12.6M to $5.9M.

Capital is concentrated, too. On Aave V3 Ethereum, the 50 largest holders of USDT deposits hold 55% of the market. The first deposit, a loan nearing liquidation, a position that stops earning and the week capital starts to move are where this strategy does its work.

It has four parts: campaigns and the newsletter, An automatic sequence of messages that starts from a user's action and stops when they act, lifecycle, and A single message sent the same day something happens to a user's account or position. Email and in-app are the channels that carry them. Every message goes to a A saved group of users who share something, such as "deposited this month" and carries one link, and promotion only reaches people who agreed to it.

What we never send

A deposit is someone's savings, and the rules treat it that way. In the UK, the FCA bans incentives such as referral bonuses in crypto promotions, and expects any rate to be shown as not guaranteed and kept current. In the US, the FTC's case against Celsius turned on calling deposits "safe" and free of risk. Even Aave Labs labels the rate in its own app as not guaranteed.

So we never call a yield guaranteed, risk-free or safe, or a protocol safer than a bank. No headline leads with "up to X% APY", nothing promises withdrawals anytime or instant liquidity, and nothing is called insured without the terms beside it. A rate never sits inside an automated send where it can go stale, and readers in the UK never get referral bonuses, free tokens or limited-time boosts.

Written as if a regulator will read it

  • No yield is guaranteed, risk-free or safe, and no protocol is safer than a bank
  • No headline leads with "up to X% APY", and nothing promises withdrawals anytime
  • A rate never sits inside an automated send where it can go stale
  • No referral bonuses, free tokens or limited-time boosts for readers in the UK

What we do send is the record. Every rate carries its date and the word "currently". A number that shows how close a loan is to liquidation. Below 1 means liquidation and liquidation price are given in numbers, with the asset behind them. We say what changed in a position before what to do about it, and the protocol's own risk terms are always one link away.

Campaigns and the newsletter

Every campaign is built from on-chain A saved group of users who share something, such as "deposited this month", who holds the asset, who is in the market, who can vote, and only goes to people who agreed to news. A new market or vault goes to wallets that hold the asset it accepts and are not already in it, with the current rate and its date, and the risk terms. An incentive change goes to depositors in the affected market, with what changes, when, and what it means for their position. A governance vote goes to holders who can vote and depositors it affects, with the proposal in plain words and the dates of the vote.

Timing matters most here. The date an incentive ends is the date churn starts: after Arbitrum's programme, wallet activity on the protocols in it fell back to where it was before. A message to the exact wallets a change affects, sent before the date, gives them the facts from you before they hear them elsewhere and move.

The date an incentive ends is the date churn starts. A message to the exact wallets a change affects, sent before the date, gives them the facts from you first.

The newsletter is one email every two weeks to depositors who opted in to news, because deposits do not move weekly: 350 to 450 words with one main button. It opens with their markets, covering rates, utilization and caps, with the date we checked. Then what changed, such as parameter changes and governance outcomes that affect depositors, one explainer on something like A number that shows how close a loan is to liquidation. Below 1 means liquidation or out-of-range liquidity, what is new with its risk terms, and the fixed dates coming up: unlocks, maturities and votes.

Every rate carries its date, and nothing in it reads as a promise of yield. Depositors who understand their position tend to stay through volatility, and the calendar means no unlock or maturity arrives as a surprise.

Loops

A An automatic sequence of messages that starts from a user's action and stops when they act is a sequence of messages to one depositor. It starts from something their position did, or did not do, and it stops the moment they take the step it asks for, so nobody is chased for something they already did. There is one Loop for each move between stages, and they run in this order.

The welcome Loop starts at capture, the moment a depositor gives an email address. One email confirms the address with a single click and says exactly what they agreed to receive: statements and position messages, or those plus news, depending on the form. Once they confirm, a second message shows them the one market that fits what their wallet already holds. It stops on confirmation, and nothing else goes to an address that has not confirmed. Those first sends also give a new sending domain its track record.

The first-deposit Loop starts when a wallet has connected and deposited nothing, which usually means it has not seen a market that fits what it holds. In-app, we show it that one market, chosen from the assets in the wallet; if a day passes, one email does the same. It stops on the first deposit, and one message then explains what the position does and what to watch, whether that is a rate, a range or a A number that shows how close a loan is to liquidation. Below 1 means liquidation.

From a connected wallet to a monthly statement
  • Wallet connects: nothing deposited
  • One market: fits what it holds
  • First deposit: supply, stake or add liquidity
  • What to watch: a rate, a range or health
  • Monthly statement: what it earned, in dollars

From then on, active depositors get a statement on the first of each month with what their position earned last month, in dollars. It is the simplest reason to stay: a number they can check. The second-deposit Loop sends new markets for the assets they hold, and stops when they add funds again or open a loan.

A statement on the first of each month, in dollars: the simplest reason to stay is a number they can check.

Some positions cost the user money quietly, and two Loops watch for that. A liquidity position out of range has stopped earning fees, and research published by 1inch found 29.5% of tracked concentrated-liquidity capital out of range on average in the first half of 2026. After 24 hours out of range, the user gets an email saying it stopped earning, what the position now holds, and how to adjust it, and it stops when the position is back in range. It never pushes constant rebalancing, since an academic study of concentrated liquidity found no significant edge for frequent rebalancers. When claimable rewards pass a set amount, the user gets the amount and one button to claim, until they claim.

The slipping Loop starts when a depositor moves to At risk: their net deposit falls to half their own average, which usually means they withdrew more than half. They get one question on why. Fourteen days later, if nothing has come back, they hear what has changed since. It stops on a new deposit.

The slipping Loop after a large withdrawal
  • Withdraws half: or more of the deposit
  • One question: what could we do better?
  • 14 days: nothing back
  • What changed: since they left
  • New deposit: the Loop stops

The last Loop is one message. After 60 days without a deposit or a loan, a Dormant wallet gets one good reason to come back. Then we leave it alone.

Each message in a Loop has one owner channel and a fallback: in-app owns the moment a depositor is in the app, email owns the moment they are away from it, and a fallback only fires if the first went unread. A The most messages one person can get in a period, across email and in-app counts every channel together. A single message sent the same day something happens to a user's account or position are the one exception, and always send.

How every Loop behaves

  1. It starts from something a depositor's position did, or did not do
  2. It stops the moment they take the step it asks for
  3. One owner channel, one fallback, and one frequency cap across both
  4. Retention triggers are the one exception, and always send

Lifecycle

Every depositor sits in one of six stages, the same six on every strategy we run: New, Activated, Engaged, At risk, Dormant and Won back. The stage is worked out from what their wallet does, never set by hand, and it is read by capital as well as by count. Deposits are concentrated, so a few wallets decide the curve, and losing many small depositors calls for different messages from losing a few large ones. The lifecycle moves on patterns. A single message sent the same day something happens to a user's account or position, below, fire on single events, and the two never overlap.

A lifecycle starts at a Any place a person hands over their email address, and each capture point sets what we are allowed to send. A wallet that connects is a contact with no email, reached in-app only, and most depositors start there. An email left on the app's capture form to get statements carries service consent: statements, the welcome An automatic sequence of messages that starts from a user's action and stops when they act and messages about their own position. An email from the newsletter form, or a capture form whose consent line says so, carries news consent as well: campaigns and the letter. An embedded wallet sign-in through Privy or Magic gives both a wallet and an email, with whatever the sign-in page promised. A list the protocol already holds carries whatever those people originally agreed to, and where nobody can show what that was, the first message asks. Two tiers, service and news, and a depositor on service alone never sees a campaign.

The six stages of a depositor
  • New: connected, nothing in
  • Activated: first deposit
  • Engaged: added funds again, or borrows
  • At risk: net deposit at half their own average
  • Dormant: 60 days, no deposit or loan
  • Won back: deposited again, watched 30 days

New is a wallet connected with nothing in; the first-deposit Loop moves them on. Activated is the first deposit, supplied, staked or added as liquidity; the second-deposit Loop moves them on. Engaged is a depositor who added funds again or borrows against the deposit, and they get campaigns and the letter rather than a Loop. At risk is one rule on every strategy: activity at half the depositor's own 30-day average, which here means net deposit. It needs a baseline, so it applies from Engaged onward, and the slipping Loop answers it. Dormant is 60 days without a deposit or a loan, one message, then rest. Won back is a wallet that deposited again from At risk or Dormant. It is watched for 30 days, then placed as Engaged or At risk like anyone else, and it never goes back through the welcome.

The one rule for At risk

Activity at half the depositor's own 30-day average, which here means net deposit. It needs a baseline, so it applies from Engaged onward, and the slipping Loop answers it.

A lifecycle also has exit points, and the rule that keeps them straight is that marketing consent can be withdrawn while service messages about a position the depositor still holds continue until the position is gone. An unsubscribe stops campaigns, the letter and every Loop; a health alert still goes out while they have a loan. A spam complaint stops everything by email that day, and a hard bounce closes the email channel; both leave in-app, service only. A depositor in a restricted country never enters promotion. A wallet that withdraws everything is not an exit: it is At risk or Dormant, and gets the one message and the rest. Rest itself is a state we count, so Dormant never looks like a backlog to work. An account closed, or an erasure request, ends everything, the record included.

Take Ada. She supplies USDC on Base, leaves her email on the app's capture form to get statements, and confirms it with one click. On day 12 an incentive on her market changes the following week, and she gets one email with the date and what it means for her deposit. On day 30 her first statement arrives: what her position earned, in dollars. On day 41 she borrows against it, so she is Engaged. ETH falls and her health drops to 1.2; the alert reaches her in the app and by email with her liquidation price, and she repays part of the loan. On day 70 she withdraws half, moves to At risk, and gets one question on why. Two weeks later she hears about the new vault for the asset she still holds.

Ada's first ten weeks
  • Day 0: Supplies USDC, confirms her email
  • Day 12: Told about an incentive change
  • Day 30: First monthly statement
  • Day 41: Borrows; health alert; repays
  • Day 70: Withdraws half; one question
  • Day 84: Hears about the new vault

Retention triggers

A A single message sent the same day something happens to a user's account or position is a single message sent the same day something happens to a depositor's position. It comes from the position, never from a calendar, it carries no offer, and it always sends, whatever the The most messages one person can get in a period, across email and in-app and whether or not they take news. It explains, then stops.

Liquidations fall hardest on the users least able to absorb them. Aave Labs found about 80% of its liquidation events happen outside Ethereum, at an average of $4,000 to $7,000, against more than $50,000 on Ethereum. Aave does not alert its own users: its help page points them to third-party tools, and DeFi Saver says it protected 365 at-risk Aave V3 positions in January and February 2026 alone.

So when a borrower's A number that shows how close a loan is to liquidation. Below 1 means liquidation falls below the level you set for that collateral, in-app and email go out together with their current health, the price that would The action that starts a Loop, such as a withdrawal liquidation, and how to add collateral or repay. Volatile collateral gets an earlier level, because waiting for 1.0 is too late: in the October 2025 crash, Sentora found most liquidatable volume was taken within about ten blocks, roughly two minutes. If a position is liquidated anyway, an email explains what happened in plain words, what was sold and what is left, with nothing promotional in it.

Waiting for 1.0 is too late. In the October 2025 crash, most liquidatable volume was taken within about ten blocks, roughly two minutes.

Loan health alert, in-app and email
Subject
Your loan is close to liquidation
Preview
ETH at $2,410 would trigger it. Here is how to avoid it

Your loan health is 1.08. If ETH falls to $2,410, part of your collateral will be sold to repay the loan.

You can raise your health by adding collateral or repaying part of the loan. Both take one step.

Manage my loan
A loan's health falling, and where the alert sits
  • Health 2.0: comfortable
  • Health 1.5: the price is moving
  • Your alert level: set per collateral; in-app and email
  • Health 1.0: liquidation, within about ten blocks

Seven days and again one day before a lock ends or a position matures, the depositor gets the date, the amount and their options, relocking included. And a crisis needs its own message. After the April 2026 rsETH exploit, Galaxy found Aave lost $8.45B of deposits in two days and its largest pools reached full utilization. When a market is fully utilized, its depositors get an email the same day saying withdrawals may be delayed, why, and where updates are posted. In a run the first hour matters, so who can approve that message is agreed in advance.

How we know it worked

We count what depositors do. Opens stopped meaning much once Apple Mail began opening emails by itself, so a message is judged by the deposit, the repayment or the claim that follows it. Every always-on An automatic sequence of messages that starts from a user's action and stops when they act keeps a A small group left out of a Loop on purpose, to show what the messages caused, a small group left out on purpose, so we can show what the messages caused.

A message is judged by the deposit, the repayment or the claim that follows it, never by an open.

Every Monday, a stage report shows how many depositors sit at each stage, by count and by capital, and where most of them are stuck. That stage is where the next week's effort goes. Under it, the numbers we watch are deposits still in place 30 and 90 days after they arrive, new deposits from existing depositors each month, loans back above the health level within 24 hours of an alert, liquidations among alerted wallets against the holdout over 30 days, rewards claimed within 48 hours of a reminder, and out-of-range positions adjusted within 7 days of the email. Unsubscribes, complaints and bounces are checked on every send, with the complaint rate held under the 0.3% Gmail and Yahoo allow. Targets are set once the first month gives us a baseline.

Running it on OnchainSuite

Every An automatic sequence of messages that starts from a user's action and stops when they act and every The action that starts a Loop, such as a withdrawal above starts from something a position did. OnchainSuite watches lending and liquidity contracts directly on Ethereum, Base, Arbitrum, Optimism and Polygon, with ready-made triggers for a borrow opened, a loan repaid, a liquidation, capital withdrawn and rewards claimed, plus a A number that shows how close a loan is to liquidation. Below 1 means liquidation trigger. On Solana, the same events come in through the Automation Trigger API. For A message that shows inside your product the next time the user opens it. No email needed, your developer adds one short script. The stages are computed from the same events, and the stage report reads from the same data.

A mainstream email tool could run the campaigns and the letter. It cannot see a health factor fall or a range go idle, so the Loops, the stages and the A single message sent the same day something happens to a user's account or position would have to go.

What we need from you

Seven answers before the first send. Where your email addresses come from and what people agreed to receive, which decides who is on service and who is on news from day one. Which markets and chains are in scope, with their contract addresses, so triggers watch the right contracts from day one. What health level should The action that starts a Loop, such as a withdrawal an alert for each collateral, since volatile collateral needs an earlier warning.

Then who can approve a crisis message, and how fast. Whether you market to users in the UK, where the rules ban referral bonuses and stale rates in crypto promotions. The domain the email sends from and who manages its DNS, because SPF, DKIM and DMARC decide between inbox and spam. And who approves each message, and whose voice it goes out in.