> For the complete documentation index, see [llms.txt](https://docs.tryterra.co/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.tryterra.co/unified-api/integration-setup/understanding-sources-and-destinations.md).

# Understanding sources and destinations

To integrate with Terra, you must define **Data Sources** where user data originates (e.g. Fitbit, Garmin, etc.) and **Data Destinations** where Terra sends this data (e.g. Webhook, MongoDB, etc.)

Once that is done, Terra’s Unified API pushes all user health payloads via **events** directly to your **data** **destination** (e.g. webhook). This removes the need to request data via the API.

## Data sources

Data Sources are the external health and fitness platforms your users authorize to share data with Terra. These include wearables (e.g., Fitbit, Garmin, Oura), fitness applications, and medical devices. Terra standardises data from these diverse sources into a uniform format.

Refer to [**Setting up data sources**](/unified-api/integration-setup/setting-up-data-sources.md) for setup instructions.

## Data Destinations

Data Destinations specify where Terra should deliver processed user data. Supported destinations include Webhooks, SQL databases (PostgreSQL, MySQL), cloud storage (AWS S3, GCP GCS, Azure Blob), and message queuing services (AWS SQS, Kafka).

Refer to [**Setting up data destinations**](/unified-api/integration-setup/setting-up-data-destinations.md) for setup instructions.

## Automatic data delivery

Terra's Unified API operates on an event-driven model. Once Data Sources are enabled, a Data Destination is configured, and a user successfully authenticates:

1. New data becomes available from the user's connected Data Source.
2. Terra retrieves and processes this data, creating a standardised event payload.
3. This payload is **automatically pushed** to your configured Data Destination.

This automatic push mechanism means you receive new data as it becomes available, without needing to poll the API. For example, if using a Webhook destination, Terra will send an HTTP POST request to your server with the new data payload.

## Summary of steps

The typical process for setting up your integrations involves:

1. Add data [**sources**](https://app.gitbook.com/s/eJJpVMsUARUJq9lYmL6t/unified-api/core-concepts#source-provider-integration) with one click (e.g. Fitbit, Oura, Garmin)
2. Add a data [**destination**](https://app.gitbook.com/s/eJJpVMsUARUJq9lYmL6t/unified-api/core-concepts#destinations) of choice (e.g. Webhook, MongoDB, PostgreSQL, AWS S3, etc.)

{% @storylane/embed subdomain="app" url="<https://app.storylane.io/share/8qriif1vn3mf>" linkValue="8qriif1vn3mf" %}
