Growth loops are closed cycles where the output of one turn becomes the input of the next, so the system reinvests its own results instead of being refilled from outside. A funnel runs once and depletes: pour traffic in, some converts, repeat next month. A loop compounds, because invited users invite more users and expansion revenue funds the surface that triggers the next expansion. The "Growth & Loops" constraint is binding when growth has stalled and you cannot name the one thing that actually compounds. The fix: find the single loop that compounds, mark the variable inside it that moves money, then attack the one constraint throttling that variable.
What do "growth loops, not funnels" actually mean?
Most teams have an AARRR dashboard (Acquisition, Activation, Retention, Referral, Revenue) and call it a growth model. A dashboard measures stages; a loop explains why next month is bigger without proportional new spend. The test most loops fail: can you draw a credible arrow from the output back into the input without buying that input again? If not, it is a funnel.
Six engines are worth diagramming, each with one compounding variable:
- Viral / referral: new users via invites and shared artifacts. Variable: K-factor.
- Content / SEO: new users via indexed pages. Variable: net-new pages per cohort times discovery-to-signup.
- Paid: new users via reinvested margin. Variable: reinvestable margin per user (LTV/CAC).
- Sales: new logos via pipeline. Variable: pipeline per landed account.
- Expansion / monetization: more revenue per existing account. Variable: net revenue retention.
- Engagement / retention: returning users and habit. Variable: terminal retention times natural frequency.
This play lives at the strategy layer. The compounding variable earns its place only if it moves CAC payback, lifetime value, or net-new active users. The unit-economics math sits in the measurement and attribution and demand and conversational pipeline execution domains.
How do I know growth loops are MY binding constraint?
If prospects cannot say what you do, that is a positioning problem. If you are targeting the wrong accounts, that is an ICP and jobs-to-be-done problem. Growth and loops is the binding constraint when the machine works but nothing accrues. The tells that it is yours:
- Every new month of growth costs a new month of spend, and the day you pause paid, growth flattens within a cohort.
- You have the AARRR dashboard but cannot point at the single arrow that self-sources more than half your net-new actives or revenue.
- Retention and expansion are treated as someone else's job, not as the engine.
Run the cold-start gate first. A loop cannot compound until a minimum-viable network exists and the behavior is happening organically. Below that threshold, network effects run in reverse and loop optimization just burns spend (Andrew Chen, The Cold Start Problem). Three conditions have to pass before you fund loop work:
- The loop is already firing on its own, a recurring share of new actives arriving via its own mechanism with zero paid push.
- At least one atomic network (one team, one ZIP code, one campus) is above density and retaining, not a global average that hides empty networks.
- The hard side, the small share who do most of the work, is being retained and not just acquired.
If any condition fails, the binding constraint is network density, not the loop variable, and the honest move is to build the network by hand.
What is the method: name the engine, mark the variable, find the one constraint?
The deep version produces one artifact for product and the board: a loop diagram with the variable marked, a cohort AARRR scorecard, a unit-economics read, and the named constraint. Four moves get there.
- Find the engine empirically. Name the biggest self-sourcing arrow, the one feeding over half your net-new actives or revenue, as the primary loop. Test on the right unit: net-new users for an acquisition-led motion, net-new revenue for an expansion-led one. These can name different engines, so diagram one, not a catalog.
- Mark the variable with cycle time, and mark defensibility. A 7-day loop compounds roughly four times faster than a 30-day one at identical strength, so cycle time travels with the variable. Then badge the output arrow from rented (pure paid, copyable) up to stacked (two or more durable powers), because compounding and defensible are independent: a more defensible loop is the higher multiple.
- Read the retention curve, not the rate, then the unit economics. Drops-then-flattens means product-market fit holds; decays-toward-zero means no fit, so stop buying acquisition. The flattened tail (terminal retention) is what compounds: identical week-one retention with tails of 40% versus 15% is roughly 2.7x the lifetime value every cycle. Then read CAC payback and margin-adjusted LTV matched to the loop, never blended CAC to justify a paid one.
- Name exactly one binding constraint. A growth model has one weakest link at a time (Goldratt's Theory of Constraints), and improving any non-constraint stage produces zero net growth. Diagnose by recoverable value, not raw drop-off: a 25% drop on 8,000 users beats a 70% drop on 200. Re-diagnose after every fix; the constraint relocates.
What does this look like with real numbers?
Take Flowdesk, a usage-priced data-pipeline tool at roughly $8M ARR with a self-serve core and a sales-assisted compliance module.
The cold-start gate passes: about a fifth of newly activated accounts last quarter arrived because a colleague was invited into a shared pipeline, one team-network above density with the hard side retained. The engine test puts more than half of net-new revenue in existing accounts adding seats, so the primary engine is seat-and-usage expansion, the variable is cohort net dollar retention, and the defensibility badge reads switching.
The numbers:
| Metric | Value | Read |
|---|---|---|
| Retention curve | flattens around 58% (monthly frequency) | product-market fit holds |
| CAC payback (blended) | ~11 months | acceptable, not the constraint |
| CAC payback (expansion-sourced) | ~7 months | cost was largely paid at land |
| Net revenue retention | ~119% | strong for the mid-market band |
| Expansion ROI vs net-new logo | roughly 20:1 vs 2:1 | directional, collapses under heavy sales touch |
The binding constraint is not acquisition. The expand-prompt fires too late, when a customer goes over their limit and conversion has already collapsed. That expansion-trigger constraint outranks a louder activation drop because the recoverable value is higher. The first experiment is an A/B on the trigger threshold (80% versus 90% utilization), primary metric cohort net dollar retention, gross retention as the guardrail. The one-line brief: expansion loop, switching moat, late trigger to fix.
What quietly breaks a growth loop?
- Diagramming a loop before it has density. The most expensive failure here. Run the cold-start gate first, or you optimize a loop that compounds at zero because the network never crossed threshold.
- Confusing the AARRR dashboard for a growth model. A dashboard measures stages. A model names the one arrow that self-sources growth and the one variable inside it that moves money.
- Running amplification tests while retention leaks. You amplify a decaying loop. Fix the binding constraint first.
- Picking a vanity compounding variable. If doubling it does not move CAC payback, lifetime value, or net-new actives, re-pick.
How does the fix show up in revenue?
The signature of a fixed loop is that growth stops tracking spend. CAC payback shortens cycle over cycle, lifetime value rises as the terminal tail holds, and a growing share of net-new actives self-sources without proportional new budget. Report the program as cumulative compounded lift in a dollar figure, not a list of test wins, and make the reinvest-or-kill call on incrementality, not last-click.
Before you spend against a variable, the customer intelligence and synthetic testing domain lets you simulate the response first. If you are not yet sure this is your binding constraint, the Marketing OS diagnostic sorts it against the other eight in ten minutes.
FAQ
What is the difference between a growth loop and a funnel?
A funnel runs once and depletes: traffic enters the top, a fraction converts, and growing next month requires pouring in more traffic. A growth loop is a closed cycle where the output of one turn feeds the input of the next, so it compounds without proportional new spend. The test: if you cannot draw a credible arrow from the output back into the input without buying that input again, it is a funnel.
How do I find my primary growth loop?
Pull the channel and source breakdown, then name the biggest self-sourcing arrow (the source feeding more than half your net-new actives or revenue) as the primary loop. Test on the right unit: net-new active users for an acquisition-led motion, net-new revenue for an expansion-led one. Diagram the dominant one and footnote the rest.
What is the compounding variable in a growth loop?
It is the single ratio that decides whether each cycle is bigger or smaller than the last, chosen because it has to move CAC payback, lifetime value, or net-new active users. For a viral loop it is the K-factor; for an expansion loop, net revenue retention; for a retention loop, terminal retention times natural frequency. Always pair it with cycle time, since a faster loop compounds faster at identical strength.
Why run experiments against only one constraint?
A growth model has one binding constraint at a time, and improving any non-constraint stage produces zero net growth (Goldratt's Theory of Constraints). Name one AARRR stage or loop node, diagnose it by recoverable value rather than raw drop-off, fix it, then re-diagnose, since the constraint relocates.
Do growth loops apply outside B2B SaaS?
Yes, though the form bends. For services and agencies the loop is usually referral plus reputation, and the variable is referral rate times average engagement value. For e-commerce it is often a paid or user-generated-content loop, collapsing toward repeat-purchase rate and average order value. The spine holds: pick the variable that moves CAC payback, lifetime value, or net-new actives, and gate whether the loop can fire first.