Section Heading
A Plugin Stack Policy for Client Sites That Cuts Support Tickets
We use a simple policy we can apply to every client site: an approved plugin stack, a clear approval process for anything new, and maintenance rules that remove guesswork.

Kurt von Ahnen
CEO

How many support tickets start with, “We installed a plugin last night, and now the site is weird”? We’ve seen it enough times to treat it like weather. It’s not bad clients, it’s plugin chaos: too many tools, overlapping features, abandoned add-ons, and surprise updates that hit at the worst time.
WordPress updates never stop, and that’s a good thing. Security patches matter. Plugin fixes matter. Payment, membership, and LMS sites depend on updates to stay safe and keep working. Still, every new plugin adds another moving part, and moving parts create tickets.
So we use a simple policy we can apply to every client site: an approved plugin stack, a clear approval process for anything new, and maintenance rules that remove guesswork. The result is boring in the best way: fewer breakages, faster fixes, and fewer “emergency” messages that were avoidable.
Define our approved stack so every site works the same way
A plugin stack policy is a short, written agreement that answers two questions:
- Which plugins are allowed, by category?
- What rules apply when someone wants to add something new?
We’re not trying to control everything. We’re trying to standardize the parts that cause repeat issues across client sites. When sites share the same stack, we troubleshoot faster because the settings, update flow, and common conflicts are familiar. We also waste less time debating tools on every project.
The key mindset shift is simple: we prefer fewer, stronger plugins over a pile of tiny ones. Each plugin increases the chance of conflicts, performance hits, and confusing editor experiences.
When we build an approved stack, we define categories that show up on most sites:
- Security and login protection
- Backups and restores
- Caching and performance
- Forms and email delivery
- SEO basics
- Analytics (as needed)
- Ecommerce and payments (as needed)
- LMS and memberships (as needed)
- Editor and layout tools (blocks or a single builder)
Then we pick one primary tool per category, plus a short list of approved exceptions.
If every client site is “unique,” every ticket is unique too. Standard tools make support predictable.
Pick one tool per job, and retire overlapping plugins
Overlap is where support queues grow. Two plugins can both “work,” yet still fight. A classic example is stacking caching plugins, then wondering why the admin area breaks after an update. The same happens with multiple page builders, duplicated SEO plugins, or several form tools installed “just in case.”
Our method is a quick audit that starts with needs, not plugin names. We list what the site must do, then map one tool to each job. If two tools do the same job, one of them has to go.
During audits, we use a short duplicate check. It catches most bloat in minutes:
- Caching: more than one caching or optimization plugin, or caching plus server caching with no plan
- Editors: more than one page builder (for example, Elementor plus Beaver Builder), or a builder plus a separate template system
- Forms: multiple form plugins (Gravity Forms, WPForms, Ninja Forms, Formidable Forms) without a clear reason
- SEO: more than one SEO plugin active
- Security: multiple security suites layered together
- Payments: overlapping gateways and checkout tools, especially on membership and LMS sites
- “Nice-to-have” add-ons: minor widgets and shortcodes that aren’t used, yet still update
We also look for the “abandoned but still active” problem. A plugin might keep working today, but if it hasn’t been updated in a long time, it becomes tomorrow’s ticket.
Set non-negotiable standards for updates, compatibility, and support
Our approved stack isn’t just a list of names. It’s a set of acceptance rules. When a plugin meets the rules, we consider it. When it doesn’t, we move on, even if it looks convenient.
Here are the standards we treat as non-negotiable:
- Active development: recent updates, visible changelogs, and clear versioning
- Compatibility: supports current WordPress and PHP versions our hosting runs
- Support quality: documentation that answers real questions, not marketing pages
- Reputation: consistent reviews and a history of fixing issues
- Conflict awareness: known conflicts are addressed, not ignored
- Data handling: clear privacy behavior, especially if it stores user profiles or sends data to third parties
We also set an editor rule: prefer blocks over legacy shortcodes when we can. Shortcodes still have a place, but they can turn editing into a scavenger hunt. Blocks are easier to spot, move, and maintain, and they help clients avoid accidental layout damage.
This matters a lot on LMS builds. In the LifterLMS ecosystem, content can show up as blocks, shortcodes, and widgets. Each format can be valid, but mixing all three without a plan confuses course creators and slows support. We pick a primary approach for each site, document it, and stick to it.
Finally, we keep a short list of “integration-aware” tools, because platforms tend to connect to many services. LifterLMS, for example, commonly ties into payment providers, email tools, and community features (bbPress forums or BuddyPress-style social features). The more connections, the more we value clear documentation and stable updates.
Create a clear approval process for new plugins so surprises stop
Even with a tight approved stack, clients will request new features. The problem is not the request. The problem is the surprise install, followed by a broken checkout, a blank page, or slow admin screens.
So we make plugin requests easy, but we keep them controlled. Our approval process is simple enough that clients follow it, because it protects their budget and timeline.
We use this workflow:
- Request: the client tells us what problem they’re solving, plus the plugin name and link
- Review: we compare it to the approved stack, and check update history, support, and data behavior
- Test: we install and test on staging, not production
- Approve or reject: we confirm fit, risk, and ongoing maintenance cost
- Document: we update the site’s stack card and support notes
- Deploy: we schedule production release with rollback ready
The key is that “installing a plugin” becomes a managed change, like any other release. That alone cuts tickets, because most plugin emergencies are really process failures.
Use a lightweight risk score before we say yes
We don’t need a 40-page vendor review to make good decisions. A quick risk score creates consistency across our team, and it gives clients a plain reason when we say no.
We score from 1 to 5 (1 is low risk, 5 is high risk) across a few factors:
| Factor | 1 (Low risk) | 3 (Medium risk) | 5 (High risk) |
|---|---|---|---|
| Security exposure | Small footprint, minimal access | Admin access needed | Handles auth, uploads, or wide permissions |
| Performance impact | Light queries, limited scripts | Some front-end load | Heavy scripts, many requests, database churn |
| Update risk | Stable history, clear changelog | Occasional breaking changes | Frequent breakage, unclear releases |
| Vendor lock-in | Easy to remove | Some custom data | Hard to replace, proprietary data formats |
| Data privacy | No personal data | Basic user info | Student data, payments, third-party sharing |
We also apply special flags that force extra scrutiny:
- Payment plugins (Stripe, PayPal, Authorize.Net, WooCommerce checkouts)
- Student data plugins (LMS, memberships, progress tracking, certificates)
- Messaging and marketing integrations (email platforms, SMS services like Twilio)
- CRM links (for example, legacy Infusionsoft setups, where a connector like WP Fusion is often the practical path)
For LifterLMS sites, this matters even more. Payments and student information are trust anchors. If a plugin touches enrollment, access plans, checkout, or recurring billing, we treat it like a production system change, because it is.
Test changes like we mean it, staging first and rollback ready
Our policy only works if our testing matches the risk. That means staging is required for plugin adds, removals, and major updates. No exceptions for “quick installs.”
Before changes, we take a backup we can restore quickly. Then we test the parts clients actually care about, not just whether the homepage loads.
Our basic test plan is short and repeatable:
- Log in and log out, as admin and as a normal user
- Submit key forms, then confirm email delivery
- Run checkout from start to finish (including coupons if used)
- Confirm receipt emails and order records
- For LMS sites, test enrollment, lesson access, and completion tracking
Add-ons are where edge cases hide. In LifterLMS builds, we pay special attention to add-ons tied to payments, quizzes, assignments, reporting, and third-party integrations. Those are powerful features, but they also create more “it worked yesterday” tickets if we update without testing.
Rollback is the other half. If the update causes trouble, we revert fast. Fast reversions keep clients calm and protect revenue while we diagnose the issue.
Lock in maintenance rules that prevent breakage and scope creep
A plugin stack policy reduces tickets, but maintenance is what keeps them low. Without maintenance rules, clients end up updating plugins at random times, or postponing updates until everything is risky. Both paths create chaos.
We treat maintenance like basic hygiene. It’s not exciting, but it prevents expensive problems.
Our maintenance rules define:
- Who owns updates
- When updates happen
- How we handle security patches
- What we document so any teammate can step in
The goal is predictable work, not heroics. If we want fewer tickets, we need fewer surprises.
Set update windows, ownership, and what counts as billable support
We set a regular update window, then stick to it. Many agencies pick weekly or biweekly. The exact cadence depends on the site, but the principle stays the same.
Our boundaries are clear:
- Core, theme, and plugin updates happen on schedule, with staging first for higher-risk sites
- Client-installed plugins aren’t allowed, because they bypass testing and documentation
- Urgent security patches get a fast lane, even outside the normal window
We also define ticket types, because unclear requests create scope creep:
- Bug: something that used to work and now fails (we fix under maintenance if it’s in scope)
- How-to: “Where do I click?” or “How do we do X?” (we answer, but we may point to training time)
- Change request: new features, new plugins, new layouts (we quote or bill separately)
Conflicts are another reason for boundaries. Many support issues come from unsupported combinations. LifterLMS documentation, for example, emphasizes systematic troubleshooting and highlights known conflicts. We follow the same idea: if a plugin is outside our approved stack, we don’t promise compatibility.
Document the stack in plain English so clients stop guessing
Most clients don’t want a plugin lecture. They want the site to work, and they want to know who to call. That’s why we write a one-page “Site Stack Card” for every build.
It includes:
- The approved plugin list and what each plugin does
- License key ownership (client-owned or agency-owned) and renewal dates
- Where the key settings live (so we don’t hunt through menus)
- The update schedule and who approves major changes
- Contact rules for urgent issues
We add a short editor guide too, because many tickets come from content edits, not code. This guide clarifies what building blocks are allowed. On LMS sites, we spell out when to use:
- Blocks (our default for modern editing and consistency)
- Shortcodes (only in approved spots where they’re still the right fit)
- Widgets (only when the theme layout calls for them)
When course creators know the “approved way,” they stop experimenting inside paid content pages. That reduces accidental breakage and saves everyone time.
Conclusion
Plugin chaos isn’t a mystery, it’s a pattern. A written plugin stack policy breaks that pattern by standardizing tools, controlling new installs, and setting clear maintenance rules. As a result, we troubleshoot faster, avoid random breakages, improve security, and keep scope clear.
If we want fewer tickets next month, we can start this week. We can audit an existing site, propose an approved stack, test changes on staging, document the stack in plain English, and put updates on a schedule the client can trust.