Skip to main content
Webhooks let Artie send HTTP POST notifications to an endpoint you control whenever subscribed events happen — replication issues, backfill progress, schema changes, and more.
Webhooks are the recommended way to get real-time alerts for pipeline errors. You can subscribe to specific event types to monitor replication failures, skipped rows, backfill status, schema changes, and more.
If you want to mute email alerts for a specific pipeline without disabling health tracking, use the Disable alert emails setting under the pipeline’s Advanced settings. See Disable alert emails for details. Webhooks and dashboard health cards are unaffected.

Configure a webhook

Create and manage webhooks from Settings > Webhooks in the Artie dashboard. When configuring a webhook, note the following:
  • Webhook URL — Must be HTTPS. If the URL is a Slack incoming webhook (hooks.slack.com), Format defaults to Slack.
  • Authorization (Bearer token) — Optional. If set, Artie sends Authorization: Bearer <token> on each delivery. This is a shared secret in the header, not an HMAC signature over the body.
  • FormatEvent Payload sends the raw JSON event (see payload structure below). Slack sends a Block Kit-style payload for Slack incoming webhooks.
View-only users can browse webhooks and logs but cannot create, edit, delete, or test them.

Verify your endpoint

After saving your webhook, click on it to open its delivery logs, and click Send test in the top right. You can also select one or more webhooks in the table and use Test selected.

Delivery behavior

  • Method and content type: POST with Content-Type: application/json.
  • Authentication: If you configured a bearer token, validate the Authorization header on your server.
  • Retries: Your endpoint should return an HTTP 2xx status. Non-2xx responses are retried; after repeated failures the webhook will show a Failing status and you will receive email alerts.

Payload structure

Every delivery shares a common envelope. The event, message, severity, timestamp, delivery_metadata, and properties fields are always present. The context fields — source_reader_uuid, pipelines, source, destination, environment_uuid, and environment_name — are present on events that have an environment (most pipeline events). environment_uuid and environment_name are omitted on dashboard-origin events with no environment (e.g. dek.generated).
{
  "event": "replication.error",
  "message": "An error occurred during replication.",
  "severity": "error",
  "timestamp": "2026-06-20T12:00:00Z",
  "source_reader_uuid": "11111111-1111-1111-1111-111111111111",
  "pipelines": [
    { "uuid": "22222222-2222-2222-2222-222222222222", "name": "Production Postgres → Snowflake" }
  ],
  "source": "postgresql",
  "destination": "snowflake",
  "environment_uuid": "33333333-3333-3333-3333-333333333333",
  "environment_name": "Production",
  "delivery_metadata": { "attempt": 1 },
  "properties": { ... }
}
The properties field varies by event type — see the individual event pages in the sidebar for field-level details rendered from the OpenAPI spec.
Event Payload deliveries use JSON that is compatible with the Events API, so you can forward webhook events directly to an Events API pipeline for storage and replication.

Event types

EventSeverityDescription
replication.startedinfoThe replication process has started.
replication.errorerrorAn error occurred during replication.
row.skippedwarningA row was not written due to size limits.
ddl.seeninfoA DDL statement was detected in the CDC stream (MySQL only).
ddl.appliedinfoArtie has applied a schema change to the destination.
backfill.startedinfoA backfill has started for a table.
backfill.completedinfoA backfill has finished successfully.
backfill.failederrorA backfill failed before completing.
dedupe.startedinfoA deduplication job has started for a table.
dedupe.completedinfoA deduplication job has finished successfully.
dedupe.failederrorA deduplication job failed.
dek.generatedinfoA new Data Encryption Key (DEK) was generated.

Deprecated events

These events are still delivered for backward compatibility but will be removed in a future release.
EventUse instead
replication.failedreplication.error
connection.failedreplication.error

Troubleshooting

  • 2XX required: Return a successful status from your handler; otherwise Artie will retry and may mark the webhook Failing.
  • Bearer mismatch: If you set a secret in Artie, your server must accept the same value in the Authorization: Bearer <token> header.
  • Slack vs Event Payload: Slack URLs expect Block Kit payloads; use Event Payload for generic JSON consumers.