Skip to content

WordPress plugins — keep / remove / install

WordPress is now a headless backend only. The Butcher theme and every front-end-only plugin goes. This page is the source-of-truth for what stays, what's being removed, and what we still need to install.

Audit date: 2026-04-24 · 38 active plugins on the live site.

Why we're cleaning up

  • 14+ of the 38 plugins exist purely to decorate the WordPress front-end — which no customer will ever see once the PWA launches.
  • Each active plugin costs CPU on every request, expands the attack surface, and complicates upgrades.
  • Removing ~16 plugins cuts backend-admin load dramatically and de-risks the WP→headless transition.

Keep — 16 plugins

Core commerce, fulfilment, security, integrations that feed the PWA.

Plugin Why we keep it Notes
WooCommerce (10.7) The commerce engine. Enable HPOS once we're on PHP 8.2.
WooPayments (10.7.1) Stripe for cards / Apple Pay / Google Pay. Apple Pay is your #1 method (158 of last 500 orders). Keep for regular card payments.
WooCommerce Subscriptions (8.6.1) Migration bridge — stays until all existing subs are moved to Stripe Billing, then remove. Phase 2 task.
ShipStation for WooCommerce (5.0.2) Your fulfilment engine. Exposed via webhook; no PWA changes needed.
WooCommerce Shipment Tracking (2.7.1) Tracking numbers + URLs attached to orders. PWA reads this via /wp-json/wc/v3/orders/{id} and shows "Track your parcel" on /account.
Local Delivery Drivers for WooCommerce (2.0.0) Drivers + delivery queue for your NW10 collection / local delivery. Phase 3: wire the driver PWA to the plugin's assignment endpoints.
Custom Order Status Manager (2.0) Custom statuses: Driver Assigned, Out for Delivery, Fruit Plug Delivery, Customer Collection. Used by drivers and by ShipStation's state machine.
Customer Reviews for WooCommerce (5.107) 218 reviews @ 4.76★. Irreplaceable social proof. PWA reads reviews via the plugin's REST endpoints.
WooCommerce.com Update Manager (1.0.3) Auto-updates for commercial Woo plugins (Subs, WooPayments). Operational; keep.
Mailchimp for WooCommerce (6.0.2) Customer → Mailchimp sync for email campaigns. Phase 2: hook post-purchase flow.
Google for WooCommerce (3.6.1) Product feed → Google Merchant Center for Google Shopping ads. Keep — direct revenue channel.
Meta for WooCommerce (3.6.3) Product catalogue + Facebook/Instagram pixel + Meta CAPI. Critical for the 64k IG → site conversion story.
TikTok (1.4.0) Product feed + pixel + TikTok Shop integration. Phase 3: wire TikTok Live shopping.
Redirection (5.7.5) URL redirect manager. Essential during old-URL → new-URL migration. Keep.
Jetpack Protect (5.0.0) Vulnerability scanner. Lightweight. Keep.
Yoast SEO (27.4) ✅ Confirmed keep. Useful to carry existing meta across cutover; PWA's generateMetadata will reference it where relevant. Hold indefinitely unless we migrate recipes/blog off WP.

Remove — 18 plugins

All frontend-only or duplicate-function, confirmed by user.

Plugin Why remove
Elementor (3.30.4) Page builder — PWA doesn't use it.
KingComposer (2.9.5) Second page builder?! Remove.
Unlimited Elements for Elementor (1.5.148) Elementor add-on — remove with Elementor.
Apus Themer (1.0) Helper for the "Butcher" theme — theme is gone.
Mobile Menu Premium (2.8.5) Mobile nav for old theme. PWA has its own.
Loading Page (1.2.7) Custom loading screen for old theme.
Multi-Step Checkout for WooCommerce (2.32) PWA has its own checkout.
Checkout Field Editor for WooCommerce (2.1.8) PWA controls checkout fields.
XT Ajax Add To Cart (1.1.7) Woo ships Ajax add-to-cart natively; PWA uses Store API anyway.
Variation Swatches for WooCommerce (2.2.3) Frontend-only swatches; PWA renders its own variation UI.
Show only lowest prices in variable products (2.1.1) Frontend-only display tweak.
SysBasics Customize My Account (3.9.13) My-account page moves to the PWA.
Site Kit by Google (1.177) WP-side GA/Search Console; replaced by GA4 + Meta CAPI + PostHog on the PWA.
Google Analytics for WooCommerce (2.1.23) Same — PWA tracks directly.
Meta Tag Manager (3.3) PWA owns meta tags via generateMetadata.
PDF Catalog Woocommerce Pro (1.0) No B2B PDF workflow active. Phase 3 can rebuild if needed.
Cost of Goods (WPFactory 4.1) ✅ Removed 2026-04-24. Replaced by our own COGS page: wp-admin → WooCommerce → Fruit Costs (stored as _fruitplug_cost_gbp post meta).
Printify Shipping Method (3.0) ✅ User confirmed: Printify account being closed. Remove + document merch-fulfilment replacement.

