> ## Documentation Index
> Fetch the complete documentation index at: https://docs.kadoa.com/llms.txt
> Use this file to discover all available pages before exploring further.

# How data destinations work

> What Kadoa delivers, when, and where to see it

A destination delivers data from completed runs to storage you own or a data platform you use. Destinations belong to your workspace and can deliver all of its workflows or a selected set. Kadoa configures every destination for you through the [Support Center](/docs/support-center).

## When Kadoa delivers

Kadoa delivers data to Amazon S3, Google Cloud Storage, and SFTP immediately after a workflow run completes. Data is available in Snowflake and Databricks about 5 minutes after completion.

## Formats

Amazon S3, Google Cloud Storage, and SFTP support these file formats.

| Format  | Use case                                                                    |
| ------- | --------------------------------------------------------------------------- |
| Parquet | Compressed columnar data for analytics and warehouse loads                  |
| JSONL   | One JSON record per line for streaming and line-based processing            |
| JSON    | A JSON document with a metadata envelope for APIs                           |
| CSV     | Comma-separated values for spreadsheets and systems that require flat files |

## File layout and path template

The default path template is:

```text theme={null}
{teamId}/{workflowId}/{runDatetimeSafe}-{runId}/data
```

If you set a prefix, Kadoa adds it before this path. For each run, Kadoa writes one file for each selected format. With the default template, each run has a unique path. This prevents overwrites of files from other runs.

| Token               | Description                                      | Example                                |
| ------------------- | ------------------------------------------------ | -------------------------------------- |
| `{teamId}`          | Your team UUID                                   | `a1b2c3d4-5e6f-7a8b-9c0d-e1f2a3b4c5d6` |
| `{workflowId}`      | Workflow identifier                              | `b2c3d4e5-6f7a-8b9c-0d1e-f2a3b4c5d6e7` |
| `{runId}`           | Run identifier                                   | `c3d4e5f6-7a8b-9c0d-1e2f-a3b4c5d6e7f8` |
| `{runDatetimeSafe}` | Run timestamp without colons, safe for filenames | `2025-01-15_10-30-00Z`                 |
| `{runDatetime}`     | Run timestamp in ISO 8601 format                 | `2025-01-15T10:30:00.000Z`             |
| `{runDate}`         | Run date                                         | `2025-01-15`                           |

## Additional fields

Additional fields add source labels or workflow details to every exported record. They are available in CSV, JSONL, and JSON files, but not Parquet.

Each field has a name you choose and a fixed value or a variable. Kadoa replaces variables with the details of the workflow or run.

| Field name     | Configured value | Example value in the file  |
| -------------- | ---------------- | -------------------------- |
| `source`       | `Kadoa`          | `Kadoa`                    |
| `workflowName` | `{workflowName}` | `Product Monitor`          |
| `runTimestamp` | `{runDatetime}`  | `2025-01-15T10:30:00.000Z` |

Supported variables:

* `{teamId}`
* `{workflowId}`
* `{workflowName}`
* `{runId}`
* `{runDate}`
* `{runDatetime}`

## Workflow health files

Health files let you monitor workflow status from your Amazon S3, Google Cloud Storage, or SFTP destination.

They are enabled by default for Amazon S3 and Google Cloud Storage, and disabled for SFTP. Kadoa can enable or disable health files for your destination.

When enabled, Kadoa writes one JSON file for each of these [events](/docs/notifications):

* `workflow_finished`: a scheduled workflow finishes.
* `workflow_failed`: a scheduled or realtime workflow fails.
* `workflow_recovered`: a realtime workflow recovers.

File path:

```
<PREFIX>/workflow-health/date=2025-01-15/<EVENT_ID>.json
```

```json theme={null}
{
  "schemaVersion": 1,
  "eventId": "<EVENT_ID>",
  "eventType": "workflow_failed",
  "status": "failed",
  "eligibleAt": "2025-01-15T10:30:00.000Z",
  "workflow": { "id": "<WORKFLOW_ID>", "name": "Product Monitor" },
  "runId": "<RUN_ID>"
}
```

`runId` is present only when the event belongs to a run.

## View your destinations

See which destinations deliver a workflow's results without contacting support:

* **In the dashboard**: the **Deliver** section of the [Pipeline](/docs/ui/workflows/pipeline) panel lists connected destinations first, or open the workflow's **Download** dropdown.
* **Via the API**: [List workflow destinations](/api-reference/workflows/list-workflow-connectors) returns each destination's name, provider, target (bucket URI, SFTP host, or warehouse share), and file formats.

Only deliverable destinations are listed (enabled, verified, not revoked).

## Request, change, or disable a destination

To request a new destination for a workflow, open the workflow's [Pipeline](/docs/ui/workflows/pipeline) panel, choose **Deliver**, click **Add** under Destinations, and click **Set up** next to the destination. The [Support Center](/docs/support-center) request opens prefilled with the workflow and the details we need; fill them in and submit.

For a change or to disable a destination, submit a Support Center request that names the destination, what you want to change, and the new value.

## Glossary

**Destination:** The configuration that sends completed-run data to your storage or data platform.

**Delivery:** One transfer or publication for one run.

**Run:** One execution of a workflow.

**Workflow:** The configured process that collects and structures your data.

**Team:** The Kadoa workspace that owns workflows and destinations.
