Skip to content

Sync monitoring

Diagnose and manage OutboundSync Sync Monitoring Webhooks and events with the sync-monitoring Agent Skill — read-only by default, writes only after confirmation.

When to use: OutboundSync-emitted Sync Monitoring Webhooks — sync.failed / sync.recovered, deliveries, replay, register an endpoint, rotate a signing secret. Not for SEP → OutboundSync Sources paste URLs (use Preflight). Product how-to: OutboundSync webhooks.

sync-monitoring calls /api/v1/webhooks and /api/v1/events to diagnose Sync Monitoring health. Default is read-only. Creating, updating, deleting, rotating secrets, testing, or replaying requires an explicit confirmation of a one-line plan (method, path, effect). Vague asks like “set up webhooks” are not confirmation.

Requires an account-scoped API key for /webhooks* routes. Mutations also need the write scope. Prefer API for vocabulary/bootstrap and Preflight for launch Sources wiring.

Ops wants alerts when sync breaks
You

Are my OutboundSync Sync Monitoring webhooks delivering sync.failed events?

AgentSkill · sync-monitoring

I’ll run a read-only health gauge across endpoints, deliveries, events, and the last 7 days of CRM sync errors. If something needs a register, re-enable, or replay, I’ll show a Proposed change and wait for your yes.

  • A healthy / needs attention / unverified verdict
  • A status gauge across access, endpoints, deliveries, events, and CRM sync errors (last 7 days)
  • One card per area — auto-disabled endpoints, undelivered events, and failed deliveries called out
  • A Next list, and a stop-for-confirm Proposed change before any write
  • Signing secret shown once on create/rotate (store immediately; never re-logged)

The endpoint carrying sync.failed auto-disabled, so alerts stopped while CRM sync errors piled up. Illustrative data — more states in examples.md.

## Sync Monitoring needs attention
```text
Overall ████████░░░░░░░░░░░░ 2/5 · needs attention
Access ████████████████████ ✓ ready
Endpoints ░░░░░░░░░░░░░░░░░░░░ ✗ none healthy cover sync.failed
Deliveries ████████████████████ ✓ 25/25 ok
Events ██████████████░░░░░░ ✗ 18/25 delivered
CRM syncs ███████████████████░ ✗ 1,216/1,277 ok · 7 days
```
### Access
`account-scoped · read+write`
- ✓ Account-scoped key with platform webhooks on
### Endpoints
`2 of 20 registered`
- ✗ oswhk_7Qm2… · hooks.example.com · sync.failed, sync.recovered · auto-disabled 2026-09-24
- ✓ oswhk_Lp90… · alerts.example.org · sync.recovered · active
### Deliveries
`last 25 attempts per active endpoint`
- ✓ oswhk_Lp90… · 25/25 ok · last SUCCEEDED 204 3h ago
### Events
`last 25 events`
- ✗ 7 undelivered — newest osevt_c81f… sync.failed 40m ago
### CRM syncs
`2026-09-21 → 2026-09-28`
- ✗ 61 errors — sync.failed fires on the first auth/billing error, else after 3 in a row per source × connection · 12 benign skips
### Next
1. Fix the receiver at hooks.example.com (it returned 5xx before auto-disabling), then re-enable it
`update_webhook oswhk_7Qm2… isActive=true`
2. Replay the 7 undelivered sync.failed events once it is back (7 `replay_webhook_delivery` calls, proposed one by one)
3. Inspect the failing CRM syncs with the api skill: `list_syncs status=error` for the same window
  1. Account-scoped $OUTBOUNDSYNC_API_KEY (Creating API keys), or connect OutboundSync MCP with that same key (webhook tools still 403 on connection-scoped keys). Ask support for write if you need mutations.
  2. Install:
Terminal window
npx skills add outboundsync/skills --skill sync-monitoring -g

Security and confirm protocol: skills/sync-monitoring/ · SECURITY.md.

Last updated: