This is an info Alert.
xpay
  • Product
    • Become Agent-Ready
      • Merchants
        Agentic Commerce — list your store across ChatGPT, Gemini, Claude & Perplexity
      • Publishers
        Monetize your content when AI agents read, cite, or train on it
      • SaaS Companies
        Treat AI agents as first-class customers with agent-priced checkout
    • Monetize
      • Monetize MCP Server
        Charge per call on any MCP server in 2 minutes
      • Monetize AI Agents
        Turn n8n, Zapier, Activepieces workflows into revenue
  • Resources
    • xpay Ecosystem
      • xpay✦ Tools
        1,000+ pay-per-use tools for your AI agents
      • Agent-Ready SaaS Index
        25,481 SaaS scored on agent-buyability
      • SaaS Pricing Database
        Pricing pages indexed across 1,000+ categories
      • Shopify Apps Directory
        Every Shopify app, with its full review history
      • WooCommerce Plugins Directory
        Every WooCommerce plugin, scored on how well it is maintained
      • GitHub
        Open source repositories
    • Agent Building
      • Agent Frameworks
        AI frameworks for building multi-agent systems
      • x402 Integration
        AI frameworks with x402 payment integration
      • Networks
        Blockchain networks supporting x402
    • Company
      • About xpay✦
        Our mission, products, and protocols
      • Blog
        Latest insights and updates
      • Docs
        Complete xpay documentation
  • Pricing
  • Blog
  • Docs
Get Started
  1. xpay✦ Commerce

  2. Directory

  3. WooCommerce plugins

  4. Gatewarden

Gatewarden

Protect WordPress and WooCommerce with CAPTCHA, login limits, categorized audit logs, security alerts, privacy controls, and optional SMTP delivery.

10+ active installsFree on WordPress.org
View on WordPress.orgSupport forum
Will this break my store?

What the WordPress.org registry says about keeping Gatewarden running.

WordPress compatibility
Tested to 7.0.5 — 1 branch behind 7.1
Tested against the WordPress branch in use today.
Last updated
2 months ago
Requires PHP
8.0
Your host must be running at least this version.
Requires WordPress
6.5
Contributors
1
A single maintainer. Worth knowing if the plugin is load-bearing for your store.

10+ active installsWordPress.org reports installs in bands, not exact counts.
Maintenance & trust

Scored on how Gatewarden is looked after — not on how many stores run it.

Well maintained
Not enough public feedback to put a confident number on this one. Little public feedback — score rests mostly on release activity. What we can see is below.

Maintenance
35 / 35
Updated 59 days ago.
WordPress compatibility
20 / 20
Tested to WP 7.0.5 (current).
Support responsiveness
Not enough data
Only 0 support thread(s) — not enough to judge.
Merchant satisfaction
Not enough data
No ratings yet.
Listing transparency
6 / 10
Provides: description, homepage
2 of 5 measures had too little evidence to score. They are left out of the total rather than counted as zero — otherwise a plugin would be marked down for being small rather than for being poorly kept.Measured 2026-09-20 from the WordPress.org plugin registry.
Ratings

No one has rated this plugin on WordPress.org yet. That is a statement about the ratings page, not about the plugin — plenty of well-kept plugins never collect them.

Gatewarden provides a modular security and mail-delivery layer for WordPress and WooCommerce. The interface and source strings are written in English and are translation-ready through the gatewarden text domain.

All public protection, integration, event-logging, notification, SMTP, and uninstall-cleanup modules are disabled by default. Administrators enable only the features required by the site. The suggested privacy-policy text and WordPress personal-data exporter/eraser integrations are registered while the plugin is active; they only operate on Gatewarden data that actually exists.

CAPTCHA providers

  • Google reCAPTCHA v2.
  • Google reCAPTCHA v3.
  • Cloudflare Turnstile.

WordPress protection

  • Login.
  • Registration.
  • Lost password.
  • Password reset.
  • Comments.

WooCommerce protection

  • My Account login and registration.
  • Lost-password and reset-password forms.
  • Checkout login.
  • Account creation during classic checkout.
  • Account creation during Checkout Block checkout.

