Adding AI to a WordPress site is easy now. Deciding what the AI may do without a person checking is the hard part. A model that offers discounts can give away your margin. A model that reads customer reviews can be told by one of them to praise the product. A model that screens your contact form can quietly drop real enquiries when it goes down.
This checklist is for site owners, store managers and agencies who want to say yes to AI without losing control. It's organised by the four places AI usually touches a site (content, prices, untrusted text and forms), plus the settings that apply everywhere. For each guardrail, it shows how the five plugins in the DEV3 AI WordPress Plugins Bundle handle it, checked against their code, and where you still need a setting or a process of your own.
The five plugins are:
- DEV3 AI Content & Layout Builder for Elementor, WPBakery and Gutenberg
- DEV3 AI Review Summarizer & Sentiment Analyzer for WooCommerce
- DEV3 AI Smart Coupons & Dynamic Discounts for WooCommerce
- DEV3 AI Form Autofill & Spam Shield for WPForms, Contact Form 7 and Gravity Forms
- DEV3 AI Translator & Cultural Localizer for WPML, TranslatePress and Polylang
The checklist at a glance
| # | Guardrail | Ask yourself |
|---|---|---|
| 1 | Human approval for content | Does AI text reach visitors before a person has seen it? |
| 2 | Clean output | Could AI output inject scripts, links or broken markup? |
| 3 | Server-side limits on money | If the model asks for more, does the server refuse? |
| 4 | Fenced untrusted input | Can text written by strangers give the AI instructions? |
| 5 | Minimal data sent | What personal data leaves your server with each request? |
| 6 | A decided failure policy | When the AI is down, what happens: allow or block? |
| 7 | Human edits protected | Will the next automated run overwrite a person's fix? |
| 8 | Caps, permissions and keys | Who can use AI, how often, and where is the key stored? |
1. Human approval before content goes live
The rule: AI drafts, a person publishes.
Content & Layout Builder. All generation happens inside the editor. Users choose Insert, Replace, Insert below or Discard for each result, and nothing is saved until they save the page. Generated Elementor sections go in through Elementor's own command API, so undo and history work as usual. Earlier generations can be restored from the history.
The exception to know about is the Media Library bulk action, Generate alt text, caption & title. It writes directly to the images, but it only fills images that have no alt text yet, and it handles at most 10 images per run. Spot-check the results.
Review Summarizer. Summaries are generated automatically by default and appear on the product page once a product has enough approved reviews (three by default). There's no approval queue before a summary is shown. If you want one, turn off automatic generation, generate summaries yourself and check each one in the admin. Each summary on the page carries a "Generated by AI" note by default.
Translator. New translations take the same status as the source post by default, so translating a published page creates a published translation. Automatic sync on save is also on by default. If translations must be reviewed first, set new translations to Draft or Pending in the settings.
- Content Builder: agree who may use bulk alt text, and spot-check it.
- Review Summarizer: decide whether automatic summaries are acceptable, or turn auto-generation off.
- Translator: set the status for new translations to Draft or Pending if a reviewer must sign off.
2. Treat AI output as untrusted
The rule: clean every answer in code, as though the model ignored its instructions.
- Content & Layout Builder passes rich output through WordPress's
wp_kses_postbefore it reaches the editor. Layout output is built from a schema, so the plugin generates native Elementor and WPBakery elements rather than pasting raw HTML. More in turning a text prompt into native, editable Elementor and WPBakery sections. - Review Summarizer strips tags, removes URLs, cuts every field to a fixed length and clamps the scores in PHP, then escapes everything again when the widget renders.
- Smart Coupons rejects any AI headline or message containing digits, prices, percentages, currency symbols, links or HTML. The copy can only use two placeholders, which the server fills from the real coupon. If the copy fails, your own templates are used instead.
- Translator checks that every markup placeholder in the source is still in the translation, and checks your glossary's do-not-translate terms. A segment that still fails after one retry is repaired so the markup stays valid, and flagged for review.
3. Never let AI set the price
The rule: the model can suggest, the server decides.
Smart Coupons is the clearest example. The abandonment risk score isn't AI at all. It's a weighted rule model with named factors that you can inspect in a simulator. The AI is optional and only proposes an offer type, an amount and a message. Then Rules::clamp(), which by its own description "never trusts any field of the proposal", applies:
- your minimum and maximum percentage and fixed amounts
- a margin floor worked out line by line from each product's cost, so the line with the least room limits the discount, and products with no room drop out
- the remaining daily budget, reserved as soon as an offer is issued
- a fallback: a rules-based offer or no offer at all, whichever you choose, when the AI fails or returns nothing usable
The coupon itself is single-use, limited to the products that passed the margin check, given an expiry, and bound to the shopping session it was issued to. The full design is in letting AI pick the discount, never the margin.
- Record a cost for your products, or decide how products without a cost are handled.
- Set the maximums, the minimum margin and the daily budget before you switch on offers.
4. Fence text written by strangers
The rule: reviews, form submissions and pasted text are data, never instructions.
- Review Summarizer sends reviews as a JSON array inside a
<reviews>fence, with<and>escaped so no review can close it. The system instruction tells the model to list any review that tries to give instructions in aflaggedfield and leave it out of the analysis. The admin then shows which review was ignored. See summarising untrusted customer reviews safely. - Form Autofill & Spam Shield wraps pasted text and form submissions in delimiters marked as untrusted data. More importantly, the server rebuilds each form's fields from the stored form, so the browser can't invent fields for the AI to fill. See paste-to-fill without trusting the browser.
- Content & Layout Builder wraps page content you ask it to work on in a
<content>block.
Fencing reduces the risk but can't remove it, because flagging is still the model's judgement. That's why guardrails 1 and 7 matter too.
5. Send the AI as little as possible
The rule: if the AI doesn't need it, it doesn't leave the server.
Review Summarizer sends approved reviews only, without reviewer names, emails or IP addresses. It redacts emails, links and phone numbers in the review text and caps each review's length.
Spam Shield never sends phone numbers. An email address becomes just its domain, and no IP address, user agent or cookie is sent.
Smart Coupons sends anonymous cart context only. A test checks that the shopper's email and IP address aren't in the request.
Content & Layout Builder sends nothing until a user clicks an AI action.
Update your privacy policy to name the AI provider and what each feature sends.
6. Decide the failure policy before the outage
The rule: choose fail-open or fail-closed deliberately, per feature.
- Spam Shield lets you choose. Fail-open is the default: if the AI is unreachable or the daily cap is reached, the submission is delivered and the outage is logged. Fail-closed blocks the submission with a message. Fail-open protects real enquiries; fail-closed protects the inbox. For a sales form, fail-open is usually right.
- Smart Coupons falls back to rules or to no offer.
- Review Summarizer keeps the last good summary.
- For each form you also choose what a spam verdict does: block with a message, mark as spam in the builder's own spam folder, or flag only with a subject prefix. Starting with flag only for a week shows you what the AI would have caught before anything is blocked.
7. Protect human edits from the next automated run
The rule: once a person has fixed something, automation must leave it alone.
- Review Summarizer: Save & lock keeps a moderator's edit. Locked summaries are skipped by review hooks and the nightly sweep, and replacing one asks for confirmation.
- Translator: segments edited or approved by a person are never overwritten, even by a forced re-translation. A translated post edited directly in the WordPress editor is detected and skipped unless you choose to overwrite it. See delta translation memory.
8. Caps, permissions and keys
The rule: limit who can trigger AI, how often, and how far a mistake can spread.
| Plugin | Who can use it | Built-in caps |
|---|---|---|
| Content & Layout Builder | edit_posts to generate, manage_options for settings (both filterable) |
Per-user requests per minute |
| Review Summarizer | Shop managers in the admin | A cap on how many products the nightly sweep queues |
| Smart Coupons | Shoppers trigger offers; admins set the rules | Daily discount budget, one offer per session per day, a cooldown |
| Form Autofill & Spam Shield | Visitors on public forms | Per-IP rate limits and a site-wide daily AI cap |
| Translator | Editors who can edit the post | Batched requests per sync |
All five plugins store the AI key encrypted (AES-256-GCM) in the database.
- Give AI access to the roles that need it, not every editor.
- Set the daily caps to match your AI budget.
How these were checked
Each claim was checked against the plugins' code and default settings. Counting PHPUnit test methods gives 24 for the Content & Layout Builder, 40 for the Review Summarizer, 45 for Smart Coupons, 62 for Form Autofill & Spam Shield and 33 for the Translator.
Where to go next
The safest AI features are the ones where the model proposes and your rules, your reviewers and your server decide. The DEV3 AI WordPress Plugins Bundle includes all five plugins with these guardrails built in. The two gaps noted above, approving review summaries before they show and publishing translations only after review, are covered by settings and process today, and DEV3 can add a dedicated approval step as a customisation. The Smart Coupons case study shows the server-side clamping in more depth.



