Documentation menu

Slack

A Block Kit message in a Slack channel for every mapped event. Useful for a "new customer" channel the whole team watches, or for keeping an eye on a conversion you have just started tracking.

This is a destination, driven by the event mapping. Alerts from monitors and error rules are a separate feature with its own notification channels.

Prerequisites

  • A Slack workspace where you can install an app.

What to collect

Value Where to find it Stored as
Incoming webhook URL api.slack.com/apps → your app (or Create New App → From scratch) → Features → Incoming Webhooks → toggle on → Add New Webhook to Workspace → pick the channel. Copy the https://hooks.slack.com/services/… URL. Vault
Channel label Free text shown in the message footer. Slack itself decides the real channel from the webhook. Config
Include the person Off by default. On, the message shows the email or name of the person who triggered the event. Config
Include raw properties Off by default. On, the event's properties are appended as a code block. Config

The webhook URL is the credential — anyone who has it can post to that channel — so it is stored in the vault and never shown again, not in the console and not in the delivery log.

The message

{
  "text": "New purchase · $49",
  "blocks": [
    { "type": "header", "text": { "type": "plain_text", "text": "New purchase", "emoji": false } },
    { "type": "section", "fields": [
      { "type": "mrkdwn", "text": "*Event*\nNew purchase" },
      { "type": "mrkdwn", "text": "*Value*\n$49" },
      { "type": "mrkdwn", "text": "*Page*\n/checkout" },
      { "type": "mrkdwn", "text": "*Source*\nsearch / organic" },
      { "type": "mrkdwn", "text": "*Items*\n2 × SKU-1" }
    ]},
    { "type": "context", "elements": [
      { "type": "mrkdwn", "text": "SaaS Pro Max · production · #growth · <https://example.com/checkout|source page>" }
    ]}
  ]
}

The mapping rule's "Message title" becomes the header. text is the fallback Slack shows in notifications and to screen readers.

Fields appear only when there is something to show, and Slack renders at most ten per section, so a very wide event is trimmed rather than rejected.

Mapping advice

Slack is the one destination where * — every event — is almost always the wrong choice. A busy application will rate-limit the webhook and drown the channel. Map the two or three events a human actually wants to see, and add conditions:

[
  {
    "event": "purchase",
    "destinationEvent": "New purchase",
    "valueProperty": "value",
    "currency": "USD",
    "conditions": [{ "property": "value", "op": "gte", "value": "100" }]
  }
]

Verifying

Press Send test event. A message titled "Destination test" appears in the channel. Slack answers ok as plain text; anything else — invalid_payload, channel_not_found, no_service — is recorded in the delivery log with the code Slack returned.

Privacy

Personal data goes to Slack only when you turn "Include the person" on. Consider who is in the channel first: a Slack message is a copy of the data that lives outside SaaS Pro Max's permission model, and people.pii.read does not apply there.

Limitations

  • One message per event, with no batching or digest.
  • 10 second timeout; retries at 30 s, 2 min and 8 min for 429 and 5xx.
  • Slack rate-limits incoming webhooks to roughly one message per second per webhook. Map narrowly.