Security, observability, and email features

  • Configurable failed-login limits by IP address, username, or IP address and username.
  • Progressive lockout durations with a configurable multiplier and maximum duration.
  • Optional neutral account messages for login, registration, and password-recovery flows.
  • One indexed, retention-aware audit stream with focused Authentication, CAPTCHA, Account activity, and Email views.
  • Searchable, filterable, sortable, paginated, clearable, and CSV-exportable activity logs.
  • WordPress-native list tables with Screen Options for visible columns and rows per page.
  • Human-readable event details instead of raw JSON in the administration interface and CSV exports.
  • A Gatewarden dashboard with login, lockout, CAPTCHA, email, provider, integration, and recent-event metrics.
  • A compact WordPress Dashboard widget for administrators.
  • Optional email alerts for selected lockouts, logins, registrations, password events, CAPTCHA service errors, and SMTP failures.
  • Asynchronous alert delivery with configurable recipients, successful-login scope, minimum lockout duration, durable deduplication, global rate limits, and duplicate-alert cooldown.
  • Optional approximate IP location from server headers or an explicit IPWHOIS.io lookup.
  • Optional standard SMTP delivery with sender, host, port, encryption, authentication, timeout, certificate verification, settings-page secret redaction, and a test tool.
  • Credential-redacted SMTP diagnostics that classify DNS, connection, timeout, TLS, authentication, relay, sender, recipient, and message-policy failures.
  • SMTP outcome logging that excludes message bodies, attachments, passwords, and complete recipient addresses.
  • Configurable log retention and optional data removal on uninstall.
  • Secret-key and SMTP-password controls that never render a stored secret in administration HTML.
  • Responsive CAPTCHA wrappers for WordPress and WooCommerce forms.

Gatewarden stores security events, lockout state, and pending notification jobs in site-prefixed custom database tables created through the WordPress database API. Records can include IP addresses, submitted usernames, and a WordPress user ID when one is known. Notification payloads are removed after terminal processing, deduplication hashes are cleared after the maximum cooldown, and obsolete queue records are cleaned automatically. Configure event logging, alerting, and retention according to the site’s privacy and operational requirements.

To disable public Gatewarden protection during an emergency, add this to wp-config.php:

define( 'GATEWARDEN_DISABLE', true );

Administrators with the manage_options capability see a warning while the emergency bypass is active.

The default allowed CAPTCHA verification hostnames are the normalized hosts from home_url() and site_url(). Additional explicit hostnames can be supplied through the gatewarden_allowed_hostnames filter.

Developer and infrastructure controls

Gatewarden provides narrowly scoped filters for installations that need infrastructure or integration-specific policy. Treat them as code-level controls and validate all values returned by custom callbacks.

  • Authentication: gatewarden_limit_authentication_request can exclude a classified channel/request; gatewarden_invalid_credential_error_codes changes the credential-error allowlist; the legacy gatewarden_is_interactive_login_request filter remains available for form detection.
  • Client IP: gatewarden_trusted_proxy_ranges declares trusted proxy addresses/CIDRs and gatewarden_client_ip can override the final validated address. Forwarded headers are ignored unless the socket peer is trusted.
  • CAPTCHA hostname verification: gatewarden_allowed_hostnames changes the strict hostname allowlist.
  • SMTP scope and network policy: gatewarden_smtp_apply_to_mail can opt an individual PHPMailer transaction out of Gatewarden SMTP. Private/reserved SMTP destinations on multisite require GATEWARDEN_ALLOW_PRIVATE_SMTP_HOST or gatewarden_allow_private_smtp_host; authenticated SMTP without transport encryption requires GATEWARDEN_ALLOW_INSECURE_SMTP_AUTH or gatewarden_allow_insecure_smtp_auth.
  • Notification capacity: gatewarden_notification_queue_max, gatewarden_notification_queue_total_max, gatewarden_notification_limit_per_minute, gatewarden_notification_limit_per_hour, gatewarden_notification_batch_size, gatewarden_notification_max_attempts, and gatewarden_notification_lease_seconds adjust bounded worker limits.
  • Notification content: gatewarden_notification_recipients, gatewarden_notification_subject, gatewarden_notification_message, and gatewarden_ip_location receive sanitized notification context.
  • CSV export: gatewarden_csv_export_max_rows changes the bounded export safety limit.

