=== LicenShield — Software License Manager === Contributors: parthinian1 Donate link: https://licenshield.com Tags: license, license key, license manager, software license, stripe Requires at least: 6.2 Tested up to: 6.9 Requires PHP: 7.4 Stable tag: 1.7.14 License: GPLv2 or later License URI: https://www.gnu.org/licenses/gpl-2.0.html Sell and protect your WordPress plugins, themes, desktop apps, and SaaS tools with professional license key management, Stripe payments, piracy detection, and multi-language SDKs. == Description == **LicenShield** is a complete, self-hosted software license management system built for WordPress developers. Install it on your own WordPress site, connect your own Stripe account, and start selling and protecting your plugins, themes, desktop apps, CLI tools, or any other software — with zero monthly fees, zero transaction fees beyond Stripe's standard rate, and no third-party platform owning your data. Whether you are a solo developer selling your first plugin or an agency managing an entire portfolio of products, LicenShield gives you a professional licensing backend without the ongoing cost of a SaaS platform. Built in the United States. Designed to be the only licensing tool you will ever need. [Visit licenshield.com](https://licenshield.com) | [Documentation](https://licenshield.com/docs) | [API Reference](https://licenshield.com/docs/api) | [Pricing](https://licenshield.com/pricing) --- = The Premier WordPress Licensing Suite = LicenShield handles the complete licensing lifecycle from first purchase through renewal, update delivery, and piracy protection. Your customers pay through Stripe, receive their license key instantly by email, install your software, and get automatic updates — all without you lifting a finger after the initial setup. > **Up and running in minutes.** The guided setup wizard walks through Stripe connection, first product creation, and API integration step by step. No developer required beyond adding a shortcode to a page. --- = Free Features — Forever Free, No Artificial Limits = **License Key Management** * Unlimited products — sell as many plugins, themes, or software products as you want * Unlimited licenses — generate as many keys as your business demands, on every plan including free * Cryptographically secure license key generation in a clean `PREFIX-XXXX-XXXX-XXXX-XXXX` format * Customizable license key prefix — brand your keys (e.g. `MYPLUGIN-XXXX`, `ACME-XXXX`) * Per-license activation limits — control exactly how many sites each key can be used on * Set activation limit to 0 for unlimited activations on enterprise or agency licenses * Expiration dates — set fixed validity periods per license (annual, monthly, or lifetime) * License status management — active, suspended, expired, or cancelled * Manual license creation with full control over product, customer name, email, activation limit, and expiry * Revoke individual site activations without affecting the rest of the license * Full activation history per license — site URL, IP address, user agent, and activation timestamp * Search and filter licenses by status, product, customer email, or key fragment * Bulk license management from the admin list view **Staging and Development Environment Detection** Your customers should never burn an activation limit testing on a staging server. LicenShield automatically detects development and staging environments and skips counting them against the activation limit — no customer support ticket required. Detected automatically: * Localhost and loopback addresses (127.0.0.1, ::1, localhost) * Local TLDs — `.local`, `.test`, `.localhost`, `.dev`, `.example`, `.invalid` * Staging subdomains — `staging.`, `stage.`, `dev.`, `develop.`, `test.`, `sandbox.`, `uat.`, `qa.` * Inline staging patterns anywhere in the URL — `.staging.`, `.stage.`, `.dev.`, `.test.`, `.sandbox.` * Private and reserved IP ranges — 192.168.x.x, 10.x.x.x, 172.16-31.x.x * WP Engine staging environments — `*.wpengine.com` * Kinsta staging environments — `*.kinsta.cloud` * Flywheel staging environments — `*.flywheelsites.com` **Stripe Payments** * Accept credit cards, Apple Pay, Google Pay, and all Stripe-supported payment methods * Stripe Checkout hosted payment page — PCI compliant, no card data ever touches your server * Automatic license key generation the moment a payment is confirmed via Stripe webhook * Stripe webhook endpoint with HMAC signature verification (`checkout.session.completed`) * Test mode and live mode switching from the admin settings panel * Separate test and live API key storage — develop safely without risking real charges * Configurable success and cancellation redirect URLs after checkout * Admin email notification on every new purchase **Automatic Software Updates** * Customers see "Update Available" in their WordPress dashboard and click Update — exactly like any WordPress.org plugin * Store version number, changelog notes, and download URL directly in each product record * REST endpoint for update checks (`/ls/v1/update-check`) — WordPress queries this automatically * Secure download endpoint (`/ls/v1/download`) validates the license before serving any file * Path traversal protection and file type validation on all download requests **Analytics Dashboard** * Revenue this month with month-over-month growth percentage and up/down trend indicator * Revenue last month and all-time totals * Active license count — all time * Licenses expiring in the next 30 days — catch renewals before they lapse * Recent orders list — customer name, product, and amount * Recently issued licenses * Top-selling products by revenue * Revenue and activation trend charts over selectable time periods **REST API** LicenShield exposes a clean REST API under `ls/v1` that your plugins, themes, scripts, and applications call to manage licenses in real time. All endpoints are rate limited to 10 failed attempts per 15-minute window per IP address to block brute-force attacks. * `POST /ls/v1/validate` — validate a license key, returns status, expiry date, activation count, and product details * `POST /ls/v1/activate` — activate a license on a new site, respects limits and staging detection * `POST /ls/v1/deactivate` — remove a site activation from a license * `POST /ls/v1/check` — lightweight status check that does not require a site URL * `POST /ls/v1/update-check` — check for available software updates, used by WordPress's built-in update system * `GET /ls/v1/download` — securely serve a plugin or theme ZIP after validating the license All responses return JSON with a `success` boolean, a human-readable `message`, and relevant license data. **Shortcodes** Embed your entire purchasing flow on any WordPress page with three built-in shortcodes: * `[licenshield_buy_button product="your-slug" text="Buy Now"]` — renders a styled purchase button linked to Stripe Checkout for the specified product. Accepts numeric product ID or slug. * `[licenshield_pricing_table products="1,2,3"]` — renders a complete pricing table for one or more products with name, price, billing cycle, and a customizable feature list per product. * `[licenshield_license_success]` — renders the post-purchase confirmation page displaying the customer's license key after a completed Stripe payment. **Customer Email Notifications** * Branded purchase confirmation email sent immediately after payment with no delay * Email includes the license key displayed prominently, product name, activation limit, expiry date, download button (if a URL is configured), and step-by-step activation instructions * Configurable company name, support email address, and reply-to for all outgoing emails * Admin notification email on every purchase so you never miss a sale **Setup, Onboarding and Usability** * Guided setup wizard covering Stripe connection, first product creation, and API integration — with auto-detection of completed steps and a visual progress sidebar * Context-sensitive tooltips on every admin field across Dashboard, Licenses, Products, Orders, and Settings — hover any field to see an explanation * First-use guided tours on each admin page — replay at any time via the Take Tour button * Copy-to-clipboard buttons on webhook URLs, API endpoint URLs, and code snippets throughout the admin * Suggestions page — submit and vote on feature ideas directly from your admin panel --- = LicenShield Pro = Upgrade to [LicenShield Pro](https://licenshield.com/pricing) for subscription billing, piracy protection, real-time Slack alerts, outbound webhooks, expiration reminders, and multi-language SDKs. **All paid plans include a 30-day money-back guarantee — no questions asked.** Paid plans are billed annually. Upgrade at any time and pay only the prorated difference for the remainder of your year. Downgrade at renewal if your needs change. --- **Subscription Billing — Starter, Pro and Agency** The fastest way to build predictable, recurring revenue from your plugins and software: * Accept monthly and yearly recurring payments through Stripe Subscriptions * Stripe handles the entire subscription lifecycle — creation, renewal, failed payment retries, and cancellation * License expiry date extended automatically on every successful renewal payment * License suspended automatically when a subscription is cancelled or a payment permanently fails * Customers can choose monthly or yearly depending on the billing options you configure per product **Discount Codes — Starter, Pro and Agency** * Create percent-off (e.g. SUMMER25 = 25% off) or fixed-amount discount codes * Set per-code usage limits — e.g. valid for the first 100 customers only * Set expiry dates on individual codes for time-limited promotions * Restrict a code to specific products or leave it open for all products * Real-time discount validation at checkout via the `/ls/v1/discount/validate` REST endpoint * Full usage tracking in the admin panel — see redemption count and remaining uses at a glance **Slack Notifications — Starter, Pro and Agency** Get instant Slack messages for every business event that matters. No more checking dashboards throughout the day: * New sale — product name, customer email, and amount paid * License activation — which key was activated and on which site URL * Subscription renewal — when a recurring payment succeeds * License expiry — configurable, off by default * Piracy alert — fires with severity level and a direct link to the alert panel * Individual toggle for each event type — enable only the notifications your team needs * Test button in settings — verify your Slack webhook URL works before going live **Outbound Webhooks — Starter, Pro and Agency** Connect LicenShield to Zapier, Make, HubSpot, Salesforce, your own API, or any external service: Seven supported events: * `license.created` — a new license was issued after purchase * `license.activated` — a license was activated on a site * `license.deactivated` — an activation was removed from a site * `license.renewed` — a subscription successfully renewed and the license was extended * `license.expired` — a license reached its expiry date * `license.suspended` — a license was suspended, manually or by piracy detection * `order.completed` — a Stripe payment was successfully completed Every outgoing webhook POST includes an `X-LicenShield-Sig` header containing an HMAC-SHA256 signature of the request body using your webhook secret. Your receiving endpoint can verify this header to confirm the request is genuine and has not been tampered with. * Subscribe each endpoint to only the specific events it needs * Auto-generated webhook secret if you leave the field blank * Webhook delivery log for debugging and confirming successful deliveries * Add multiple webhook endpoints — connect different URLs to different services simultaneously **Expiration Reminder Emails — Starter, Pro and Agency** * Automatically emails customers at 30 days, 14 days, and 7 days before their license expires * Each email includes the license key, product name, expiry date, and a renewal link * Deduplication logic prevents sending the same reminder twice to the same customer * Daily background cron job automatically expires licenses past their expiry date and updates their status **Piracy Detection — Starter, Pro and Agency** LicenShield Pro monitors every API call in real time and runs three detection algorithms silently in the background. Alerts fire the moment suspicious activity is detected — giving you time to act before significant damage is done. Detects nulled software distribution, multi-domain key abuse, and brute-force validation attempts. Algorithm 1 — Activation Overflow (High Severity) Fires when a license key attempts to register on a new site after already reaching its activation limit. The clearest signal that a key is being shared between multiple users. Example: a single-site license suddenly appearing across three different production domains. Algorithm 2 — Domain Spread (Medium Severity) Fires when a single license key has been validated from an abnormally high number of distinct domains within a rolling 30-day window. The threshold is set dynamically to 3 times the activation limit with a minimum of 8 domains, preventing false positives on legitimate high-traffic or multi-site setups. Catches keys posted to forums or shared in Facebook groups and Discord servers. Algorithm 3 — IP Flood (High Severity) Fires when a license key hits the validation API from 10 or more unique IP addresses within a single hour. The clearest signal of automated key distribution — bots downloading nulled software using a shared key at scale. Each alert in the Piracy Alerts admin panel includes: * Severity badge — High or Medium * Plain-English description of what triggered the alert * The license key, product name, customer email, and the raw triggering data * One-click action buttons — Mark Resolved, Dismiss, or Suspend License immediately * Slack notification option so your team knows the moment an alert fires * 7-day deduplication cooldown — the same alert type for the same license is suppressed to prevent flooding --- **Multi-Language SDKs — Pro and Agency** LicenShield Pro and Agency include official SDKs that connect to your existing LicenShield installation. License any type of software from the same WordPress admin dashboard you already use — one backend for your entire product portfolio. * JavaScript SDK — validate licenses in Node.js services, Electron desktop apps, browser extensions, Chrome extensions, CLI tools, and web backends. Install via npm. * Python SDK — protect Python scripts, automation tools, data pipelines, FastAPI and Django applications, and desktop apps. Install via pip. * .NET SDK — integrate license validation into C# Windows apps, WPF and WinForms applications, .NET web services, and Visual Studio extensions. Available via NuGet. * Go SDK — embed license checks in Go binaries, CLI utilities, microservices, and server-side tools. Install via go get. * REST Client SDK — a universal reference client with complete code samples for any language or platform not listed above, including Ruby, Rust, Swift, PHP, shell scripts, and more. All SDKs include a 24-hour local validation cache and a 7-day offline grace period. Your customers' software continues working without an internet connection — no false "license invalid" errors on flights, in remote locations, or during temporary server outages. Use cases unlocked by the SDKs: * WordPress plugins and themes (also work without an SDK via the REST API directly) * Chrome and browser extensions * Windows desktop apps and WPF or WinForms applications * Unity games and Unity editor tools * Electron apps including VS Code extensions and Obsidian plugins * Node.js CLI tools and npm packages * Python data science tools, Jupyter notebooks, and automation scripts * C#/.NET utilities and enterprise applications * Go microservices, binary utilities, and DevOps tools * SaaS backends and API-first products --- = How It Works = 1. Install — upload LicenShield to your WordPress site, activate it, and open the setup wizard 2. Connect Stripe — paste your Stripe API keys and copy the webhook URL into your Stripe dashboard 3. Create Products — add your plugin, theme, or software with a price, activation limit, billing cycle, version number, and download URL 4. Sell — embed a buy button or pricing table shortcode on any WordPress page 5. Automatic — Stripe processes the payment, LicenShield generates and emails the license key, and your customer is running immediately No complicated server setup. No monthly SaaS subscription. Your data stays on your server. --- = REST API Quick Reference = Validate a license in your WordPress plugin: `$response = wp_remote_post( 'https://yoursite.com/wp-json/ls/v1/validate', [ 'body' => [ 'license_key' => $license_key, 'site_url' => home_url(), ], ] ); $data = json_decode( wp_remote_retrieve_body( $response ) ); if ( $data->success ) { // License is valid — proceed }` Activate on first use: `$response = wp_remote_post( 'https://yoursite.com/wp-json/ls/v1/activate', [ 'body' => [ 'license_key' => $license_key, 'site_url' => home_url(), 'site_name' => get_bloginfo( 'name' ), ], ] );` Check for software updates (used by the WordPress update system): `$response = wp_remote_post( 'https://yoursite.com/wp-json/ls/v1/update-check', [ 'body' => [ 'license_key' => $license_key, 'site_url' => home_url(), 'current_version' => MY_PLUGIN_VERSION, 'plugin_slug' => 'my-plugin/my-plugin.php', ], ] );` Full integration guides and SDK documentation are at [licenshield.com/docs](https://licenshield.com/docs). --- == Installation == 1. Upload the `licenshield` folder to `/wp-content/plugins/` or install via the WordPress plugin uploader 2. Activate through the Plugins menu in WordPress 3. Go to **LicenShield → Setup Wizard** for a guided configuration walkthrough, or configure manually: 4. Go to **LicenShield → Settings → Stripe** — enter your Stripe API keys (test or live) 5. Copy the webhook URL shown and add it as a new endpoint in your Stripe Dashboard under Developers → Webhooks. Select `checkout.session.completed` for one-time purchases. Add `invoice.payment_succeeded` and `customer.subscription.deleted` if using Pro subscription billing. 6. Go to **LicenShield → Products → Add New** — create your first product with a name, slug, price, activation limit, billing cycle, and optional download URL 7. Add `[licenshield_buy_button product="your-product-slug"]` to any WordPress page 8. Create a success page with the `[licenshield_license_success]` shortcode and set its URL in **Settings → General → Success Redirect** 9. Run a test purchase in Stripe test mode, confirm the license key is generated and emailed, then switch to live mode == Frequently Asked Questions == = Is the free version really unlimited? = Yes. The free version has no limits on the number of products or licenses you can create, no expiry date on the free plan, and no paywalls on core functionality. You only need a paid plan when you want features like subscription billing, piracy detection, Slack notifications, webhooks, expiration reminder emails, or multi-language SDKs. = What is the main reason to upgrade to Starter? = Subscription billing — it is the fastest way to build predictable, recurring revenue from your plugins. Instead of one-time sales, customers pay monthly or yearly and their license renews automatically through Stripe. Starter also adds discount codes, Slack notifications, webhooks, piracy detection, and automated expiration reminder emails. = How do customers receive their license key? = Immediately after a successful Stripe payment, LicenShield automatically sends a branded confirmation email containing the license key, product name, activation limit, expiry date if applicable, a download button if a download URL is configured, and step-by-step activation instructions. No manual work on your end. = Does LicenShield charge transaction fees? = No. LicenShield charges no platform fee or per-transaction fee of any kind. You pay your annual plan fee and Stripe's standard payment processing rate. Every dollar beyond that goes directly to you. = How does billing work for paid plans? = Paid plans are billed annually. You can upgrade at any time and pay only the prorated difference for the remaining portion of your billing year. If your needs change, you can downgrade at renewal. = Is there a money-back guarantee? = Yes. All paid plans include a 30-day money-back guarantee. If you are not satisfied for any reason within 30 days of purchase, contact support for a full refund — no questions asked. = What payment methods does Stripe support? = LicenShield's Stripe Checkout supports credit and debit cards, Apple Pay, Google Pay, and all other payment methods enabled in your Stripe account. Customers complete payment on a secure Stripe-hosted page. = What is staging detection and why does it matter? = When a customer develops or tests their site on a staging URL, LicenShield detects it automatically and does not count that activation against their limit. Customers can freely develop on staging and push to production without burning activations or contacting you for help. LicenShield detects over a dozen staging environments out of the box, including WP Engine, Kinsta, and Flywheel. = How does piracy detection work? = LicenShield Pro monitors every API call and silently runs three algorithms. An alert is created when: a license tries to activate on a new site after hitting its limit (catching key sharing), a license is validated from an abnormally high number of distinct domains in 30 days (catching publicly posted keys), or a license hits the API from 10 or more unique IPs in one hour (catching automated distribution). Each alert includes the triggering data and a one-click Suspend License button. = Do webhooks support request signature verification? = Yes. Every outgoing webhook POST includes an `X-LicenShield-Sig` header containing an HMAC-SHA256 signature of the request body, computed using your webhook secret key. Your receiving endpoint verifies this header to confirm the request came from your LicenShield installation and has not been modified in transit. = What are the SDKs and what do they actually do? = The SDKs are official client libraries for JavaScript, Python, .NET, and Go that call the same LicenShield REST API your WordPress plugins already use. They handle license validation, activation, a 24-hour local validation cache, and a 7-day offline grace period automatically. This lets you protect a Windows app, a Python tool, a Chrome extension, or a Node.js CLI from the same admin dashboard where you manage your WordPress plugin licenses — one platform for everything. = Can I use LicenShield for non-WordPress software? = Yes, with a Pro or Agency plan. The JavaScript, Python, .NET, Go, and REST Client SDKs let you protect any software — desktop apps, CLI tools, browser extensions, Electron apps, Unity editor tools, SaaS backends, and more — all managed from a single LicenShield WordPress installation. = Can I migrate licenses from another license manager? = You can create licenses manually with any custom details through the admin panel. Bulk CSV import is on the public roadmap — vote for it via the Suggestions page inside your LicenShield admin. = Does it work alongside WooCommerce? = Yes. LicenShield uses Stripe directly for payments and runs independently of WooCommerce. Both plugins can be active on the same site. Native WooCommerce integration is planned for a future release. = What happens to my data if I cancel a paid plan? = All your licenses, products, orders, customers, and settings remain intact in your WordPress database. You keep full access to all free features. Only the paid features become inactive until you renew. = Is my customer data private and secure? = LicenShield is 100% self-hosted. All license data, customer data, and order records live in your own WordPress database on your own server. Nothing is sent to external servers except Stripe for payment processing and your optionally configured Slack and webhook endpoints. You own your data completely. = Can I customize the license key format? = Yes. Set a custom prefix up to 10 characters in **Settings → General → License Key Prefix**. All new keys are then generated as `YOURPREFIX-XXXX-XXXX-XXXX-XXXX`. The key body is always cryptographically random regardless of prefix. = How do automatic plugin updates work for my customers? = Set a version number, changelog, and download URL in your product settings. LicenShield's update-check endpoint integrates with WordPress's built-in update system. When you upload a new version and increment the version number, customers with your plugin installed see a standard "Update Available" notice in their WordPress dashboard and can update with one click — exactly like a WordPress.org plugin. == Screenshots == 1. Dashboard — real-time revenue stats, month-over-month growth trend, active license counts, licenses expiring soon, recent orders, and top products 2. License management — searchable list view with status badges, activation counts, expiry dates, and a per-license action menu 3. Product configuration — name, slug, price, billing cycle (monthly, yearly, or lifetime), activation limit, version number, changelog, and download URL 4. Stripe settings — test and live mode toggle, separate API key fields for each mode, and an auto-generated webhook URL with a one-click copy button 5. Piracy Detection alerts — severity badges, alert type descriptions, triggering data, and one-click Resolve, Dismiss, or Suspend License actions 6. Orders — full transaction history with customer name, product, amount paid, payment status, and a direct link to the associated license == Changelog == = 1.7.14 = * Fix: Removed auto-install Pro feature — users install Pro manually per WordPress.org guidelines * Fix: Renamed all PHP function prefixes from ls_ to licenshield_ for WordPress.org compliance * Fix: Renamed all class name prefixes from LS_ to LICENSHIELD_ for WordPress.org compliance * Fix: Download handler now correctly serves files using absolute server paths = 1.7.7 = * Fix: [licenshield_buy_button] shortcode now accepts a product slug in addition to a numeric product ID = 1.7.6 = * Fix: Pro settings tab now correctly displays the Pro panel after Pro is activated instead of the installer form * Fix: Admin class no longer double-initializes when LicenShield Pro is active = 1.7.3 = * Fix: Corrected REST API namespace in all documentation examples — ls/v1, not licenshield/v1 * Fix: Removed inaccurate customer portal reference from FAQ = 1.7.2 = * Fix: Resolved 3 PHPCS errors — unescaped $upgrade_url outputs in upsell class now use esc_url() * Fix: Resolved UnescapedDBParameter warnings — table names now pass through wpdb->prepare() using the %i placeholder * Fix: Added justified phpcs:ignore comments to unavoidable direct DB queries in webhook handlers and transactional inserts where WordPress has no equivalent API = 1.7.1 = * Fix: Dashboard revenue and license charts now render correctly — missing scripts added to enqueue * Fix: Removed duplicate /checkout/create REST endpoint * Fix: Removed stale tooltip referencing the removed license activation tab * Improved: REST API endpoints now include inline justification comments for intentional __return_true permission callbacks * Improved: Get Pro button on dashboard lists the features included in each Pro tier = 1.7.0 = * Redesign: Pro features now displayed as muted cards in the free plugin — clearly visible but not active * Removed: Self-licensing system and the license key activation tab — no longer required * Removed: Upsell modal and all JavaScript feature gating * Added: Dedicated Pro Features settings tab with descriptions and links to licenshield.com * Free plan: Unlimited products and licenses with zero artificial caps of any kind = 1.6.1 = * Fix: Removed subscription billing restriction — all billing cycles available with Pro * Fix: Added missing Tier helper methods including format_limit, get_usage_percentage, and can_activate * Fix: Updated all constant prefixes to LICENSHIELD_ for WordPress.org compliance * Fix: Replaced locked UI elements with plain Pro feature callout links = 1.5.1 = * Security: Fixed SQL injection vulnerabilities in analytics queries * Security: Fixed path traversal vulnerability in the download endpoint * Security: Enhanced input sanitization and validation across all API endpoints * Improved: IP-based rate limiting enforced on all validate, activate, and deactivate endpoints * Improved: Download endpoint validates file type before serving any file = 1.4.3 = * New: Context-sensitive hover tooltips on every field, stat, and setting across all admin pages * New: Guided tour system for first-time users with step-by-step walkthroughs on each page * Tours auto-start on first visit and can be replayed at any time via the Take Tour button = 1.4.2 = * New: Setup Wizard for streamlined onboarding * Wizard guides through Stripe connection, first product creation, and REST API integration * Auto-detection of completed steps and visual progress tracking sidebar * Copy-to-clipboard for all API URLs and integration code snippets = 1.4.1 = * Added self-licensing capability * Improved license verification UI and plan limits display * Security hardening = 1.4.0 = * Stripe Payment Sheet checkout integration * Branded HTML email templates for purchase confirmations * IP-based rate limiting on all public API endpoints = 1.3.0 = * REST API for license validation, activation, and deactivation * Automatic license key generation on confirmed Stripe payment * Admin dashboard with revenue statistics and license counts == Privacy Policy == LicenShield stores license keys, customer email addresses, customer names, and activated site URLs in your WordPress database for the purpose of license validation and management. This data is not shared with any third party except Stripe for payment processing and your optionally configured Slack and webhook endpoints. For full details, visit [licenshield.com/privacy](https://licenshield.com/privacy). == External Services == LicenShield connects to the following third-party service to provide payment functionality: = Stripe = LicenShield integrates with [Stripe](https://stripe.com) for payment processing. When a customer purchases a license through your site: * **What is sent:** Customer email address, purchase amount, product details, and payment information (card data is handled directly by Stripe — it is never stored on your server or passed through WordPress) * **When it is sent:** During checkout when a customer initiates a purchase, and when Stripe sends webhook events to confirm order fulfillment * **Why it is needed:** To process payments securely and automatically generate and deliver a license key upon successful payment Stripe is a PCI-compliant payment processor. All payment data is handled entirely by Stripe's servers. By using LicenShield with Stripe payments enabled, your customers are subject to [Stripe's Privacy Policy](https://stripe.com/privacy) and [Stripe's Terms of Service](https://stripe.com/legal). No other external service connections are made by the free plugin. Pro features that send data externally — Slack notifications and outbound webhooks — only transmit data to endpoints you explicitly configure in the plugin settings. == Upgrade Notice == = 1.7.14 = WordPress.org compliance release. All PHP prefixes updated from ls_ to licenshield_ and all class prefixes from LS_ to LICENSHIELD_. Update recommended for all users.