{
  "id": "evt_01HX4J1SQ93Y9F6VBQ4JPZW66S",
  "object": "event",
  "created": 2025-06-18T00:50:40.301173,
  "type": "<event_type>",
  "data": {
    "migration_id": "mig_01HX4J3SQ4QZZ9V9JMP8J2V7KZ",
    "object": { /* resource object */ },
    "error_message": "Only present for *.failed events"
  }
}

Overview

Your Anon organization can subscribe to webhook events to receive push‑style notifications whenever important events occur during the data‑migration lifecycle. Our webhook service gives you:
  • High‑availability delivery with automatic retries
  • A visual Event Log and Replay UI in the dashboard (/webhooks)
  • Cryptographic signatures so you can verify that the payload really came from us
Typical use‑cases include:
  • Kicking off downstream processing when a migration finishes
  • Updating your own UI in real‑time as tasks progress
  • Alerting when a login workflow is rejected or a migration fails

Quickstart

  1. Navigate to dashboard.anon.com/webhooks and click + Add endpoint.
  2. Enter the HTTPS URL (e.g. https://api.example.com/anon/webhooks) where you want to recieve events.
  3. Click on Create. You’ll start receiving events immediately.

Testing

  • You can create a Svix Play endpoint to test receiving events
  • You can also send example events (svix.ping) through the Testing tab of your endpoint

Verifying requests

Each request includes seven headers:
accept
string
Indicates the MIME types that are acceptable for the response
content-length
number
The length of the request body in bytes
content-type
string
application/json
svix-id
string
Unique message ID (e.g. msg_2ycTlwDkllobhXwGILmiziO9xnz)
svix-signature
string
Cryptographic signature for verification (e.g. v1,cWXqN0eZ2edTtYgF+LfDDmNLgNOiSVx+OOq9WU3MDkw=)
svix-timestamp
number
Unix timestamp of when the webhook was sent (e.g. 1750133013)
user-agent
string
Identifies the webhook sender (e.g. Svix-Webhooks/1.66.0 (sender-9YMgn; +https://www.svix.com/http-sender/))
  • You can copy the singing secret from the webhook page to verify the signature of webhook events
  • You can set custom headers in the Advanced tab of your webhook

Event types

EventTrigger
migration.createdA migration record is created and inserted into the database, but has not started yet
migration.startedThe migration moves into WORKING, typically after login workflow success
migration.completedThe migration completes with status COMPLETE or COMPLETED_WITH_FAILURES
migration.failedThe migration enters FAILED
A migration_task.failed event may still result in available files for the corresponding task. We recommend polling the files API for partial extractions.

Payload format

All events share the same envelope:
{
  "id": "evt_01HX4J1SQ93Y9F6VBQ4JPZW66S",
  "object": "event",
  "created": 2025-06-18T00:50:40.301173,
  "type": "<event_type>",
  "data": {
    "migration_id": "mig_01HX4J3SQ4QZZ9V9JMP8J2V7KZ",
    "object": { /* resource object (see below) */ },
    "error_message": "Only present for *.failed events"
  }
}

Resource-based object schemas

Here are the schemas for different resource objects:
{
  "company_id": "f7b2d4e9-3c8a-4f1b-9e6d-2a5c8b7f3e91",
  "created": "2025-06-18T04:06:42.453452",
  "id": "mig_01HX4J3SQ4QZZ9V9JMP8J2V7KZ",
  "created_by_user_id": "usr_01HX4J1SQ93Y9F6VBQ4JPZW66S",
  "object": "migration",
  "status": "NOT_STARTED"
}
{
  "id": "evt_01HX4J1SQ93Y9F6VBQ4JPZW66S",
  "object": "event",
  "created": 2025-06-18T00:50:40.301173,
  "type": "<event_type>",
  "data": {
    "migration_id": "mig_01HX4J3SQ4QZZ9V9JMP8J2V7KZ",
    "object": { /* resource object */ },
    "error_message": "Only present for *.failed events"
  }
}

Retry logic

  • We retry with exponential back‑off (2 attempts).
  • Return any 2xx status code to acknowledge delivery. You can see the history of events under Message Attempts in your webhook.