Operational integrations can observe gatewarden_event_recorded, gatewarden_login_limit_error, gatewarden_notification_dropped, gatewarden_notification_capture_exception, gatewarden_notification_worker_exception, gatewarden_notification_resume_exception, gatewarden_notification_exception, gatewarden_smtp_test_completed, gatewarden_smtp_mailer_configured, gatewarden_smtp_configuration_failed, gatewarden_smtp_configuration_exception, gatewarden_smtp_sender_error, and gatewarden_privacy_tool_error.

gatewarden_login_limit_error receives `(string $message, WP_Error $error)`. `gatewarden_notification_worker_exception` always receives `(Throwable $error, ?array $claimed_row)`, with `null` for a batch-level failure. `gatewarden_notification_exception` receives `(Throwable $error, array $event)` when mail delivery or its cleanup raises an exception inside the worker boundary. `gatewarden_smtp_mailer_configured` receives the live PHPMailer object and a settings array whose `password` value is empty and whose `password_configured` flag reports whether a password exists. The live PHPMailer object is privileged and can itself contain the configured password, so callbacks must never log or expose it. Observer callbacks should remain fast; Gatewarden contains exceptions from authentication and notification diagnostic observers, but integrations should not deliberately throw.

External services

Gatewarden connects to an external service only after the relevant feature is explicitly configured and enabled by an administrator, or when an administrator explicitly runs the SMTP connection test with complete SMTP settings.

Google reCAPTCHA

When Google reCAPTCHA v2 or v3 is selected, Gatewarden loads Google’s reCAPTCHA JavaScript from www.google.com on protected forms and sends the generated response token and configured secret key to Google’s verification endpoint. Gatewarden does not include the visitor’s IP address in the server-side verification request. Google’s client-side service may process browser and device data under Google’s terms.

  • Service: https://www.google.com/recaptcha/about/
  • Privacy policy: https://policies.google.com/privacy
  • Terms: https://policies.google.com/terms

Cloudflare Turnstile

When Cloudflare Turnstile is selected, Gatewarden loads the Turnstile JavaScript from challenges.cloudflare.com on protected forms and sends the generated response token and configured secret key to Cloudflare’s verification endpoint. Gatewarden does not include the visitor’s IP address in the server-side verification request. Cloudflare’s client-side service may process browser and device data under Cloudflare’s policies.

  • Service: https://www.cloudflare.com/products/turnstile/
  • Privacy policy: https://www.cloudflare.com/privacypolicy/
  • Terms: https://www.cloudflare.com/website-terms/

Administrator-configured SMTP server

When SMTP is enabled, WordPress sends outgoing message content, recipient addresses, and sender details to the SMTP server configured by the administrator. The server may be operated by any provider selected by the site owner. Gatewarden stores the configured SMTP password in the WordPress options table, never renders the stored password in administration HTML, and supplies it only to the configured host during SMTP authentication. Review the selected provider’s privacy policy and terms before enabling SMTP.

IPWHOIS.io

Approximate location is disabled by default. When an administrator enables location in security notifications and explicitly selects IPWHOIS.io, Gatewarden sends the event IP address to ipwho.is and requests country, region, and city data. The result is cached on the WordPress site for 24 hours. Server-header location mode does not make this external request.

  • Service and documentation: https://ipwhois.io/documentation
  • Privacy policy: https://ipwhois.io/privacy
  • Terms: https://ipwhois.io/terms

Is any protection enabled immediately after activation?

No. CAPTCHA protection, protected forms, login limits, WooCommerce integration, generic account messages, event logging, notifications, SMTP, and uninstall cleanup are disabled by default.

Can login limits run without CAPTCHA?

Yes. Login limits have their own activation control and do not require a configured CAPTCHA provider.

What do generic account messages change?

When enabled, Gatewarden replaces account-specific login and registration errors with neutral messages. Password-recovery requests for known and unknown accounts use the same public confirmation message, while an email is sent only for a real account. CAPTCHA and lockout errors remain authoritative.

