{"id":340010,"date":"2026-07-18T21:03:18","date_gmt":"2026-07-18T21:03:18","guid":{"rendered":"https:\/\/en-gb.wordpress.org\/plugins\/eew-subscriptions-lite\/"},"modified":"2026-07-28T20:56:38","modified_gmt":"2026-07-28T20:56:38","slug":"eew-subscriptions-lite","status":"publish","type":"plugin","link":"https:\/\/ar.wordpress.org\/plugins\/eew-subscriptions-lite\/","author":23532006,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.3.6","stable_tag":"1.3.6","tested":"7.0.2","requires":"6.3","requires_php":"8.0","requires_plugins":null,"header_name":"eew Subscriptions Lite","header_author":"East End Web Dev","header_description":"Stripe-native subscription management for WordPress. Free version - subscription forms with unlimited products, manage subscriptions dashboard, and Gutenberg blocks. <a href=\"https:\/\/licenses.eastendweb.dev\/stripe-subscriptions\/\">The Pro version adds one-off payment forms, content and media restriction, and more<\/a>.","assets_banners_color":"2f3634","last_updated":"2026-07-28 20:56:38","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"https:\/\/eastendweb.dev","rating":0,"author_block_rating":0,"active_installs":0,"downloads":127,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.2.9":{"tag":"1.2.9","author":"eastendwebdev","date":"2026-07-18 21:03:02"},"1.3.6":{"tag":"1.3.6","author":"eastendwebdev","date":"2026-07-28 20:56:38"}},"upgrade_notice":{"1.3.3":"<p>Customers now see each billing option&#039;s real Stripe\/PayPal price and frequency alongside its label, so a mislabelled plan can no longer mislead them at checkout. Update recommended.<\/p>","1.2.9":"<p>Prevents duplicate subscription creation during checkout retries and removes unused one-off payment and development artifacts from Lite.<\/p>","1.2.8":"<p>Adds multiple admin notification recipients, strengthens SetupIntent authorization, updates Stripe PHP to 20.3.1, and cleans the production archive.<\/p>","1.2.7":"<p>Fixes missing subscription names on the manage subscriptions dashboard.<\/p>","1.2.6":"<p>Guests are now reminded to set their password and log in from the subscription success screen.<\/p>","1.2.5":"<p>Rename plugin slug, text domain, main PHP file and .pot file\nUpdate cross-plugin detection paths in both uninstall.php files\nSecurity audit fixes: nonce guards, key encryption, filtered Stripe responses, generic error messages, auto-login restriction for existing accounts<\/p>","1.2.4":"<p>First public release on WordPress.org.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3613001,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3613001,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256},"icon.svg":{"filename":"icon.svg","revision":3613001,"resolution":false,"location":"assets","locale":false}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3626425,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3626425,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":{"eew-subscriptions-lite\/manage-subscriptions":{"$schema":"https:\/\/schemas.wp.org\/trunk\/block.json","apiVersion":3,"name":"eew-subscriptions-lite\/manage-subscriptions","version":"1.0.0","title":"Manage Subscriptions (Lite)","keywords":["eew","stripe","subscription"],"category":"widgets","icon":"id-alt","description":"Display the subscription management dashboard.","textdomain":"eew-subscriptions-lite","editorScript":"file:.\/editor.js","render":"file:.\/render.php","attributes":{"buttonBackgroundColor":{"type":"string","default":""},"buttonTextColor":{"type":"string","default":""},"headingColor":{"type":"string","default":""},"secondaryTextColor":{"type":"string","default":""}},"supports":{"html":false,"align":["wide","full"],"textAlign":true,"color":{"background":true,"text":true,"link":true,"__experimentalDefaultControls":{"background":true,"text":true}},"typography":{"fontSize":true,"lineHeight":true,"fontFamily":true,"fontStyle":true,"fontWeight":true,"textAlign":true,"__experimentalDefaultControls":{"fontSize":true,"fontStyle":true,"fontWeight":true,"textAlign":true}},"spacing":{"padding":true,"margin":true},"border":{"radius":true,"width":true,"color":true,"style":true}}},"eew-subscriptions-lite\/subscription-form":{"$schema":"https:\/\/schemas.wp.org\/trunk\/block.json","apiVersion":3,"name":"eew-subscriptions-lite\/subscription-form","version":"1.0.0","title":"Subscription Form (Lite)","keywords":["eew","stripe","subscription"],"category":"widgets","icon":"tickets-alt","description":"Embeds a subscription form (Stripe and\/or PayPal) with unlimited products.","textdomain":"eew-subscriptions-lite","editorScript":"file:.\/editor.js","render":"file:.\/render.php","attributes":{"buttonBackgroundColor":{"type":"string","default":""},"buttonTextColor":{"type":"string","default":""},"headingColor":{"type":"string","default":""},"secondaryTextColor":{"type":"string","default":""},"gateway":{"type":"string","default":""}},"supports":{"html":false,"align":["wide","full"],"textAlign":true,"color":{"background":true,"text":true,"link":true,"__experimentalDefaultControls":{"background":true,"text":true}},"typography":{"fontSize":true,"lineHeight":true,"fontFamily":true,"fontStyle":true,"fontWeight":true,"textAlign":true,"__experimentalDefaultControls":{"fontSize":true,"fontStyle":true,"fontWeight":true,"textAlign":true}},"spacing":{"padding":true,"margin":true},"border":{"radius":true,"width":true,"color":true,"style":true}}}},"tagged_versions":["1.2.9","1.3.6"],"block_files":[],"assets_screenshots":{"Screenshot-1.png":{"filename":"Screenshot-1.png","revision":3626425,"resolution":"1","location":"assets","locale":"","width":772,"height":450},"Screenshot-2.png":{"filename":"Screenshot-2.png","revision":3626425,"resolution":"2","location":"assets","locale":"","width":772,"height":450},"Screenshot-3.png":{"filename":"Screenshot-3.png","revision":3626425,"resolution":"3","location":"assets","locale":"","width":772,"height":450},"Screenshot-4.png":{"filename":"Screenshot-4.png","revision":3626425,"resolution":"4","location":"assets","locale":"","width":772,"height":450},"Screenshot-5.png":{"filename":"Screenshot-5.png","revision":3626425,"resolution":"5","location":"assets","locale":"","width":772,"height":450},"Screenshot-6.png":{"filename":"Screenshot-6.png","revision":3626425,"resolution":"6","location":"assets","locale":"","width":772,"height":450},"Screenshot-7.png":{"filename":"Screenshot-7.png","revision":3626425,"resolution":"7","location":"assets","locale":"","width":772,"height":1200}},"screenshots":{"1":"Subscription form shortcode\/block - email enter step.","2":"Subscription form shortcode\/block - plan selection step.","3":"Subscription form shortcode\/block - Stripe Payment Element step.","4":"Subscription form shortcode\/block - PayPal Payment step.","5":"Subscription form shortcode\/block - subscription creation success.","6":"Manage subscriptions shortcode\/block.","7":"Plugin settings page."}},"plugin_section":[262246],"plugin_tags":[1932,32529,5349,4079],"plugin_category":[41,45,58],"plugin_contributors":[272238],"plugin_business_model":[],"class_list":["post-340010","plugin","type-plugin","status-publish","hentry","plugin_section-dashboard-widgets","plugin_tags-membership","plugin_tags-recurring-payments","plugin_tags-stripe","plugin_tags-subscriptions","plugin_category-communication","plugin_category-ecommerce","plugin_category-user-management","plugin_contributors-eastendwebdev","plugin_committers-eastendwebdev"],"banners":{"banner":"https:\/\/ps.w.org\/eew-subscriptions-lite\/assets\/banner-772x250.png?rev=3626425","banner_2x":"https:\/\/ps.w.org\/eew-subscriptions-lite\/assets\/banner-1544x500.png?rev=3626425","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":"https:\/\/ps.w.org\/eew-subscriptions-lite\/assets\/icon.svg?rev=3613001","icon":"https:\/\/ps.w.org\/eew-subscriptions-lite\/assets\/icon.svg?rev=3613001","icon_2x":false,"generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/eew-subscriptions-lite\/assets\/Screenshot-1.png?rev=3626425","caption":"Subscription form shortcode\/block - email enter step."},{"src":"https:\/\/ps.w.org\/eew-subscriptions-lite\/assets\/Screenshot-2.png?rev=3626425","caption":"Subscription form shortcode\/block - plan selection step."},{"src":"https:\/\/ps.w.org\/eew-subscriptions-lite\/assets\/Screenshot-3.png?rev=3626425","caption":"Subscription form shortcode\/block - Stripe Payment Element step."},{"src":"https:\/\/ps.w.org\/eew-subscriptions-lite\/assets\/Screenshot-4.png?rev=3626425","caption":"Subscription form shortcode\/block - PayPal Payment step."},{"src":"https:\/\/ps.w.org\/eew-subscriptions-lite\/assets\/Screenshot-5.png?rev=3626425","caption":"Subscription form shortcode\/block - subscription creation success."},{"src":"https:\/\/ps.w.org\/eew-subscriptions-lite\/assets\/Screenshot-6.png?rev=3626425","caption":"Manage subscriptions shortcode\/block."},{"src":"https:\/\/ps.w.org\/eew-subscriptions-lite\/assets\/Screenshot-7.png?rev=3626425","caption":"Plugin settings page."}],"raw_content":"<!--section=description-->\n<p>eew Subscriptions Lite (the eew stands for East End Web) lets you sell recurring subscriptions directly from WordPress using Stripe and\/or PayPal - no WooCommerce, no bloat.<\/p>\n\n<p><strong>Features:<\/strong><\/p>\n\n<ul>\n<li>Subscription form with unlimited products via <code>[eew_sub_lite_subscription_form]<\/code><\/li>\n<li>Customer manage subscriptions dashboard via <code>[eew_sub_lite_manage_subscriptions]<\/code><\/li>\n<li>Gutenberg blocks: <strong>Subscription Form (Lite)<\/strong> and <strong>Manage Subscriptions (Lite)<\/strong><\/li>\n<li>Guest checkout - WP accounts created automatically on first payment<\/li>\n<li>Supports returning customers with saved payment methods<\/li>\n<li>Webhook handling for subscription lifecycle and invoice events<\/li>\n<li>Compatible with any WordPress theme<\/li>\n<\/ul>\n\n<p><strong>Requirements:<\/strong><\/p>\n\n<ul>\n<li>A <a href=\"https:\/\/stripe.com\">Stripe<\/a> account and\/or a <a href=\"https:\/\/developer.paypal.com\">PayPal<\/a> REST app - at least one payment vendor must be configured<\/li>\n<li>Stripe: publishable key, secret key and webhook secret. PayPal: Client ID, Client Secret and Webhook ID. (Both configured in <strong>Dashboard nav &gt; EEW Subs Lite<\/strong>)<\/li>\n<\/ul>\n\n<p><strong>Upgrade to full version:<\/strong><\/p>\n\n<p>The full version of eew Subscriptions adds:<\/p>\n\n<ul>\n<li>One-off payment forms (Set price \/ pay what you want)<\/li>\n<li>One-time access passes (a single payment grants time-limited access)<\/li>\n<li>Full-page\/by block and file\/media content restriction by subscription (via active sub or one time payment pass)<\/li>\n<li><a href=\"https:\/\/licenses.eastendweb.dev\/stripe-subscriptions\/\">Learn more and purchase at licenses.eastendweb.dev<\/a><\/li>\n<\/ul>\n\n<h3>External Services<\/h3>\n\n<p>This plugin connects to the following external services to provide its core functionality. No data is ever sent to the plugin author - all communication is directly between your server\/visitors and the payment vendor(s) you configure.<\/p>\n\n<p><strong>Stripe API (api.stripe.com)<\/strong><\/p>\n\n<p>Your server communicates with the Stripe API (via the bundled official Stripe PHP SDK) to create and manage customers, subscriptions, setup intents and payment methods. When a visitor uses the subscription form or the manage-subscriptions dashboard, the following data is sent to Stripe: the customer's email address and name (where provided), and the identifiers of the products, prices, subscriptions and payment methods involved. Stripe also sends webhook events back to your site to keep subscription statuses in sync.<\/p>\n\n<p><strong>Stripe.js (js.stripe.com)<\/strong><\/p>\n\n<p>On pages containing the subscription form or manage-subscriptions shortcode\/block, the Stripe.js library is loaded in the visitor's browser directly from js.stripe.com, as required by Stripe for PCI compliance. Card details are entered into Stripe's secure Payment Element and are sent directly from the visitor's browser to Stripe - they never pass through your server.<\/p>\n\n<p>Stripe services are provided by Stripe, Inc. - <a href=\"https:\/\/stripe.com\/legal\">Terms of Service<\/a>, <a href=\"https:\/\/stripe.com\/privacy\">Privacy Policy<\/a>.<\/p>\n\n<p><strong>PayPal API (api-m.paypal.com, or api-m.sandbox.paypal.com in Sandbox mode)<\/strong><\/p>\n\n<p>If you enable PayPal as a payment vendor (Settings &gt; Enabled Payment Vendors), your server communicates with the PayPal REST API to obtain an access token, create, look up and cancel subscriptions, look up billing plans, and verify the signature of incoming PayPal webhooks. When a visitor uses the subscription form with PayPal selected, the following data is sent to PayPal: the customer's email address and name (where provided), and the identifiers of the plans and subscriptions involved. PayPal also sends webhook events back to your site to keep subscription statuses in sync. This only happens if you configure PayPal credentials in the plugin settings - a Stripe-only site never contacts PayPal. The Sandbox\/Live environment setting determines which of the two hosts is used.<\/p>\n\n<p><strong>PayPal JS SDK (paypal.com)<\/strong><\/p>\n\n<p>On pages containing the subscription form, if PayPal is configured and selected as the payment method, the PayPal JS SDK is loaded in the visitor's browser directly from paypal.com to render the PayPal payment button and complete checkout.<\/p>\n\n<p>PayPal services are provided by PayPal, Inc. - <a href=\"https:\/\/www.paypal.com\/webapps\/mpp\/ua\/useragreement-full\">Terms of Service<\/a>, <a href=\"https:\/\/www.paypal.com\/myaccount\/privacy\/privacyhub\">Privacy Policy<\/a>.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>eew-subscriptions-lite<\/code> folder to <code>\/wp-content\/plugins\/<\/code>.<\/li>\n<li>Activate the plugin via <strong>Plugins &gt; Installed Plugins<\/strong>.<\/li>\n<li>Go to <strong>Dashboard nav &gt; EEW Subs Lite<\/strong>, enter your Stripe and\/or PayPal API keys under <strong>Enabled Payment Vendors<\/strong>, and add the products (Stripe product IDs and\/or PayPal Plan IDs) you want to offer as subscriptions.<\/li>\n<li>Set up the webhook endpoint(s) for whichever vendor(s) you enabled - the webhook URL(s) are shown on the settings page.<\/li>\n<li>Add the <code>[eew_sub_lite_subscription_form]<\/code> shortcode to any page.<\/li>\n<li>Add the <code>[eew_sub_lite_manage_subscriptions]<\/code> shortcode to a dedicated page for customers to manage their subscriptions.<\/li>\n<\/ol>\n\n<p><a href=\"https:\/\/licenses.eastendweb.dev\/eew-subscriptions-plugin-setup-guide\/\">A complete guide can be found here (licenses.eastendweb.dev)<\/a><\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"do%20i%20need%20woocommerce%3F\"><h3>Do I need WooCommerce?<\/h3><\/dt>\n<dd><p>No. eew Subscriptions Lite works independently of WooCommerce.<\/p><\/dd>\n<dt id=\"where%20do%20i%20find%20my%20stripe%20product%20id%3F\"><h3>Where do I find my Stripe product ID?<\/h3><\/dt>\n<dd><p>Log in to your Stripe dashboard, go to <strong>Products<\/strong>, and copy the ID that starts with <code>prod_<\/code>.<\/p><\/dd>\n<dt id=\"what%27s%20the%20difference%20between%20the%20lite%20and%20full%20version%3F\"><h3>What's the difference between the lite and full version?<\/h3><\/dt>\n<dd><p>The lite version covers subscription forms (unlimited products) and the manage subscriptions dashboard. The full version adds one-off payment forms, one-time access passes, content and media restriction, and auto-updates. <a href=\"https:\/\/licenses.eastendweb.dev\/stripe-subscriptions\/\">Find out more<\/a>.<\/p><\/dd>\n<dt id=\"what%20webhook%20events%20should%20i%20listen%20for%3F\"><h3>What webhook events should I listen for?<\/h3><\/dt>\n<dd><p>If you're using Stripe: add your webhook URL (shown in the plugin settings) to your Stripe dashboard under <strong>Developers &gt; Webhooks<\/strong>. Listen for: <code>customer.subscription.created<\/code>, <code>customer.subscription.updated<\/code>, <code>customer.subscription.deleted<\/code>, <code>invoice.created<\/code>, <code>invoice.paid<\/code>, <code>invoice.payment_failed<\/code>, <code>invoice.overdue<\/code>.<\/p>\n\n<p>If you're using PayPal: add the webhook URL (also shown in the plugin settings) to your PayPal app under <strong>Webhooks<\/strong>. Subscribe to: <code>BILLING.SUBSCRIPTION.ACTIVATED<\/code>, <code>BILLING.SUBSCRIPTION.UPDATED<\/code>, <code>BILLING.SUBSCRIPTION.CANCELLED<\/code>, <code>BILLING.SUBSCRIPTION.SUSPENDED<\/code>, <code>BILLING.SUBSCRIPTION.EXPIRED<\/code>, <code>PAYMENT.SALE.COMPLETED<\/code> and <code>PAYMENT.SALE.DENIED<\/code>. The two <code>PAYMENT.SALE.*<\/code> events cover recurring renewal charges (PayPal delivers these separately from the subscription lifecycle events) and are required for renewal notification emails to be sent.<\/p><\/dd>\n<dt id=\"is%20this%20plugin%20compatible%20with%20caching%20plugins%3F\"><h3>Is this plugin compatible with caching plugins?<\/h3><\/dt>\n<dd><p>The shortcode forms are rendered server-side. If you use a full-page caching plugin, exclude the pages containing the shortcodes from the cache.<\/p><\/dd>\n<dt id=\"will%20my%20customers%20need%20to%20create%20an%20account%3F\"><h3>Will my customers need to create an account?<\/h3><\/dt>\n<dd><p>New customers are only prompted for their email address. A WordPress account is created automatically after a successful payment and a password-reset email is sent.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.3.6<\/h4>\n\n<ul>\n<li>Bugfix: the Stripe secret key, Stripe webhook secret, and PayPal client secret\/webhook ID settings fields could be silently wiped if a browser or password manager cleared the pre-filled password field and the settings page was then saved for any reason - saving now treats a blank submission the same as \"unchanged\" rather than overwriting a working secret with nothing. Recommended if you've experienced webhook signature failures (\"Invalid signature\") after a routine settings save.<\/li>\n<\/ul>\n\n<h4>1.3.5<\/h4>\n\n<ul>\n<li>Docs: the Products settings section's description and Product ID field help text still referred to Stripe specifically after 1.3.4 made the section title vendor-neutral - now consistent for PayPal-only sites too.<\/li>\n<li>Docs: the \"What webhook events should I listen for?\" FAQ now covers PayPal's required webhook events (previously only mentioned in the 1.3.1 changelog entry), and the External Services section now names PayPal's sandbox API host alongside its live one.<\/li>\n<li>Internal: removed an accidental duplicate function definition in the manage-subscriptions dashboard script (no behaviour change).<\/li>\n<\/ul>\n\n<h4>1.3.4<\/h4>\n\n<ul>\n<li>Internal: the Products settings section and the \"no products configured\" notice no longer refer to Stripe specifically, now that PayPal is also supported as a payment vendor - wording only, no functional change.<\/li>\n<\/ul>\n\n<h4>1.3.3<\/h4>\n\n<ul>\n<li>Security: the subscription form now shows each billing option's actual live price and billing frequency, resolved directly from Stripe and\/or PayPal, alongside its label - protects customers from a billing option whose label doesn't match what they would actually be charged.<\/li>\n<li>New: the Settings page's Stripe and PayPal key fields are now labelled with their vendor for clarity, and the API\/webhook key fields and Stripe Price ID \/ PayPal Plan ID fields each link to the relevant section of the setup guide.<\/li>\n<\/ul>\n\n<h4>1.3.2<\/h4>\n\n<ul>\n<li>New: the WP Dashboard widget now shows PayPal alongside Stripe - a Setup &amp; Health row per configured vendor, correct per-vendor mode badges, and a dashboard link for each configured vendor instead of a Stripe-only shortcut.<\/li>\n<li>Bugfix: after a successful subscription redirect, the page didn't scroll to the confirmation message - on a long page this could leave a customer looking at an unrelated part of the page with no visible sign anything had happened.<\/li>\n<\/ul>\n\n<h4>1.3.1<\/h4>\n\n<ul>\n<li>Bugfix: recurring PayPal subscription payments (renewals after the first billing cycle) were not sending admin\/customer notification emails - PayPal delivers these as a separate <code>PAYMENT.SALE.COMPLETED<\/code> event distinct from the subscription-lifecycle events already handled, which was previously unhandled. Note: sites using PayPal subscriptions also need to add \"Payment sale completed\" (and optionally \"Payment sale denied\") to their PayPal webhook's subscribed event types for this to take effect.<\/li>\n<\/ul>\n\n<h4>1.3.0<\/h4>\n\n<ul>\n<li>New: PayPal is now supported as an optional second payment vendor alongside Stripe for subscriptions. Pair a PayPal Plan ID with (or instead of) a Stripe Price ID on each billing option in settings; customers see a simple Card \/ PayPal choice when both are configured for the same plan, and no extra step at all on a site using only one vendor.<\/li>\n<li>New: the manage subscriptions dashboard and cancel action now correctly recognise whichever vendor a given subscription actually used, rather than assuming Stripe.<\/li>\n<li>New: the \"Enabled Payment Vendors\" setting is now a genuine kill switch - disabling a vendor there immediately stops new checkouts through it and stops loading its script for visitors, rather than just hiding it from the checkout form while still quietly accepting requests.<\/li>\n<li>New: a clear message is now shown to visitors if every configured payment vendor is currently disabled, instead of a blank form.<\/li>\n<li>Requires a PayPal REST app (Client ID, Secret, and Webhook ID) if you choose to enable it - entirely optional, Stripe-only sites are unaffected.<\/li>\n<\/ul>\n\n<h4>1.2.9<\/h4>\n\n<ul>\n<li>Added a stable Stripe idempotency key to SetupIntent subscription creation so concurrent or retried status requests cannot create duplicate subscriptions.<\/li>\n<li>Removed unused one-off payment storage code and stopped Lite from creating the full version's payments table.<\/li>\n<li>Removed stray Composer and PHPUnit artifacts and strengthened distribution exclusions to keep them out of future archives.<\/li>\n<\/ul>\n\n<h4>1.2.8<\/h4>\n\n<ul>\n<li>Admin notification settings now accept multiple comma-separated recipient addresses (up to 25).<\/li>\n<li>Hardened SetupIntent status checks by requiring and validating the Stripe client secret before subscription state can be created or returned.<\/li>\n<li>Updated the bundled Stripe PHP SDK to 20.3.1 and removed upstream development folders from the distribution archive.<\/li>\n<li>Revised full-version references to describe only features supplied by the separately distributed plugin.<\/li>\n<\/ul>\n\n<h4>1.2.7<\/h4>\n\n<ul>\n<li>Bugfix: subscription names were missing from the manage subscriptions dashboard due to an incorrect items array accessor.<\/li>\n<\/ul>\n\n<h4>1.2.6<\/h4>\n\n<ul>\n<li>New: after a guest completes a subscription, the success screen now reminds them to check their email to set a password and log in to manage their subscription. Logged-in customers are unaffected.<\/li>\n<\/ul>\n\n<h4>1.2.5<\/h4>\n\n<ul>\n<li>Unlimited subscription products - the settings page now has a products repeater and the subscription form offers plans from every configured product.<\/li>\n<li>Removed automatic login after guest checkout - new customers receive a password-set email and log in through the standard WordPress flow.<\/li>\n<li>Guest checkout hardening: a fresh Stripe customer is always created for guest purchases, and emails matching an existing account are asked to log in instead.<\/li>\n<li>Updated the bundled Stripe PHP SDK to the latest stable release.<\/li>\n<li>Rename plugin slug, text domain, main PHP file and .pot file<\/li>\n<li>Update cross-plugin detection paths in both uninstall.php files<\/li>\n<li>Security audit fixes: nonce guards, key encryption, filtered Stripe responses, generic error messages, auto-login restriction for existing accounts<\/li>\n<\/ul>\n\n<h4>1.2.4<\/h4>\n\n<ul>\n<li>Fix of pre submit security and issues audit results plus various other fixes and improvments to get things in line for WP plugin repo submit<\/li>\n<li>Bugfix: re-saving the settings page could overwrite the stored Stripe secret key or webhook secret with its own masking placeholder, resulting in \"Invalid API Key\" errors. Masked key fields are now preserved correctly on save.<\/li>\n<li>Error hardening: a misconfigured or invalid Stripe API key now shows a clear message instead of returning a server error.<\/li>\n<\/ul>\n\n<h4>1.2.3<\/h4>\n\n<ul>\n<li>Dashboard setup &amp; health widget - Stripe\/webhook status, last-webhook tracker and quick shortcuts.<\/li>\n<li>General bugfixes.<\/li>\n<\/ul>\n\n<h4>1.2.0 \u2013 1.2.2<\/h4>\n\n<ul>\n<li>Pro edition releases (content restriction and media gating) - no changes to Lite.<\/li>\n<\/ul>\n\n<h4>1.1.7<\/h4>\n\n<ul>\n<li>Security hardening pass - tightened access control on REST routes, extra verification on public endpoints, additional rate limiting and quieter error logging.<\/li>\n<\/ul>\n\n<h4>1.1.6<\/h4>\n\n<ul>\n<li>Fixed the keys-status colour in the dashboard health widget and a mixed-up CSS selector.<\/li>\n<\/ul>\n\n<h4>1.1.5<\/h4>\n\n<ul>\n<li>Hygiene bump.<\/li>\n<\/ul>\n\n<h4>1.1.0 \u2013 1.1.4<\/h4>\n\n<ul>\n<li>Pro edition releases (admin overview dashboard and auto-updater fixes) - no changes to Lite.<\/li>\n<\/ul>\n\n<h4>1.0.8<\/h4>\n\n<ul>\n<li>Webhook event filtering - events for Stripe products other than the configured product are now ignored (plays nicely with shared Stripe accounts).<\/li>\n<\/ul>\n\n<h4>1.0.7<\/h4>\n\n<ul>\n<li>Tested with WordPress 7.0, plus small style updates.<\/li>\n<\/ul>\n\n<h4>1.0.6<\/h4>\n\n<ul>\n<li>Manage Subscriptions block added.<\/li>\n<li>Assorted notification styling changes.<\/li>\n<\/ul>\n\n<h4>1.0.5<\/h4>\n\n<ul>\n<li>Plan tier options now use the configured button colour selections.<\/li>\n<\/ul>\n\n<h4>1.0.4<\/h4>\n\n<ul>\n<li>More style attributes connected up to the blocks.<\/li>\n<\/ul>\n\n<h4>1.0.3<\/h4>\n\n<ul>\n<li>Text justification fixes for blocks.<\/li>\n<\/ul>\n\n<h4>1.0.2<\/h4>\n\n<ul>\n<li>Primary\/secondary text colouring added to blocks.<\/li>\n<\/ul>\n\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Blocks can now use Gutenberg-native styling properties and panels.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release.<\/li>\n<\/ul>","raw_excerpt":"Recurring subscriptions for WordPress via Stripe and\/or PayPal. No WooCommerce required.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/ar.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/340010","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ar.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/ar.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/ar.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=340010"}],"author":[{"embeddable":true,"href":"https:\/\/ar.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/eastendwebdev"}],"wp:attachment":[{"href":"https:\/\/ar.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=340010"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/ar.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=340010"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/ar.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=340010"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/ar.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=340010"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/ar.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=340010"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/ar.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=340010"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}