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 Datadog for log intake and observability.
Datadog is a premium SignalPress service. The active license must include service_datadog or *.
Hub service ID: datadog. Index: Integrations Overview. Target from PHP: Service Targeting.
Get the API key
- Sign in to Datadog and note your site from the browser URL (for example
app.datadoghq.comis US1,app.datadoghq.euis EU1). - Open Organization Settings → API Keys — not Application Keys.
- Click New Key, name it something like
SignalPress, and create it. - Copy the API key immediately.
- In SignalPress, activate Datadog, paste the API key, choose the matching Datadog Site, and set a Project name.
- Optionally change the Service Name (defaults to
signalpress). - Click Save changes, then enable the service if needed and save again.
- Click Send test signal.
Use an organization API key, not an application key or client token. Application keys are for reading Datadog APIs and will return Forbidden for log intake.
The Datadog site must match your account. A US1 key sent to the EU1 intake returns Forbidden.
Settings fields
| Field | Purpose |
|---|---|
| API Key | Organization API key (not Application key). Save before testing. |
| Datadog Site | Must match your account region (see table below). Default: US1. |
| Service Name | Datadog service attribute. Default: signalpress. |
| Default Level | Used when an event omits level or sends an invalid level. Default: info. |
Datadog Site options:
| SignalPress value | Browser app |
|---|---|
| US1 | app.datadoghq.com |
| US3 | us3.datadoghq.com |
| US5 | us5.datadoghq.com |
| EU1 | app.datadoghq.eu |
| AP1 | ap1.datadoghq.com |
| AP2 | ap2.datadoghq.com |
| UK1 | uk1.datadoghq.com |
SignalPress sends the API key in the intake URL path and as the DD-API-KEY header so delivery works when hosts strip custom headers.
The signalpress/datadog/payload filter can adjust the log JSON before delivery.
- [Datadog API and Application Keys](https://docs.datadoghq.com/account_management/api-app-keys/)
- [Datadog Logs HTTP API](https://docs.datadoghq.com/api/latest/logs/)
Test the connection
- Open Datadog Logs → Live Tail (or Log Explorer) filtered to
service:signalpressor your custom service name. - In SignalPress, click Send test signal.
- Confirm the
signalpress_testlog appears.
Send a signal
PHP
sp_capture( 'payment_provider_failed', [ 'message' => 'The payment provider returned an unexpected response.', 'level' => 'error', 'order_id' => 123, 'response' => $provider_response, ], [ 'source' => 'checkout', 'services' => [ 'datadog' ], ] );
Supported levels are debug, info, warning, error, and critical. Datadog receives them as debug, info, warn, error, and crit status values. An invalid or omitted level uses the service default.
Each log includes the message, service name, hostname, env/project/source/event tags, nested payload and context, site URL, and SignalPress version.
Browser analytics
Server-side logs use the organization API key. Browser analytics uses a separate Browser RUM application:
- Create a Browser RUM application in Datadog.
- Copy the RUM Application ID and RUM Client Token into SignalPress and save.
When those credentials are saved and the service is enabled, the RUM SDK loads automatically.
JavaScript
SignalPress.analytics(
'pricing_toggle_opened',
{ plan: 'pro' },
{ source: 'pricing-page' }
);
Optional Web analytics adds RUM session, interaction, and resource tracking. Analytics events bypass WordPress routing. Use JavaScript capture for server-routed log events.
Troubleshooting
- A disabled test button means API Key, Site, or Project has not been saved. Paste the key, choose the site, then click Save changes before testing.
- HTTP
403usually means the key is an Application key, the key is invalid, or the wrong Datadog site was selected. - HTTP
400usually means the JSON body was rejected. - Successful ingestion returns a
2xxresponse (commonly200or202). - If the test succeeds but nothing appears in Live Tail, wait a few seconds and confirm the service name and site match the Datadog account you are viewing.
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 or JavaScript
- Client-side analytics — Datadog RUM