GROWTH PATTERN

Adding Freemium Gating to Stripe

Stripe processes payments reliably, but there's no system to track usage and automatically prompt upgrades when free users hit limits.

Stripe

Last updated:

What's Missing in Standard Stripe Architecture

While Stripe handles billing reliably, webhooks fire for payment events but not for usage milestones. There's no automatic connection between feature usage and subscription limits.

Standard Stripe Flow vs Optimized Skene Flow

Standard Flow
1

User subscribes via Stripe

2

Subscription active but no usage limits enforced

3

Free users can access all features without limits

Skene Flow
1

Monitor usage in database and Stripe subscription status

2

Detect when free tier user hits usage limit

3

Block feature access and trigger upgrade prompt email

4

Track conversion from free to paid

Visual comparison of the flows:

Loading diagram...

How Skene Fixes This

This Skene configuration tracks feature usage and integrates with Stripe to enforce subscription limits. It automatically gates features for free users and sends conversion-focused email sequences when limits are reached.

Implementation Comparison

Using Skene Infrastructure

Install via Prompt

cursor.mdc
@task: Initialize Skene.
@action: Analyze my local code, validating subscription via `npx skene login`, and generate `skene.config.ts` to implement the Freemium Gating pattern for Stripe.

Copy Skene Prompt for Cursor

Generated skene.config.ts

skene.config.ts
// skene.config.ts - The Automated Way
import { defineLoop } from '@skene/sdk';

export default defineLoop({
  type: 'freemium',
  opinion: 'Enforce usage limits for free tier users and trigger upgrade prompts',
  steps: [
    {
      trigger: {
        type: 'api',
        endpoint: '/api/features/*',
        method: 'POST'
      },
      condition: {
        type: 'usage',
        limit: {
          free: 100,
          paid: Infinity
        },
        period: '30d'
      },
      action: {
        type: 'block',
        message: 'You've reached your free tier limit. Upgrade to continue.',
        upgradePrompt: {
          type: 'email',
          provider: 'resend',
          template: 'upgrade_prompt'
        }
      }
    }
  ],
  recovery: {
    retries: 0 // No retries for blocking actions
  }
});

Frequently asked questions