Main Header

Discord for SignalPress

Updated on July 30, 2026

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

  1. Open the destination Discord server and select the channel that should receive events.
  2. Open Server Settings → Integrations → Webhooks (or the channel's Edit Channel → Integrations → Webhooks). Managing webhooks requires the Manage Webhooks permission.
  3. Select New Webhook, give it a recognizable name such as SignalPress, and choose the destination channel.
  4. Select Copy Webhook URL to copy the generated https://discord.com/api/webhooks/... URL.
  5. Activate Discord under SignalPress → Integrations, paste the URL into Webhook URL, set Minimum Level and Signal payload, enable the service, and save.
  6. Send a test signal and confirm it appears in the selected channel.

Settings

FieldPurpose
Webhook URLChannel webhook URL (secret).
Minimum LevelService-level gate inside delivery. Default: warning.
Signal payloadInclude redacted JSON as a second embed. Default: on.

Delivery thresholds

SignalPress applies two independent level checks:

  1. Routing → Routing Minimum Level (Tier 1+) — filters events before they are offered to Discord.
  2. 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=true and 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 401 or 404 means the webhook URL is wrong or the webhook was deleted in Discord. Copy the current URL again.
  • A 403 means the webhook can no longer post to the channel, usually because channel permissions changed.
  • A 429 indicates 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.