Route Scout and change-review events to the team that can act.
Configure destinations in Settings → Alerts, send a test event, then set a workspace default and any narrower routes your teams need.
Connect the Embrasure Slack app through OAuth. Slack supports alerts, interactive actions, conversational Scout controls, feedback, and /embrasure data questions. A supported change alert can expose Create fix PR.
Confirmed table owners are preferred recipients after explicit table watchers. Change-rule channel alerts mention up to three linked owners so the person responsible is visible without broadcasting a new direct-message policy.
Every table alert includes Change owner. It opens the affected table directly in Settings → Alerts, where an editor can correct the owner. Reassigning a confirmed owner updates future owner-directed delivery immediately; it does not rewrite past alert history.
Slack routing follows one visible priority order:
Digest delivery keeps its own scheduled channel. Confirmed owners and explicit watchers can also receive direct messages; channel routing does not disable those targeted notifications.
When you upload a dbt manifest, Embrasure reads meta.owner, then config.meta.owner, with dbt group ownership as a fallback. An owner email that exactly matches a workspace member is confirmed automatically. Labels and unmatched emails remain suggestions for review. Manual ownership and a person's confirmed answer always take precedence over later dbt uploads.
Create an Events API v2 integration in PagerDuty. Add its routing key as a secret destination, select the minimum severity, and send a test event. Embrasure uses a stable deduplication key so repeated evidence updates the same incident.
PagerDuty is workspace-scoped and severity-gated. Slack channel overrides do not change which incidents page PagerDuty.
Create a workflow in Microsoft Teams with the When a Teams webhook request is received trigger, copy its callback URL, and save that URL in Settings → Alerts → Microsoft Teams. Choose the minimum severity and send a test alert. No bot package or tenant-wide app installation is required.
Embrasure posts an Adaptive Card that includes the alert title, message, severity, workspace, affected subject, lifecycle event, and a link back to Embrasure when one is available. The entire workflow URL is encrypted because its query string contains authorization material. Embrasure accepts any successful 2xx response, including the empty 202 responses returned by Teams Workflows.
Teams delivery is workspace-scoped and severity-gated. A destination that announced an incident still receives its resolved event if an administrator disables it while that incident is open.
Add a public HTTPS endpoint in Settings → Alerts → Generic webhook. You may also add a shared signing secret. Embrasure sends one compact JSON document per event using this versioned schema:
{
"schema_version": 1,
"event_type": "data_quality.incident.opened",
"workspace_id": "workspace-id",
"severity": "critical",
"title": "Data quality incident: analytics.orders",
"body": "Freshness is 90 minutes late.",
"dedup_key": "embrasure:workspace-id:data_quality_incident:incident-id",
"lifecycle_event": "opened",
"subject": { "type": "table_monitor", "id": "monitor-id" },
"link": "https://app.embrasure.ai/settings/alerts/open?workspaceId=workspace-id",
"occurred_at": "2026-08-10T12:00:00+00:00",
"details": {}
}Every request includes Content-Type: application/json, User-Agent: Embrasure-Webhook/1, X-Embrasure-Event, a unique X-Embrasure-Delivery ID, and an X-Embrasure-Timestamp containing Unix seconds. When a secret is configured, X-Embrasure-Signature is sha256=<hex digest>. Verify it against the exact request bytes:
const expected = createHmac("sha256", secret)
.update(`${timestamp}.`)
.update(rawRequestBody)
.digest("hex");
const valid = timingSafeEqual(
Buffer.from(`sha256=${expected}`),
Buffer.from(signatureHeader),
);Reject timestamps outside your replay window before processing the event. Use the delivery ID for request-level idempotency and the deduplication key for incident-level state.
Webhook URLs must use HTTPS, contain no embedded username or password, resolve at save and test time, and resolve only to public IP addresses. Embrasure applies the same DNS-validation posture used by OpenAPI connectors; it does not pin the resolved IP for the later delivery request.
Failed deliveries use the durable alert outbox. HTTP 408, HTTP 429, server errors, and network failures are retried and can eventually dead-letter after the configured attempt limit. Other 4xx responses mark the destination invalid and remain visible in Settings. A destination that announced an incident still receives its resolved event if it is later disabled.
Email is the fallback when no richer destination is available. Keep workspace membership, ownership, and product routing current so the message reaches someone who can act.
Every destination preserves the affected asset, evidence, severity, confidence or availability limit, and a link back to Embrasure. Delivery failures remain visible and retryable.