Use Settings to configure delivery, Routing to select events, Logs to inspect delivery history, and Help for this guide. Routing requires Tier 1; Tier 2 adds request rules. Log visibility, payload previews, and deletion can be delegated separately with Tier 2 role permissions.
Send signals to Discord when channel alerts should fire from WordPress.
Discord is a premium SignalPress service. The active license must include service_discord or *.
Hub service ID: discord. Index: Integrations Overview. Target from PHP: Service Targeting.
Discord setup
- Open the destination Discord server and select the channel that should receive events.
- Open Server Settings → Integrations → Webhooks (or the channel's Edit Channel → Integrations → Webhooks). Managing webhooks requires the Manage Webhooks permission.
- Select New Webhook, give it a recognizable name such as
SignalPress, and choose the destination channel. - Select Copy Webhook URL to copy the generated
https://discord.com/api/webhooks/...URL. - Activate Discord under SignalPress → Integrations, paste the URL into Webhook URL, set Minimum Level and Signal payload, enable the service, and save.
- Send a test signal and confirm it appears in the selected channel.
Settings
| Field | Purpose |
|---|---|
| Webhook URL | Channel webhook URL (secret). |
| Minimum Level | Service-level gate inside delivery. Default: warning. |
| Signal payload | Include redacted JSON as a second embed. Default: on. |
Delivery thresholds
SignalPress applies two independent level checks:
- Routing → Routing Minimum Level (Tier 1+) — filters events before they are offered to Discord.
- Settings → Minimum Level — final gate inside the Discord service.
An event must pass both before SignalPress sends the signal.
The webhook URL is a secret. Anyone who has it can post to the channel, so do not publish it or include it in source control. If it leaks, delete the webhook in Discord and create a new one. SignalPress also accepts discordapp.com, ptb.discord.com, and canary.discord.com webhook URLs.
Send a signal
PHP
sp_capture( 'backup_failed', [ 'message' => 'The nightly backup failed.', 'level' => 'error' ], [ 'source' => 'backup-worker', 'services' => [ 'discord' ] ] );
Recognized levels are debug, info, warning, error, and critical. Missing or invalid levels are informational. Messages use Discord embeds with a level-colored accent bar and project, environment, source, and level fields. The optional redacted JSON payload is limited to 2,000 characters and delivered as a second embed. @everyone, @here, and role mentions are always suppressed.
The signalpress/discord/payload filter can adjust the final webhook request body before it is sent.
Troubleshooting
- The connection test uses
?wait=trueand waits for Discord to post the message before reporting success. - A successful SignalPress test means Discord accepted and posted the message. Check the destination channel to confirm formatting.
- A
401or404means the webhook URL is wrong or the webhook was deleted in Discord. Copy the current URL again. - A
403means the webhook can no longer post to the channel, usually because channel permissions changed. - A
429indicates Discord rate limiting. Discord allows short bursts per webhook; reduce event volume with routing filters or use the Tier 2 SignalPress delivery queue to smooth background delivery. - Normal signal delivery is non-blocking, so delivery results appear as Async in the Logs tab; only connection tests wait for Discord's response.
What to read next
- Integrations Overview — browse and activate services
- Your First Connection Test — send a test signal and read the log
- Advanced Event Routing — per-service event filters
- Connection Tests and Delivery Log — interpret delivery results
- Service Targeting — limit destinations from PHP