Back to Infisical

Netlify Sync

docs/integrations/secret-syncs/netlify.mdx

0.161.47.2 KB
Original Source

Prerequisites:

<Tabs> <Tab title="Infisical UI"> <Steps> <Step title="Add Sync"> Navigate to **Project** > **Integrations** and select the **Secret Syncs** tab. Click on the **Add Sync** button.
    ![Secret Syncs Tab](/images/secret-syncs/general/secret-sync-tab.png)
  </Step>
  <Step title="Select 'Netlify'">
    ![Select Netlify](/images/secret-syncs/netlify/select-option.png)
  </Step>
  <Step title="Configure source">
    Configure the **Source** from where secrets should be retrieved, then click **Next**.

    ![Configure Source](/images/secret-syncs/netlify/sync-source.png)

    - **Environment**: The project environment to retrieve secrets from.
    - **Secret Path**: The folder path to retrieve secrets from.

    <Tip>
      If you need to sync secrets from multiple folder locations, check out [secret imports](/documentation/platform/secret-reference#secret-imports).
    </Tip>
  </Step>
  <Step title="Configure destination">
    Configure the **Destination** to where secrets should be deployed, then click **Next**.

    ![Configure Destination](/images/secret-syncs/netlify/sync-destination.png)

    - **Netlify Connection**: The Netlify Connection to authenticate with.
    - **Account**: The Netlify Account to be used.
    - **Site**: The Netlify site where secrets should be synced.
    - **Context**: The Netlify deployment context where secrets should be created in.
    <Info>
      If you have multiple syncs configured to the same site and context, they may conflict with each other and delete each other's secrets during sync operations. This can also happen if one of the syncs has "All Contexts" selected, since it overlaps with every other context. When setting up multiple syncs, make sure they target different contexts to prevent this.
    </Info>
  </Step>
  <Step title="Configure Sync Options">
    Configure the **Sync Options** to specify how secrets should be synced, then click **Next**.

    ![Configure Options](/images/secret-syncs/netlify/sync-options.png)

    - **Initial Sync Behavior**: Determines how Infisical should resolve the initial sync.
        - **Overwrite Destination Secrets**: Removes any secrets at the destination endpoint not present in Infisical.
        - **Import Secrets (Prioritize Infisical)**: Imports secrets from the destination endpoint before syncing, prioritizing values from Infisical over Netlify when keys conflict.
        - **Import Secrets (Prioritize Netlify)**: Imports secrets from the destination endpoint before syncing, prioritizing values from Netlify over Infisical when keys conflict.
    <Note>
      Netlify only supports importing non-secret values.
    </Note>
    - **Key Schema**: Template that determines how secret names are transformed when syncing, using `{{secretKey}}` as a placeholder for the original secret name and `{{environment}}` for the environment.
    <Note>
      We highly recommend using a Key Schema to ensure that Infisical only manages the specific keys you intend, keeping everything else untouched.
    </Note>
    - **Auto-Sync Enabled**: If enabled, secrets will automatically be synced from the source location when changes occur. Disable to enforce manual syncing only.
    - **Disable Secret Deletion**: If enabled, Infisical will not remove secrets from the sync destination. Enable this option if you intend to manage some secrets manually outside of Infisical.
  </Step>
  <Step title="Configure details">
    Configure the **Details** of your Netlify Sync, then click **Next**.

    ![Configure Details](/images/secret-syncs/netlify/sync-details.png)

    - **Name**: The name of your sync. Must be slug-friendly.
    - **Description**: An optional description for your sync.
  </Step>
  <Step title="Review configuration">
    Review your Netlify Sync configuration, then click **Create Sync**.

    ![Review Configuration](/images/secret-syncs/netlify/sync-review.png)
  </Step>
  <Step title="Sync created">
    If enabled, your Netlify Sync will begin syncing your secrets to the destination endpoint.

    ![Sync Created](/images/secret-syncs/netlify/sync-created.png)
  </Step>
</Steps>
</Tab> <Tab title="API"> To create a **Netlify Sync**, make an API request to the [Create Netlify Sync](/api-reference/endpoints/secret-syncs/netlify/create) API endpoint.
### Sample request

```bash Request
curl    --request POST \
        --url https://app.infisical.com/api/v1/secret-syncs/netlify \
        --header 'Content-Type: application/json' \
        --data '{
            "name": "my-netlify-sync",
            "projectId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
            "description": "sync to netlify site",
            "connectionId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
            "environment": "production",
            "secretPath": "/site-secrets",
            "isEnabled": true,
            "syncOptions": {
                "initialSyncBehavior": "overwrite-destination",
                "autoSyncEnabled": true,
                "disableSecretDeletion": false
            },
            "destinationConfig": {
                "siteId": "site-abc123",
                "accountId": "account-abc123",
                "context": "dev"
            }
        }'
```

### Sample response

```bash Response
{
    "secretSync": {
        "id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
        "name": "my-netlify-sync",
        "description": "sync to netlify site",
        "isEnabled": true,
        "version": 1,
        "folderId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
        "connectionId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
        "createdAt": "2025-07-19T12:00:00Z",
        "updatedAt": "2025-07-19T12:00:00Z",
        "syncStatus": "succeeded",
        "lastSyncJobId": "job-1234",
        "lastSyncMessage": null,
        "lastSyncedAt": "2025-07-19T12:00:00Z",
        "syncOptions": {
            "initialSyncBehavior": "overwrite-destination",
            "autoSyncEnabled": true,
            "disableSecretDeletion": false
        },
        "projectId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
        "connection": {
            "app": "netlify",
            "name": "my-netlify-connection",
            "id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
        },
        "environment": {
            "slug": "production",
            "name": "Production",
            "id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
        },
        "folder": {
            "id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
            "path": "/site-secrets"
        },
        "destination": "netlify",
        "destinationConfig": {
            "siteId": "site-abc123",
            "accountId": "account-abc123",
            "context": "dev"
        }
    }
}
```
</Tab> </Tabs>