🚧 Currently in alpha β€” stable release and Pro licensing coming in 2026. Star the repo to follow progress.

Skip to content

What is WordPress Application Layer? ​

WordPress Application Layer sits between WordPress and your client applications.

It lets you control what data is exposed, who can access it, how it is shaped, and at what rate, while also hardening key WordPress surfaces such as login and IP access.

Beyond REST API responses, it can also drive your front-end through webhooks. WordPress events (post publish, user register, WooCommerce order, custom CRON...) can push data to your application in real time using the same schema as the REST API.

You can combine both approaches, or rely on webhooks only.

It is designed for:

  • Headless WordPress architectures (Next.js, Nuxt, SvelteKit, React, Vue, mobile apps)
  • Multi-application setups where multiple clients share one WordPress back-end
  • Event-driven architectures fed by webhooks instead of, or alongside, pull-based REST calls
  • Any site that needs security hardening across both REST API and WordPress surfaces

Understand the Architecture ​

The plugin centers on REST API policy and response control, and also includes WordPress-wide protections such as global IP filtering and login hardening. Admin-authenticated requests are forwarded untouched where relevant, so normal WordPress administration workflows remain intact.

REST API request pipeline:

Incoming REST request
       β”‚
       β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  Global IP Filtering    β”‚  ← Shared blocklist: IPs, CIDRs, countries (free + Pro)
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
             β”‚  blocked β†’ 403
             β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  Application Matching   β”‚  ← Which application owns this request? (Pro)
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
             β”‚
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  Authentication Check   β”‚  ← JWT / WP App Passwords
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
             β”‚
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  IP / Rate Limiting     β”‚  ← Per-app IP blocks, per-user quotas, GeoIP (Pro)
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
             β”‚
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚    Routes Policy        β”‚  ← Allowed methods, route-level rules (Pro)
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
             β”‚
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  WordPress REST API     β”‚  ← Native WP handler
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
             β”‚
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  Property Transforms    β”‚  ← Models: rename, remove, resolve, remap fields
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
             β”‚
       REST Response

Alongside this pipeline, webhooks and email notifications run independently of REST requests. Any WordPress event (post transitions, user actions, WooCommerce hooks, custom CRON, REST API hits) can trigger an outbound webhook and/or an email notification β€” scoped per application in Pro.

The flow also works in reverse: incoming webhooks let external services push events into WordPress and trigger automations directly (Pro).

Outbound (push) pipeline:

WordPress Event (post publish, order created, cron, …)
       β”‚
       β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  Automation / Trigger   β”‚  ← Conditions, chained actions (Pro)
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
             β”‚
       β”Œβ”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”
       β–Ό            β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  Webhook   β”‚  β”‚   Email    β”‚
β”‚  (push)    β”‚  β”‚ Notificationβ”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Incoming (pull) pipeline: PRO

External Service (Stripe, GitHub, CRM, IoT, …)
       β”‚  POST + HMAC signature
       β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  Incoming Webhook URL   β”‚  ← Unique endpoint per entry, signature verified
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
             β”‚  valid β†’ fire automation
             β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  Automation / Trigger   β”‚  ← Payload fields available in conditions & actions
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
             β”‚
       β”Œβ”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”
       β–Ό            β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  Webhook   β”‚  β”‚   Email    β”‚
β”‚  (push)    β”‚  β”‚ Notificationβ”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Explore Free Features ​

FeatureDescription
AuthenticationWordPress Application Password (hardened to a single authorized user) and JWT
Rate LimitingGlobal request quotas with configurable time windows
Global IP FilteringShared blocklist that runs before application resolution. Manual IPv4 blacklisting. Auto-blacklist from rate limit violations. Read-only GeoIP stats. CIDR ranges and country blocking require Pro
RoutesEnforce auth and rate limiting globally. Disable the default /users routes to prevent user enumeration
Properties & ModelsApply sitewide response transforms: resolve attachments, terms & authors, flatten rendered fields, remove domain from URLs. Rules apply globally across all routes β€” individual property control (disable, rename, remap) requires Pro
WordPress SecurityDisable XML-RPC, comments, RSS. Secure files, security headers
WebhookSingle outbound webhook with event triggers
Hooks APIEvery option exposes a WordPress filter for customisation

Explore Pro Features ​

FeatureDescription
ApplicationsIsolate all settings per client β€” auth, routes, data, webhooks
Global IP Filtering (Pro additions)CIDR range support, country blocking via GeoIP, and configurable retention time on top of the free blocklist
Per-App IP FilteringApplication-scoped blocking layered on top of the global check (Pro only β€” requires Applications)
CollectionsEnforce per-page limits and drag-and-drop sort order
Routes PolicyPer-route method control, user assignment, rate limiting and redirections. Safely disable any route with fine-grained per-application rules (avoids breaking unrelated plugin requests)
Properties & ModelsDisable, rename or remap any individual property. Remove empty properties to lighten responses. Build fully custom JSON schemas from scratch β€” map existing fields and add new static ones
AutomationsEvent-driven workflows with conditions and chained actions
Multiple WebhooksUnlimited outbound webhooks, scoped per application. Incoming webhooks let external services trigger automations via a signed endpoint
Email TemplatesTransactional email templates with SMTP configuration, scoped per application
Settings RouteSchema editor for /wp/v2/settings β€” include ACF options pages and resolved WordPress menus, shaped with per-property control or custom schema
LogsFull request history and audit trail

Requirements ​

  • WordPress 6.0+
  • PHP 7.4+

Released under the GPL-2.0-or-later License.