Event Types

List of event types

Overview

This article provides a list of event types that can be subscribed to using webhooks. An event represents something that has happened in the system, e.g. file ingestion, etc.

For detailed description of how to configure webhooks for these event types, refer to Setup Webhook Subscription via API


Event Types

Ingestion Events - ingestion.processing.succeeded and ingestion.processing.failed

When sent:

  • ingestion.processing.succeeded - an ingestion finished processing without errors.
  • ingestion.processing.failed - an ingestion finished processing in error.

The purpose of this event is to notify the receiving system that processing of a previously submitted ingestion produced a DONE or ERROR outcome.

The outcome may still be interim — use isFinal (see the field below) to tell whether it is definitive. The isFinal can be set to false, e.g.

  • for ingestion.processing.succeeded - if the ingestion file contained Unposted Journals that are awaiting their posting date. Then once the Journals are posted when their posting date arrives, isFinal will change to true.
  • for ingestion.processing.failed - if the ingestion file contained errors that are undergoing reprocessing. Then if the reprocessing is unsuccessful, isFinal will change to true.

Use these events to track processing without polling.

Data Fields

FieldTypeDescription
ingestionIdstring (UUID)Identifier of the ingestion, as returned when the data was submitted.
processingStatusstringDONE for success, ERROR for failure.
finishedOnstring (ISO-8601) | nullWhen processing finished.
isFinalbooleantrue if this is the definitive outcome. false is an interim result that may be followed by another notification for the same ingestionId (for example while downstream flows are still settling).

Example

1{
2 "event_id": "a3efc743-ac6c-463b-aa19-4dd9c45b5b96",
3 "event_type": "ingestion.processing.succeeded",
4 "metadata": {},
5 "event_timestamp": "2026-03-18T12:00:01.234Z",
6 "data": {
7 "ingestionId": "5b8f0c0e-2b7a-4f1e-9c3d-0d6a1b2c3d4e",
8 "processingStatus": "DONE",
9 "finishedOn": "2026-03-18T12:00:00Z",
10 "isFinal": true
11 }
12}

The failed variant has the same shape with event_type ingestion.processing.failed and processingStatus ERROR.


Extract Upload - extract.upload.completed Event

When sent: An extract file was uploaded to cloud storage and is ready to download.

The purpose of this event is to notify the receiving system that an extract configured to deliver to cloud storage has finished and the file has been written to the storage bucket. The file is available to download and process.

This event is emitted only for extracts with cloud storage as destination and only once the run has fully succeeded:

  • the extraction completed (extractionStatus COMPLETED)
  • the file was uploaded (uploadStatus SENT)
  • and — if the extract is configured to produce a manifest — the manifest has also been delivered.

When you receive this event the file (and its manifest, if any) is ready to download. Because of these conditions, the extractionStatus, uploadStatus and uploadSpace fields are constant for this event; they are listed in the table below for completeness.

Data Fields

FieldTypeDescription
extractLogIdstring (UUID)Identifier of the extract run.
rerunNumberintRerun counter for this run (0 for the first run).
extractNamestringName of the extract.
configurationNamestringName of the extract configuration.
extractConfigurationIdstring (UUID)Identifier of the extract configuration.
startedOnstring (ISO-8601) | nullWhen the run started.
uploadedOnstring (ISO-8601) | nullWhen the file was uploaded.
extractionStatusstringExtraction outcome. Always COMPLETED for this event.
uploadStatusstringUpload outcome. Always SENT for this event.
uploadSpacestringDestination of the file. Always CLOUD_STORAGE for this event.
executedstringHow the run was triggered: AUTOMATICALLY (scheduled) or MANUALLY.
generatedBystring | nullUser or process that triggered the run.

Example

1{
2 "event_id": "c1d2e3f4-5678-49ab-bcde-0123456789ab",
3 "event_type": "extract.upload.completed",
4 "metadata": {},
5 "event_timestamp": "2026-04-14T09:54:45.040Z",
6 "data": {
7 "extractLogId": "7f3a9b2e-1d4c-4f8a-6b0e-3d7c9a1f4b2e",
8 "rerunNumber": 0,
9 "extractName": "Daily balances",
10 "configurationName": "daily-balances",
11 "extractConfigurationId": "2b7a4f1e-9c3d-0d6a-1b2c-3d4e5f60718e",
12 "startedOn": "2026-04-14T09:54:43.674Z",
13 "uploadedOn": "2026-04-14T09:54:44.900Z",
14 "extractionStatus": "COMPLETED",
15 "uploadStatus": "SENT",
16 "uploadSpace": "CLOUD_STORAGE",
17 "executed": "AUTOMATICALLY",
18 "generatedBy": null
19 }
20}

Balance Extract - balance.extracted Event

Please note that in addition to steps 1-3 from Webhook Configuration Balance Extract Event requires a 4th step, adding an extract in the UI, described below.

Step 4 — Create a Balance Extract with Webhook Target

You will need Extractions Editor role assigned, e.g. Editor, to create the extract on the Extracts screen.

  • Go to Operations → Extracts → Extracts in Fynapse
  • Create a new extract
  • Set Target name to Webhook
  • Select Balances as the data source
  • Complete the configuration
  • Wait for schedule to Activate or run the extract manually

See Data Extraction for more details.

When the extract runs, balance.extracted events are generated and delivered to your webhook endpoint.

Event Format

The purpose of this event is to deliver a balance.extracted event to the receiving system.

Please note that the contents of the data property will be based off your selected Balance Query.

1{
2 "event_id": "a3efc743-ac6c-463b-aa19-4dd9c45b5b96",
3 "event_type": "balance.extracted",
4 "metadata": {
5 "eventType": "balance.extracted",
6 "startedOn": "2026-04-14T09:54:43.674940Z",
7 "extractConfigurationName": "test"
8 },
9 "event_timestamp": "2026-04-14T09:54:45.040Z",
10 "data": {
11 "node": "Node1",
12 "account": "222",
13 "balance": 1.0,
14 "productName": "",
15 "transactionCurrency": "GBP"
16 }
17}