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

# Bolt

> Sync job data straight into the database behind your Bolt Cloud app.

Bolt Cloud databases are Supabase-backed PostgreSQL, so Jobo writes to them over
the standard Postgres wire protocol — the same canonical table, upsert semantics,
and sync behavior as the [PostgreSQL](/docs/data-platform/outbound-feed/postgresql)
destination.

<Warning>
  Bolt does not expose a connection string for a database it still manages for
  you. Before you can connect this destination, you need to either **claim your
  database in Supabase** or point Bolt at a Supabase project you already own.
  Both are one-time steps — see below.
</Warning>

## Get your connection details

<Steps>
  <Step title="Open Advanced database settings in Bolt">
    In your Bolt project, go to **Database → Advanced**.
  </Step>

  <Step title="Claim the database in Supabase">
    Choose **claim your database in Supabase**. This hands the underlying
    Postgres instance to a Supabase project you control, which is what gives you
    external connection credentials, a SQL editor, and monitoring.

    If you would rather use a Supabase project you already have, use **connect an
    external Supabase project** instead. Bolt warns that this replaces the
    current connection and may cause data loss, so do it before your app holds
    data you care about.
  </Step>

  <Step title="Copy the pooler credentials">
    In the Supabase dashboard, open **Connect → Session pooler** and copy the
    host, port, database, and username. The password is the database password
    from **Project Settings → Database**.

    Prefer the pooler host over the direct `db.<ref>.supabase.co` host — the
    direct host is IPv6-only.
  </Step>
</Steps>

## Connection Configuration

| Field                 | Type    | Required | Description                                                                    |
| --------------------- | ------- | -------- | ------------------------------------------------------------------------------ |
| `host`                | string  | ✅        | Session pooler host, e.g. `aws-0-eu-central-1.pooler.supabase.com`             |
| `port`                | number  | ✅        | `5432` for the session pooler (recommended), `6543` for the transaction pooler |
| `database`            | string  | ✅        | Database name (default: `postgres`)                                            |
| `schema`              | string  | —        | Target schema, must already exist (default: `public`)                          |
| `table`               | string  | —        | Target table, created automatically (default: `jobs`)                          |
| `username`            | string  | ✅        | `postgres.<project-ref>` when connecting through the pooler                    |
| `password`            | string  | ✅        | Database password from Project Settings → Database                             |
| `ssl_mode`            | enum    | —        | `require` (default), `verify-ca`, `verify-full`                                |
| `delete_expired_jobs` | boolean | —        | Delete expired jobs (default: `true`). When `false`, they keep an `expired_at` |

## Example Configuration

```json theme={null}
{
  "host": "aws-0-eu-central-1.pooler.supabase.com",
  "port": 5432,
  "database": "postgres",
  "schema": "public",
  "table": "jobs",
  "username": "postgres.your-project-ref",
  "password": "••••••••",
  "ssl_mode": "require",
  "delete_expired_jobs": true
}
```

<Tip>
  The target table is created automatically on first sync if it doesn't exist,
  and Jobo upserts on job ID — so re-running a push updates rows in place instead
  of duplicating them. Point the destination at a dedicated table rather than one
  your Bolt app writes to itself, since **Force resync** drops and recreates it.
</Tip>

## Reading the data from your Bolt app

Once the first push completes, the table is a normal Postgres table in your
project. Query it from your Bolt app exactly like any other table — through the
Supabase client, or over the REST API Supabase generates for it.

Your credentials are encrypted at rest with AES-256. See
[Security](/docs/data-platform/outbound-feed/security) for details, and
[Sync behavior](/docs/data-platform/outbound-feed/sync-behavior) for how incremental
pushes, full resyncs, and expiry are handled.
