PaywallProject Docs
  1. Home
  2. PaywallProject plugin
  3. Move from Leaky Paywall to PaywallProject
  1. Home
  2. Stripe
  3. Move from Leaky Paywall to PaywallProject

Move from Leaky Paywall to PaywallProject

This guide moves your readers from Leaky Paywall to PaywallProject. Readers who pay with Stripe keep their card, price and renewal date. On the same WordPress site, everyone keeps their login. PaywallProject reads Leaky Paywall’s data directly, even while Leaky Paywall is deactivated.

Before you start

  • Update to PaywallProject 4.2.0 or later. You need administrator access to WordPress and to your Stripe account.
  • Connect the Stripe account your readers already pay into, under PaywallProject → Settings → Stripe.
  • Create one level for each old plan, with the same price and billing interval. Steps 1 and 2 of the walkthrough show how.
  • Do a test run on a staging copy of your site first.
  1. Go to PaywallProject → Tools. On the Import subscribers card, select Start an import.
  2. Check that Import directly from Leaky Paywall is chosen. PaywallProject reads your subscribers at once.
  3. Under Match plans to levels, check the level for each Leaky Paywall level. A level with the same name is chosen for you. Readers on a level left on Leave out aren’t imported.
  4. Under Match statuses, check the status chosen for each old status. Change any you want.
  5. Under Paywall settings (optional), leave the box off to keep your PaywallProject settings. To copy Leaky Paywall’s restrictions and meter instead, tick Also bring over Leaky Paywall’s paywall settings and restrictions, check the list of changes, and select Replace these settings.
  6. Select Preview import and read the preview. Nothing is saved yet.
  7. Select Import now and confirm. Then select Download report (CSV) to keep a record. PaywallProject then recreates your group accounts and adds Leaky Paywall’s payments to Transactions.
Import directly from Leaky Paywall is chosen; two Leaky Paywall levels are matched to PaywallProject levels, with their statuses
PaywallProject found Leaky Paywall on this site and matched its levels by name. Made-up subscribers.
The Paywall settings (optional) step ticked, with a warning and a table of each setting now and after
The optional settings step lists every setting it would change.

Method 2: Import an export file

Use this when Leaky Paywall ran on a different WordPress site. Set up your restrictions and paywall on the new site yourself.

  1. On the old site, go to Leaky Paywall → Reporting Tool and export your subscribers (Leaky Paywall: subscriber report).
  2. Go to PaywallProject → Tools. On the Import subscribers card, select Start an import.
  3. Under Upload an export file, choose Leaky Paywall (on another site).
  4. Under Add your export file, add the Reporting Tool export.
  5. Under Check the columns, select Show the column matches and fix any wrong match.
  6. Under Match plans to levels, check the level for each old plan. A level with the same name is chosen for you. Choose Leave out to skip a plan.
  7. Under Match statuses, check the status chosen for each old status. Change any you want.
  8. Select Preview import and read the preview. Nothing is saved yet.
  9. Select Import now and confirm. Then select Download report (CSV) to keep a record.
Check the columns step with a sample Leaky Paywall export: each PaywallProject field and the column matched to it
Check the columns with a sample Leaky Paywall export. Made-up readers.
Match plans to levels and Match statuses steps for a sample Leaky Paywall export
Plans matched to levels, and the statuses PaywallProject chose.

After the import

  • Deactivate Leaky Paywall.
  • In Stripe, under Developers → Webhooks (or Workbench → Webhooks), disable the endpoint that ends in ?listener=stripe. Disable it rather than delete it, so you can roll back.
  • Cancel the recurring payments of readers who pay with PayPal, in your PayPal account.
  • Remove Leaky Paywall’s fee. If you connected Stripe with Leaky Paywall’s Connect button, it set a 10% application_fee_percent on each subscription it created in live mode. Ask Leaky Paywall to remove it before you disconnect, or Stripe keeps paying it on every renewal (details).
  • Tell readers their subscription carries over. They sign in as before.

Good to know

  • Logins: the import matches readers by email and never changes a username, password or user ID. Moving to a new WordPress site too? See Readers who get a new account.
  • Readers who pay with PayPal keep their end date and are marked to subscribe again. PaywallProject sends them the Renewal reminder email before that date (details).
  • Group accounts: a group comes over when its owner is imported. Members keep active or invited, and nobody gets an email.
  • Settings: a copy of your settings is saved first. Select Undo: put my previous settings back in the same step to restore them. Pages, Stripe keys and sender details are only filled in where you have none.
  • A reader with a customer ID but no subscription ID gets their running subscription from Stripe. If there are several, the newest is linked, with a warning.
  • Running the import again adds no copies of readers, groups or payments.
  • If you connected Stripe with Leaky Paywall’s Connect button, only Leaky Paywall can change its subscriptions through Stripe. If a cancellation or plan change from WordPress doesn’t go through, make it in your Stripe Dashboard (why).
  • Read the preview explains every result and warning.
  • Prefer an AI app? Claude, ChatGPT or another connected app can run the same import. See Move subscribers with an AI app.
Updated on November 7, 2026
Was this article helpful?

Related Articles

Get more help
Can't find the answer you're looking for? Get in touch.
Contact support