Why does Gatewarden keep one log table instead of one table per subsystem?

Authentication, CAPTCHA, account, and email events share the same retention, export, search, and dashboard requirements. One indexed audit schema avoids duplicated maintenance logic and supports cross-category investigation. It is intentionally not append-only: configured retention, administrative clearing, uninstall cleanup, and WordPress personal-data erasure can delete or anonymize records. The administration screen separates the data into native category views so unrelated records do not have to be displayed together.

What SMTP information is stored in logs?

When event logging and SMTP are enabled, Gatewarden records whether the WordPress mail transaction was accepted or failed, the SMTP host, port, encryption mode, recipient count, recipient domains, attachment count, and a sanitized failure reason. It does not store email bodies, attachment contents or paths, SMTP credentials, or complete recipient addresses.

Where can I see the exact SMTP test failure?

After a test, Gatewarden displays the latest result for the current administrator on the SMTP tab for up to seven days. The report includes the exact sanitized mail error, an actionable classification, connection settings, elapsed time, and a bounded SMTP transcript with credentials and AUTH payloads redacted. Scheduled deletion uses WordPress Cron, so disabled or delayed cron can postpone physical removal; an expired report is also removed when it is next accessed. It does not depend on debug.log.

Does a successful SMTP test guarantee inbox delivery?

No. A successful result means the WordPress mail transport accepted the message. Final delivery can still be affected by provider policy, spam filtering, DNS authentication, mailbox rules, or downstream delivery failures. Review the provider delivery logs when a message is accepted but does not arrive.

Can notifications create an email loop when SMTP is broken?

No. Notification delivery failures are recorded as email events when logging is enabled, but they do not trigger another SMTP-failure notification. Potentially noisy alert types also support a configurable cooldown.

Are security notifications delivered immediately?

Not necessarily. Public requests only enqueue eligible alerts; a bounded WordPress Cron worker performs optional external geolocation and email delivery later. On low-traffic sites or sites with WP-Cron disabled, delivery, retries, stale-job recovery, and cleanup can be delayed. Configure a real system cron to run WordPress scheduled events when predictable timing is required. Login, registration, comments, and checkout do not wait for those network operations.

Does Gatewarden SMTP apply only to Gatewarden alerts?

No. When enabled, Gatewarden configures WordPress’s shared PHPMailer transport, so it normally applies to all wp_mail() messages. gatewarden_smtp_apply_to_mail can opt individual transactions out or return false for every message when another transport owns delivery. Gatewarden inspects phpmailer_init callback metadata and static source without executing or identifying third-party callbacks, and reports a conflict only when there is reasonable evidence that another component configures or replaces the SMTP transport. Callbacks limited to sender, headers, DKIM, encoding, or logging do not trigger the notice. Use one transport owner or test an explicit integration policy when a conflict is reported.

Does the emergency bypass disable login limits too?

Yes. When GATEWARDEN_DISABLE is strictly true, public CAPTCHA checks, login-limit enforcement, and generic account-message rewriting are bypassed. Administration, migrations, SMTP, logging, notifications, stored settings, and existing data remain available.

Are stored secret keys or SMTP passwords rendered in the settings page?

No. Existing values are never included in the HTML. They can be retained, explicitly replaced, or deleted. The SMTP password is stored in the WordPress options table; Gatewarden does not claim application-level encryption at rest. Protect database access and backups as credentials.

How do the WordPress personal-data tools handle security records?

Gatewarden registers native exporters and erasers for audit events, the matching user’s latest SMTP diagnostic, and still-deliverable notification payloads. Event and queue exports use bounded keyset pages with the maximum existing ID captured on the first page and an expiring 24-hour cursor, so later inserts cannot expand an in-progress export and concurrent deletions cannot shift unread rows past an offset. This is not a transactional snapshot: data removed, anonymized, or terminalized before its page is read is no longer available, and an expired or invalid cursor requires restarting the export. Automatic matching is deliberately limited to a stored WordPress user ID. A submitted username or email address alone is not proof that the request came from that person, so Gatewarden does not expose an attacker’s IP or event merely because the attacker typed someone else’s identifier. Erasure removes or anonymizes the reliable association while retaining non-identifying security evidence where appropriate.

