Products, licenses, and subscriptions
Core Forms 4.4 can act as a lightweight digital-product checkout and license server. Payment gateways collect money; Core Forms owns the product catalog, orders, license keys, signed package downloads, customer access, and subscription terms.
Set up the store
- Enable Settings → License Issuing Server. Core Forms creates a Customer Dashboard page containing
[cf_license_dashboard]. - Open Core Forms → Products & Licensing and add each product. Products may be plugins, themes, or other digital downloads.
- Add one or more plans per product. A plan defines price, currency, billing period, license duration, trial, and activation limit.
- Upload versioned ZIP files to the Media Library, then add them on the Packages tab. Core Forms records and verifies a SHA-256 digest before every download.
- Build a checkout page containing a Core Form. Enable Stripe, PayPal, Razorpay, Polar, or FluentCart on its Payment tab.
- Add Fulfill License Purchase on the Actions tab. Select a fixed product and plan, or map form-field values to multiple products.
Payment-enabled forms do not run fulfillment when the browser merely returns from checkout. Core Forms waits for the gateway's verified paid webhook, then atomically runs the action. The action logger and order source key make webhook retries idempotent.
Sell multiple products or bundles
Set Product selection field to a form variable such as [products]. Add one mapping per line:
core-forms=12:4:1
agency-bundle=12:7:1
analytics-addon=18:9:2
The format is submitted-value=product_id:plan_id:quantity. Checkbox or multi-select values may be comma- or pipe-separated. Every selected mapping becomes an order item, and the quantity controls how many separate keys are issued.
You may also add the fulfillment action more than once to a form. Existing saved issue_license actions continue to work.
Customer dashboard and catalog
[cf_license_dashboard]displays orders, full keys with reveal/copy controls, current package downloads, expiry, subscription term, and activated sites.- Logged-in customers are matched by WordPress user ID or email.
- Guest customers receive a signed, 30-day dashboard link. The signature is verified server-side and does not expose a reusable password.
- Customers can deactivate individual sites and stop local renewal tracking.
[cf_license_products]renders an optional product and plan catalog. Each product's checkout page receives itsproductandplanslugs as URL parameters.
Package links expire after 15 minutes. Downloads require an active, unexpired license, verify the stored SHA-256 hash, and are written to the download audit table.
Renewals and refunds
Use a separate paid form with the Renew License Subscription action. Include license_key and email fields. After payment confirmation, Core Forms records a renewal order and extends the existing subscription and key from the later of today or the current period end.
Core Forms tracks recurring terms, access, cancellation, expiry, and renewal orders. The selected payment provider still owns automatic charging and payment-method storage. Connect its successful renewal event to a paid Core Forms renewal submission when automatic recurring collection is required.
A verified refund marks matching orders refunded, disables their issued licenses, and cancels their subscriptions. Daily maintenance expires overdue subscriptions and licenses. Run it manually with:
wp core-forms license maintenance
License client API
EDD Software Licensing-compatible endpoints remain available:
/wp-json/core-forms/v1/check_license
/wp-json/core-forms/v1/activate_license
/wp-json/core-forms/v1/deactivate_license
/wp-json/core-forms/v1/get_version
Send license plus item_id or item_name, and url for site-specific activation. Legacy ?edd_action= requests remain supported.
The authenticated/signed customer endpoint is:
GET /wp-json/core-forms/v1/customer/licenses
Cookie-authenticated WordPress requests use the normal REST nonce. Guest requests send the access_token from the dashboard link.
WP-CLI
wp core-forms license product-list
wp core-forms license product-create "Core Forms" --slug=core-forms --version=4.4.0 --activation-limit=3
wp core-forms license plan-list
wp core-forms license order-list
wp core-forms license license-list --limit=1000 --format=csv
wp core-forms license maintenance
Extension hooks
cf_license_order_fulfilled( $order_id, $license_ids, $submission, $form )cf_license_renewed( $license_id, $expires_at, $submission, $form )cf_license_order_refunded( $order_ids, $submission )cf_license_maintenance_completed( $subscriptions_expired, $licenses_expired )