Request rules (Tier 2) filter events based on who triggered the capture and what kind of WordPress request was running — not based on event name or payload alone.
They complement Advanced Event Routing signal filters. Signal filters match on event name and metadata carried by the signal; request rules inspect the current user and HTTP request when sp_capture() runs.
Tier and permissions
- Requires Tier 2 (Pro) —
signalpress_has_license_level( 2 ) - Configured on each integration’s Routing tab, below Signal filters
- Requires Manage routing permission (or administrator) — Permissions and Access
If your license drops below Tier 2, saved rules are retained but not enforced until Pro access returns.
Logic: AND within groups, OR between groups
- Conditions inside one group use AND — every condition in the group must match.
- Separate groups use OR — the service receives the event when any one group fully matches.
- Empty rules (
[]) allow every request that already passed event filters.
Example: deliver when (Role has Administrator AND Request path is /checkout/) OR (Request type is cron).
Condition types
| Type | Operators | Values |
|---|---|---|
| User | is, is not | WordPress user IDs; 0 = logged-out visitor |
| Role | has, does not have | WordPress role slugs |
| Request path | is, is not, starts_with, contains, matches | Path from REQUEST_URI (no domain or query string) |
| Request type | is, is not | frontend, admin, rest, ajax, cron, cli |
Path wildcards support * and ? when using the matches operator.
Limits
Sanitization enforces:
- Up to 10 OR groups
- Up to 10 conditions per group
- Up to 25 values per condition
Rules are stored per integration in routing_rules JSON alongside other routing settings.
Path and request-type caveats
- WP-Cron and WP-CLI captures have no normal page URL — use Request type (
cronorcli) instead of path rules. - REST and AJAX captures use the API endpoint path, not necessarily the page the visitor was viewing.
- JavaScript capture REST requests are evaluated as REST requests.
- Client-side analytics bypass server routing entirely.
Wire server-side captures from hooks as described in Loading SignalPress Safely.
Example: admin-only alerts to Slack
On Slack’s Routing tab, add one request-rule group:
- Role → has →
administrator - Request type → is →
admin
Combine with event filters such as Routing Minimum Level: Warning and above so admin UI warnings reach Slack but storefront noise does not.
When request rules block delivery
Failed request rules return a filtered delivery log row (except Local, which skips filtered events entirely). The log message explains that the current user and request did not match any rule group.
Email Message templates
Each Email template row can include its own event filters and request rules. See Email Routing.
What to read next
- Advanced Event Routing — environment, level, patterns, and sources
- Email Routing — per-template rules
- Per-Service Routing Behavior — when filters run per service
- Hooks and Filters —
signalpress/should_deliver_to_servicebefore routing - Free vs SignalPress Pro — Tier 2 feature list