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

# Integrations & secrets

> How Zite apps talk to third-party services, and where their credentials live.

Beyond its own database, a Zite app can call third-party services: Slack, OpenAI, Stripe, Google
Workspace, HubSpot, and more. Integrations run in your backend [workflows](/concepts/workflows),
never in the browser, so credentials stay secret.

## How integrations work

Everything your app can call falls into one of three buckets:

| What | How you call it | Import | Credential |
| - | - | - | - |
| The workspace database | Typed client, permissions applied on every call | `zitejs/db` | None, it's the workspace itself |
| Airtable | Managed, generated client | `zitejs/integrations` | Managed for you |
| Every other service | The real npm library, called directly | `@slack/web-api`, `openai`, `stripe`, … | `process.env.ZITE_<SERVICE>_ACCESS_TOKEN` |

<Note>
  The database is not an "integration" you configure. It's the workspace itself, reached through the runtime.
</Note>

## Supported services

Zite supports 24 connectable third-party services:

| Category | Services |
| - | - |
| AI | OpenAI, Anthropic, Gemini |
| Messaging | Slack, Microsoft Teams, Twilio, Intercom |
| Email & marketing | Gmail, Outlook, Mailchimp |
| Docs & spreadsheets | Google Sheets, Google Docs, Google Calendar, Airtable |
| Files & storage | Google Drive, OneDrive |
| CRM & payments | HubSpot, Salesforce, Stripe |
| Project tracking | Linear, Notion, Trello |
| Maps & analytics | Google Maps, Google Analytics |

## Secrets

Secrets are **never written in code**. They're provided to your workflows as environment variables:

* Connected integrations expose a token like `ZITE_SLACK_ACCESS_TOKEN` or `ZITE_OPENAI_ACCESS_TOKEN`.
* Your own secrets, added in the editor, are prefixed `ZITE_` and read as `process.env.ZITE_<KEY>`.

```typescript theme={"system"}
import { WebClient } from '@slack/web-api';

const slack = new WebClient(process.env.ZITE_SLACK_ACCESS_TOKEN);
```

Connecting an integration requires an OAuth sign-in, which can't be done by an agent headlessly. The agent
hands you a link (`setup_integration`) to connect the service in Zite; once connected, the token is
available to your workflows.

## Environments

The `ZITE_ENV` variable selects the environment your workflows run against:

| `ZITE_ENV` | Runtime |
| - | - |
| `production` (default) | `https://workflows.zite.com` |
| `staging` | `https://workflows.zitestaging.com` |
| `local` | `http://localhost:2506` |

`process.env.ZITE_APP_URL` is always set to your app's public URL. Use it for building links instead of
hardcoding a domain.

For result-set caps, execution timeouts, and payload sizes, see [Platform limits](/limits).


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.