# Custom Sync

> Part of the NocoDB documentation (Product docs > Sync > App Sync). Index of all pages: https://nocodb.com/llms.txt. Any docs page is available as Markdown by adding `.md` to its URL.

URL: https://nocodb.com/docs/product/sync/app-sync/custom
Last updated: 2026-10-03

Mirror tables from PostgreSQL, MySQL, or SQL Server databases into NocoDB as read-only synced tables.

**Custom Sync** is the App Sync category for databases. It mirrors tables from an external **PostgreSQL**, **MySQL**, or **Microsoft SQL Server** database into your base. The synced tables stay up to date with their source. Business teams get a friendly interface over operational data, without migrations or export scripts.

Other App Sync categories map sources onto predefined schemas. Custom Sync works with **your** schema. You select the tables, and you control how each column maps to a NocoDB field type.

## How It Works

Custom Sync is strictly one-way: from the database into NocoDB. Synced tables are read-only mirrors, so the source database stays the single source of truth. Custom Sync refreshes data with the standard App Sync system:

* [Incremental or Full](/docs/product/sync/app-sync#sync-types) runs
* Runs that start [manually or on a schedule](/docs/product/sync/app-sync#sync-trigger)
* Configurable [source-delete handling](/docs/product/sync/app-sync#source-record-delete-handling)

Custom Sync lists only regular tables for syncing. It does not list database views. Each Custom Sync connects to one source, but a base can contain as many Custom Syncs as you need.

## Create a Custom Sync

1. On the base overview page, open the **Manage** → **Sync** tab.

2. Click **+ New Sync**.

3. In the **Setup** step, type a name for the sync.

4. Configure the [Sync type](/docs/product/sync/app-sync#sync-types), [Sync trigger](/docs/product/sync/app-sync#sync-trigger), and [On delete](/docs/product/sync/app-sync#source-record-delete-handling) behavior.

5. Select the **Custom** category.

   <img alt="New Sync setup step with the Custom category selected" src={__img0} placeholder="blur" />

6. In the **Sources** step, select your database engine: **PostgreSQL**, **MySQL**, or **Microsoft SQL Server**.

   <img alt="Custom Sync source selection" src={__img1} placeholder="blur" />

7. Select an existing database connection, or create a new one (host, port, username, password, database).

8. Select the **Schema** (PostgreSQL, SQL Server) or **Database** (MySQL).

9. Select the **Tables** to sync.

   For PostgreSQL and MySQL, the **SSL mode** can be **No SSL**, **Preferred**, **Allowed**, **Required**, or **Required (verify with CA)**. **Preferred** and **Allowed** encrypt the connection, but they do not verify the server certificate. Use them for servers with a self-signed certificate.

   <img alt="Custom Sync source configuration with schema and table selection" src={__img2} placeholder="blur" />

10. In the **Schema** step, adjust the column mapping for each selected table:

    * Include or exclude columns.
    * Review the original type of each column.
    * Select one of the compatible NocoDB **Target types**.
    * Confirm the **Unique ID** and the **Created at** and **Updated at** columns.

    NocoDB detects sensible defaults automatically, including the primary key of the table.

    <img alt="Map table columns step showing per-column type mapping" src={__img3} placeholder="blur" />

11. **Review** the configuration.

12. Click **Create**. A log window shows the progress of the initial sync. When the sync completes, the synced tables appear in your base.

    <img alt="Custom Sync review step" src={__img4} placeholder="blur" />

    <img alt="Initial sync progress log" src={__img5} placeholder="blur" />

<Callout type="note">
  The 

  **Schema**

   step is unique to the Custom category; other App Sync categories use predefined schemas and skip it.
</Callout>

## Working with Synced Tables

Synced fields are read-only and have a flash icon (⚡). The sync owns them, and they update only from the source database.

<img alt="Synced table with read-only synced fields" src={__img6} placeholder="blur" />

In all other ways, synced tables work like regular NocoDB tables. You can:

* Add your own custom fields next to the synced fields.
* Build views with filters, sorts, and groups.
* Link them to other tables.
* Use them in dashboards and automations.

## Keeping Data in Sync

* **On demand**: in the **Manage** → **Sync** tab, click **Trigger Sync** next to the sync.
* **On a schedule**: select the Scheduled trigger with an **Hourly** or **Daily** interval.

With the **Incremental** sync type, each run gets only the records that changed since the last run. It uses the selected **Updated at** column to find them. **Full** imports everything again.

## Edit a Custom Sync

Open the sync from the **Manage** → **Sync** tab. You can rename it, change the trigger settings, or add and remove tables. NocoDB keeps the existing field mappings.

## Delete a Custom Sync

When you delete a sync, select what happens to the destination tables:

| Option                      | Result                                                                                                             |
| --------------------------- | ------------------------------------------------------------------------------------------------------------------ |
| **Convert to plain tables** | NocoDB keeps the synced data and unlocks the tables, so you can edit them. It removes only the sync configuration. |
| **Delete synced tables**    | NocoDB deletes the mirrored tables and the sync configuration.                                                     |

## Availability

* **Custom Sync** is available on the **Business plan and above**, on both **NocoDB Cloud** and licensed self-hosted deployments.

## Related

* [App Sync overview](/docs/product/sync/app-sync): sync types, triggers, and delete handling.
* [NocoDB Sync](/docs/product/sync/nocodb-sync): mirror a shared view from another NocoDB base.

---

## Related pages

- [Ticketing](https://nocodb.com/docs/product/sync/app-sync/ticketing.md): Ticketing Sync in NocoDB App Sync imports tickets, comments, users and teams from external ticketing platforms on an automatic schedule.
- [HRIS](https://nocodb.com/docs/product/sync/app-sync/hris.md): Bring employee data from your HR system into NocoDB with automatic syncs.
- [CRM](https://nocodb.com/docs/product/sync/app-sync/crm.md): Bring customer and contact data from your CRM into NocoDB with automatic syncs.
- [File Storage](https://nocodb.com/docs/product/sync/app-sync/file-storage.md): Bring file and folder metadata from cloud storage platforms into NocoDB with automatic syncs.
- [Calendar](https://nocodb.com/docs/product/sync/app-sync/calendar.md): Bring your calendar events into NocoDB with automatic syncs from Google Calendar, Outlook Calendar, and CalDAV.
