Skip to main content

Overview

Subscriptions convert one-time buyers into recurring customers, creating predictable revenue streams. Pocketsflow handles the entire subscription lifecycle—from signup and billing to renewals, upgrades, and cancellations. Benefits:
  • ✅ Predictable monthly recurring revenue (MRR)
  • ✅ Higher customer lifetime value (LTV)
  • ✅ Automatic recurring billing via payment gateway
  • ✅ Built-in dunning for failed payments
  • ✅ Customer self-service portal
  • ✅ Flexible billing intervals (monthly, yearly, custom)
  • ✅ Free trial support

Subscription vs. One-Time Product

Choose the right model for your offering:
FactorSubscriptionOne-Time Product
Value deliveryOngoing (community, updates, content)Single delivery (course, ebook, template)
RevenueRecurring, predictableOne-time payment
Customer commitmentLong-term relationshipSingle transaction
ComplexityHigher (renewals, cancellations)Lower (deliver and done)
ExamplesMembership, SaaS access, Patreon-styleDigital download, course, template pack
Use subscriptions if:
  • You provide ongoing access (community, platform, tools)
  • Content updates regularly (monthly resources, new lessons)
  • You offer live support or office hours
  • You want predictable cash flow
Use one-time products if:
  • Value is delivered immediately (ebook, template)
  • No ongoing updates or support needed
  • Customers prefer one-time payment
  • You’re just starting (simpler to manage)
Hybrid approach: Offer both! Sell a course as one-time purchase, then upsell a membership for ongoing support and updates.

Creating a Subscription Product

Step 1: Start New Product

  1. Go to Dashboard → Products
  2. Click Create Product
  3. Select Subscription as product type
Once created as a subscription, you cannot convert it to a one-time product (or vice versa). Plan carefully or create a new product if needed.

Step 2: Basic Information

Product Name (required)
  • Example: “Premium Membership”, “VIP Community Access”, “Pro Plan”
  • Shows on checkout, invoices, and customer portal
Slug (required)
  • URL-friendly identifier
  • Example: premium-membership
  • Used in product URL: pocketsflow.com/p/premium-membership
Description (required)
  • Explain what subscribers get each billing period
  • Highlight ongoing benefits (not just signup perks)
  • Use bullet points for clarity
Example description:
# What You Get Every Month

- ✅ Weekly live Q&A sessions
- ✅ Private Discord community access
- ✅ Monthly resource pack (templates, guides)
- ✅ Priority email support
- ✅ Early access to new courses

Cancel anytime. No long-term commitment.

Step 3: Pricing & Billing Configuration

Price (required)
  • Enter amount per billing interval
  • Minimum: $1.00
  • Maximum: $999,999.99
  • Example: $29.00 per month