Evaluate — 2 plugins

Plugin Decision
Akismet Anti-spam (5.7) Only matters if we leave WP comment / form endpoints publicly reachable. PWA handles its own contact form with Turnstile. Recommendation: deactivate but don't delete — zero cost to keep installed-but-off in case someone re-enables comments.
Jetpack (15.7.1) The whole suite is heavy. Jetpack Protect (kept above) comes standalone. Decide based on which modules are actually used: if you use Jetpack Backup or VideoPress, keep Jetpack. If you only use the stats/CDN/related posts, remove — PWA has its own tracking and images go through Cloudinary. Recommendation: remove unless you confirm Backup is active.
CMB2 (2.11.0) Custom meta-box framework. Only kept if another active plugin depends on it. Check via grep -r "CMB2" wp-content/plugins/ — if nothing outside CMB2 itself uses it, remove.

Install — 4 new plugins

To make the headless pattern work smoothly.

Plugin Why
JWT Authentication for WP-API Lets the PWA authenticate customers with a JWT instead of cookie sessions. Required for proper mobile-app (PWA) auth flows.
fruitplug-api (ours, custom) Already written — provides loyalty, streaks, passport, custom-box pricing, referrals, push endpoints, seasonal calendar. Details.
WP REST Cache (optional) Caches GET responses on the Woo REST layer. Big TTL win for product reads from the PWA. Alternative: handle cache in the PWA layer.
Action Scheduler Already bundled with WooCommerce; just confirm it's visible in admin. Used by fruitplug-api for background jobs (IG sync, streak eval).

Execution plan

Phase 0 (backend prep, ~1 afternoon)

  1. Back up the DB first. wp db export backup-$(date +%F).sql
  2. Deactivate in batches of 4 plugins. Smoke-test admin + an order after each batch.
  3. Order of removal (safest first):
    1. Elementor · KingComposer · Unlimited Elements · Apus Themer
    2. Mobile Menu · Loading Page · Multi-Step Checkout · Checkout Field Editor
    3. XT Ajax · Variation Swatches · Show Only Lowest Prices · SysBasics My Account
    4. Site Kit · GA for Woo · Meta Tag Manager · PDF Catalog
  4. Delete deactivated plugin files (free disk + stop cron hooks).
  5. Install JWT Auth + fruitplug-api.
  6. Enable HPOS (Woo → Advanced → Features).
  7. Upgrade PHP 7.4 → 8.2 via the hosting control panel.

Phase 1 (during PWA build, no plugin changes)

Settle in. Verify nothing broke. All the removed plugins are safely deactivated.

Phase 2 (subscription migration)

  1. Migrate the 1 active subscription from Woo Subscriptions to Stripe Billing.
  2. Once verified, deactivate WooCommerce Subscriptions. Leave installed for a month in case of rollback, then remove.

Phase 3 (post-launch tidy)

  1. Remove Yoast SEO once every URL is PWA-served and the Next.js metadata is validated with SEO tools.
  2. Remove Jetpack if Backup isn't being used.

Monitoring after cleanup

  • /wp-admin admin-load time — should drop noticeably after Elementor/KingComposer go.
  • wp_options autoload total — run SELECT SUM(LENGTH(option_value)) FROM wp_options WHERE autoload='yes'; before/after.
  • wp-content/plugins/ disk size — should drop by ~200 MB.
  • Order totals by status — verify nothing shifted during cleanup.