Webhook Notifications
Arch supports the ability to send webhook notifications to external systems when syncs are completed.
This can be useful for integrating Arch with other systems or for monitoring the status of syncs. Many customers find it useful to send notifications to Slack, Microsoft Teams, or other messaging systems.
Notifications can be configured to send only in certain situations, for example only on failures. The notification events themselves will contain information like; exit status (e.g. success, failure, skipped, etc.), start and stop times, pipeline details, sync details, and tenant information.
If you'd like to setup webhook notifications, reach out to us with the URL you'd like to send the notifications to.
Example event payloads:
Pipeline post_sync JSON
{
"event_type": "post_sync",
"status": "succeeded",
"sync": {
"id": "sync-9417afp9das7qkrzbqvz",
"task_id": "pipeline-sfdcpipe",
"action": "sync",
"state": "initial",
"started_at": "2033-02-28T21:34:22.029456Z",
"stopped_at": null,
"exit_code": null,
"termination_reason": null,
"termination_message": null
},
"task": {
"id": "pipeline-sfdcpipe",
"name": "tenant-1-tap-salesforce-to-primary",
"extractor": {
"id": "connector-LjSICq1z",
"name": "tap-salesforce",
"package_name": "https://github.com/meltanolabs/tap-salesforce",
"package_type": "git",
"kind": "extractor",
"version": "v1.5.1",
"namespace": "tap_salesforce",
"executable": "tap-salesforce",
"capabilities": [
"properties",
"discover",
"state"
],
"logo_url": "https://hub.meltano.com/assets/logos/extractors/meltano.png",
"label": "Salesforce",
"created_at": "2033-02-28T21:34:22.029456Z",
"description": null,
"repository_url": null,
"oauth_provider": "salesforce",
"project_id": null,
"git_repository_id": null,
"settings_group_validation": [],
"meltano_metadata": null,
"variant": null,
"meltano_select": null,
"supported_python_versions": null,
"sdk_version": null
},
"database_for_extractor": null,
"loader": {
"id": "connector-FedvfoJw",
"name": "target-postgres",
"package_name": "https://github.com/meltano/target-postgres",
"package_type": "git",
"kind": "loader",
"version": "bug_fix_branch",
"namespace": "target_postgres",
"executable": "target-postgres",
"capabilities": [
"about",
"batch",
"catalog",
"discover",
"schema-flattening",
"state",
"stream-maps"
],
"logo_url": "https://hub.meltano.com/assets/logos/extractors/meltano.png",
"label": "Postgres",
"created_at": "2033-02-28T21:34:22.029456Z",
"description": null,
"repository_url": null,
"oauth_provider": null,
"project_id": null,
"git_repository_id": null,
"settings_group_validation": [],
"meltano_metadata": null,
"variant": null,
"meltano_select": null,
"supported_python_versions": null,
"sdk_version": null
},
"database_for_loader": "db-5exkm2dc",
"extractor_config": [
{
"id": "config-fg7QCYqQ",
"setting_id": "setting-2EKyx64R",
"env_var": "TAP_SALESFORCE_CLIENT_ID",
"created_at": "2033-02-28T21:34:22.029456Z",
"updated_at": "2033-02-28T21:34:22.029456Z"
},
{
"id": "config-4OteCSMR",
"setting_id": "setting-yJRIl87O",
"env_var": "TAP_SALESFORCE_CLIENT_SECRET",
"created_at": "2033-02-28T21:34:22.029456Z",
"updated_at": "2033-02-28T21:34:22.029456Z"
},
{
"id": "config-BGF4OCxj",
"setting_id": "setting-ywtuAKeN",
"env_var": "TAP_SALESFORCE_REFRESH_TOKEN",
"created_at": "2033-02-28T21:34:22.029456Z",
"updated_at": "2033-02-28T21:34:22.029456Z"
}
],
"loader_config": [],
"created_at": "2033-02-28T21:34:22.029456Z",
"updated_at": "2033-02-28T21:34:22.029456Z",
"selection_mode": "include_default",
"max_concurrent_syncs": 1,
"schedule": {
"kind": "interval",
"weeks": 0.0,
"days": 0.0,
"hours": 6.0,
"minutes": 0.0,
"seconds": 0.0,
"start_time": "2033-03-01T03:34:22.029456Z",
"end_time": null
},
"schedule_paused": false,
"task_type": "pipeline"
},
"task_type": "pipeline",
"tenant": {
"id": "tenant-FrU00ir9",
"description": "Tenant 1 description",
"external_id": "tenant1",
"name": "Tenant 1",
"project_id": "project-vToCu9xg",
"database_id": "db-5exkm2dc",
"created_at": "2033-02-28T21:34:22.029456Z"
},
"started_at": "2022-04-23T19:10:41.689968+00:00",
"stopped_at": "2022-04-23T19:10:41.689968+00:00"
}
Transform post_sync JSON
{
"event_type": "post_sync",
"status": "succeeded",
"sync": {
"id": "sync-njxpamxorr78jb4xaz3u",
"task_id": "transform-sfdc",
"action": "sync",
"state": "initial",
"started_at": "2040-10-20T22:09:32.626135Z",
"stopped_at": null,
"exit_code": null,
"termination_reason": null,
"termination_message": null
},
"task": {
"id": "transform-m5QSxaYz",
"name": "Full Refresh: seed, run, test",
"database_id": "db-uavz2h2n",
"dbt_project_id": "dbt_project-hldWqLdY",
"dbt_commands": [
{
"id": "dbt_command-yUA3KcFe",
"dbt_project_id": "dbt_project-hldWqLdY",
"command": "seed"
},
{
"id": "dbt_command-YprZdUVv",
"dbt_project_id": "dbt_project-hldWqLdY",
"command": "run"
},
{
"id": "dbt_command-C9IOrFlx",
"dbt_project_id": "dbt_project-hldWqLdY",
"command": "test"
}
],
"created_at": "2040-10-20T22:09:32.626135Z",
"updated_at": "2040-10-20T22:09:32.626135Z",
"schedule": {
"kind": "interval",
"weeks": 0.0,
"days": 0.0,
"hours": 6.0,
"minutes": 0.0,
"seconds": 0.0,
"start_time": "2040-10-21T04:09:32.626135Z",
"end_time": null
},
"schedule_paused": false,
"task_type": "transform"
},
"task_type": "transform",
"tenant": {
"id": "tenant-zvS2hrV9",
"description": "Tenant 1 description",
"external_id": "tenant1",
"name": "Tenant 1",
"project_id": "project-kTFR1Um6",
"database_id": "db-uavz2h2n",
"created_at": "2040-10-20T22:09:32.626135Z"
},
"started_at": "2022-04-23T19:10:41.689968+00:00",
"stopped_at": "2022-04-23T19:10:41.689968+00:00"
}
Slack Message Format
Status: succeeded | Tenant: Test Tenant | Pipeline: Salesforce | Source: Salesforce | Sync: sync-7yq5xvmvb1xtq5g7k6aw | Started: 2024-11-11 10:00:34+00:00 | Stopped: 2024-11-11 10:11:19+00:00