PBJ Forms & Products Changelog — 2.1.0
PBJ Forms & Products 2.0 separates form and product creation, centralizes setup, adds direct-or-cart selling and orders, and publishes documented Help Desk integration events for the next CRM update.

2.1.0 — Form submissions fixed, and a cart that works like a cart
Critical fix: on 2.0.0, 2.0.1 and 2.0.2 every JavaScript form submission posted to a 404. The submit code read form.action, but each rendered form carries a hidden input named action, and a form control of that name shadows the form’s own action property — so the request went to [object HTMLInputElement] and the visitor saw “Something went wrong.” Every gateway was affected. The endpoint is now read from the attribute. If you are running any 2.0.x, update.
- The cart is now one page. Line items with picture, unit price, a plus/minus quantity stepper and a real Remove button; a running item count and total; an empty-cart state; and an optional “Keep shopping” link.
- Quantity changes and removals no longer reload the page. They call a new JSON endpoint that recomputes the cart from published product config and returns the authoritative state. The plain form POST remains as the no-JavaScript fallback.
- Checkout sits beneath the cart on the same page. The pay button states the amount — “Pay 33.50 USD” — and follows the total as it changes.
- Product blocks gained a quantity chooser and confirm in place with “Added to your cart – View cart” instead of bouncing the shopper to the cart page.
- Products screen shows the checkout mode as a badge and the gateway beneath it, with a one-click copy button for each shortcode.
- Clearer product editor. The “Use Add to cart” tick-box becomes two explained choices, and the per-product gateway is hidden when a product is sold through the cart, because the Cart tab’s gateway is what charges it.
- Cart screen opens with a readiness panel that checks the facts: the cart page exists and contains the cart shortcode, a checkout form is chosen, the cart gateway has working credentials, and at least one product uses Add to cart.
- Richer order-ticket event. The neutral event now also carries
customer_name,customer_phone,items,total_centsandcurrency, so a future PBJ CRM listener can raise an order ticket without unpacking the order itself. Additive;contract_versionstays 1. No CRM code is loaded or required. - Removed the unused product-details block left behind in the form editor by 1.6.0.
- Settings database version 5 → 6 (adds
shop_page_url, blank by default).
2.0.2 — Bundled licence client refresh
The bundled PBJ license client moved to 1.2.0 (version stamp plus a drift warning when an older copy of the client loaded first on a multi-plugin site). No change to licensing behaviour or to the plugin itself.
2.0.1 — Semantic admin themes
PBJ Forms & Products now consumes the shared PBJ admin-theme contract without depending on PBJ CRM.
- Readable setup steps in every theme. Current, completed, and upcoming steps expose semantic states and receive matching foreground, background, and border colors.
- Theme-safe admin surfaces. Forms, products, setup cards, notices, controls, and layout tables use neutral
--pbj-admin-*variables with WordPress-safe fallbacks. - Content previews stay independent. Customer-facing preview frames are explicit content islands, so an admin theme cannot repaint the design being previewed.
- No selector hacks or CRM dependency. Forms publishes exact component and state attributes; CRM contains no Forms-specific selectors, includes, calls, or runtime dependency.
2.0.0 — Forms, products, and cart are separate
PBJ Forms & Products 2.0 turns the old combined builder into four clear admin workflows: Setup, Forms, Products, and Cart.
- Forms and products are independent records. Forms collect fields and outcomes. Products own the price, gateway, presentation, checkout form, and selling mode.
- One centralized setup. The six-step Setup walkthrough now owns the old settings, payment, protection, appearance, cart, and license controls. It is skippable and safe to rerun.
- Purchase now or Add to cart. Each product gets one simple toggle. Cart items and quantities stay server-side, and every price and total is recalculated from the published product.
- Private order records. Direct purchases and cart checkouts create idempotent order snapshots after the form submission is saved.
- Ready for the next CRM update. Versioned order-created and Help Desk ticket-request events are documented for the future CRM listener. PBJ Forms does not load or modify CRM.
- Backward compatible. Existing forms, submissions, shortcodes, paid checkouts, product presentation, theme values, and License Manager hooks remain intact. Legacy paid/product forms gain linked product records without rewriting the original form.
New shortcodes: Your cart is empty. and . Existing embeds continue to work.
1.6.1 — Licensed download handoff
Added the post-purchase redirect filter used by PBJ License Manager to attach a one-time download credential after a successful paid submission.
1.6.0 — Guide, appearance, and product presentation
Renamed the plugin to PBJ Forms & Products, added guided administration, site-wide appearance controls, and optional product presentation while preserving existing forms and shortcodes.
1.5.x — Spam controls
Added one-click spam handling, permanent sender-IP blocking, submission cleanup, and optional PBJ Geo Viewer country blocking.
1.2.0–1.4.0 — Payments and guided administration
Added Stripe, buyer receipts, payment hardening, stable slug/title shortcodes, licensing controls, and guided admin explanations.