Billing Interval (required) Choose how often customers are charged:
IntervalDescriptionBest For
MonthlyEvery 30 daysMost common, lower commitment
YearlyEvery 365 daysHigher LTV, offer discount vs monthly
QuarterlyEvery 3 monthsBalance between monthly and yearly
WeeklyEvery 7 daysHigh-touch services, coaching
CustomCustom number of daysSpecial use cases
Example pricing strategies: Strategy 1 - Annual discount:
  • Monthly: 29/month(29/month (348/year)
  • Yearly: 249/year(save249/year (save 99 = 28% discount)
Strategy 2 - Multiple tiers:
  • Basic: $9/month (community access)
  • Pro: $29/month (+ resources + Q&A)
  • VIP: $99/month (+ 1-on-1 coaching)
Currency
  • Choose from 50+ supported currencies
  • Cannot change after first sale
  • All subscriber invoices use this currency

Step 4: Free Trial Configuration

Enable Free Trial (optional) Offer a risk-free trial period before charging: Trial Duration:
  • 7 days (most common)
  • 14 days (higher-priced subscriptions)
  • 30 days (annual plans)
  • Custom days (1-365)
How trials work:
  1. Customer signs up with payment method
  2. Payment method verified but not charged
  3. Full access during trial period
  4. First charge happens after trial ends
  5. Customer can cancel anytime during trial (no charge)
Trial configuration example:
Enable Free Trial: ON
Trial Duration: 14 days
Price After Trial: $29/month
Email notifications:
  • Trial started (immediate)
  • Trial ending soon (3 days before)
  • Trial ended, first payment charged (day trial ends)
Best practices:
  • ✅ Clearly state trial terms on product page
  • ✅ Send reminder email before trial ends
  • ✅ Provide value during trial (onboarding, welcome content)
  • ✅ Make cancellation easy (reduces disputes)
Customers must provide a valid payment method even for free trials. This ensures automatic conversion to paid subscription.

Step 5: Setup Fee (Optional)

Charge a one-time setup fee in addition to recurring subscription: Use cases:
  • Onboarding costs (custom setup, consultation)
  • Access to exclusive content library (one-time value)
  • Reduce trial abuse (small fee commitment)
Configuration:
Setup Fee: $99 (one-time)
Subscription Price: $29/month
First Invoice: $128 ($99 setup + $29 first month)
Subsequent Invoices: $29/month
Where to configure: Settings section when creating subscription product

Subscription Plans & Variants

Creating Multiple Tiers

Offer different subscription levels using product variants: Example structure: Base Product: “Membership” Variant 1 - Basic:
  • Name: Basic Plan
  • Price: $9/month
  • Description: Community access only
Variant 2 - Pro (most popular):
  • Name: Pro Plan
  • Price: $29/month
  • Description: Community + resources + Q&A
Variant 3 - VIP:
  • Name: VIP Plan
  • Price: $99/month
  • Description: Everything + 1-on-1 coaching
How to create:
  1. Create base subscription product
  2. Go to Product Variants section
  3. Click Add Variant
  4. Configure name, price, billing interval for each tier
  5. Describe what’s different in each tier
Customers choose their tier during checkout.

Managing Active Subscriptions

Viewing Subscriptions Dashboard

Location: Dashboard → Subscriptions Available views:
StatusDescriptionActions Available
ActivePaying and currentCancel, update, pause
TrialingIn free trial periodCancel, convert to paid
Past DuePayment failed, retryingUpdate payment, cancel
PausedTemporarily suspendedResume, cancel
CanceledEnded by customer or adminView history only
IncompleteSignup started, payment pendingRetry payment, cancel
Subscription details shown:
  • Customer name and email
  • Current plan/variant
  • Billing amount and interval
  • Next billing date
  • Payment method (last 4 digits)
  • Total revenue from subscription
  • Subscription start date
  • Status history

Subscription Actions

Cancel Subscription:
  1. Find subscription in dashboard
  2. Click Cancel
  3. Choose:
    • End immediately - Access revoked now, no refund
    • End of billing period - Access until renewal date
  4. Confirm cancellation
  5. Customer receives cancellation email
Update Subscription:
  • Change billing interval (monthly ↔ yearly)
  • Upgrade/downgrade plan
  • Update payment method
  • Apply discount code
Pause Subscription (if enabled):
  • Temporarily suspend billing and access
  • Resume later without re-subscribing
  • Useful for seasonal memberships
Issue Refund:
  • Partial or full refund for most recent charge
  • Choose whether to cancel subscription
  • Refund processed via original payment method

Customer Self-Service Portal

Pocketsflow provides a customer portal where subscribers can manage their own subscriptions. Portal URL: https://pocketsflow.com/account/subscriptions Customers can:
  • ✅ View all active subscriptions
  • ✅ See next billing date and amount
  • ✅ Update payment method
  • ✅ Upgrade or downgrade plan
  • ✅ Cancel subscription
  • ✅ Download invoices
  • ✅ View billing history
Access methods:
  1. Link in welcome email
  2. Link in invoice emails
  3. Login at pocketsflow.com/login
  4. Click “Manage Subscription” on product page (if logged in)
Configuring the portal:
  1. Settings → Customer Portal
  2. Toggle features:
    • Allow cancellations
    • Allow plan changes
    • Allow payment method updates
    • Cancellation feedback (ask why canceling)
  3. Set cancellation policy:
    • Immediate cancellation
    • End of billing period
  4. Save settings
Enable self-service cancellation to reduce support burden. Customers appreciate the autonomy and it builds trust.

Plan Changes & Proration

Upgrading Subscriptions

When a customer upgrades (e.g., Basic → Pro): Immediate upgrade (default):
  1. Customer charged prorated amount immediately
  2. New plan price applies
  3. Billing date remains the same
Proration calculation:
Current Plan: $9/month (Basic)
New Plan: $29/month (Pro)
Days remaining in cycle: 15 days
Days in month: 30 days

Proration credit: $9 × (15/30) = $4.50
Prorated charge: $29 × (15/30) = $14.50
Immediate charge: $14.50 - $4.50 = $10

Next invoice (30 days later): $29
Example email notification:
You've upgraded to Pro Plan!

Immediate charge today: $10.00 (prorated)
Next billing date: Jan 15, 2025
Next charge: $29.00/month

Your new benefits are active immediately.

Downgrading Subscriptions

When a customer downgrades (e.g., Pro → Basic): Options: Option 1 - Immediate downgrade:
  • Credit applied to account balance
  • New lower price starts now
  • Rarely used (customers lose access immediately)
Option 2 - End of period (recommended):
  • Customer keeps Pro access until renewal date
  • Downgrade takes effect on next billing date
  • No proration needed
  • Better customer experience
Configuration:
  • Settings → Subscriptions → Plan Changes
  • Choose: Immediate or End of Period
  • Set for upgrades and downgrades separately

Failed Payments & Dunning

When Payments Fail

Common reasons:
  • ❌ Insufficient funds
  • ❌ Expired credit card
  • ❌ Card declined by bank
  • ❌ Billing address mismatch
  • ❌ Fraud prevention triggers
What happens:
  1. Initial charge fails
  2. Subscription status → “Past Due”
  3. Automatic retry scheduled
  4. Customer receives payment failure email
  5. Retry attempts continue
  6. Eventually cancels if all retries fail

Automatic Retry Schedule

Pocketsflow automatically retries failed payments via your payment gateway: Smart Payment Retries:
  • Day 1: Initial attempt fails
  • Day 3: First retry (smart timing based on issuing bank)
  • Day 5: Second retry
  • Day 7: Third retry
  • Day 14: Final retry
  • Day 15: Subscription canceled if still failing
Subscription status during retries:
  • Access: Depends on your grace period settings
  • Customer portal: Shows “Past Due” with update payment option
  • Webhooks: invoice.payment_failed sent after each failure

Grace Period Configuration

What it is: Time subscribers retain access while payment is failing Options:
SettingAccess During FailuresBest For
No grace periodImmediate revoke on failureHigh-value services
Until all retries exhaustedAccess for ~14 daysMost subscriptions (recommended)
Custom daysAccess for X daysSpecific business needs
Configure:
  1. Settings → Subscriptions → Failed Payments
  2. Select grace period option
  3. Save
Email notifications:
  • Payment failed (immediate)
  • Payment retrying (day before retry)
  • Final attempt warning (day 13)
  • Subscription canceled (day 15)

Dunning Email Strategy

Set up automated emails to recover failed payments: Email 1 - Payment Failed (Day 1):
Subject: Payment Failed - Update Your Payment Method

Hi [Name],

We couldn't process your payment for [Product Name].

This happens sometimes due to expired cards or
insufficient funds. No worries—your access is
still active while we retry.

→ Update Payment Method

We'll try again in a few days.
Email 2 - Retry Reminder (Day 7):
Subject: Action Needed - Update Payment for [Product]

Hi [Name],

We've tried a few times but still can't process
your payment.

To avoid losing access, please update your
payment method:

→ Update Payment Method

Questions? Just reply to this email.
Email 3 - Final Warning (Day 13):
Subject: Final Notice - Subscription Ending Soon

Hi [Name],

Your subscription to [Product] will be canceled
tomorrow if we can't process payment.

Don't lose access! Update now:

→ Update Payment Method

This is our final attempt.
Configure: Settings → Email Templates → Subscription Dunning

Cancellations & Retention

Cancellation Policy Options

Option 1 - Immediate cancellation:
  • Access revoked immediately
  • No refund for unused time
  • Subscription ends right away
  • Best for: Services with minimal switching cost
Option 2 - End of billing period (recommended):
  • Access continues until renewal date
  • Customer keeps what they paid for
  • Better customer experience
  • Opportunity to win them back
  • Best for: Most subscriptions
Option 3 - Refund + immediate cancellation:
  • Prorated refund for unused time
  • Access revoked immediately
  • Higher churn recovery
  • Best for: High-trust brands, premium services
Configure:
  • Settings → Subscriptions → Cancellation Policy
  • Choose policy
  • Enable/disable self-service cancellation

Cancellation Flow & Feedback

Customer-initiated cancellation (portal):
1

Customer clicks Cancel

From account portal or email link
2

Cancellation survey (optional)

Ask why they’re canceling - multiple choice + text
3

Retention offer (optional)

Show special discount or pause option
4

Confirm cancellation

Customer confirms, receives confirmation email
5

Access handling

Immediate or end-of-period based on settings
Cancellation survey questions (customizable):
  • ☐ Too expensive
  • ☐ Not using it enough
  • ☐ Missing features
  • ☐ Found alternative
  • ☐ Technical issues
  • ☐ Other (text field)
Retention offers (optional):
Before you go...

Get 50% off your next 3 months!

[ Claim Discount ]  [ No Thanks, Cancel ]
Configure: Settings → Subscriptions → Cancellation Flow

Win-Back Campaigns

Re-engage canceled subscribers: Automated win-back emails: 7 days after cancellation:
Subject: We miss you! Here's 25% off to come back

Hi [Name],

We noticed you canceled [Product Name].

We've made improvements and would love to have
you back. Here's 25% off for 3 months:

→ Reactivate with Discount

No hard feelings if not!
30 days after cancellation:
Subject: What's new in [Product]

Hi [Name],

Since you left, we've added:
- [New Feature 1]
- [New Feature 2]
- [New Feature 3]

Want to give us another try?

→ Restart Subscription
Configure: Settings → Email Templates → Win-Back Campaigns

Webhooks for Subscriptions

Use webhooks to automate access control and notifications.

Key Subscription Events

Customer lifecycle: customer.subscription.created:
{
  "event": "customer.subscription.created",
  "subscription": {
    "id": "sub_abc123",
    "customer": {
      "email": "customer@example.com",
      "name": "John Doe"
    },
    "product": {
      "id": "prod_xyz789",
      "name": "Pro Membership"
    },
    "status": "active",
    "current_period_start": 1703174400,
    "current_period_end": 1705852800,
    "billing_interval": "month",
    "price": 2900,
    "currency": "usd"
  }
}
Action: Grant access to membership area, community, course platform customer.subscription.updated:
  • Triggered on plan changes, upgrades, downgrades
  • Update access levels accordingly
customer.subscription.deleted:
{
  "event": "customer.subscription.deleted",
  "subscription": {
    "id": "sub_abc123",
    "customer": {
      "email": "customer@example.com"
    },
    "canceled_at": 1705852800,
    "cancellation_reason": "customer_request"
  }
}
Action: Revoke access, remove from community, send exit survey customer.subscription.paused:
  • Subscription temporarily suspended
  • Remove active access, keep user data
customer.subscription.resumed:
  • Subscription reactivated after pause
  • Restore full access
customer.subscription.trial_will_end:
  • Sent 3 days before trial ends
  • Remind customer, encourage engagement

Payment Events

invoice.payment_succeeded:
{
  "event": "invoice.payment_succeeded",
  "invoice": {
    "id": "inv_abc123",
    "subscription_id": "sub_abc123",
    "customer": {
      "email": "customer@example.com"
    },
    "amount_paid": 2900,
    "period_start": 1703174400,
    "period_end": 1705852800,
    "billing_reason": "subscription_cycle"
  }
}
Actions:
  • Extend access for another billing period
  • Send custom thank you email
  • Update internal analytics
  • Trigger renewal confirmation
invoice.payment_failed:
{
  "event": "invoice.payment_failed",
  "invoice": {
    "id": "inv_abc123",
    "subscription_id": "sub_abc123",
    "customer": {
      "email": "customer@example.com"
    },
    "amount_due": 2900,
    "attempt_count": 1,
    "next_payment_attempt": 1703433600
  }
}
Actions:
  • Send custom dunning email
  • Notify in Slack
  • Update CRM status to “Payment Issue”
  • Start grace period timer
invoice.upcoming:
  • Sent 7 days before renewal
  • Remind customers of upcoming charge
  • Opportunity to update payment method

Integration Example: Grant Discord Access

const Discord = require('discord.js');
const client = new Discord.Client();

app.post('/webhooks/pocketsflow', async (req, res) => {
  const event = req.body;

  switch (event.event) {
    case 'customer.subscription.created':
    case 'customer.subscription.updated':
      // Grant Discord role
      const guild = client.guilds.cache.get(DISCORD_SERVER_ID);
      const member = await guild.members.fetch(
        await getUserDiscordId(event.subscription.customer.email)
      );

      const role = guild.roles.cache.find(
        r => r.name === 'Premium Member'
      );

      await member.roles.add(role);
      console.log(`Granted Premium role to ${member.user.tag}`);
      break;

    case 'customer.subscription.deleted':
      // Revoke Discord role
      const guild2 = client.guilds.cache.get(DISCORD_SERVER_ID);
      const member2 = await guild2.members.fetch(
        await getUserDiscordId(event.subscription.customer.email)
      );

      const role2 = guild2.roles.cache.find(
        r => r.name === 'Premium Member'
      );

      await member2.roles.remove(role2);
      console.log(`Revoked Premium role from ${member2.user.tag}`);
      break;

    case 'invoice.payment_failed':
      // Send Slack notification
      await sendSlackAlert({
        channel: '#billing-alerts',
        text: `⚠️ Payment failed for ${event.invoice.customer.email}`,
        color: 'danger'
      });
      break;
  }

  res.status(200).send('OK');
});
See Developer How-To Guides for more integration examples.

Analytics & Metrics

Key Subscription Metrics

Track these KPIs in Dashboard → Analytics → Subscriptions: Monthly Recurring Revenue (MRR):
  • Total monthly revenue from all active subscriptions
  • Excludes one-time fees and setup charges
  • Formula: Sum of all monthly subscription prices
Annual Recurring Revenue (ARR):
  • MRR × 12
  • Used for yearly planning
Churn Rate:
  • Percentage of subscribers who cancel each month
  • Formula: (Cancellations this month / Active subscribers start of month) × 100
  • Target: < 5% monthly churn
Customer Lifetime Value (LTV):
  • Average revenue per customer over their lifetime
  • Formula: Average subscription price / Churn rate
  • Example: 29/0.05=29 / 0.05 = 580 LTV
Subscriber Growth Rate:
  • Net new subscribers each month
  • Formula: ((New subs - Cancellations) / Starting subs) × 100
Trial Conversion Rate:
  • Percentage of trials that convert to paid
  • Formula: (Paid conversions / Trial starts) × 100
  • Target: > 40% conversion
Failed Payment Rate:
  • Percentage of charges that fail
  • Target: < 10%

Revenue Breakdown

View detailed revenue analytics: MRR Movement:
  • New MRR (new subscribers)
  • Expansion MRR (upgrades)
  • Contraction MRR (downgrades)
  • Churned MRR (cancellations)
  • Net New MRR (total change)
Cohort Analysis:
  • Track subscriber retention by signup month
  • See how long different cohorts stay subscribed
  • Identify seasonal patterns
Plan Distribution:
  • How many subscribers on each plan/tier
  • Revenue contribution by plan
  • Most/least popular plans

Best Practices

Pricing Strategy

✅ DO:
  • Offer annual discount (15-30% off vs monthly)
  • Create 3 tiers (good, better, best)
  • Highlight most popular plan
  • Test pricing with small audience first
  • Show monthly cost even for annual plans (24/month,billedannuallyat24/month, billed annually at 288)
❌ DON’T:
  • Change pricing frequently (confuses customers)
  • Make cancellation difficult (increases disputes)
  • Hide that it’s a subscription
  • Forget to show currency clearly

Onboarding & Retention

First 7 days are critical:
1

Welcome email (immediate)

Thank customer, explain next steps, provide access links
2

Onboarding email (Day 1)

How to get started, quick wins, support resources
3

Engagement email (Day 3)

Share popular features, success stories, community invite
4

Check-in email (Day 7)

Ask how it’s going, offer help, remind of upcoming charge (if trial)
Monthly engagement:
  • Send content digest
  • Announce new features
  • Share success stories
  • Host live events (Q&A, workshops)
  • Create exclusive content

Communication

Be transparent:
  • ✅ Clearly state it’s a subscription on product page
  • ✅ Show exact renewal date and amount
  • ✅ Send reminder before charging
  • ✅ Explain cancellation policy upfront
  • ✅ Make terms of service accessible
Required disclosures:
## Subscription Terms

- Billing: Monthly on the [day] of each month
- Renewals: Automatic unless canceled
- Cancellation: Anytime from customer portal
- Refunds: No refunds for partial months
- Changes: We may update pricing with 30 days notice

Troubleshooting

High Churn Rate

Problem: > 10% monthly cancellations Solutions:
  1. Exit survey: Ask why customers cancel
  2. Improve onboarding: Ensure customers get value quickly
  3. Engagement: Send regular content, reminders of benefits
  4. Retention offer: Discount or pause option before canceling
  5. Product improvements: Address common complaints
  6. Payment failures: Reduce involuntary churn via better dunning

Low Trial Conversion

Problem: < 30% of trials convert to paid Solutions:
  1. Engagement during trial: Onboarding emails, push to use features
  2. Trial length: Test 7 vs 14 vs 30 days
  3. Reminder emails: 3 days before trial ends
  4. Remove friction: Simplify signup, don’t require too much info
  5. Show value: Highlight quick wins, success stories

Payment Failure Issues

Problem: > 15% of charges failing Solutions:
  1. Update card reminders: Email before expiration
  2. Retry timing: Use smart payment retries (automatic)
  3. Payment method options: Support PayPal, ACH (if available)
  4. Pre-charge emails: Warn customers charge is coming
  5. Grace period: Give time to fix payment before revoking access

Subscription Management Confusion

Problem: Customers can’t find how to cancel or update Solutions:
  1. Prominent links: Include in every email footer
  2. Help docs: “How to cancel” guide
  3. Customer portal: Make it obvious and easy to use
  4. Support: Quick response for cancellation requests
  5. Transparency: Never hide cancellation options

FAQ

Can customers pause subscriptions?

Yes! Enable pause feature in Settings → Subscriptions → Pause Settings. Customers can pause for 1-3 months and resume later without re-subscribing.

What happens if a customer disputes a charge?

Your payment processor handles the dispute process. You’ll be notified and can provide evidence. If lost, the charge is refunded and subscription typically canceled.

Can I change billing interval after creation?

No. You must create a new product with the new interval. Customers can migrate by subscribing to the new product and canceling the old one.

Do I need to handle taxes?

Pocketsflow integrates with tax calculation services to automatically calculate and collect sales tax, VAT, and GST where required. Enable in Settings → Tax.

Can customers get invoices?

Yes, automatically. Every charge generates an invoice sent via email and available in customer portal.

What if I want to grandfather old pricing?

When you change pricing, existing subscribers keep their current price. New subscribers pay the new price. Manual changes required to migrate existing customers.

Next Steps

Upsells & Bundles

Increase revenue per customer

Webhook Events

Automate subscription workflows

Customer Management

Manage your subscriber base

Analytics

Track subscription metrics