---
title: Apps & integrations
description: Browse the chkit app registry for ClickHouse integrations, synced records, setup guides, and editable API sync templates.
sidebar:
  label: Integration list
  order: 1
---

The chkit app registry provides installable ClickHouse integrations with editable schemas, API readers, and sync pipelines.


## Available integrations

Choose an app to see its setup guide, every resource it syncs, required permissions, and how data reaches ClickHouse. These integrations copy TypeScript source into the project, where the readers and schemas remain editable.

### [Attio](/integrations/attio/)

Editable Attio CRM schemas, raw data readers, typed views, and independent streams for People, Companies, configured custom types, and workspace resources.

| Property | Included behavior |
| --- | --- |
| Registry app | `attio` (v0.2.0) |
| Install command | `bunx chkit add attio` |
| Source directory | `src/integrations/attio` |
| Authentication | Bearer token |
| Environment variables | `ATTIO_API_TOKEN` |
| ClickHouse | `>=25.3.0` |
| Coverage | 9 synced resources, 3 derived views |
| Sync strategy | Full scans |

| Resource | Default ClickHouse table | Records synced | API reference |
| --- | --- | --- | --- |
| Objects (`objects`) | `attio_objects_raw` | Accessible standard and custom object definitions, IDs, API slug, singular and plural names, creation time | [`GET /objects`](https://docs.attio.com/rest-api/endpoint-reference/objects/list-objects) |
| Object attributes (`object_attributes`) | `attio_object_attributes_raw` | Attribute IDs, slug, title, description, type, flags, defaults, relationship definitions, configuration, creation time; includes archived definitions | [`GET /objects/{object_id}/attributes`](https://docs.attio.com/rest-api/endpoint-reference/attributes/list-attributes), [`GET /objects/{object_id}`](https://docs.attio.com/rest-api/endpoint-reference/objects/get-an-object) |
| Records (`records`) | `attio_records_raw` | Independent records streams for configured object types (People and Companies by default), IDs, creation time, Attio URL, and the complete values object with all returned attribute arrays | [`POST /objects/{object_id}/records/query`](https://docs.attio.com/rest-api/endpoint-reference/records/list-records), [`GET /objects/{object_id}`](https://docs.attio.com/rest-api/endpoint-reference/objects/get-an-object) |
| Lists (`lists`) | `attio_lists_raw` | List IDs, slug, name, parent objects, workspace and member access configuration, creator, creation time | [`GET /lists`](https://docs.attio.com/rest-api/endpoint-reference/lists/list-all-lists) |
| List attributes (`list_attributes`) | `attio_list_attributes_raw` | Attribute definitions for selected lists, including types, configuration, flags, defaults, relationships, and archived definitions | [`GET /lists/{list_id}/attributes`](https://docs.attio.com/rest-api/endpoint-reference/attributes/list-attributes), [`GET /lists/{list_id}`](https://docs.attio.com/rest-api/endpoint-reference/lists/get-a-list) |
| List entries (`entries`) | `attio_entries_raw` | Entry IDs, parent object and record ID, creation time, and the complete entry_values object | [`POST /lists/{list_id}/entries/query`](https://docs.attio.com/rest-api/endpoint-reference/entries/list-entries), [`GET /lists/{list_id}`](https://docs.attio.com/rest-api/endpoint-reference/lists/get-a-list) |
| Notes (`notes`) | `attio_notes_raw` | Note IDs, parent record links, title, plaintext and Markdown content, tags, creator, creation time, and meeting reference when returned | [`GET /notes`](https://docs.attio.com/rest-api/endpoint-reference/notes/list-notes) |
| Tasks (`tasks`) | `attio_tasks_raw` | Task IDs, plaintext content, deadline, completion state and time, linked records, assignees, creator, creation time | [`GET /tasks`](https://docs.attio.com/rest-api/endpoint-reference/tasks/list-tasks) |
| Workspace members (`members`) | `attio_members_raw` | Member IDs, first and last name, email address, avatar URL, access level, creation time | [`GET /workspace_members`](https://docs.attio.com/rest-api/endpoint-reference/workspace-members/list-workspace-members) |

[Integrating ClickHouse with Attio](/integrations/attio/) covers credentials, permissions, storage, and sync limitations.

### [Circleback](/integrations/circleback/)

Five independent Circleback raw resource streams with complete full reads, transcript availability evidence, and native relationships.

| Property | Included behavior |
| --- | --- |
| Registry app | `circleback` (v0.2.0) |
| Install command | `bunx chkit add circleback` |
| Source directory | `src/integrations/circleback` |
| Authentication | Bearer API key |
| Environment variables | `CIRCLEBACK_API_KEY` |
| ClickHouse | `>=25.3.0` |
| Coverage | 5 synced resources, 0 derived views |
| Sync strategy | Full scans |

| Resource | Default ClickHouse table | Records synced | API reference |
| --- | --- | --- | --- |
| Meetings (`meetings`) | `circleback_meetings_raw` | Accessible meeting provider objects and notes, with tag names as string arrays. | [`GET /meetings`](https://circleback.ai/docs/api/meetings/list-meetings) |
| Meeting transcripts (`meeting_transcripts`) | `circleback_meeting_transcripts_raw` | Whole transcript snapshots per meeting and separate latest read outcomes; availability failures preserve earlier successful text. | [`GET /meetings`](https://circleback.ai/docs/api/meetings/list-meetings), [`GET /meeting/{meetingId}/transcript`](https://circleback.ai/docs/api/meetings/get-meeting-transcript) |
| Action items (`action_items`) | `circleback_action_items_raw` | Raw action items for any assignee, fully paginated across PENDING and DONE completion statuses. | [`GET /action-items`](https://circleback.ai/docs/api/action-items/list-action-items) |
| People (`people`) | `circleback_people_raw` | Complete same-person listing and detail fields, preserving external references and native person/company IDs. | [`GET /people`](https://circleback.ai/docs/api/people/list-people), [`GET /person/{profileId}`](https://circleback.ai/docs/api/people/get-person) |
| Companies (`companies`) | `circleback_companies_raw` | Domain-keyed company listing and detail fields with a nullable, corroborated native numeric company ID for joins. | [`GET /companies`](https://circleback.ai/docs/api/companies/list-companies), [`GET /company/{domain}`](https://circleback.ai/docs/api/companies/get-company) |

[Integrating ClickHouse with Circleback](/integrations/circleback/) covers credentials, permissions, storage, and sync limitations.

### [GitHub](/integrations/github/)

Editable GitHub ingestion with independent issue, pull-request, discussion, review, commit, and stargazer streams and raw ClickHouse tables.

| Property | Included behavior |
| --- | --- |
| Registry app | `github` (v0.2.0) |
| Install command | `bunx chkit add github` |
| Source directory | `src/integrations/github` |
| Authentication | Bearer token |
| Environment variables | `GITHUB_TOKEN` |
| ClickHouse | `>=25.3.0` |
| Coverage | 8 synced resources, 0 derived views |
| Sync strategy | Timestamp windows, Full scans |

| Resource | Default ClickHouse table | Records synced | API reference |
| --- | --- | --- | --- |
| Issues (`issues`) | `github_issues_raw` | Only ordinary issues, with complete provider issue fields and repository context | [`GET /repos/{owner}/{repo}/issues`](https://docs.github.com/en/rest/issues/issues#list-repository-issues) |
| Issue comments (`issue_comments`) | `github_issue_comments_raw` | One raw comment per row for ordinary issues; independently discovers all issue parents and filters child updates | [`GET /repos/{owner}/{repo}/issues`](https://docs.github.com/en/rest/issues/issues#list-repository-issues), [`GET /repos/{owner}/{repo}/issues/{issue_number}/comments`](https://docs.github.com/en/rest/issues/comments#list-issue-comments) |
| Pull requests (`pull_requests`) | `github_pull_requests_raw` | Pull-request metadata from its own collection, with repository context | [`GET /repos/{owner}/{repo}/pulls`](https://docs.github.com/en/rest/pulls/pulls#list-pull-requests) |
| Pull request conversation comments (`pull_request_comments`) | `github_pull_request_comments_raw` | One raw conversation comment per row with its pull number; independently discovers all pull-request parents and filters child updates | [`GET /repos/{owner}/{repo}/pulls`](https://docs.github.com/en/rest/pulls/pulls#list-pull-requests), [`GET /repos/{owner}/{repo}/issues/{pull_number}/comments`](https://docs.github.com/en/rest/issues/comments#list-issue-comments) |
| Pull request review comments (`pull_request_review_comments`) | `github_pull_request_review_comments_raw` | Raw diff-review comments with repository and pull-number context, selected by their own update times | [`GET /repos/{owner}/{repo}/pulls/comments`](https://docs.github.com/en/rest/pulls/comments#list-review-comments-in-a-repository) |
| Pull request reviews (`pull_request_reviews`) | `github_pull_request_reviews_raw` | One raw review per row with repository and pull number; discovers its own pull-request parents | [`GET /repos/{owner}/{repo}/pulls`](https://docs.github.com/en/rest/pulls/pulls#list-pull-requests), [`GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews`](https://docs.github.com/en/rest/pulls/reviews#list-reviews-for-a-pull-request) |
| Pull request commits (`pull_request_commits`) | `github_pull_request_commits_raw` | Commit SHA and message only, with repository and pull number; paginates GraphQL commits after independent pull-request discovery | [`GET /repos/{owner}/{repo}/pulls`](https://docs.github.com/en/rest/pulls/pulls#list-pull-requests), [`POST /graphql`](https://docs.github.com/en/graphql/reference/pulls#pullrequest) |
| Stargazers (`stargazers`) | `github_stargazers_raw` | Repository stargazers with starred_at and repository context | [`GET /repos/{owner}/{repo}/stargazers`](https://docs.github.com/en/rest/activity/starring#list-stargazers) |

[Integrating ClickHouse with GitHub](/integrations/github/) covers credentials, permissions, storage, and sync limitations.

### [Google Calendar](/integrations/google-calendar/)

Editable Google Calendar API ingestion with journaled checkpoints and raw ClickHouse tables.

| Property | Included behavior |
| --- | --- |
| Registry app | `google-calendar` (v0.2.0) |
| Install command | `bunx chkit add google-calendar` |
| Source directory | `src/integrations/google-calendar` |
| Authentication | OAuth access token |
| Environment variables | `GOOGLE_CALENDAR_ACCESS_TOKEN` |
| ClickHouse | `>=25.3.0` |
| Coverage | 1 synced resources, 0 derived views |
| Sync strategy | Cursor checkpoints |

| Resource | Default ClickHouse table | Records synced | API reference |
| --- | --- | --- | --- |
| Events (`events`) | `google_calendar_events_raw` | Canonical events, recurring masters, exceptions, and cancellation payloads from the configured calendar | [`GET /calendars/{calendarId}`](https://developers.google.com/workspace/calendar/api/v3/reference/calendars/get), [`GET /calendars/{calendarId}/events`](https://developers.google.com/workspace/calendar/api/v3/reference/events/list) |

[Integrating ClickHouse with Google Calendar](/integrations/google-calendar/) covers credentials, permissions, storage, and sync limitations.

### [Google Meet](/integrations/google-meet/)

Editable Google Meet API ingestion with journaled checkpoints and raw ClickHouse tables.

| Property | Included behavior |
| --- | --- |
| Registry app | `google-meet` (v0.2.0) |
| Install command | `bunx chkit add google-meet` |
| Source directory | `src/integrations/google-meet` |
| Authentication | OAuth access token |
| Environment variables | `GOOGLE_MEET_ACCESS_TOKEN` |
| ClickHouse | `>=25.3.0` |
| Coverage | 6 synced resources, 0 derived views |
| Sync strategy | Cursor checkpoints |

| Resource | Default ClickHouse table | Records synced | API reference |
| --- | --- | --- | --- |
| Conferences (`conferences`) | `google_meet_conferences_raw` | Conference records visible to the access token | [`GET /conferenceRecords`](https://developers.google.com/workspace/meet/api/reference/rest/v2/conferenceRecords/list) |
| Transcripts (`transcripts`) | `google_meet_transcripts_raw` | Transcript metadata for discovered and retained pending conferences | [`GET /conferenceRecords`](https://developers.google.com/workspace/meet/api/reference/rest/v2/conferenceRecords/list), [`GET /conferenceRecords/{conferenceRecord}/transcripts`](https://developers.google.com/workspace/meet/api/reference/rest/v2/conferenceRecords.transcripts/list) |
| Transcript entries (`transcript-entries`) | `google_meet_transcript_entries_raw` | Individually keyed, paged transcript entries for retained conferences | [`GET /conferenceRecords`](https://developers.google.com/workspace/meet/api/reference/rest/v2/conferenceRecords/list), [`GET /conferenceRecords/{conferenceRecord}/transcripts`](https://developers.google.com/workspace/meet/api/reference/rest/v2/conferenceRecords.transcripts/list), [`GET /conferenceRecords/{conferenceRecord}/transcripts/{transcript}/entries`](https://developers.google.com/workspace/meet/api/reference/rest/v2/conferenceRecords.transcripts.entries/list) |
| Participants (`participants`) | `google_meet_participants_raw` | Native attendance records, including signed-in, anonymous, and phone participants | [`GET /conferenceRecords`](https://developers.google.com/workspace/meet/api/reference/rest/v2/conferenceRecords/list), [`GET /conferenceRecords/{conferenceRecord}/participants`](https://developers.google.com/workspace/meet/api/reference/rest/v2/conferenceRecords.participants/list) |
| Participant sessions (`participant-sessions`) | `google_meet_participant_sessions_raw` | Individually keyed join/leave sessions with conference and participant names | [`GET /conferenceRecords`](https://developers.google.com/workspace/meet/api/reference/rest/v2/conferenceRecords/list), [`GET /conferenceRecords/{conferenceRecord}/participants`](https://developers.google.com/workspace/meet/api/reference/rest/v2/conferenceRecords.participants/list), [`GET /conferenceRecords/{conferenceRecord}/participants/{participant}/participantSessions`](https://developers.google.com/workspace/meet/api/reference/rest/v2/conferenceRecords.participants.participantSessions/list) |
| Recordings (`recordings`) | `google_meet_recordings_raw` | Recording metadata and native Drive destination references; no file downloads | [`GET /conferenceRecords`](https://developers.google.com/workspace/meet/api/reference/rest/v2/conferenceRecords/list), [`GET /conferenceRecords/{conferenceRecord}/recordings`](https://developers.google.com/workspace/meet/api/reference/rest/v2/conferenceRecords.recordings/list) |

[Integrating ClickHouse with Google Meet](/integrations/google-meet/) covers credentials, permissions, storage, and sync limitations.

### [Lemlist](/integrations/lemlist/)

Seven independent Lemlist raw resource streams with acknowledged activity intervals and complete replayable reads.

| Property | Included behavior |
| --- | --- |
| Registry app | `lemlist` (v0.2.0) |
| Install command | `bunx chkit add lemlist` |
| Source directory | `src/integrations/lemlist` |
| Authentication | HTTP Basic API key |
| Environment variables | `LEMLIST_API_KEY` |
| ClickHouse | `>=25.3.0` |
| Coverage | 7 synced resources, 0 derived views |
| Sync strategy | Timestamp windows, Full scans |

| Resource | Default ClickHouse table | Records synced | API reference |
| --- | --- | --- | --- |
| Activities (`activities`) | `lemlist_activities_raw` | Outreach activity events | [`GET /activities`](https://developer.lemlist.com/api-reference/endpoints/activities/get-many-activities) |
| Campaigns (`campaigns`) | `lemlist_campaigns_raw` | Campaign metadata | [`GET /campaigns`](https://developer.lemlist.com/api-reference/endpoints/campaigns/get-many-campaigns) |
| Contacts (`contacts`) | `lemlist_contacts_raw` | Complete team-wide contact records and native campaign lead references | [`GET /contacts`](https://developer.lemlist.com/api-reference/endpoints/contacts/get-many-contacts) |
| Companies (`companies`) | `lemlist_companies_raw` | Company records and native custom fields | [`GET /companies`](https://developer.lemlist.com/api-reference/endpoints/companies/get-many-companies) |
| Campaign leads (`campaign_leads`) | `lemlist_campaign_leads_raw` | Complete campaign-specific lead exports with campaign scope | [`GET /campaigns`](https://developer.lemlist.com/api-reference/endpoints/campaigns/get-many-campaigns), [`GET /v2/campaigns/{campaignId}/export/leads`](https://developer.lemlist.com/api-reference/endpoints/campaigns/export-campaign-leads-v2) |
| Inbox conversations (`inbox_conversations`) | `lemlist_inbox_conversations_raw` | Conversations with independent user inbox scope | [`GET /team`](https://developer.lemlist.com/api-reference/endpoints/team/get-team), [`GET /inbox`](https://developer.lemlist.com/api-reference/endpoints/inbox/get-many-inboxes) |
| Inbox messages (`inbox_messages`) | `lemlist_inbox_messages_raw` | Complete accessible per-contact message history without marking conversations read | [`GET /contacts`](https://developer.lemlist.com/api-reference/endpoints/contacts/get-many-contacts), [`GET /inbox/{contactId}`](https://developer.lemlist.com/api-reference/endpoints/inbox/get-contact-messages) |

[Integrating ClickHouse with Lemlist](/integrations/lemlist/) covers credentials, permissions, storage, and sync limitations.

### [Linear](/integrations/linear/)

Editable Linear ingestion with nine independent raw resource streams, overlapping update windows, and complete issue history.

| Property | Included behavior |
| --- | --- |
| Registry app | `linear` (v0.2.0) |
| Install command | `bunx chkit add linear` |
| Source directory | `src/integrations/linear` |
| Authentication | Personal API key |
| Environment variables | `LINEAR_API_KEY` |
| ClickHouse | `>=25.3.0` |
| Coverage | 9 synced resources, 0 derived views |
| Sync strategy | Timestamp windows, Full scans |

| Resource | Default ClickHouse table | Records synced | API reference |
| --- | --- | --- | --- |
| Issues (`issues`) | `linear_issues_raw` | Archived and active issue fields, relationship IDs, and fully paginated label names as strings. | [`POST /graphql`](https://linear.app/developers/graphql) |
| Comments (`comments`) | `linear_comments_raw` | Raw comments selected by their own update times, with nullable issue and other parent references. | [`POST /graphql`](https://linear.app/developers/graphql) |
| Projects (`projects`) | `linear_projects_raw` | Project metadata and provider relationship references selected by project update times. | [`POST /graphql`](https://linear.app/developers/graphql) |
| Project updates (`project_updates`) | `linear_project_updates_raw` | Authored progress and health updates with project and author references. | [`POST /graphql`](https://linear.app/developers/graphql) |
| Cycles (`cycles`) | `linear_cycles_raw` | Cycle dates, descriptions, and team references selected by cycle update times. | [`POST /graphql`](https://linear.app/developers/graphql) |
| Users (`users`) | `linear_users_raw` | Accessible user metadata, including disabled users, selected by user update times. | [`POST /graphql`](https://linear.app/developers/graphql) |
| Teams (`teams`) | `linear_teams_raw` | Accessible team metadata selected by team update times. | [`POST /graphql`](https://linear.app/developers/graphql) |
| Issue relations (`issue_relations`) | `linear_issue_relations_raw` | Complete accessible relation records with type and both directed issue references; no reliable root change filter exists. | [`POST /graphql`](https://linear.app/developers/graphql) |
| Issue history (`issue_history`) | `linear_issue_history_raw` | Complete accessible history for independently discovered issues; the parent history connection has no timestamp filter. | [`POST /graphql`](https://linear.app/developers/graphql) |

[Integrating ClickHouse with Linear](/integrations/linear/) covers credentials, permissions, storage, and sync limitations.

### [Slack](/integrations/slack/)

Editable raw Slack readers with resumable message ranges, retained thread work, and historical reconciliation.

| Property | Included behavior |
| --- | --- |
| Registry app | `slack` (v0.2.0) |
| Install command | `bunx chkit add slack` |
| Source directory | `src/integrations/slack` |
| Authentication | Slack OAuth bearer token (user token recommended) |
| Environment variables | `SLACK_API_TOKEN` |
| ClickHouse | `>=25.3.0` |
| Coverage | 3 synced resources, 0 derived views |
| Sync strategy | Full scans, Cursor checkpoints |

| Resource | Default ClickHouse table | Records synced | API reference |
| --- | --- | --- | --- |
| Conversations (`channels`) | `slack_channels_raw` | Selected accessible conversations, including archived channels, with complete returned topics, purpose, membership flags, and shared-channel metadata. Public channels by default; private channels, DMs, and group DMs are opt-in. | [`GET /conversations.list`](https://docs.slack.dev/reference/methods/conversations.list/) |
| Users (`users`) | `slack_users_raw` | Complete returned workspace member and bot profiles, IDs, names, status, timezone, and deactivation flags. Email requires the optional users:read.email scope. | [`GET /users.list`](https://docs.slack.dev/reference/methods/users.list/) |
| Messages and thread replies (`messages`) | `slack_messages_raw` | Raw messages and replies selected by checkpointed timestamp windows, with retained thread work and periodic full historical reconciliation. Slack timestamps remain exact strings. | [`GET /conversations.history`](https://docs.slack.dev/reference/methods/conversations.history/), [`GET /conversations.replies`](https://docs.slack.dev/reference/methods/conversations.replies/) |

[Integrating ClickHouse with Slack](/integrations/slack/) covers credentials, permissions, storage, and sync limitations.

## Find and install an app

Browse the official GitHub registry from the CLI without a ClickHouse connection. This site renders the provider manifests during its build:

```sh
bunx chkit registry list
bunx chkit registry inspect attio
bunx chkit add attio --dry-run
bunx chkit add attio --with-tests
```

`registry list --json` exposes resource coverage and documentation links for scripts and agents. `registry inspect` includes API endpoints and scopes, destination tables, derived views, credential setup instructions, sync limitations, dependencies, and the files to install. `--with-tests` copies the app's portable fixture tests alongside its source.

Installation adds source files, registers schemas and ingestion, and installs dependencies. Configure the app credentials and ClickHouse connection, then follow the integration guide to generate and review migrations before the first sync. Schedule recurring runs through cron, CI, or an existing scheduler.

## What each integration guide covers

- **Setup:** requirements, where to create source-system credentials, authentication scopes, installation, schema migrations, and the first run.
- **Records:** every included resource, its destination table, stored fields, and query views.
- **Sync behavior:** discovery, pagination, retries, repeat runs, and failed runs.
- **Coverage limits:** unsupported resources, deletion behavior, and permissions.
- **Customization:** select resources, change projections, and operate the copied source.

## Add another app

Build readers for an API using the [source authoring guide](/api-sync/readers/), then [publish a registry item](/api-sync/registry-authoring/). Each app in the official catalog ships with its own integration guide; the catalog, CLI, and search metadata use the same registry manifest.

## Related pages

- [Provider templates](/api-sync/templates/): installation, source ownership, and updates.
- [`chkit registry`](/cli/registry/): list, inspect, and build commands.
- [`chkit add`](/cli/add/): installation flags and conflict handling.
- [API sync](/api-sync/): build and operate custom sources.
