---
title: "Extended observability — pushing API logs to ClickHouse"
img: https://s3.us-east-2.amazonaws.com/unified-article-images/extended_observability_pushing_api_logs_to_clickhouse-icon.svg
date: 2026-09-18T13:19:00.000Z
updated: "2026-10-02T17:59:41.808Z"
tag: Guides
integrations: 
description: "You can send API call logs from Unified.to directly to your own ClickHouse instance. This is the same class of logs we support for Datadog and Grafana / Loki;..."
url: "https://docs.unified.to/guides/extended_observability_pushing_api_logs_to_clickhouse"
---

# Extended observability — pushing API logs to ClickHouse
------
_September 18, 2026_

You can send API call logs from [Unified.to](https://unified.to/) directly to your own ClickHouse instance. This is the same class of logs we support for [Datadog](https://unified.to/blog/extended_observability_pushing_api_logs_to_your_datadog_instance) and [Grafana / Loki](https://unified.to/blog/extended_observability_pushing_api_logs_to_grafana_loki); you choose where they go in your workspace settings.


ClickHouse is commonly used for high-volume analytics and log-style querying with SQL. Unified writes each API-call log as a row into a table you choose in your cluster, over ClickHouse's HTTP interface.


## Setting it up


### 1. Prepare a ClickHouse database and table


Create a destination table in the database your credentials can write to. You choose the table name (for example `unified_api_logs` or `observability.unified_api_logs`) and enter it in workspace settings.


A minimal schema that accepts Unified's inserts (replace the table name with yours):


```sql
CREATE TABLE IF NOT EXISTS unified_api_logs
(
    `id` String,
    `created_at` DateTime,
    `connection_id` String,
    `workspace_id` String,
    `integration_type` String,
    `external_xref` String,
    `name` String,
    `path` String,
    `size` UInt32,
    `status` String,
    `error` String,
    `ip_address` String,
    `type` String,
    `method` String,
    `environment` String,
    `is_billable` Bool
)
ENGINE = MergeTree
ORDER BY (workspace_id, created_at);
```


Notes:

- Use ClickHouse Cloud, self-hosted ClickHouse, or any compatible hosted service.
- Grant the user permission to `INSERT` into your chosen table.
- Table names may be `table` or `database.table`, using letters, numbers, and underscores.
- You can add extra columns, indexes, or TTL policies for retention on your side. Unified only requires that the columns above can accept the values we send.
- Prefer HTTPS for the HTTP interface URL (ClickHouse Cloud typically exposes something like `https://<host>:8443`).

### 2. Collect connection details


You will need:


| Setting  | Workspace field       | Description                                                                          |
| -------- | --------------------- | ------------------------------------------------------------------------------------ |
| HTTP URL | `clickhouse_url`      | Base URL for the ClickHouse HTTP interface (include protocol and port when required) |
| Username | `clickhouse_username` | Optional; if omitted, Unified uses `default`                                         |
| Password | `clickhouse_password` | Optional; may be empty depending on your cluster                                     |
| Table    | `clickhouse_table`    | Destination table (`my_logs` or `default.my_logs`)                                   |
### 3. Enter values in workspace settings

1. Open **Workspace settings** (workspace admins only), or update the workspace via the Workspace API.
2. Under **External logging**, choose **Clickhouse**.
3. Enter the URL, username, password, and table name.

In the dashboard, external logging is one destination at a time (None, Datadog, Grafana, or ClickHouse).


### 4. Confirm logs are flowing

1. Make a sample call to the Unified API (for example, list an object on a connection), or trigger a webhook delivery.
2. In ClickHouse, query **your** table, for example:

```sql
SELECT
    created_at,
    type,
    method,
    path,
    integration_type,
    status,
    workspace_id,
    connection_id
FROM unified_api_logs
ORDER BY created_at DESC
LIMIT 20;
```


You should see recent rows with route `path`, `integration_type`, `status`, and related API-call fields.


## Why ClickHouse matters for [Unified.to](https://unified.to/) users


By sending your logs directly to your own ClickHouse cluster, you get immediate visibility into what's happening in your environment. This allows you to quickly debug issues, get notified about errors, and more. Currently, we support both inbound API calls and webhook calls.


However, we're constantly improving our product, and we're looking forward to supporting more log types in the future. So, please send us feedback so we can better understand what you need.


## About [Unified.to](https://unified.to/)


If you're not familiar with Unified API, it's a single API that you can use to read and write data to third-party integrations using our unified data model. This makes it easy to integrate with multiple systems and eliminates the need for separate API calls for each integration.


We hope this new feature makes your life easier and your work more efficient!


## Related articles

- [Extended Observability - Pushing API Logs to your Datadog Instance](https://unified.to/blog/extended_observability_pushing_api_logs_to_your_datadog_instance)
- [Extended observability — pushing API logs to Grafana / Loki](https://unified.to/blog/extended_observability_pushing_api_logs_to_grafana_loki)