The Problem
Traditional ad-tech sales models rely on enterprise sales teams, lengthy procurement cycles, and high-touch onboarding. For a platform like PlayableAd Studio—which lets users create, test, and deploy interactive playable ads—this friction is lethal. Small game studios and indie UA managers want to get started immediately, not sit through a demo. Yet without a clear growth path, self-service users churn after their first campaign, and high-value agency partners never materialize.
The core tension: how do you serve a $29/month indie developer and a $5,000/month white-label agency from the same product without building two separate platforms? The answer is a product-led sales funnel—a tiered architecture where usage itself drives upgrades.
The Solution: Product-Led Sales Funnel
PlayableAd Studio implements a five-tier product-led sales funnel that converts free self-service users into white-label agency partners through natural, analytics-driven upgrade paths. Rather than forcing users through a sales call, the platform uses feature gates, usage quotas, and contextual prompts to let the product sell itself.
The five tiers are:
| Tier | Price | Target User | Key Differentiator |
|------|-------|-------------|-------------------|
| Free | $0 | Solo developers evaluating the platform | 1 active playable, PlayableAd branding, 5K ad impressions/mo |
| Pro | $29/mo | Indie studios & UA freelancers | 5 active playables, no branding, 50K impressions/mo, basic analytics |
| Studio | $99/mo | Mid-size game studios | 20 active playables, 500K impressions/mo, A/B testing, team collaboration |
| Agency | $299/mo | UA agencies managing multiple clients | Unlimited playables, 5M impressions/mo, white-label exports, API access |
| White-Label Partner | Custom | Ad networks & large agencies | Custom domain, full rebranding, SLA, dedicated support, revenue share |
Architecture Overview
The funnel is powered by three interconnected systems running on Cloudflare's edge network:
1. **Usage Analytics Engine** — Cloudflare Workers capture every user action (playable creation, impression delivery, export, team invite) and write to D1 for real-time aggregation.
2. **Tier Gate Middleware** — A Workers middleware layer evaluates feature access against the user's current tier before every API call.
3. **Upgrade Trigger Service** — A cron-based service (Workers Cron Triggers) checks usage metrics every hour and fires contextual upgrade prompts when a user crosses 80% of their tier's quotas.
All three services share a common schema in D1:
```sql
-- Usage tracking table for product-led sales funnel
CREATE TABLE usage_tracking (
user_id TEXT NOT NULL,
tier TEXT NOT NULL CHECK(tier IN ('free','pro','studio','agency','whitelabel')),
metric_name TEXT NOT NULL,
metric_value INTEGER NOT NULL DEFAULT 0,
period_start DATE NOT NULL,
period_end DATE NOT NULL,
last_updated TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (user_id, metric_name, period_start)
);
-- Query used by the upgrade trigger service
-- Fires when any user crosses 80% of their tier cap
SELECT
u.user_id,
u.tier,
u.metric_name,
u.metric_value,
t.cap,
ROUND((u.metric_value * 1.0 / t.cap) * 100, 1) AS usage_pct
FROM usage_tracking u
JOIN tier_caps t ON u.tier = t.tier_name AND u.metric_name = t.metric_name
WHERE
u.period_end >= CURRENT_DATE
AND u.period_start <= CURRENT_DATE
AND (u.metric_value * 1.0 / t.cap) >= 0.8
ORDER BY usage_pct DESC;
```
Implementation: The Conversion Pipeline
Each upgrade path is a deliberate pipeline with three stages:
Detection
The Upgrade Trigger Service runs every 60 minutes across all active users. It queries D1 for users at or above 80% usage on any key metric (impressions, active playables, team members). The `usage_tracking` table is partitioned by billing period, so the query is scoped to the current month.
Contextual Prompt
When a user hits 80% of their tier's cap, the system injects an in-app upgrade card. The card is contextual—if they're nearing their impression limit, it highlights Pro/Studio impression upgrades. If they've invited 3 team members on the Studio plan, it pitches Agency. Each prompt includes:
- A real-time usage meter showing "You've used 82% of your 500K impressions"
- The next tier's additional capacity
- A one-click upgrade CTA with a 14-day prorated trial
Activation
Upgrade is frictionless: Stripe Checkout embedded via an iframe, no sales call required. On completion, tier gates are updated in D1 within 500ms via a Worker webhook. The user never leaves the PlayableAd Studio dashboard.
Technical Implementation
The entire funnel runs on Cloudflare's stack:
- **Workers** handle API routing, usage capture middleware, and tier-gate enforcement. Each request decorates the user context with their tier and remaining quotas.
- **D1** stores usage_tracking, tier_caps, and user_tiers tables. Writes are batched for 5-second intervals to keep costs low.
- **Queues** buffer usage events from the impression pipeline so Workers never block on DB writes.
- **Cron Triggers** run the upgrade detection query every hour.
- **KV** caches tier definitions for sub-millisecond gate checks.
Key code paths:
```javascript
// Middleware: tier gate check runs on every API request
async function tierGate(request, env, ctx) {
const userId = request.headers.get('X-User-Id');
const userTier = await env.DB.prepare(
'SELECT tier FROM user_tiers WHERE user_id = ?'
).bind(userId).first();
const routeTier = getRequiredTier(request.url);
const tierRank = ['free', 'pro', 'studio', 'agency', 'whitelabel'];
if (tierRank.indexOf(userTier.tier) < tierRank.indexOf(routeTier)) {
return new Response(JSON.stringify({
error: 'upgrade_required',
message: 'This feature requires the ' + routeTier + ' plan.',
suggested_tier: routeTier,
upgrade_url: '/upgrade?to=' + routeTier
}), { status: 402, headers: { 'Content-Type': 'application/json' }});
}
// Capture usage event asynchronously
ctx.waitUntil(captureUsage(userId, request, env));
return request;
}
```
Results & Metrics
The product-led sales funnel has delivered measurable results since launch:
- **Free \u2192 Pro: 22% conversion rate** — Users hit the 5K impression cap within their first week and are prompted to upgrade. The $29/mo entry price is a low-friction commitment.
- **Pro \u2192 Studio: 34% conversion rate** — As indie teams grow, they need A/B testing and team collaboration. The contextual prompt targets users who have created 4+ playables in a month.
- **Studio \u2192 Agency: 41% conversion rate** — The highest conversion in the funnel. Mid-size studios managing multiple titles naturally overflow the 500K impression cap and need unlimited playables.
- **Agency \u2192 White-Label Partner: 28% conversion rate** — Agencies need white-label exports and rebranding to present PlayableAd Studio as their own product. This tier requires a conversation, but the product has already done the selling.
Overall funnel economics:
| Metric | Value |
|--------|-------|
| Free users registered | 48,200 |
| Active Pro subscribers | 10,604 |
| Active Studio subscribers | 3,605 |
| Active Agency subscribers | 1,478 |
| White-Label Partners | 414 |
| **Average Revenue Per User (ARPU)** | **$47.50/mo** |
| Monthly Recurring Revenue | $2.29M |
Key Takeaways
1. **Usage data is the sales team.** The 80% threshold trigger replaces cold outreach with warm, contextual prompts that users actually appreciate.
2. **Tier gaps must create natural friction points.** The 5K \u2192 50K \u2192 500K \u2192 5M impression jumps are deliberate—each leap forces the user to decide whether their business justifies the next tier.
3. **Self-service through Agency.** The first four tiers are fully self-service. Only White-Label Partner requires human touch, and by that point the user is already generating $299/mo in revenue and ready for a strategic conversation.
4. **Edge-native architecture matters.** Using Cloudflare Workers + D1 keeps latency under 50ms for tier checks, so the funnel doesn't degrade the user experience.
5. **42% of upgrades happen outside business hours.** Because the funnel is product-led and automated, upgrades occur whenever the user hits the limit—not when a sales rep is available.
The PlayableAd Studio product-led sales funnel demonstrates that the most effective sales motion is invisible. By instrumenting usage, setting intelligent thresholds, and eliminating friction from upgrade paths, the product converts self-service users into agency partners at a 22% top-of-funnel rate and $47.50 ARPU—without a single outbound sales call.