What happens to data on uninstall?

By default, settings and security tables are retained. Enable the uninstall data-removal option in Gatewarden > Settings to remove the site’s settings, tables, list preferences, and recent SMTP diagnostic metadata when the plugin is uninstalled.

Categories
Security & spam
Plugin details
Version1.1.1
Last updated2026-07-23 5:10pm GMT
Added2026-07-15
Requires WordPress6.5
Tested up to7.0.5
Requires PHP8.0

Tags on WordPress.org
captcha
login security
security
smtp
woocommerce
Alternatives
Other plugins in the same categories.
SilentShield – Captcha & Anti-Spam for WordPress (CF7, WPForms, Elementor, WooCommerce)
10K+ installs
4.7(21)
Kitgenix CAPTCHA for Cloudflare Turnstile
700+ installs
5.0(6)
Block Emails & Addresses for WooCommerce Checkout
700+ installs
5.0(6)
Checkout Shield for WooCommerce – Stop Fake Orders, Spam Bots & Card Testing
300+ installs
5.0(5)
FraudLabs Pro for WooCommerce
1K+ installs
4.2(18)
Identity Verification for WooCommerce
100+ installs
5.0(12)
xpay

The agent-readiness stack for the AI shopping era — helping merchants, publishers and SaaS companies get discovered, cited and transacted with by ChatGPT, Perplexity, Claude, Gemini and the custom shopping agents underneath them.

CompanyAgentically Inc. (d/b/a xpay✦)1875 Mission St, Ste 103San Francisco, CA 94103, United Stateslegal@xpay.sh · privacy@xpay.sh
or ask your AI app
Company
About xpayAgency PartnersGitHubDiscordllms.txt
DevelopersDocumentationAPI ReferenceSDKs & LibrariesQuickstart GuideOpenAPI Spec
Stay Updated
Occasional product updates and agent-readiness playbooks from xpay (Agentically Inc.) — typically a couple of emails a month. Double opt-in: we email you a link to confirm before sending anything, and every email has one-click unsubscribe.
Social
  • For Publishers
    • News
    • Finance
    • Dev / Tech
    • Travel
    • View all verticals
  • Agent-Ready Index
    • SaaS Pricing Database
    • Agent-Ready SaaS Index
    • Verified band
    • AI & ML
    • Sales & CRM
  • Products
    • Pricing Widget
    • Monetize MCP Server
    • Paywall
    • Smart Proxy
    • Monetize AI Agents
    • xpay x402 Facilitator
  • Agentic Economy
    • Timeline
    • Resources
    • Manifesto
    • Stack
  • Agentic Commerce
    • Get listed
    • ChatGPT Ads
    • How ChatGPT Ads work
    • ChatGPT Ads · Apparel
    • ChatGPT Ads · Health & Beauty
    • xpay Listings · Amazon + Google
    • Pricing
    • Free audit
    • Shopify
    • WooCommerce
    • Apparel & Accessories
    • Health & Beauty
    • Overview
  • Commerce Index
    • Shopify apps directory
    • Agentic Commerce Ready Index
    • Methodology
    • Pet brands · WooCommerce
    • Pet brands · Shopify
  • Marketplace
    • 🛍️ xpay.deals — agentic storefront for deals
  • Protocols
    • Overview
    • x402
    • MPP
    • UCP
    • ACP
    • AP2
    • TAP
    • A2A
  • Agent Frameworks
    • Overview
    • LangChain
    • CrewAI
    • Claude MCP
    • AutoGPT
    • LangChain vs Mastra
    • LangGraph vs Pydantic AI
  • Company
    • About xpay
    • Blog
    • Docs
    • GitHub
  • Free prompts
    • Ecommerce prompts
    • Email marketing prompts
    • Product description prompts
    • Facebook ad prompts
    • Skincare prompts
    • Supplement prompts
    • Wine prompts
    • Electronics prompts

© 2025 Agentically Inc. All rights reserved.
Privacy PolicyTerms of UseAcceptable Use Policy