Configuring your Webhook URL
You can set up your Webhook URL in the Paragon dashboard to start receiving events about your Syncs. Navigate to the Syncs page in the dashboard to set your Webhook URL for a specific Paragon project:
POST requests with a 2xx HTTP status in a timely manner. If your webhook fails to respond repeatedly, we may disable your webhook.
Receiving Webhook Events
All webhook events will be sent to your configured Webhook URL as aPOST request.
Each webhook event will include the following standard properties to identify the related Sync and User:
Event Types
The full list of possibleevent type values are as follows:
sync_completesync_erroredrecord_createdrecord_updatedrecord_deletedrecord_errored
sync_complete
This event is sent when an Initial Sync has completed successfully.
Example payload
sync_errored
This event is sent when a Sync has failed with a non-recoverable error and cannot continue without intervention. After this event is sent, the Sync status field will be set to ERRORED.
Paragon only emits sync_errored for non-recoverable (permanent) errors. Transient errors like rate limits (HTTP 429), temporary network failures, and expired access tokens are handled automatically by Managed Sync with backoff and retry logic — they do not trigger this webhook, and no action is required on your part.
The most common category of non-recoverable errors is credential errors, which occur when the end user’s connected credential is no longer valid (for example, the user has revoked access, deleted the credential, or the refresh token has permanently expired). These errors require the end user to reconnect the integration through the Connect Portal before the Sync can resume.
Credential error
ERRORED state until the underlying issue is resolved and the Sync is re-enabled.
record_created
This event is sent when a Sync has discovered a new record (determined by a permanent ID or path available in the integration provider) during its Incremental Sync.
Create events do not provide any record data as a part of the event payload, but you can use the Get Synced Record endpoint to get the latest data.
Example payload
record_updated
This event is sent when a Sync has discovered an update to an existing record during its Incremental Sync.
Update events do not provide any record data as a part of the event payload, but you can use the Get Synced Record endpoint to get the latest data.
Example payload
record_deleted
This event is sent when a Sync has discovered that a record has been deleted or is otherwise unavailable to the connected account (for example, the record’s access has been revoked from your user).
When records are deleted, the contents of their metadata are removed from the Sync, and you can no longer retrieve the synced object or its associated file data. However, the Pull Synced Records endpoint will provide a sparse entry with the id and external_id property for visibility on the deletion.
These events are sent after a successful Periodic Full Sync.
Example payload
record_errored
This event is sent when a Sync has encountered an error while processing a record (for example, fetching permission data for this record). This event does not affect the Sync’s status field, and the Sync will continue processing other records.
Example payload