Slack Notifications
Post real-time event alerts to Slack channels — typically used for revenue notifications, lead alerts, and operational signals to internal teams.
Why route Slack Notifications through Datafly Signal
- Alerts fire off the same event stream as everything else. No separate instrumentation, and no gap between what your destinations received and what Slack Notifications told you about.
- Which events reach you is configuration, not code. The trigger conditions live in the pipeline alongside every other rule, so tuning what reaches Slack Notifications does not require an application release.
- Alert volume is rate-limited. Signal applies the same rate limiting and retry behaviour it uses for any destination, so an incident that spikes your event rate does not flood the channel.
Prerequisites
Complete these steps in Slack before configuring Signal.
Create a Slack app (one-time)
Go to api.slack.com/apps and click Create New App > From scratch:
- Name: e.g. “Datafly Signal”.
- Workspace: select your target workspace.
- Click Create App.
Enable Incoming Webhooks
From the app’s settings page, click Incoming Webhooks in the sidebar and toggle Activate Incoming Webhooks to On.
Add a webhook to a channel
Click Add New Webhook to Workspace at the bottom of the page. Select the channel that should receive notifications (e.g. #sales-alerts) and click Allow.
Slack will display a webhook URL of the form:
https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXXCopy this URL — it’s the only credential Signal needs. Each webhook URL posts to a single fixed channel; create additional webhooks for other channels.
The webhook URL is a secret. Anyone with it can post to your channel. Store it in Signal’s secret field and rotate by deleting and re-creating the webhook in Slack if it leaks.
Configuration
| Field | Type | Required | Description |
|---|---|---|---|
webhook_url | secret | Yes | Slack Incoming Webhook URL. It posts to one fixed channel; create one integration per channel. |
Signal Setup
- Navigate to Integrations in the sidebar.
- Open the Integration Library tab.
- Find Slack Notifications under the Notifications category.
- Click Install, paste the webhook URL and choose the General preset.
- Click Install Integration.
Turn on Only send mapped fields (strict_output_contract) for this integration. It is the default for integrations created since the strict contract became the default; an integration created before it, or one set to forward unmapped fields, also sends every property the blueprint did not map, which can include personal data added by identity enrichment (#1557).
Event Mapping
The General preset posts one message per chosen event and drops everything else:
| Signal event | Message title | Detail lines | Default |
|---|---|---|---|
purchase | New order | Order ID (transaction_id, else order_id); value and currency (value, else revenue; currency upper-cased) | On |
generate_lead | New lead | Lead type; value and currency | On |
sign_up | New sign-up | Sign-up method; plan | On |
subscription_started | New subscription | Plan; value and currency | Off |
| Every other event, page views included | Dropped |
A missing value shows as -, and an over-long value is truncated so each field stays within Slack’s 2,000 characters. No message carries the visitor’s email, phone, name or address.
Message format
Signal posts the event title as text (Slack’s notification fallback) and a Block Kit message: a header block with the title and a section block with plain-text fields. Plain text cannot turn an event value into a mention or a link.
{
"text": "New order",
"blocks": [
{ "type": "header", "text": { "type": "plain_text", "text": "New order" } },
{ "type": "section", "fields": [
{ "type": "plain_text", "text": "Order: ORD-001" },
{ "type": "plain_text", "text": "Value: 129.99 GBP" }
] }
]
}To change the wording or add an event, edit the integration’s mappings: each line is a template field under blocks[1].fields[n].text, and the title is the event’s vendor event name.
Identity
Slack messages carry no identity data. The preset maps no email, phone, name, address or user ID, and nothing is hashed because nothing personal is sent. Add a customer reference only if everyone in the channel may see it.
Consent
Slack notifications are an internal operational signal to your own team. Configure the integration under the functional consent category.
Verify it’s working
- After installing, trigger a
purchaseevent from your website (or fire a test via the Signal event API). - Watch the configured Slack channel — the message should arrive within a few seconds.
- In Signal, check Live Events to confirm delivery with a
200response status.
Troubleshooting
| Symptom | Possible Cause | Resolution |
|---|---|---|
404 invalid_token | Webhook URL revoked or mistyped | Re-copy the URL from the app’s Incoming Webhooks page in Slack. |
403 channel_not_found | The webhook’s channel was deleted or the app was removed | Recreate the webhook against an active channel. |
| Message arrives but unformatted | Invalid Block Kit JSON | Validate the template at Slack’s Block Kit Builder. |
| Too many messages | Too many events enabled | Disable events in the integration’s mappings; events not in the preset are always dropped. |
Visit Slack Incoming Webhooks documentation for full reference.
See also
- Custom Webhook — generic HTTP webhook for any endpoint
- PagerDuty — incident notifications
- Microsoft Teams — team notifications alternative