Every integration shares the same Advanced Event Routing fields on its Routing tab, but a few services add extra gates or different log behavior. This page summarizes those differences so you know what to expect in delivery logs and Local records.
Configure routing from SignalPress → Integrations → {Service} → Routing.
Shared behavior (most integrations)
For PostHog, Webhooks, RequestBin, Pushover, analytics sinks, and most Pro integrations:
- Routing tab fields are the only server-side filter (plus Tier 1+ hooks).
- Filters are evaluated independently per service.
- Failed routing writes a
filteredrow on that service’s Logs tab — Connection Tests and Delivery Log. - Service Targeting and
signalpress/should_deliver_to_servicerun before routing — Hooks and Filters.
Local
| Behavior | Detail |
|---|---|
| Routing tab | Same event filters as other services |
| Filtered events | Not logged; not stored in Local records |
sp_capture() result | Still true for the local key when filtered |
Use Local for debugging captures that pass routing; do not rely on Local to audit filtered events.
| Behavior | Detail |
|---|---|
| Routing UI | Custom Single Message / Message templates UI — Email Routing |
| Templates mode | Global client routing skipped; per-row evaluation inside Email |
| Minimum level (Settings) | Silent skip before send |
| Routing Minimum Level (Routing) | filtered log when Single Message path runs |
Slack, Discord, Microsoft Teams
Chat integrations add Minimum level on the Settings tab (default warning):
PHP
sp_capture( 'cache_cleared', [ 'message' => 'Object cache flushed.', 'level' => 'info' ], [ 'services' => [ 'slack' ] ] );
With Settings Minimum level at warning, this info event is skipped silently — no filtered log row, and sp_capture() still returns true for slack.
Routing tab Routing Minimum Level still produces filtered rows when it blocks delivery.
Analytics-capable services (PostHog, Mixpanel, GA4, Sentry, Datadog)
| Channel | Routing |
|---|---|
PHP sp_capture() | Full routing + request rules |
JavaScript SignalPress.capture() | Full routing + request rules (via server) |
JavaScript SignalPress.analytics() | Not gated by server Routing tab — Client-side analytics |
Server capture and browser analytics are separate channels.
Dispatch order reminder
For each targeted, enabled service:
signalpress/should_deliver_to_service(Tier 1+)signalpress/service_event(Tier 1+)- Advanced signal routing (+ request rules on Tier 2)
- Service-specific gates (
minimum_levelon Email/Slack/Discord/Teams) - Provider
capture()
Email Message templates replace step 3 with per-row evaluation inside the Email service.
Tier summary
| Feature | Tier |
|---|---|
| Signal filters (Routing tab) | 1+ |
| Request rules | 2 |
| Email Message templates | 2 |
| Hooks before routing | 1+ |
What to read next
- Advanced Event Routing — filter fields and pattern syntax
- Request Rules — user, role, path, request type
- Email Routing — Single Message vs templates
- Service Targeting — PHP destination lists
- Client-side analytics — vendor browser SDK channel