# What is Stacksync?

The only integration cloud built for real-time

## Glad to see you here! 👋

[Stacksync](https://www.stacksync.com) is a no-code tool that makes it easy to sync data between your enterprise systems and databases using real-time, two-way sync.

{% embed url="<https://www.youtube.com/watch?v=lG7O_FYsM5w>" %}
Stacksync demo in 2 minutes!
{% endembed %}

CRM integrations are complex, costly, and hard to maintain. Stacksync reduces implementation delays from months to minutes, cuts costs by 10x, and removes complexity from enterprise system integrations and CRM feature development.

Stacksync is a real-time, bidirectional data sync tool for CRMs (e.g., Salesforce, HubSpot, or SAP) and databases (e.g., PostgreSQL or Google BigQuery). Edits made in your CRM instantly update your database, and vice versa.

To set up a sync, you connect the two apps in one click and select the tables to sync. That’s it!

Get started with the resources below.

<table data-card-size="large" data-view="cards"><thead><tr><th></th><th data-hidden data-card-cover data-type="image">Cover image</th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td>Two-Way Sync</td><td><a href="/files/MnjJJ18hGR6l8D07BAVM">/files/MnjJJ18hGR6l8D07BAVM</a></td><td><a href="https://docs.stacksync.com/two-way-sync/quick-start">https://docs.stacksync.com/two-way-sync/quick-start</a></td></tr><tr><td>Workflow Automation</td><td><a href="/files/0bFKj7ZGfIRiBa3jLoze">/files/0bFKj7ZGfIRiBa3jLoze</a></td><td><a href="https://docs.stacksync.com/workflow-automation">https://docs.stacksync.com/workflow-automation</a></td></tr><tr><td>Security and Other Resources</td><td><a href="/files/eMRKM4mG8OCYGlK9QQrt">/files/eMRKM4mG8OCYGlK9QQrt</a></td><td><a href="https://docs.stacksync.com/security-and-other-resources">https://docs.stacksync.com/security-and-other-resources</a></td></tr><tr><td>API Proxy</td><td><a href="/files/Q7krHyNAAcXpJX8ZLtGZ">/files/Q7krHyNAAcXpJX8ZLtGZ</a></td><td><a href="https://docs.stacksync.com/api-proxy">https://docs.stacksync.com/api-proxy</a></td></tr></tbody></table>

<figure><img src="/files/rB74TuB8DldohIL8Kzf7" alt=""><figcaption></figcaption></figure>

### With Stacksync, you can:

* Maintain a single source of truth across your CRM and databases with minimal effort
* Simplify integrations between your CRM and backend
* Push insights from your data warehouse (e.g., Google BigQuery or Snowflake) to your CRM in real time
* Use Stacksync for real-time updates like:
  * Lead scoring in your CRM
  * Website visit counts over the last few hours or days directly in your CRM
  * Google Analytics insights on your Salesforce contacts
* Improve campaign management in your CRM as campaigns roll out
* Make your Sales and Marketing teams happy by delivering the CRM features they need in hours, not years. 🎉

Stacksync is a pioneer of the composable CDP movement. We make your backend and data warehouse the source of truth. You can work with data in any system without worrying about consistency issues. We’ve got you covered. 💪🏼

👉 If you’re ready to step up data adoption in your organization, as many of our customers already have (from startups to multinationals), [let's get started](/start-here/quick-start)!


# Quick Start

Set up your sync in less than 5 minutes

Stacksync syncs data across your tools. When you update data anywhere, it updates everywhere.

You can create your first sync in under 5 minutes. Here’s how:

### Step 1: Create a new sync

From your dashboard, click "Create a new sync".

<figure><img src="/files/rx65rEFD3CfwRJdSaOPR" alt=""><figcaption><p>Click "Create a new sync"</p></figcaption></figure>

### Step 2: Connect your apps

Click each app you want to sync. Connect them in one click.

<figure><img src="/files/29ktKT4HeEs3BrvBfwC4" alt=""><figcaption><p>Connect your app in one click</p></figcaption></figure>

### Step 3: Map tables

<figure><img src="/files/uJcFMKiGPEjDuPBo5sPH" alt=""><figcaption><p>Map tables between your apps</p></figcaption></figure>

If both apps contain tables that should sync together, select them side by side.

If you don’t yet have a matching table in the other app, Stacksync can create a pixel-perfect schema for you. ✨

In most cases, you’ll let Stacksync create new tables for you. You can also create them yourself.

You can also choose the sync direction: **one-way or two-way sync**. 😍

### Step 4: Map fields

For every table you want to sync, you will map fields (i.e., columns) together.

Stacksync uses AI auto-mapping, which finds the best matching pairs for you so you don’t have to do all the work manually. You can modify the proposed mapping as you like, with maximum flexibility.

<figure><img src="/files/w3MS4yMuVxmpcAMIF9cG" alt=""><figcaption><p>Map fields in Stacksync UI</p></figcaption></figure>

{% hint style="info" %}
Field *names* do not have to match.

Field *types* must be compatible. They don’t need to match exactly. They just need to be semantically compatible.
{% endhint %}

### Step 5: Turn sync on!

<figure><img src="/files/IS0aywqCQ3HnCaqbhDop" alt=""><figcaption><p>Turn sync on and data starts syncing between your apps!</p></figcaption></figure>

That’s it! 🎉 Data will start syncing between your tools.

With real-time, two-way sync, you can edit data in any synced app. It updates everywhere.

{% hint style="info" %}
After turning the sync on, check the **issues dashboard** for sync errors from your connected apps. Open it from the left menu in Stacksync.
{% endhint %}

### 👉 Keep reading!

{% content-ref url="/spaces/04Dw47ioVxOWo43qmOru/pages/ficAG9Cp0VmcGdEC6aMj" %}
[Community](/start-here/community)
{% endcontent-ref %}


# Community

Be part of our community of data syncers 💪🏼

We're glad you're here!

## Slack community 🎉

Our [Slack community](https://join.slack.com/t/stacksync-community/shared_invite/zt-1tx5lljv4-xNErkvjR9K4MXwUOSI7ItQ) is full of folks ready to help you and share what they’re building with Stacksync.

[Join our community now with this invite link.](https://join.slack.com/t/stacksync-community/shared_invite/zt-1tx5lljv4-xNErkvjR9K4MXwUOSI7ItQ)

<figure><img src="/files/yHdgy5bl1Rf1M83UhRVs" alt=""><figcaption></figcaption></figure>

Our founders host office hours, events, and more. You can also reach our support team, ready to jump in and help at any time. See you there!

### Book a demo or support session with an engineer

{% embed url="<https://cal.com/rubenburdin/stacksync-demo>" %}

## Contact us

For any other chit-chat, send us a note at <hello@stacksync.com>.

If you're trying to reach us in other ways, here's all our [contact info](https://www.stacksync.com/contact).

{% hint style="info" %}
For critical issues, use [<mark style="color:$danger;">critical@stacksync.com</mark>](mailto:critical@stacksync.com).
{% endhint %}


# Security

Security features for Stacksync workspaces. MFA, SSO, SCIM, and SAML.

Read more:

{% content-ref url="/spaces/04Dw47ioVxOWo43qmOru/pages/pSRkUwBIXsyKhhosyYol" %}
[SSO](/authentication/security/sso)
{% endcontent-ref %}

{% content-ref url="/spaces/04Dw47ioVxOWo43qmOru/pages/Ear5Bnc4R59HtpWGclIp" %}
[SCIM](/authentication/security/scim)
{% endcontent-ref %}

{% content-ref url="/spaces/04Dw47ioVxOWo43qmOru/pages/yj0TA1UxukQCBmdDV9Mu" %}
[MFA](/authentication/security/mfa)
{% endcontent-ref %}


# SSO

Manage all your user logins with your SSO (Single Sign On).

[Contact us](https://www.stacksync.com/contact) to activate SSO for your workspace. This feature is part of our Enterprise plan.

Currently, Stacksync supports Okta and Azure Entra ID. We can add support for other identity providers on short notice.


# Azure Entra ID

This guide will walk you through setting up automatic user provisioning between Azure Entra ID (formerly Azure Active Directory) and Stacksync.

### Overview

By the end of this guide, you will have:

* ✅ SAML-based Single Sign-On configured
* ✅ Automatic user provisioning via SCIM
* ✅ Role-based access control
* ✅ Users automatically created/updated/deactivated in Stacksync

**Estimated time:** 30–45 minutes

***

### Prerequisites

Before you begin, ensure you have:

* [ ] **Azure Entra ID admin access** with at least **Cloud Application Administrator** role
* [ ] **Stacksync owner account**
* [ ] Your company's **email domain** (e.g., `acme.com`)
* [ ] List of users who should have access

***

### Part 1: Create Enterprise Application in Azure

#### Step 1.1: Navigate to Enterprise Applications

1. Sign in to the **Azure Portal**: <https://portal.azure.com>
2. In the search bar at the top, type **"Microsoft Entra ID"** and select it
3. In the left sidebar, click **Enterprise applications**

<figure><img src="/files/vBUL8uLQ2Xlx6iXaQwEY" alt=""><figcaption></figcaption></figure>

#### Step 1.2: Create New Application

1. Click **+ New application** (top left)
2. Click **+ Create your own application**
3. Enter the application name: **stacksync-example**
4. Select: **"Integrate any other application you don't find in the gallery (non-gallery)"**
5. Click **Create**

<figure><img src="/files/4wvv9wuZ2rguOVbcrBgo" alt=""><figcaption></figcaption></figure>

Wait a few seconds for Azure to create the application.

***

### Part 2: Configure SAML Single Sign-On

#### Step 2.1: Start SAML Setup

1. In your **stacksync-example** enterprise application, click **Single sign-on** in the left sidebar
2. Click the **SAML** tile

<figure><img src="/files/i2JHxPLMBe1fY7wR2Eib" alt=""><figcaption></figcaption></figure>

#### Step 2.2: Download Azure Metadata

**Before** configuring anything, download your Azure metadata file:

1. Scroll down to section **"3. SAML Certificates"**
2. Under **"Token signing certificate"**, click **Edit** (pencil icon on the right)
3. Click the **three dots menu (...)** next to the Active certificate
4. Select **"Download federated certificate XML"** from the dropdown menu
5. Save the file (e.g., `AzureMetadata.xml`)

<figure><img src="/files/YEFCk9RjibcrsbaZfVX5" alt=""><figcaption></figcaption></figure>

#### Step 2.3: Configure SSO in your workspace

The SSO configuration should only be done once per company domain. All domains will be connected under the same SSO configuration.

1. Navigate to your workspace settings
2. Choose Azure AD (Entra ID) as your identity provider
3. Upload the federated certificate XML file you downloaded from Azure in the step above
4. You can choose **Restrict login to SSO only for this domain**. This ensures users with this domain can only log in via the SSO flow.
5. Click **Continue**.

<figure><img src="/files/WjPYrlerU5znQ9a81MEk" alt=""><figcaption></figcaption></figure>

6. You should now see a page with all the necessary info to continue the setup in Azure.

<figure><img src="/files/CAqszzqCx4lSc7Y5tscF" alt=""><figcaption></figcaption></figure>

***

#### Step 2.4: Configure Basic SAML Settings

Once you have completed the SSO configuration in your workspace, you can continue with the setup in Azure:

1. Go back to your Azure SAML setup page
2. Click **Edit** on section **"1. Basic SAML Configuration"**
3. Fill in the values **provided by Stacksync support**:

**Identifier (Entity ID):**

```
urn:auth0:stacksync:companydomain-com-sso-azure-ad
```

*(Use the exact value from the above step)*

**Reply URL (Assertion Consumer Service URL):**

```
https://auth.stacksync.com/login/callback?connection=companydomain-com-sso-azure-ad
```

*(Use the exact value from the above step)*

**Sign on URL (optional):**

```
https://stacksync.com/login
```

4. Click **Save**
5. Close the panel by clicking **X**

<figure><img src="/files/Qgy1FkFTw0h8x2JKOBGh" alt=""><figcaption></figcaption></figure>

#### Step 2.5: Configure the email claim

This is needed because some emails could have uppercase letters, which can cause the SSO login to fail.

1. Edit the Attributes & Claims section

<figure><img src="/files/eAfxNcKbiKfBMXflD7nl" alt=""><figcaption></figcaption></figure>

2. Click on the user.mail claim to start editing it

<figure><img src="/files/kaaCiihM9ynN1q8rAOYP" alt=""><figcaption></figcaption></figure>

3. Change the source to **Transformation** (this opens a side panel).
4. In the **Transformation** dropdown, choose `ToLowercase()`.
5. In the **Attribute name** dropdown, choose `user.mail`.
6. Click **Add**, then click **Save** on the main page.

<figure><img src="/files/YdAxlSWOoPXz6M3zh2jK" alt=""><figcaption></figcaption></figure>

***

### Part 3: Set Up Automatic User Provisioning (SCIM)

#### Step 3.1: Generate an API token for your workspace

1. In your Stacksync workspace settings, scroll down to "Stacksync Workspace API Key"
2. Create an API key for SCIM use.

<figure><img src="/files/Phjadzje89hSDK5m0PN0" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/PDOIJsQygT6zl1paN8Lj" alt=""><figcaption></figcaption></figure>

#### Step 3.2: Enable Automatic Provisioning

1. In your **Stacksync** enterprise application, click **Provisioning** in the left sidebar
2. Click **+ New configuration** (at the top).
3. On the "New provisioning configuration" page:
   * **Select authentication method:** Bearer authentication (default)
   * **Tenant URL:** Paste the URL provided by Stacksync support.

```
https://api.stacksync.com/v1/workspaces/[your-workspace-id]/scim/v2
```

* **Secret Token:** Paste the token that you generated in your workspace

4. Click **Test connection**
   * You should see: ✅ "Connection test for 'stacksync-example' was successful"
5. Click **Create** (bottom left)

<figure><img src="/files/gNVDmcwB3pdWm6nNYW5Z" alt=""><figcaption></figcaption></figure>

***

### Part 4: Create App Roles for Stacksync

App roles define which permission level users have in Stacksync (`viewer` or `editor`).

#### Step 4.1: Navigate to App Registrations

1. In the Azure Portal search bar, type: **"App registrations"**
2. Click **App registrations**
3. Click the **"View all applications in directory"** button
4. Find and click **stacksync-example**

<figure><img src="/files/FrSTm0z39xSXYeK437r9" alt=""><figcaption></figcaption></figure>

#### Step 4.2: Create "viewer" Role

1. In the left sidebar, click **App roles**
2. Click **+ Create app role**

Fill in:

* **Display name:** `viewer`
* **Allowed member types:** Users/Groups
* **Value:** `viewer`
* **Description:** `Viewer with read-only access`
* **Do you want to enable this app role?** ✅ Checked

3. Click **Apply**

<figure><img src="/files/sw2d4OrxLEAIDQCaqcDE" alt=""><figcaption></figcaption></figure>

#### Step 4.3: Create "editor" Role

1. Click **+ Create app role** again

Fill in:

* **Display name:** `editor`
* **Allowed member types:** Users/Groups
* **Value:** `editor`
* **Description:** `Editor with standard access`
* **Do you want to enable this app role?** ✅ Checked

2. Click **Apply**

***

### Part 5: Configure Attribute Mappings

#### Step 5.1: Access Attribute Mappings

1. Go back to **Enterprise applications** → **stacksync-example**
2. Click **Provisioning** in the left sidebar
3. Under **Attribute Mappings**, click **Provision Microsoft Entra ID Users**

<figure><img src="/files/39Pq7hDatKdPO3a17Mul" alt=""><figcaption></figcaption></figure>

#### Step 5.2: Add Roles Mapping

1. Scroll to the bottom and click **Add New Mapping**

Fill in:

* **Mapping type:** Expression
* **Expression:**

```
  SingleAppRoleAssignment([appRoleAssignments])
```

* **Target attribute:** `roles[primary eq "True"].value`
* **Default value if null:** `viewer`
* **Apply this mapping:** Always
* **Match objects using this attribute:** No

2. Click **OK**
3. Click **Save** at the top

<figure><img src="/files/o0TT8Uc3SummwkBpN1GS" alt=""><figcaption></figcaption></figure>

***

### Part 6: Start Provisioning

#### Step 6.1: Enable Provisioning

1. Go back to the main **Provisioning** page (Preview)
2. Click **Start provisioning**

<figure><img src="/files/9iVJdOWUFCoFo0nNdM7H" alt=""><figcaption></figcaption></figure>

Azure will now start provisioning users. The initial sync takes **5–10 minutes**.

***

### Part 7: Assign Roles to Users

#### Step 7.1: Assign a Role to a User

1. Go to **Users and groups** in the left sidebar
2. Click **+ Add user/group**
3. Under **Users**, click **None Selected**
4. Select a user
5. Click **Select**
6. Under **Select a role**, click **None Selected**
7. Choose either **viewer** or **editor**
8. Click **Select**
9. Click **Assign**

<figure><img src="/files/4ipHyz6weT5gaghJZjU8" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/MP0nWdDRjTFFfYhEwPn3" alt=""><figcaption></figcaption></figure>

**Repeat this for each user, assigning them the appropriate role.**

***

### Part 8: Test the Setup

#### Step 8.1: Test Provisioning

1. Go to **Provisioning** → **Provision on demand** (if available)
2. Select a test user (you'll need to search for the user)
3. Click **Provision**
4. Verify the user is successfully created in your Stacksync workspace

***

### Troubleshooting

#### Users Not Provisioning

**Check:**

* Provisioning Status is **On**
* Users are **assigned** to the Stacksync application
* Users have a **role assigned** (viewer or editor)
* User has an email address
* Wait 10–40 minutes for the initial sync

**View logs:**

* Go to **Provisioning** → **View provisioning logs**

#### Wrong Role Assigned

**Check:**

* Role is assigned correctly in **Users and groups**
* Roles attribute mapping includes default value `viewer`
* App roles display names are lowercase: `viewer`, `editor` (not `Viewer`, `Editor`)


# OKTA

SSO and SCIM for OKTA

{% hint style="info" %}
The Stacksync Okta app is currently under review by Okta. Until the app is published on the Okta Marketplace, here is a guide to synchronize your Okta users automatically into Stacksync by creating the SCIM app yourself.

This setup takes \~10 minutes.
{% endhint %}

{% hint style="info" %}
SSO is part of the Stacksync Enterprise plan. Contact us at <sso@stacksync.com> to set it up.
{% endhint %}

Notes:

* This setup must be implemented by an Okta **admin**.
* The SCIM integration is associated with a unique Stacksync workspace. If you have multiple workspaces (such as dev, staging, and prod), you will need to set up an SCIM app for each workspace. Each workspace has independent RBAC enforcement.

## SSO (SAML) setup instructions

1. On your Okta homepage, go to the admin section.

   <figure><img src="/files/xN9eLTzn0jloBFs5zJVW" alt=""><figcaption></figcaption></figure>
2. In the Applications section, create an app integration of type SAML 2.0.

   <figure><img src="/files/tih1P6Il02CXPO4JciyE" alt=""><figcaption></figcaption></figure>

   <figure><img src="/files/oyWJfx5Pqu3QsgCYbkoT" alt=""><figcaption></figcaption></figure>
3. Set the app name to `Stacksync`. You can also add the Stacksync app logo (download the file below).

{% file src="/files/IP3EG3RYbdRz1yEcUcco" %}

4. Configure your SAML settings with:
   1. Single sign-on URL: `https://auth.stacksync.com/login/callback?connection=<sso_id_provided_by_stacksync_team_for_you>`
   2. Audience URI: `urn:auth0:stacksync:<sso_id_provided_by_stacksync_team_for_you>`
   3. Application username: `Email`
   4. Update application username on `Create and update`
   5. Attribute Statements:
      1. name=`emails`
      2. name format=`Basic`
      3. value=`user.email`<br>

         <figure><img src="/files/JeIaiBPOLK2S5iEQmwjx" alt=""><figcaption></figcaption></figure>
   6. You can skip the `Feedback` section and click `Finish`
      1. Send the following details to `sso@stacksync.com`:

         1. `Identity Provider Single Sign-On URL` at the top of the SAML setup instructions page.<br>

            <figure><img src="/files/lVVvirKrkGnDJUMsCahn" alt=""><figcaption></figcaption></figure>

         <figure><img src="/files/9EX3ZNvlAebyS2rGXOLA" alt=""><figcaption></figcaption></figure>

         `2. SAML Signing Certificates` for `SHA2`

         <figure><img src="/files/Xt25tilKhjkpyXjiMGTK" alt=""><figcaption></figcaption></figure>

         1. Once we have received the above information, we will activate SSO and you’re all set!

## SCIM setup instructions

1. On the General page of the SAML app you just created, enable SCIM provisioning.<br>

   <figure><img src="/files/GakLQXACy0auZ3KKispn" alt=""><figcaption></figcaption></figure>
2. Go to the Stacksync Workspace Settings page at `https://app.stacksync.com` to find the information needed for the next steps.
   1. Find your Stacksync `workspace_id` on top of the page.

      <figure><img src="/files/vXT77YJc7Qrg1SHOyvvp" alt=""><figcaption></figcaption></figure>
   2. Generate a `workspace_api_key` at the bottom of the same page. **Only the owner** of the Stacksync workspace can create workspace API keys.

      <figure><img src="/files/qm9NhubWnZHosIa2dfoO" alt=""><figcaption></figcaption></figure>
3. Go back to your SAML app on the Provisioning page. Fill in the following parameters:
   1. **Base URL:** `https://api.stacksync.com/v1/workspaces/<your_stacksync_workspace_id>/scim/v2/`
   2. **API Token:** `Bearer <your_stacksync_workspace_api_key>`<br>

      <figure><img src="/files/QIdVHJCX7Gl7Z9Wnfd7c" alt=""><figcaption></figcaption></figure>
4. Allow your SCIM app to create, update, and deactivate users. Stacksync users never use passwords to connect to Stacksync. Therefore, the `Sync Password` feature should be disabled.<br>

   <figure><img src="/files/dRH1MkJNrSgGDV9YSNNK" alt=""><figcaption></figcaption></figure>
5. Go to the Profile Editor and add a new attribute `roles` to the app. This is a standard SCIM attribute with the following fields:
   1. Data type: `string array`
   2. Display name: `roles`
   3. Variable name: `roles`
   4. External name: `roles`
   5. External namespace: `urn:ietf:params:scim:schemas:core:2.0:User`
   6. Description: `SCIM role attribute for Stacksync app`
   7. Enum: `true`
   8. Attribute member: `viewer` and `editor`
   9. Attribute required: `true`
   10. Attribute type: `Group`
   11. Group Priority: Use `Group Priority`<br>

       <figure><img src="/files/lkW0kbyMcbadHuNOrhjn" alt=""><figcaption></figcaption></figure>
6. Go to Directory/Groups and create two groups: `Stacksync Editors` and `Stacksync Viewers`. Each group will be assigned a different role in Stacksync (`editor` and `viewer`).<br>

   <figure><img src="/files/4e9aH8G44hUg0nGQuqoj" alt=""><figcaption></figcaption></figure>
7. Assign the people you want to give access to Stacksync to the Stacksync groups you just created.<br>

   <figure><img src="/files/kKC42TJPDMQ06YXqCGkm" alt=""><figcaption></figcaption></figure>
8. Go back to your application and, under `Assignments`, assign these two groups to the application. Make sure you select the right role for each group. You can ignore the other fields. Stacksync does not read them.<br>

   <figure><img src="/files/D5Wm902nonqyKwj0k3C7" alt=""><figcaption></figcaption></figure>

That's it! 🎉


# OKTA Stacksync

SCIM setup instructions

This guide will walk you through setting up automatic user provisioning between Okta and Stacksync.

### Overview

By the end of this guide, you will have:

* ✅ SAML-based Single Sign-On configured
* ✅ Automatic user provisioning via SCIM
* ✅ Role-based access control
* ✅ Users automatically created/updated/deactivated in Stacksync

**Estimated time:** 30–45 minutes

### Prerequisites

Before you begin, ensure you have:

* Okta admin access
* Stacksync owner account
* Your company's email domain (e.g., `acme.com`)
* List of users who should have access

### Supported Features

The following SAML 2.0 features are supported:

| Feature                         | Supported |
| ------------------------------- | --------- |
| SP-initiated SSO                | Yes       |
| IdP-initiated SSO               | Yes       |
| Just-In-Time (JIT) Provisioning | Yes       |
| Single Logout (SLO)             | No        |

### SCIM Provisioning Features

The following SCIM 2.0 provisioning features are supported:

| Feature                | Supported |
| ---------------------- | --------- |
| Push New Users         | Yes       |
| Push Profile Updates   | Yes       |
| Push User Deactivation | Yes       |
| Reactivate Users       | Yes       |
| Push Groups            | No        |
| Import Users           | No        |
| Import Groups          | No        |
| Sync Password          | No        |

### SCIM Attributes

The following user attributes are supported for SCIM provisioning operations:

| Attribute  | Required | Immutable | Description                                       |
| ---------- | -------- | --------- | ------------------------------------------------- |
| userName   | Yes      | No        | User's unique identifier (typically email)        |
| email      | Yes      | Yes       | User's email address (cannot be changed via SCIM) |
| givenName  | No       | No        | User's first name                                 |
| familyName | No       | No        | User's last name                                  |
| roles      | Yes      | No        | User's role: `viewer` or `editor`                 |

> **Note:** The `email` attribute is immutable. Once a user is created, their email address cannot be updated through SCIM. To change a user's email, you must deactivate the existing user and create a new one with the updated email.

### Additional Features

| Feature              | Supported |
| -------------------- | --------- |
| Force Authentication | No        |
| Encrypted Assertions | No        |
| Signed Requests      | Yes       |

### Notes

* **SP-initiated SSO**: Users can initiate login from the Stacksync login page by entering their email address. They will be redirected to Okta for authentication.
* **IdP-initiated SSO**: Users can initiate login directly from their Okta dashboard by clicking the Stacksync app tile.
* **SCIM Provisioning**: Automatic user lifecycle management including creation, updates, and deactivation. Each workspace requires a separate SCIM app configuration.
* **Role-Based Access Control**: Users can be assigned `viewer` or `editor` roles through Okta group membership.

### Important Notes

* You will create **one** "Stacksync - SSO" app for your entire organization
* You will create **one** "Stacksync - SCIM" app **per workspace**
* If you have multiple workspaces (e.g., dev, staging, production), you must set up a separate SCIM app for each
* Each workspace has independent RBAC enforcement

### Part 1: Configure SAML Single Sign-On

The SSO configuration connects your Okta organization to Stacksync. You only need to complete this once for your entire organization.

#### Step 1.1: Add the Stacksync SSO App

1. Sign in to your Okta Admin Console
2. Navigate to **Applications** → **Applications**
3. Click **Browse App Catalog**
4. Search for and select **Stacksync - SSO**
5. Click **Add Integration**

#### Step 1.2: Configure Application Settings

1. In the application setup form, enter:
   * **Organization Domain:** Your company domain with dashes instead of dots (e.g., `acme-com` for `acme.com`)
2. Click **Done**

<figure><img src="/files/47poUiwSaq01sJbdSX2a" alt=""><figcaption></figcaption></figure>

#### Step 1.3: Retrieve SAML Configuration URLs

1. Navigate to the **General** tab
2. Scroll down to **App Embed Link**
3. Copy and save the embed link
4. Navigate to the **Sign On** tab
5. Copy and save the **Metadata URL**

<figure><img src="/files/wcS5Fqv6lxq48frk8oAr" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/DqVglSW04QrEDcrZUH3G" alt=""><figcaption></figcaption></figure>

#### Step 1.4: Configure SSO in Stacksync

> **Note:** The SSO configuration should only be done once per company domain. All workspaces will share the same SSO configuration.

1. Navigate to your Stacksync workspace settings
2. Select **Okta** as your identity provider
3. Upload the SAML metadata or enter the metadata URL from Step 1.3
4. (Optional) Enable **Restrict login to SSO only for this domain** to require SSO authentication for all users with your domain
5. Click **Continue**

<figure><img src="/files/QQpiaHxmuWSAuXABBsDk" alt=""><figcaption></figcaption></figure>

You should now see a confirmation page with all the necessary information to complete the setup.

### Part 2: Set Up Automatic User Provisioning (SCIM)

The SCIM configuration enables automatic user provisioning. You must complete this for each Stacksync workspace.

#### Step 2.1: Add the Stacksync SCIM App

1. In your Okta Admin Console, navigate to **Applications** → **Applications**
2. Click **Browse App Catalog**
3. Search for and select **Stacksync - SCIM**
4. Click **Add Integration**
5. Enter your **Workspace ID** when prompted
6. Click **Done**

<figure><img src="/files/90w6LXv8KUXhygcGQQgy" alt=""><figcaption></figcaption></figure>

#### Step 2.2: Generate a Workspace API Key

1. Navigate to your Stacksync workspace settings
2. Scroll down to **Stacksync Workspace API Key**
3. Click **Create API Key**
4. Save the generated API key securely

<figure><img src="/files/zc9NLhRL2luFrmGMVbzV" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/eTXzZCSy01wqZRSRHpuP" alt=""><figcaption></figcaption></figure>

#### Step 2.3: Enable API Integration

1. Return to your Okta Admin Console
2. Open the Stacksync SCIM application you created
3. Navigate to the **Provisioning** tab
4. Click **Configure API Integration**
5. Check **Enable API Integration**
6. Paste your API key from Step 2.2
7. Click **Test API Credentials**
8. Verify that you see a success message
9. Click **Save**

<figure><img src="/files/Mwt8fJZuLWOSWk0Nb4Gk" alt=""><figcaption></figcaption></figure>

#### Step 2.4: Configure Provisioning Settings

1. After saving, the page will display additional options
2. Click **Edit** in the **To App** section
3. Enable the following options:
   * Create Users
   * Update User Attributes
   * Deactivate Users
4. Disable **Set password when creating new users**
5. Click **Save**

<figure><img src="/files/oDy9xbXF5aKe82tpT2IB" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/En7g7mCvbXoqfCH3vBUt" alt=""><figcaption></figcaption></figure>

### Part 3: Configure Role Attribute Mappings

App roles define which permission level users have in Stacksync (viewer or editor).

#### Step 3.1: Access the Profile Editor

1. In the **Provisioning** tab, scroll down to **Attribute Mappings**
2. Click **Go to Profile Editor**

<figure><img src="/files/VA0xukw64GyvJUJtxspV" alt=""><figcaption></figcaption></figure>

#### Step 3.2: Add the Roles Attribute

1. Click **+ Add Attribute**
2. Fill in the following fields:
   * **Data type:** string array
   * **Display name:** roles
   * **Variable name:** roles
   * **External name:** roles
   * **External namespace:** `urn:ietf:params:scim:schemas:core:2.0:User`
   * **Description:** SCIM role attribute for Stacksync app
   * **Enum:** Enabled
   * **Attribute members:** `viewer`, `editor`
   * **Attribute required:** Yes
   * **Attribute type:** Group
   * **Group Priority:** Use Group Priority
3. Click **Save**

<figure><img src="/files/IggEAdg8Ax4PXuqXdqr3" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/zKCZMoBq138PqkjoZYt4" alt=""><figcaption></figcaption></figure>

#### Step 3.3: Configure Role Mapping Expression

1. Return to your SCIM application
2. Under **Attributes**, click **Mappings**
3. Switch to the **Okta User to Stacksync** tab
4. Find the **roles** attribute in the mapping list
5. Add the following expression:

   ```
   isMemberOfGroupName("Stacksync editors") ? {"editor"} : {"viewer"}
   ```
6. Click **Save**

<figure><img src="/files/Z4Q3HMdSoWeqxf9eASah" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/ECk8k7rz3v1B1tCf5iJk" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/upgzZFKVs1NsOWoRkjUY" alt=""><figcaption></figcaption></figure>

### Part 4: Create Groups and Assign Users

#### Step 4.1: Create Stacksync Groups

1. Navigate to **Directory** → **Groups**
2. Click **Add Group**
3. Create two groups:
   * **Stacksync Editors** — Users with editor permissions
   * **Stacksync Viewers** — Users with read-only permissions

<figure><img src="/files/0MmH30P6ipi7Iov9eGKU" alt=""><figcaption></figcaption></figure>

#### Step 4.2: Add Users to Groups

1. Open each group you created
2. Click **Assign People**
3. Select the users who should have that access level
4. Click **Save**

<figure><img src="/files/XCpJfXe1rz66aBVSEatV" alt=""><figcaption></figcaption></figure>

#### Step 4.3: Assign Groups to the Application

1. Return to your Stacksync SCIM application
2. Navigate to the **Assignments** tab
3. Click **Assign** → **Assign to Groups**
4. Select **Stacksync Editors**
5. In the assignment dialog, set the **roles** field to `editor` by clicking the override text and choosing the radio button `editor`
6. Click **Save and Go Back**
7. Repeat for **Stacksync Viewers**, setting the **roles** field to `viewer`
8. Click **Done**

<figure><img src="/files/oHYoBv8K3NsW06Dw7XFC" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/fDAKomGTvKYCS2Orj2af" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/gVu2qb5aY5X6SB2qjray" alt=""><figcaption></figcaption></figure>

That's it! 🎉

### Troubleshooting

#### Common Issues

**User not provisioned to Stacksync**

* Verify the API key is correct in the Provisioning settings
* Check that the user is assigned to the Stacksync SCIM application
* Ensure the user has a valid role assigned (viewer or editor)

**Role not updating**

* Verify the role mapping expression is correct
* Check that the user is in the correct Okta group (Stacksync Editors or Stacksync Viewers)
* Try removing and re-adding the user to the group

**SSO login fails**

* Verify the Metadata URL is correct in Stacksync settings
* Check that the user's email domain matches the configured SSO domain
* Ensure the user is assigned to the Stacksync SSO application

**API credentials test fails**

* Verify the Workspace ID is correct
* Regenerate the API key in Stacksync workspace settings
* Ensure you're using the correct workspace

#### Support

For additional assistance, contact Stacksync support at <support@stacksync.com>


# SCIM

Activate SCIM for your Stacksync workspace (System for Cross-domain Identity Management)

[Contact us](https://www.stacksync.com/contact) to activate SCIM for your workspace. This feature is part of our Enterprise plan.

Currently, Stacksync supports Okta and Azure Entra ID. We can add support for other identity providers on short notice.

SCIM stands for System for Cross-domain Identity Management. It is an open standard that automates the exchange of user identity information between IT systems and identity domains. SCIM simplifies granting access to cloud-based applications for people and groups.


# MFA

Required MFA (Multi-Factor Authentication) for all users in a workspace. This enhances workspace security for users and logins.

MFA (Multi-Factor Authentication) can be enabled for your workspace. Enabling MFA will immediately require MFA for all workspace collaborators. They will be logged out and prompted to set up MFA at their next login.

To activate MFA, go to **Workspace Settings** → **Security**, then toggle **MFA** on.

<figure><img src="https://docs.stacksync.com/~gitbook/image?url=https%3A%2F%2F2867423571-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FfJjIdV9cuW6K8asJjTPJ%252Fuploads%252FiIKHlS9cXbsexfZMTFHU%252Fimage.png%3Falt%3Dmedia%26token%3Daa39cc71-815e-488d-a3d3-626a6c7d2a76&#x26;width=768&#x26;dpr=4&#x26;quality=100&#x26;sign=44acc413&#x26;sv=2" alt=""><figcaption><p>MFA (Multi-Factor Authentication) in Stacksync Workspace settings.</p></figcaption></figure>


# Terms of Service and Conditions (TC)

General terms and conditions governing the use of the Stacksync service and related products.

Last updated: October 25th, 2025.

Please read these terms and conditions carefully before using Our Service.

#### Interpretation and Definitions <a href="#interpretation-and-definitions" id="interpretation-and-definitions"></a>

**Interpretation**

The words of which the initial letter is capitalized have meanings defined under the following conditions. The following definitions shall have the same meaning regardless of whether they appear in singular or in plural.

**Definitions**

For the purposes of these Terms and Conditions:

* Affiliate means an entity that controls, is controlled by or is under common control with a party, where "control" means ownership of 50% or more of the shares, equity interest or other securities entitled to vote for election of directors or other managing authority.
* Country refers to: Delaware, United States of America (USA).
* Company (referred to as either "the Company", "We", "Us" or "Our" in this Agreement) refers to Stacksync.
* Device means any device that can access the Service such as a computer, a cellphone or a digital tablet.
* Service refers to the Website.
* Terms and Conditions (also referred to as "Terms") mean these Terms and Conditions that form the entire agreement between You and the Company regarding the use of the Service.
* Third-party Social Media Service means any services or content (including data, information, products or services) provided by a third-party that may be displayed, included or made available by the Service.
* Website refers to Stacksync, accessible from `https://www.stacksync.com` and any other product Stacksync offers, including (without limitation) Hookforce at <https://www.hookforce.app>.
* You means the individual accessing or using the Service, or the company, or other legal entity on behalf of which such individual is accessing or using the Service, as applicable.

#### Acknowledgment <a href="#acknowledgment" id="acknowledgment"></a>

These are the Terms and Conditions governing the use of this Service and the agreement that operates between You and the Company. These Terms and Conditions set out the rights and obligations of all users regarding the use of the Service.

Your access to and use of the Service is conditioned on Your acceptance of and compliance with these Terms and Conditions. These Terms and Conditions apply to all visitors, users and others who access or use the Service.

By accessing or using the Service You agree to be bound by these Terms and Conditions. If You disagree with any part of these Terms and Conditions then You may not access the Service.

You represent that you are over the age of 18. Stacksync does not permit those under 18 to use the Service.

Your access to and use of the Service is also conditioned on Your acceptance of and compliance with the Privacy Policy of the Company. Our Privacy Policy describes Our policies and procedures on the collection, use and disclosure of Your personal information when You use the Application or the Website and tells You about Your privacy rights and how the law protects You. Please read Our Privacy Policy carefully before using Our Service.

#### Links to Other Websites <a href="#links-to-other-websites" id="links-to-other-websites"></a>

Our Service may contain links to third-party web sites or services that are not owned or controlled by the Company.

The Company has no control over, and assumes no responsibility for, the content, privacy policies, or practices of any third party web sites or services. You further acknowledge and agree that the Company shall not be responsible or liable, directly or indirectly, for any damage or loss caused or alleged to be caused by or in connection with the use of or reliance on any such content, goods or services available on or through any such web sites or services.

We strongly advise You to read the terms and conditions and privacy policies of any third-party web sites or services that You visit.

#### Termination <a href="#termination" id="termination"></a>

We may terminate or suspend Your access immediately, without prior notice or liability, for any reason whatsoever, including without limitation if You breach these Terms and Conditions.

Upon termination, Your right to use the Service will cease immediately.

Either party may terminate this Agreement upon written notice if the other party materially breaches the Agreement and fails to cure such breach within 30 days of receiving written notice.

#### Limitation of Liability <a href="#limitation-of-liability" id="limitation-of-liability"></a>

Notwithstanding any damages that You might incur, the entire liability of the Company and any of its suppliers under any provision of these Terms and Your exclusive remedy for all of the foregoing shall be limited to the amount actually paid by You through the Service or 100 USD if You haven't purchased anything through the Service.

To the maximum extent permitted by applicable law, in no event shall the Company or its suppliers be liable for any special, incidental, indirect, or consequential damages whatsoever (including, but not limited to, damages for loss of profits, loss of data or other information, for business interruption, for personal injury, loss of privacy arising out of or in any way related to the use of or inability to use the Service, third-party software and/or third-party hardware used with the Service, or otherwise in connection with any provision of these Terms), even if the Company or any supplier has been advised of the possibility of such damages and even if the remedy fails of its essential purpose.

Some states do not allow the exclusion of implied warranties or limitation of liability for incidental or consequential damages, which means that some of the above limitations may not apply. In these states, each party's liability will be limited to the greatest extent permitted by law.

**"AS IS" and "AS AVAILABLE" Disclaimer**

The Service is provided to You "AS IS" and "AS AVAILABLE" and with all faults and defects without warranty of any kind. To the maximum extent permitted under applicable law, the Company, on its own behalf and on behalf of its Affiliates and its and their respective licensors and service providers, expressly disclaims all warranties, whether express, implied, statutory or otherwise, with respect to the Service, including all implied warranties of merchantability, fitness for a particular purpose, title and non-infringement, and warranties that may arise out of course of dealing, course of performance, usage or trade practice. Without limitation to the foregoing, the Company provides no warranty or undertaking, and makes no representation of any kind that the Service will meet Your requirements, achieve any intended results, be compatible or work with any other software, applications, systems or services, operate without interruption, meet any performance or reliability standards or be error free or that any errors or defects can or will be corrected.

Without limiting the foregoing, neither the Company nor any of the company's provider makes any representation or warranty of any kind, express or implied: (i) as to the operation or availability of the Service, or the information, content, and materials or products included thereon; (ii) that the Service will be uninterrupted or error-free; (iii) as to the accuracy, reliability, or currency of any information or content provided through the Service; or (iv) that the Service, its servers, the content, or e-mails sent from or on behalf of the Company are free of viruses, scripts, trojan horses, worms, malware, timebombs or other harmful components.

Some jurisdictions do not allow the exclusion of certain types of warranties or limitations on applicable statutory rights of a consumer, so some or all of the above exclusions and limitations may not apply to You. But in such a case the exclusions and limitations set forth in this section shall be applied to the greatest extent enforceable under applicable law.

#### Governing Law <a href="#governing-law" id="governing-law"></a>

The laws of the Country, excluding its conflicts of law rules, shall govern these Terms and Your use of the Service. Your use of the Application may also be subject to other local, state, national, or international laws.

#### Disputes Resolution <a href="#disputes-resolution" id="disputes-resolution"></a>

If You have any concern or dispute about the Service, You agree to first try to resolve the dispute informally by contacting the Company.

If the dispute cannot be resolved through informal discussions within thirty (30) days, the parties shall engage in mandatory, non-binding mediation conducted by a mutually agreed-upon neutral mediator before initiating any arbitration or other formal legal proceeding. The mediation shall take place in Wilmington, Delaware, unless otherwise mutually agreed, and the costs of mediation shall be shared equally between the parties, unless otherwise agreed in writing. Participation in mediation shall be a condition precedent to the initiation of arbitration or any other form of dispute resolution.

**Arbitration Procedure**

Any dispute, controversy, or claim arising out of or relating to this Agreement that is not resolved through mediation shall be finally resolved by binding arbitration administered by the American Arbitration Association (AAA) in accordance with its Commercial Arbitration Rules. The arbitration shall be conducted by a single arbitrator appointed in accordance with such rules. The seat and venue of arbitration shall be Wilmington, Delaware, and the arbitration shall be conducted in English. Judgment on the award rendered by the arbitrator may be entered in any court having jurisdiction thereof.

**For European Union (EU) Users**

If You are a European Union consumer, you will benefit from any mandatory provisions of the law of the country in which you are resident in.

**United States Legal Compliance**

You represent and warrant that (i) You are not located in a country that is subject to the United States government embargo, or that has been designated by the United States government as a "terrorist supporting" country, and (ii) You are not listed on any United States government list of prohibited or restricted parties.

#### Severability and Waiver <a href="#severability-and-waiver" id="severability-and-waiver"></a>

**Severability**

If any provision of these Terms is held to be unenforceable or invalid, such provision will be changed and interpreted to accomplish the objectives of such provision to the greatest extent possible under applicable law and the remaining provisions will continue in full force and effect.

**Waiver**

Except as provided herein, the failure to exercise a right or to require performance of an obligation under these Terms shall not affect a party's ability to exercise such right or require such performance at any time thereafter nor shall the waiver of a breach constitute a waiver of any subsequent breach.

#### Fees and Payment <a href="#fees-and-payment" id="fees-and-payment"></a>

**Fees**

Customer shall pay to Stacksync the fees for the Service. Except as expressly set forth in the Order, the Service is non-cancellable and all fees are non-refundable. Customer shall have no right to withhold or reduce fees under the Agreement or set off any amount against fees owed for alleged defects in the Service.

**Payment**

Customer shall pay to Stacksync the fees for the Service provided hereunder, in the amount set forth in the Order, by recurring credit card charges made on the first day of each subscription period or by invoice within thirty (30) days from the invoice date. Payment shall always be made by the start date when paying by credit card and prior to the start date of the Service when paying by invoice. Without limiting any other rights or remedies Stacksync may have, any amount not paid when due will be subject to interest equal to the lesser of: (i) 5% per month of the overdue amount; or (ii) the highest lawful rate allowed by applicable law. Such interest shall accrue on a daily basis from the due date until actual payment of the overdue amount, whether before or after judgment. In addition to any interest due under this Section, Customer shall reimburse any costs or expenses (including, but not limited to, any penalties, charges and legal and other reasonable professional costs and expenses) incurred by Stacksync to collect any amount that is not paid when due.

**Additional charges**

Additional charges emerging from refunds, chargebacks, payment disputes or any other financial transaction between the Company and the Customer should be borne by the customer, especially if the request originates from the Customer. For instance, charges from payment providers or banks to transfer the amount of a refund from the Company to the Customer might be borne by the Customer.

These charges might be, by payment modality, charged to the Customer via the financial provider. When this is not possible, the charges might directly be deducted from the transferred amount being sent from the Company to the Customer. These charges might also be offset against future payment from the Company to the Customer or additionally included on future payables such as bills from the Customer to the Company.

**Taxes.**

All fees are exclusive of taxes, levies, and duties, and Customer shall be responsible for payment of all such taxes, levies, and duties, including value-added tax (VAT), withholding, or similar taxes. Stacksync may calculate taxes based on the billing information Customer provides.

**Fee Increase.**

Stacksync may increase the fees for the Service, which will be effective at the beginning of the next subscription period. Stacksync will notify Customer of any increase prior to it becoming effective; notice may be in the form of an invoice. Customer acknowledges that expiration of any discount or incentive programs to which Customer was previously entitled does not constitute a fee increase.

**Renewal**

All contracts renew automatically if the service is not cancelled by either party before the renewal date.

**Effects on non-payment.**

Stacksync may suspend Customer’s access to the Service without advance notice if Customer fails to pay in full when due. Stacksync will notify the Customer of the reason for the suspension.

**Cancellation**

The Client may request cancellation of the contract without cause by providing a written notice at least 30 days prior to the contract's expiration date.

Fees for the running contract term are non-refundable.

**Breach**

If Customer breaches these Terms, including but not limited to non-payment or violation of the Acceptable Use Policy, all fees paid shall be non-refundable, and Customer shall remain liable for any unpaid fees due for the then-current contract term.

If Stacksync materially breaches these Terms and fails to cure such breach within thirty (30) days after receiving written notice from Customer, Customer will be entitled to a refund of prepaid fees on a pro-rata basis for the unused portion of the Service period. This refund shall constitute Customer’s sole and exclusive remedy for such breach.

#### Marketing and Branding <a href="#marketing-and-branding" id="marketing-and-branding"></a>

By agreeing to these Terms, You grant the Company a non-exclusive, royalty-free, worldwide license to use Your company’s name, logo, and trademarks for marketing and promotional purposes. This includes, but is not limited to, featuring Your logo on the Company’s Website, presentations, case studies, and promotional materials.

The Company may obtain Your logo and branding assets from publicly available sources or request them directly from You to ensure proper representation. Additionally, You agree to collaborate with the Company to provide marketing content, such as case studies, testimonials, or relevant media, upon reasonable request.

If You have specific branding guidelines, You agree to provide them upon request to ensure compliance with Your standards.

You may revoke this permission by providing written notice to the Company. Upon receipt of such notice, the Company will cease using Your logo and branding in any new materials within 30 business days.

#### Ownership of Intellectual Property Rights <a href="#ownership-of-intellectual-property-rights" id="ownership-of-intellectual-property-rights"></a>

**Stacksync’s IP**

Stacksync, or its licensors, own all right, title and interest in and to any and all copyrights, trademark rights, patent rights, database rights and other intellectual property or other rights in and to the Service, including without limitation all software, integrations, integrations with Data Sources and Data Destinations, technology and other rights used to provide the Service, and all graphics, user interfaces and any documentation, any improvements, design contributions or derivative works thereto, and any knowledge or processes related thereto and/or provided hereunder. Except for the limited rights expressly granted herein, the Agreement does not transfer from Stacksync any proprietary right or interest in the Service. All rights not expressly granted to Customer in the Agreement are reserved to Stacksync and its licensors.

**Customer’s IP**

Customer shall own all right, title and interest in and to any copyrights, trademark rights, patent rights, database rights and other intellectual property or other rights in and to the Customer Data. Except for the limited rights expressly granted herein, the Agreement does not transfer from Customer any proprietary right or interest in the Customer Data. All rights regarding Customer Data not expressly granted to Stacksync in the Agreement are reserved to Customer.

#### Third Party Indemnification <a href="#third-party-indemnification" id="third-party-indemnification"></a>

**Claims Brought Against Customer**

Stacksync shall defend (at its sole expense) Customer against claims brought against Customer by any third party alleging that Customer’s use of the Service, in accordance with the terms and conditions of the Agreement, constitutes an infringement or misappropriation of a patent claim(s), copyright, or trade secret rights or any other third party intellectual property rights. Stacksync will pay damages finally awarded against Customer with respect to such claims, and will pay reasonable attorney’s fees in connection with such defense. This obligation of Stacksync shall not apply if the alleged infringement or misappropriation results from use of the Service in conjunction with any other software or service not provided by Stacksync or in the event of free (no fee) or trial use of the Service.

**Intellectual Property Claims**

In the event a claim under the previous Section is made or in Stacksync’s reasonable opinion is likely to be made, Stacksync may, at its sole option and expense: (i) procure for Customer the right to continue using the Service under the terms of the Agreement; or (ii) replace or modify the Service to be non-infringing without material decrease in functionality. If Stacksync provides written notice to Customer that the foregoing options are not reasonably available, Stacksync or Customer may terminate the Agreement and Stacksync shall refund to Customer all prepaid fees for the remainder of its term after the date of termination.

**Claims Brought Against Stacksync**

Customer shall defend (at its sole expense) Stacksync and licensors against claims brought against Stacksync by any third party arising from or related to an allegation that the Customer Data used in connection with the Service violates, infringes or misappropriates the intellectual property rights of a third party. Customer will pay damages finally awarded against Stacksync with respect to such claims, and will pay reasonable attorney’s fees in connection with such defense. The foregoing shall apply regardless of whether such damage is caused by the conduct of Customer or by the conduct of a third party using Customer’s access credentials.

**Conditions**

The obligations under this Section are conditioned on (i) the Party against whom a third party claim is brought timely notifying the other Party in writing of any such claim, provided however that a Party’s failure to provide or delay in providing such notice shall not relieve a Party of its obligations under this Section except to the extent such failure or delay prejudices the defense; (ii) the Party who is obligated hereunder to defend a claim having the right to fully control the defense of such claim; and (iii) the Party against whom a third party claim is brought reasonably cooperating in the defense of such claim. Any settlement of any claim shall not include a financial or specific performance obligation on or admission of liability by the Party against whom the claim is brought, provided however that Stacksync may settle any claim on a basis requiring Stacksync to substitute for the Service any alternative substantially equivalent non-infringing service. The Party against whom a third party claim is brought may appear, at its own expense, through counsel reasonably acceptable to the Party obligated to defend claims hereunder. Neither Party shall undertake any action in response to any infringement or misappropriation, or alleged infringement or misappropriation that is prejudicial to the other Party’s rights.

**Third Party Indemnification Disclaimer**

THE PROVISIONS OF THIS SECTION STATE THE SOLE, EXCLUSIVE AND ENTIRE LIABILITY OF A PARTY TO THE OTHER PARTY, AND IS THE OTHER PARTY’S SOLE REMEDY, WITH RESPECT TO THIRD PARTY CLAIMS COVERED HEREUNDER AND TO THE INFRINGEMENT OR MISAPPROPRIATION OF THIRD-PARTY INTELLECTUAL PROPERTY RIGHTS.

#### Translation Interpretation <a href="#translation-interpretation" id="translation-interpretation"></a>

These Terms and Conditions may have been translated if We have made them available to You on our Service. You agree that the original English text shall prevail in the case of a dispute.

#### Changes to These Terms and Conditions <a href="#changes-to-these-terms-and-conditions" id="changes-to-these-terms-and-conditions"></a>

We reserve the right, at Our sole discretion, to modify or replace these Terms at any time. If a revision is material We will make reasonable efforts to provide at least 30 days' notice prior to any new terms taking effect. What constitutes a material change will be determined at Our sole discretion.

By continuing to access or use Our Service after those revisions become effective, You agree to be bound by the revised terms. If You do not agree to the new terms, in whole or in part, please stop using the website and the Service.

#### Attached documentation <a href="#attached-documentation" id="attached-documentation"></a>

All other documents under this legal section such as, but not exhaustively, the Privacy Notice, Service Consumption Tables, Acceptable Use Policy, and all other documents are also agreed via the acceptance of this Terms of Service and Conditions also referred to as "TC" (this document itself). The division of the text in several document pages is for visual and layout purposes only, but all belong to the same conditions to use the Stacksync service.

#### Contact Us <a href="#contact-us" id="contact-us"></a>

If you have any questions about these Terms and Conditions, You can contact us by email at <hello@stacksync.com>.


# Privacy Notice

Last updated: January 10, 2023.

Stacksync Inc. ("Stacksync") respects your right to privacy. This Privacy Notice explains who we are, how we collect, store, share, and use personal data about you, and how you can exercise your privacy rights. This Privacy Notice applies to personal data that we collect, including through our website at [www.stacksync.com](https://www.stacksync.com/), within our product(s), and on other websites that Stacksync operates and that link to this policy (collectively, "Websites").

If you have any questions or concerns about our use of your personal data, please contact us using the contact details provided at the bottom of this Privacy Notice. This Privacy Notice is inspired by the documentation of industry peers and best practices (such as Fivetran Inc.).

**What personal data does Stacksync collect and why?**

Broad Categories of personal data collected:

| Broad Categories Collected                | Examples                                                                                                                                                      |
| ----------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Identifiers                               | Name, contact information, and other personal data that can directly or indirectly identify a consumer                                                        |
| Select Information in Customer Records    | Name, contact information, company information.                                                                                                               |
| Commercial Purchasing Information         | Records of products and services purchased                                                                                                                    |
| Internet or Network Activity              | <p>Browsing history,</p><p>search history,</p><p>information regarding a consumer’s interaction with an Internet Web site, application, or advertisement.</p> |
| Information Typically Detected by Senses  | Audio information (call recordings)                                                                                                                           |
| Employment Information                    | Role, title, and other relevant employer information                                                                                                          |
| Inferences Drawn from other Personal Data | Buying intent, and other relevant information to market or provide the services                                                                               |

The personal data that we may collect about you broadly falls into the following categories of sources:

* Information that you provide voluntarily. Certain parts of our Website may ask you to provide personal data voluntarily: for example, we may ask you to provide your contact details in order to register an account with us, for technical support, to subscribe to marketing communications from us, to register for an event, to access content, and/or to submit inquiries to us. The personal data that you are asked to provide, and the reasons why you are asked to provide it, will be made clear to you at the point we ask you to provide your personal data. If you decide not to provide some information voluntarily, you may still use our Websites, though your access to some functionality and areas of our Websites may be restricted.
* Information that we collect automatically. When you visit our Website, we may collect certain information automatically from your device. In some countries, including countries in the European Economic Area, this information may be considered personal data under applicable data protection laws. Specifically, the information we collect automatically may include information like your IP address, device type, unique device identification numbers, browser-type, broad geographic location (e.g. country or city-level location), and other technical information. We may also collect information about how your device has interacted with our Website, including the pages accessed and links clicked. Collecting this information enables us to better understand the visitors who come to our Website, where they come from, and what content on our Website is of interest to them. We use this information for our internal analytics purposes and to improve the quality and relevance of our Website to our visitors. Some of this information may be collected using cookies and similar tracking technology, as explained further under the heading “Cookies and similar tracking technology” below.
* Information that we obtain from third-party sources. From time to time, we may receive personal data about you from third-party sources (including, but not limited to, lead generation providers, partners, content syndication providers, third-party enrichment tools, and meeting maker vendors), but only where we have checked that these third parties either have your consent or are otherwise legally permitted or required to disclose your personal data to us. The types of information we collect from third parties include name, contact information, title and/or role within your organization, internet activity, and company data. We use the information we receive from these third parties to market our services to you.

Sensitive Personal Data

We may collect sensitive personal data, or special category personal data, from customers as a part of providing our services. We do not use sensitive personal data for any other commercial purpose. We do not sell sensitive personal data. We do not share sensitive personal data for online advertising.

Who does Stacksync share my personal data with?

We may disclose your personal data to the following categories of recipients:

* to our group companies and third-party service providers who provide data processing services to us (for example, to support the delivery of, provide functionality on, or help to enhance the security of our Website), or who otherwise process personal data for purposes that are described in this Privacy Notice or notified to you when we collect your personal data. A list of our current subprocessors is available here: <https://docs.stacksync.com/security-and-other-resources/security/subprocessors>;
* to our partners, who we may share with in connection with, selling or distributing our products and services, or engaging in joint marketing activities, in accordance with your expressed marketing preferences.
* to any competent law enforcement body, regulatory, government agency, court or other third party where we believe disclosure is necessary (i) as a matter of applicable law or regulation, (ii) to exercise, establish or defend our legal rights, or (iii) to protect your vital interests or those of any other person;
* to an actual or potential buyer (and its agents and advisers) in connection with any actual or proposed purchase, merger or acquisition of any part of our business, provided that we inform the buyer it must use your personal data only for the purposes disclosed in this Privacy Notice;
* to any other person with your consent to the disclosure.

Third parties we share with for a business purpose (in the last 12 months):

| Broad Categories Collected                | Types of third parties we share with             |
| ----------------------------------------- | ------------------------------------------------ |
| Identifiers                               | Group companies, service providers, and partners |
| Select Information in Customer Records    | Group companies, service providers, and partners |
| Commercial Purchasing Information         | Group companies, service providers, and partners |
| Internet or Network Activity              | Group companies, service providers, and partners |
| Information Typically Detected by Senses  | Group companies, service providers, and partners |
| Employment Information                    | Group companies, service providers, and partners |
| Inferences Drawn from other Personal Data | Group companies, service providers, and partners |

Third parties we share with for a commercial purpose (including sale/online advertising in the past 12 months):

| Broad Categories Collected                | Types of third parties we share with                              |
| ----------------------------------------- | ----------------------------------------------------------------- |
| Identifiers                               | Group companies, partners, and any other person with your consent |
| Select Information in Customer Records    | Group companies, partners, and any other person with your consent |
| Commercial Purchasing Information         | Group companies, partners, and any other person with your consent |
| Internet or Network Activity              | Group companies, partners, and any other person with your consent |
| Information Typically Detected by Senses  | Group companies, partners, and any other person with your consent |
| Employment Information                    | Group companies, partners, and any other person with your consent |
| Inferences Drawn from other Personal Data | Group companies, partners, and any other person with your consent |

**Legal basis for processing personal data**

Our legal basis for collecting and using the personal data described above will depend on the personal data concerned and the specific context in which we collect it.

However, we will normally collect personal data from you only (i) where we need the personal data to perform a contract with you, (ii) where the processing is in our legitimate interests and not overridden by your rights, or (iii) where we have your consent to do so. In some cases, we may also have a legal obligation to collect personal data from you or may otherwise need the personal data to protect your vital interests or those of another person.

If we ask you to provide personal data to comply with a legal requirement or to perform a contract with you, we will make this clear at the relevant time and advise you whether the provision of your personal data is mandatory or not (as well as of the possible consequences if you do not provide your personal data).

If we collect and use your personal data in reliance on our legitimate interests (or those of any third party), this will normally be to operate our platform and to communicate with you as necessary – for example, when responding to your queries, analyzing use of and improving our platform, undertaking marketing activities for existing customers as legally permitted, and detecting or preventing illegal activities. We may have other legitimate interests and we will make clear to you at the relevant time what those legitimate interests are. We rely on these legal bases to process data for the following purposes: to help provide the services (e.g. customer support and usage data) and to market our services to you (e.g. online advertising and gauging buyer intent).

If you have questions about or need further information concerning the legal basis on which we collect and use your personal data, please contact us using the contact details provided under the “How to contact us” heading at the bottom of this notice.

**Cookies and similar tracking technology**

What are cookies?

Cookies are small data files that are placed on your computer or mobile device when you visit a website. Website owners can use cookies for a variety of reasons that can include enabling their websites to work (or work more efficiently), providing personalized content and advertising, and creating website analytics.

Cookies set by the website owner (in this case, Stacksync) are called "first-party cookies". Only the website owner can access the first-party cookies it sets. Cookies set by parties other than the website owner are called "third-party cookies.” Third-party cookies enable third party features or functionality to be provided on or through the website (e.g. like advertising, interactive content and social sharing). The parties that set these third-party cookies can recognize your device both when it visits the website in question and also when it visits other websites that have partnered with them.

Stacksync may use web beacons, tags, flash cookies, HTML5, and scripts (“Data Tools”) in the Websites or in emails to help deliver cookies, count visits, understand usage and campaign effectiveness and determine whether an email has been opened and acted upon. Stacksync may receive reports based on the use of these technologies by our service/analytics providers on an individual and aggregated basis.

If you want to learn more about cookies, or how to control, disable or delete them, please visit <https://allaboutcookies.org> for detailed guidance. For further information on how to manage Flash cookies, please click [here](http://www.macromedia.com/support/documentation/en/flashplayer/help/settings_manager07.html).

Why do we use cookies?

We use first-party and third-party cookies for several reasons. Some cookies are required for technical reasons that are strictly necessary for our Websites to operate, and we refer to these as "essential" cookies. Other cookies also enable us to provide website functionality, or to enhance visitors' experience on our Websites by providing them with personalized content and advertising. This is described in more detail below.

Cookies collect certain standard information that your browser sends to the Websites such as your browser type and language, access times, and the address of the website from which you arrived at a Website. They may also collect information about your Internet Protocol (IP) address, clickstream behavior (i.e. the pages you view, the links you click, and other actions you take when you use the Websites) and product information. These are called first-party cookies and they are essential to the Websites’ operation.

Stacksync may also contract with third-party advertising networks that collect non-personally identifiable information and personal data through the Websites and emails and on third-party web sites. Ad networks follow your online activities over time by collecting usage data through Data Tools. They use this information to provide advertisements about products and services tailored to your interests. You may see these advertisements on other websites. This process also helps us manage and track the effectiveness of Stacksync’s marketing efforts.

The Websites may include third-party social media features, such as the Facebook Like button, and third-party widgets, such as the ‘Share This’ button or interactive mini-programs that run on the Websites. These features may collect your IP address, which page you are visiting on the Websites, and set a cookie to enable the feature to function properly. Your interaction with these features is governed by the privacy policy of the third-party company providing it.

We use third-party advertising companies to display ads on the Websites tailored to your individual interests based on your internet activity, as well as to provide advertising-related services such as ad delivery, reporting, attribution, analytics, and market research. You can manage your preferences with regards to the receipt of tailored advertisements in the cookie settings described below. Please note if these cookies are switched off, you will continue to see advertisements, but they will no longer be tailored to your interests.

The specific types of first- and third-party cookies served through our Websites and the purposes they perform are described in our cookie settings page.

What about other tracking technologies, like web beacons?

Cookies are not the only way to recognize or track visitors to a website. We may use other, similar technologies from time to time, like web beacons (sometimes called "tracking pixels" or "clear gifs"). These are tiny graphics files that contain a unique identifier that enable us to recognize when someone has visited our Website or opened an email that we have sent them. This allows us, for example, to monitor the traffic patterns of users from one page within our Websites to another, to deliver or communicate with cookies, to understand whether you have come to our Websites from an online advertisement displayed on a third-party website, to improve site performance, and to measure the success of email marketing campaigns. In many instances, these technologies are reliant on cookies to function properly, and so declining cookies will often impair their functioning.

How can you control cookies?

You have the right to decide whether to accept or reject cookies. You can exercise your cookie preferences in our cookie settings page.

You can also set or amend your web browser controls to accept or refuse cookies. If you choose to reject cookies, you may still use our Websites though your access to some functionality and areas of our Websites may be restricted. As the means by which you can refuse cookies through your web browser controls vary from browser to browser, you should visit your browser's help menu for more information.

In addition, most advertising networks offer you a way to opt out of targeted advertising. If you would like to find out more information, please visit <https://www.aboutads.info/choices/> or <https://www.youronlinechoices.eu/> if located in the European Union.

**How does Stacksync keep my personal data secure?**

We use appropriate technical and organizational measures to protect the personal data that we collect and process about you. The measures we use are designed to provide a level of security appropriate to the risk of processing your personal data. Stacksync is hosted on leading cloud service providers (listed in our [Security overview](/security-and-other-resources/security/overview-security)) and uses industry-standard security protocols to protect personal data. Personal data is stored on private servers. All connections between the end user and our servers are encrypted with SSL, and server software is kept continuously up to date with the latest security patches.

**International data transfers**

Your personal data may be transferred to, and processed in, countries other than the country in which you are resident. These countries may have data protection laws that are different to the laws of your country.

To view our data residency locations, see [Security overview](/security/overview-security). Our group companies, third party service providers, and partners operate around the world.

However, we have taken appropriate safeguards to require that your personal data will remain protected in accordance with this Privacy Notice. These include implementing the European Commission’s Standard Contractual Clauses, the UK Addendum for Standard Contractual Clauses, and other applicable standard contractual clauses for transfers of personal data between our group companies, which require all group companies to protect personal data they process in accordance with applicable data protection law.

Our Data Protection Addendum is available online at <https://www.stacksync.com/legal#dpa>, and our Standard Contractual Clauses can be provided on request by contacting us at <privacy@stacksync.com>. We have implemented similar appropriate safeguards with our third-party service providers and partners and further details can be provided upon request.

**Data retention**

We retain personal data we collect from you where we have an ongoing legitimate business need to do so (for example, to provide you with a service you have requested or to comply with applicable legal, tax or accounting requirements).

When we have no ongoing legitimate business need to process your personal data, we will either delete or anonymize it or, if this is not possible (for example, because your personal data has been stored in backup archives), then we will securely store your personal data and isolate it from any further processing until deletion is possible. For more detailed information on our retention practices, see [Security overview](/security/overview-security).

**Your data protection rights**

You have the following data protection rights:

* If you wish to access, correct, update or request deletion of your personal data, you can do so at any time by contacting us using the contact details provided under the “How to contact us” heading at the bottom of this notice.
* In addition, you can object to processing of your personal data, ask us to restrict processing of your personal data or request portability of your personal data. Again, you can exercise these rights by contacting us using the contact details provided under the “How to contact us” heading at the bottom of this notice.
* You have the right to opt-out of marketing communications we send you at any time. You can exercise this right by clicking on the “unsubscribe” or “opt-out” link in the marketing emails we send you. To opt-out of other forms of marketing (such as postal marketing or telemarketing), then please contact us using the contact details provided under the “How to contact us” heading at the bottom of this notice.
* Similarly, if we have collected and processed your personal data with your consent, then you can withdraw your consent at any time. Withdrawing your consent will not affect the lawfulness of any processing we conducted prior to your withdrawal, nor will it affect processing of your personal data conducted in reliance on lawful processing grounds other than consent.
* You have the right to opt out of the sale of your personal data, including sharing personal data for online advertising. For more information, visit our cookie settings page.
* We do not use or disclose your sensitive personal data, except for the purposes of providing the services to our customers.
* You have the right to non-discrimination, meaning we may not discriminate against a data subject for exercising a privacy right.
* You have the right to have your authorized agent make a data privacy request on your behalf. For more information, please contact us using the contact details provided under the “How to contact us” heading at the bottom of this notice.
* You have the right to complain to a data protection authority about our collection and use of your personal data. For more information, please contact your local data protection authority.
* If you are not satisfied with our response regarding your data privacy request, you have the right to appeal our decision. For more information, please contact us using the contact details provided under the “How to contact us” heading at the bottom of this notice. If you are not satisfied with the result of the appeal, you have the right to contact your respective attorney general depending on where you reside.

We respond to all requests we receive from individuals wishing to exercise their data protection rights in accordance with applicable data protection laws.

**Data Privacy Framework Participation**

1\. Data Privacy Framework Participation StackSync Inc. complies with the EU-U.S. Data Privacy Framework (EU-U.S. DPF), the UK Extension to the EU-U.S. DPF, and the Swiss-U.S. Data Privacy Framework (Swiss-U.S. DPF) as set forth by the U.S. Department of Commerce regarding the collection, use, and retention of personal data transferred from the European Union, the United Kingdom (and Gibraltar), and Switzerland to the United States. StackSync has certified to the U.S. Department of Commerce that it adheres to the Data Privacy Framework Principles. If there is any conflict between the terms in this Privacy Notice and the DPF Principles, the DPF Principles shall govern. To learn more about the Data Privacy Framework program, and to view StackSync’s certification, please visit: [https://www.dataprivacyframework.gov](https://www.dataprivacyframework.gov/)

2\. Accountability for Onward Transfers StackSync is responsible for the processing of personal data it receives under the DPF and subsequently transfers to a third party acting as an agent on its behalf. We comply with the DPF Principles for all onward transfers of personal data from the EU, UK, and Switzerland, including the onward transfer liability provisions.

3\. What Personal Data We Collect We may collect the following types of personal data:

* Identifiers: Name, email address, IP address, phone number
* Employment Info: Job title, company name, role
* Internet/Network Activity: IP addresses, cookies, browser type, usage data
* Commercial Info: Purchase history, product interactions
* Inferences: Preferences, behavioral insights
* Audio Data: Recordings from support calls (when applicable)

4\. Why We Collect and Use Personal Data We use personal data to:

* Provide our services and customer support
* Respond to inquiries and fulfill contracts
* Improve our products and user experience
* Send marketing communications (where legally permitted)
* Detect and prevent fraud and abuse
* Comply with legal obligations and regulatory requirements

5\. Information Disclosure to Third Parties We may disclose personal data to:

* Service providers (e.g., cloud infrastructure, analytics, marketing)
* Business partners (for joint offerings or referrals)
* Third-party platforms integrated at your request
* Government authorities in response to lawful requests
* Acquirers in case of a merger, acquisition, or sale of assets

Each recipient is contractually bound to handle data securely and only for the intended purposes.

6\. Your Rights You have the following rights under the DPF Principles and applicable laws:

* Right to access your personal data
* Right to correct or update inaccurate data
* Right to delete your data where applicable
* Right to restrict or object to processing
* Right to withdraw consent for data use (e.g., marketing)
* Right to opt out of sale or disclosure for cross-context advertising

To exercise these rights, contact us at: <privacy@stacksync.com>

7\. Limiting Use and Disclosure StackSync provides the following mechanisms to limit use/disclosure of personal data:

* Cookie settings and ad tracking preferences
* Unsubscribe links in marketing communications
* Direct opt-out requests via email
* Platform-based controls for integrations or data sharing

8\. Lawful Requests by Public Authorities We may disclose your personal data in response to lawful requests by public authorities, including to meet national security or law enforcement requirements.

9\. Independent Recourse Mechanism In compliance with the DPF Principles, StackSync commits to resolving complaints about our collection or use of your personal data. If you have a concern, please first contact us at: <privacy@stacksync.com>

StackSync has selected JAMS (Judicial Arbitration and Mediation Services, Inc.) as our independent recourse mechanism for DPF-related complaints. If you do not receive a timely acknowledgment or are unsatisfied with our response, you may contact JAMS at no cost via: <https://www.jamsadr.com/dpf-dispute-resolution>

10\. Binding Arbitration Under certain conditions, you may invoke binding arbitration to resolve unresolved complaints not addressed through the recourse mechanism above. Details can be found in Annex I of the DPF Principles: <https://www.dataprivacyframework.gov/framework-article/ANNEX-I-introduction>

11\. U.S. Regulatory Oversight StackSync is subject to the investigatory and enforcement powers of the U.S. Federal Trade Commission (FTC) in relation to its compliance with the DPF Principles.

12\. Security and Retention We implement appropriate technical and organizational security measures. Personal data is retained only for as long as needed for the purposes outlined or as required by law.

13\. Updates to This Notice This Privacy Notice may be updated periodically. Changes will be posted on this page, and material changes will be communicated when required by law.

14\. Contact Information For questions, concerns, or requests, please contact: <privacy@stacksync.com>

StackSync Inc. Attn: Data Protection Officer Address: 2611, 1007 N Orange St. 4th Floor, Wilmington, DE, New Castle, USA, 19801 DPO Contact: <dpo@stacksync.com>

**Updates to this Privacy Notice**

We may update this Privacy Notice from time to time in response to changing legal, technical or business developments. When we update our Privacy Notice, we will take appropriate measures to inform you, consistent with the significance of the changes we make. We will obtain your consent to any material Privacy Notice changes if and where this is required by applicable data protection laws.

You can see when this Privacy Notice was last updated by checking the “last updated” date displayed at the top of this Privacy Notice.

**How to contact us**

If you have any questions or concerns about our use of your personal data, please contact us at <privacy@stacksync.com>, or at the following address:

Stacksync Inc., Attn: Data Protection Officer,

Address: 2611, 1007 N Orange St. 4th Floor, Wilmington, DE, New Castle, US, 19801

We have a Data Protection Officer ("DPO") responsible for compliance with data protection law. Their contact details are <dpo@stacksync.com>.

The data controller of your personal data is Stacksync Inc. when we collect information from you for marketing purposes. Our customers are the data controller for personal data they provide to us when they use our services.

For any legal claims, the jurisdiction of state of Delaware, USA is the prevailing court.


# Service Consumption Tables

V.1.0.3

Effective November 4, 2024

#### Overview <a href="#overview" id="overview"></a>

These Service Consumption Terms are effective as of November 4, 2024 (the "Effective Date") and apply to all customers on Stacksync’s consumption-based pricing model.

Stacksync provides automated cloud data pipelines (“Connectors”, “Apps”) to its customers (each a “Customer”, “you”, “your”) as a service that transports data from various sources to specific destinations (the “Stacksync Service”). The service supports unidirectional and bidirectional data sync and is available in multiple plans (“Plans”) hosted across various geographical regions ("Regions") by third-party cloud providers (“Cloud Providers”), as described in your agreement with Stacksync (“Agreement”). Event-based actions (“Triggers”) may be initiated based on data activity within Connectors.

#### Definitions <a href="#definitions" id="definitions"></a>

* **Workspace:** The customer’s collaborative space attached to a subscription. Each workspace has exactly one active subscription. A Workspace contains Connectors and Destinations grouped into Syncs.
* **Sync:** Two or more apps connected together with data in sync. A Sync may be active, paused or deleted. Syncs are organized within workspaces.
* **Account:** The Customer’s account on Stacksync. An Account may own or have access to multiple workspaces. An Account contains personal data about the customer.
* **Arrears:** For Capacity Purchases (defined below) only, this means any additional usage after the initial purchase has been used, but before the end of the original term. The Arrears period ensures you are able to continue using the Stacksync Services, even if the original Contracted Spend has already been consumed. You will be alerted by Stacksync when you are in Arrears.
* **Subscription:** A paid plan attached to a workspace.
* **Billing Period:** A calendar month running from the first to the last day of the month.
* **Capacity Purchase:** A subscription-based plan which requires an annual upfront purchase of Contracted Spend in bulk.
* **Contracted Spend:** The total dollar amount purchased as listed in the Order Form. Contracted Spend is shown on an annual basis.
* **Destination:** A destination is a data warehouse, database, data lake, or data lake house where the data is delivered.
* **Incremental Spend:** The price charged for the next thousand **Records in sync** (or portion of the next thousand **Records in sync**) consumed after surpassing the **Records in sync** Threshold for the month in question.
* **Initial Sync:** The first time that a connector completes a historical sync.
* **Monthly Purchase:** A plan which is not subscription-based, whereby a Customer is billed monthly in-arrears for their usage during the prior Billing Period. Monthly plans are available to purchase at the (i) stacksync.com user interface or through the (ii) AWS, (iii) GCP, or (iv) Azure marketplaces.
* **Records in sync:** The number of distinct Primary Keys synced via Stacksync, calculated on a per-Sync basis. We only count a row once per Billing Period, even if it syncs multiple times.
* **Records in sync Threshold:** The minimum **Records in sync** usage requirement to receive the consumption rates on the Service Consumption Table below.
* **Monthly Spend:** The dollar amount consumed each Billing Period from your Contracted Spend based on your actual monthly usage.
* **Total Monthly Spend:** Total Monthly Spend is the sum of Monthly Spend on Connectors and any other applicable uses of the Stacksync platform and Services.
* **Order Form:** The form used to purchase Contracted Spend from Stacksync. For Capacity Purchase customers, this is an order form document. For Monthly customers, this may be an order form document or may be the terms attached to a Monthly Purchase through one of the marketplaces identified above.
* **Plan:** The bundle of features included as a part of your Stacksync Service and outlined here. Plans may be Capacity Purchase plans (subscription-based) or may be Monthly Purchase plans (do not require annual subscriptions).
* **Primary Key:** A unique identifier that specifies a distinct row within a table. In bidirectional sync mode, the primary keys of the rows in the synced apps are mapped together. In this context, the Primary Key corresponds to a unique mapping. For instance, a corresponding row in synced apps within the same Sync results in only one Primary Key.

### Records in sync <a href="#records-in-sync" id="records-in-sync"></a>

**Records in sync** represents the number of distinct Primary Keys processed per Workspace per Billing Period. If a Primary Key is synced multiple times, it counts as one **Record in sync**. Up to 50% of the **Records in sync** for an Initial Sync is excluded for each new Sync. In cases where network troubleshooting is needed, Customer cooperation may be required to allow data flow to Stacksync.

**Records in sync computation**

Records in sync serve as billing units and are determined within a billing period of one month. Records in sync billing is based on these actions:

1. **Record changes**: each created, updated, or deleted record within a Billing Period counts as one **Record in sync**. If it is updated multiple times in the same Billing Period, it still counts once.
2. **Triggers:** each successful trigger counts as an additional **Record in sync**. For instance, if a record is updated five times during the Billing Period, and two of those updates activate triggers, only one **Record in sync** will be counted for the five record updates, and two **Records in sync** will be counted for the triggered actions. Thus, a total of three **Records in sync** will be billed for that scenario.
3. **Full crawling requirements:** some systems, like HubSpot, require full crawling to detect changes. All records synced will count as **Records in sync**. All synced records will be counted at least once within a Billing Period if they exist. However, even if full crawling occurs multiple times in the same Billing Period, the records will only count once. If these same records are updated during the Billing Period, they will not count twice because they were already counted once.
4. **Workflow execution**: each successful workflow execution counts as an additional **Record in sync**. Unlike record updates, which are counted once per unique record in a Billing Period, each individual workflow execution is a distinct, billable event.

   For example, if updating 50 unique records causes a workflow to execute 50 times, this will be counted as 50 Records in sync for the record updates plus 50 additional Records in sync for the workflow executions, resulting in a total of 100 Records in sync.

* **API proxy**
  * **Standard calls**: included up to the plan’s quota, with excess usage billed at the Records in sync rate.
  * **AI Insights calls**: AI-driven calls (marked with “ai” in the URL) are included up to the plan’s quota and billed at 15 Records in sync per call once the quota is exceeded.

#### Service consumption and spend calculation <a href="#service-consumption-and-spend-calculation" id="service-consumption-and-spend-calculation"></a>

Monthly Spend depends on **Records in sync** usage and the selected Plan. Each Plan has a base price covering limited usage, with incremental costs for usage beyond the included limit.

**Plan pricing**

* **Starter Plan:** $1400/mo (or $1000/mo billed yearly)
* **Pro Plan:** $3700/mo (or $3000/mo billed yearly)
* **Enterprise Plan:** custom pricing based on specific requirements

**Service consumption table**

Additional **Records in sync** pricing (Consumption based). The pricing increments in thousands of **Records in sync**. Each thousand **Records in sync** started, even partly consumed, is due in full.

| Records in sync Tier | Price per 1,000 |
| -------------------- | --------------- |
| 0 - 50k              | $0              |
| 50k → 150k           | $8.00           |
| 150k - 1M            | $2.00           |
| 1M → 10M             | $0.90           |
| 10M → 100M           | $0.40           |
| over 100M            | $0.10           |

**Example of cost calculation**

Suppose you’re on a **yearly** Starter Plan with a base price and have used 200,000 **Records in sync** in one month. Here’s how costs are calculated:

* First 50,000 **Records in sync**, included in your plan.
* Next 100,000 **Records in sync**, priced at $8 per 1,000: 100 \* $8 = $800.
* Additional 50,000 **Records in sync**, priced at $2 per 1,000: 50 \* $2 = $100.
* **Total Records in sync cost:** $0 + $800 + $100 = $900.
* **Total Monthly Spend:** Base Price ($1000) + **Records in sync** Cost ($900) = $1900.

#### Custom development services <a href="#custom-development-services" id="custom-development-services"></a>

For services outside of standard support, such as custom development, the following hourly rates apply:

* **Junior Engineers / Junior Solutions Architects**: $250 USD per hour
* **Senior Engineers / Senior Solutions Architects**: $400 USD per hour

**Capacity purchase plan**

For customers with a Capacity Purchase Plan, usage rates are based on the Service Consumption Table. Multiple Workspaces under one Capacity Purchase Plan can share Contracted Spend but cannot combine Synced Rows for volume discounts.

#### What happens when Contracted Spend is depleted? <a href="#what-happens-when-contracted-spend-is-depleted" id="what-happens-when-contracted-spend-is-depleted"></a>

Capacity Purchase Customers will enter an Arrears period if Contracted Spend is depleted, during which they can continue using Stacksync Services at the "Monthly Pay As You Go" rates. Stacksync will prompt customers to purchase additional usage.

#### Expiration of Contracted Spend <a href="#expiration-of-contracted-spend" id="expiration-of-contracted-spend"></a>

Contracted Spend must be used within the subscription term, with no rollover to the next term. Contact your account representative for renewals or new orders.

#### Multiple Workspaces <a href="#multiple-workspaces" id="multiple-workspaces"></a>

Each Workspace’s Records in sync usage is calculated independently. Combining Rows Synced across Workspaces for discounts is not allowed, but consolidation into a single Workspace is available upon request.

#### Support Plans <a href="#support-plans" id="support-plans"></a>

**Support Priorities**

Stacksync provides highly responsive support channels. The following priority levels define how issues are classified and handled:

**P-0 — Critical / Production Down**

* Full production outage or data corruption
* Core functionality unavailable
* Immediate business impact
* Requires instant escalation to on-call engineering

**P-1 — High / Severe Degradation**

* Major functionality impaired, though partially operational
* Significant performance degradation
* No viable workaround
* Requires rapid attention

**P-2 — Medium / Functional Issue**

* Non-critical feature malfunction
* Business impact present but mitigations available
* Addressed during business hours

**P-3 — Low / Minor Bug or Usability Issue**

* Cosmetic issues or low-impact defects
* No operational disruption
* Resolved in standard maintenance cycles

**P-4 — Inquiry / Feature Request**

* Clarifications, documentation questions, or enhancement requests
* No operational impact

***

**Support Channels**

* **P-4 to P-0** issues should be raised via the standard support channels included in your plan (Email, Slack, or Phone).
* **P-0** incidents may be escalated through the dedicated 24/7 hotline available under **Workspace Settings → Support Methods** (if included in your plan).

Triggering a P-0 escalation immediately notifies an on-call engineer. Your team must be ready to respond in real time (chat and/or call) to ensure rapid resolution.

**Note:** Submitting non-urgent or lower-severity issues through the P-0 hotline may incur fees of up to **$1,000 per false alert due immediately**.

#### Changes to the Stacksync Service Consumption Table <a href="#changes-to-the-stacksync-service-consumption-table" id="changes-to-the-stacksync-service-consumption-table"></a>

Stacksync may periodically update this Service Consumption Table. When updates are made, the **“effective date”** at the top of the document will be revised.

* For **Capacity Purchase plans**, the updated table will apply upon renewal or when entering a new Order Form after the changes go into effect. This holds true if no other agreement between the parties supersedes this Service Consumption Table.
* For **Monthly Purchases/Plans**, the updates will apply in the first Billing Period following the new effective date.

If a material change is made, Stacksync will make reasonable efforts to notify you through the Stacksync dashboard or via email prior to the update taking effect.

#### Benefits per plan <a href="#benefits-per-plan" id="benefits-per-plan"></a>

Each Plan offers specific benefits as detailed below. Not all features are available in every contract. For Enterprise Plans, benefits are customized and not universally included. Refer to your Order Form for specific entitlements.

| Feature                                      | Starter               | Pro                   | Enterprise                         |
| -------------------------------------------- | --------------------- | --------------------- | ---------------------------------- |
| **Two-way sync**                             |                       |                       |                                    |
| Number of Syncs                              | 1                     | 3                     | Unlimited                          |
| Synced records                               | 50K                   | 1M                    | Custom                             |
| Real-time data sync                          | ✓                     | ✓                     | ✓                                  |
| One-way syncs                                | ✓                     | ✓                     | ✓                                  |
| Two-way syncs                                | ✓                     | ✓                     | ✓                                  |
| Automatic data backfill                      | ✓                     | ✓                     | ✓                                  |
| Edit sync configuration                      | ✓                     | ✓                     | ✓                                  |
| Sync event triggers                          | ✓                     | ✓                     | ✓                                  |
| Issues dashboard                             | ✓                     | ✓                     | ✓                                  |
| Sync statistics and metrics                  | ✓                     | ✓                     | ✓                                  |
| Smart API rate limits                        | ✓                     | ✓                     | ✓                                  |
| Basic connectors                             | ✓                     | ✓                     | ✓                                  |
| Enterprise connectors                        | -                     | -                     | ✓                                  |
| Early access to preview integrations         | -                     | ✓                     | ✓                                  |
| **Workflow automation**                      |                       |                       |                                    |
| Number of workflows                          | 5                     | 25                    | Unlimited                          |
| Workflow executions                          | 10K                   | 1M                    | Custom                             |
| Configure workflow with YAML/JSON files      | ✓                     | ✓                     | ✓                                  |
| Asynchronous workflow executions             | ✓                     | ✓                     | ✓                                  |
| Synchronous workflow executions              | ✓                     | ✓                     | ✓                                  |
| Replay failed workflows                      | ✓                     | ✓                     | ✓                                  |
| Workflow versioning                          | ✓                     | ✓                     | ✓                                  |
| Log explorer                                 | ✓                     | ✓                     | ✓                                  |
| Store logs in your own storage               | -                     | -                     | ✓                                  |
| Managed ultra-scalable message queues        | 1k events /min /queue | 5k events /min /queue | 10M events /min /queue             |
| Number of managed queues                     | 1                     | 5                     | Unlimited                          |
| Variables and Secrets                        | ✓                     | ✓                     | ✓                                  |
| Basic connectors                             | ✓                     | ✓                     | ✓                                  |
| Enterprise connectors                        | -                     | -                     | ✓                                  |
| **API management suite**                     |                       |                       |                                    |
| API proxy                                    | ✓                     | ✓                     | ✓                                  |
| API proxy access                             | ✓                     | ✓                     | ✓                                  |
| API proxy - rate limit                       | 50k calls/day         | 150k calls/day        | Unlimited                          |
| **Platform**                                 |                       |                       |                                    |
| Collaborators per workspace                  | 3                     | Unlimited             | Unlimited                          |
| Select processing region                     | Basic                 | Extended              | All (including custom regions)     |
| Select cloud provider (GCP, AWS, or Azure)   | -                     | -                     | ✓                                  |
| Monitoring dashboard                         | -                     | ✓                     | ✓                                  |
| Log retention policy                         | 1 day                 | 7 days                | 30 days                            |
| SLAs                                         | -                     | -                     | ✓                                  |
| Notification and alerting                    | Email                 | Email                 | Email, Slack, WhatsApp, PagerDuty  |
| Environments (e.g. Dev, Staging, Production) | 1                     | 1                     | 3                                  |
| "No data retention" policy                   | ✓                     | ✓                     | ✓                                  |
| On-premise deployment                        | -                     | -                     | ✓                                  |
| GovCloud solutions                           | -                     | -                     | ✓                                  |
| White label platform                         | -                     | -                     | ✓                                  |
| **Security**                                 |                       |                       |                                    |
| Passwordless and social logins               | ✓                     | ✓                     | ✓                                  |
| MFA                                          | -                     | ✓                     | ✓                                  |
| SSO & SCIM                                   | -                     | -                     | ✓                                  |
| RBAC (Role Based Access Control)             | ✓                     | ✓                     | ✓                                  |
| SSH tunneling                                | ✓                     | ✓                     | ✓                                  |
| Reverse SSH tunnels (annual contract only)   | -                     | -                     | ✓                                  |
| IP whitelisting                              | -                     | ✓                     | ✓                                  |
| SSL certificates                             | -                     | ✓                     | ✓                                  |
| VPC peering                                  | -                     | -                     | ✓                                  |
| VPN gateway                                  | -                     | -                     | ✓                                  |
| AWS Transit gateway                          | -                     | -                     | ✓                                  |
| GCP CloudSQL proxy                           | -                     | -                     | ✓                                  |
| Private networking for AWS/Azure/Google      | -                     | -                     | ✓                                  |
| **Compliance**                               |                       |                       |                                    |
| SOC2 type 2                                  | ✓                     | ✓                     | ✓                                  |
| GDPR                                         | ✓                     | ✓                     | ✓                                  |
| CCPA                                         | ✓                     | ✓                     | ✓                                  |
| ISO27001                                     | -                     | ✓                     | ✓                                  |
| HIPAA                                        | -                     | ✓                     | ✓                                  |
| **Extensibility**                            |                       |                       |                                    |
| Stacksync's Management API                   | -                     | ✓                     | ✓                                  |
| Configuration as code (for Syncs)            | -                     | ✓                     | ✓                                  |
| Configuration as code (for Workflows)        | -                     | ✓                     | ✓                                  |
| **Support**                                  |                       |                       |                                    |
| Documentation                                | ✓                     | ✓                     | ✓                                  |
| Slack community                              | ✓                     | ✓                     | ✓                                  |
| Dedicated Slack support channel              | -                     | ✓                     | ✓                                  |
| Email, Chat and phone. Up to 24/7 support.   | -                     | -                     | ✓                                  |
| Solutions Architect                          | On Demand             | On Demand             | Dedicated during setup and monthly |


# Global Employee and Applicant Privacy Notice

Privacy notice for our recruiting activities and HR efforts.

Last updated: February 25, 2023.

#### Permission to process personal data by Stacksync <a href="#permission-to-process-personal-data-by-stacksync" id="permission-to-process-personal-data-by-stacksync"></a>

By submitting an application for an open position with Stacksync, whether via our career page or via external platforms such as Indeed, LinkedIn, or Xing, you express your interest in taking up work with us. In this context, you transmit personal data, which we will use and store exclusively for your job search and application process.

This data privacy statement refers exclusively to data collected as part of the online application process. It explains how we handle your personal data.

#### The controller <a href="#the-controller" id="the-controller"></a>

The controller under data protection law is:

Stacksync SA

1 rte d’Eguechaudens

1030 Bussigny, Vaud, Switzerland

Commercial register entry number: HRB 211731

Registration Court: Lausanne Local Court

Data Protection Officer contact: <dpo@stacksync.com>

#### Personal data collected as part of the application process <a href="#personal-data-collected-as-part-of-the-application-process" id="personal-data-collected-as-part-of-the-application-process"></a>

Personal data means any information concerning the personal or material circumstances of an identified or identifiable individual. This includes information such as, for example, your name, address, telephone number, and date of birth. It also includes data relating to your career history by reference to which a specific individual can be identified with reasonable effort. However, information which cannot be (in)directly associated with your real-life identity is not personal data.

In particular, the following data is collected during this process:

* Name (first and last names)
* Email address
* Phone number
* LinkedIn profile (optional)
* Channel through which you found us
* Any information typically detected by senses (e.g., audio conversations)

Furthermore, you can choose to send us expressive documents such as a cover letter, your CV and reference letters. These may contain additional personal data such as date of birth, address, etc.

#### How does the Company collect data? <a href="#how-does-the-company-collect-data" id="how-does-the-company-collect-data"></a>

1. The Company mainly collects and records your personal data from you. You will provide this information directly to your managers or local Human Resources contact, or enter it into our systems, through your participation in HR processes, emails and instant messages you send, or through verbal information which is recorded electronically or manually. In addition, further information about you will come from your managers, Human Resources, or occasionally your colleagues.
2. We also obtain some information from third parties: for example, references from a previous employer, medical reports from external professionals, information from tax authorities, benefit providers or where we employ a third party to carry out a background check (where permitted by applicable law) or occasionally from customers.
3. In some circumstances, data is collected indirectly from monitoring devices or by other means (for example, building and location access control and monitoring systems, CCTV, telephone logs and recordings, instant message logs and email and Internet access logs), if and to the extent permitted by applicable laws. In these circumstances, the data may be collected by the Company or a third party provider of the relevant service. This type of data is generally not accessed on a routine basis but access is possible.
4. Some data may be obtained from publicly accessible sources.
5. In the event that particular information is required by contract or statute, this will be indicated at the time of collection. We will also let you know if there are consequences to not providing the requested information. Failure to provide some information will mean that we cannot carry out certain HR processes. For example, if you do not provide us with your bank details, we will not be able to pay you. In some cases, it may mean that we are unable to continue with your employment or engagement as the Company will not have the personal data we believe to be necessary for the effective and efficient administration and management of our relationship with you.

#### Use of your personal data <a href="#use-of-your-personal-data" id="use-of-your-personal-data"></a>

During the application process, your personal data will be stored, evaluated, processed or forwarded internally within Stacksync. Only authorized HR staff and/or staff involved in the application process have access to your data. The personal data is stored, as a rule, exclusively for the purpose of filling the vacancy for which you have applied.

The data may be used and processed for statistical purposes (e.g. reporting). Any conclusions drawn will not be related to individual persons.

If you are employed at Stacksync, your personal data are collected and processed for various business purposes, in accordance with applicable laws and any applicable collective bargaining agreements. We have set out in this Notice the purposes we may use your personal data for. Data may occasionally be used for purposes not obvious to you where the circumstances warrant such use (e.g., in investigations or disciplinary proceedings). We may, where we think it is necessary, provide you with additional information in relevant HR policies to ensure that you understand how your personal data may be used.

#### Rights of data subjects <a href="#rights-of-data-subjects" id="rights-of-data-subjects"></a>

If Stacksync as the controller processes personal data, you as the data subject have certain rights under Chapter III of the EU General Data Protection Regulation (GDPR), depending on the legal basis and the purpose of the processing, in particular the right of access (article 15 of the GDPR) and the rights to rectification (article 16 of the GDPR), erasure (article 17 of the GDPR), restriction of processing (article 18 of the GDPR), and data portability (article 20 of the GDPR), as well as the right to object (article 21 of the GDPR). If the personal data is processed with your consent, you have the right to withdraw this consent under article 7 III of the GDPR. To assert your rights as a data subject in relation to the data processed for the purpose of operating this recruitment website, please refer to Stacksync’s Data Protection Officer (see above).

#### Personal data storage <a href="#personal-data-storage" id="personal-data-storage"></a>

Your data will be stored for a period of 12 months after the application process has been concluded. This is usually done to fulfill legal requirements and/or to defend ourselves against any claims arising from legal provisions. After this period, we are obligated to delete or anonymize your data. In case of anonymization, the data will only be available to us in the form of so-called metadata, without any direct personal reference, for statistical analysis (for example, share of male and/or female applicants, number of applications per specified period of time, etc.).

Furthermore, we reserve the right to store your data for 36 months after the application process has been concluded for the purpose of adding it to our Talent Pool in order to identify any other vacancies that may be of interest to you. This includes, for example, applications for apprenticeships or internships. By accepting the data privacy statement, you consent to any further storage of your data as well as its inclusion in our Talent Pool.

Should you be offered and accept a position with us during the application process, we will store the personal data collected as part of the application process for at least the duration of your employment.

You will not be notified directly when your data has been deleted.

#### Concluding provisions <a href="#concluding-provisions" id="concluding-provisions"></a>

Stacksync reserves the right to adjust this data privacy statement at any point in time to ensure that it is in line with the current legal requirements at all times, or in order to accommodate changes in the services offered, for example when new services are introduced. In this case, the new data privacy statement applies to any later visit of this recruitment website or any later job application.

If you have any questions, feel free to contact us at <privacy@stacksync.com>.


# Acceptable Use Policy (AUP)

### Stacksync Workspace & Cloud Identity Acceptable Use Policy <a href="#stacksync-workspace-and-cloud-identity-acceptable-use-policy" id="stacksync-workspace-and-cloud-identity-acceptable-use-policy"></a>

Last modified: October 31, 2025.

Use of the Services is subject to this Acceptable Use Policy ("AUP").

If not defined here, capitalized terms have the meaning stated in the applicable contract ("Agreement") between the customer, reseller, or other authorized user ("You") and Stacksync.

You agree not to, and not to allow third parties or Your End Users to, use the Services:

* to generate or facilitate unsolicited bulk commercial “spamming” operations;
* to violate, or encourage the violation of, the legal rights of others;
* to engage in, promote, or encourage illegal activity, including child sexual exploitation, child abuse, or terrorism or violence that can cause death, serious harm, or injury to individuals or groups of individuals;
* for any unlawful, invasive, infringing, defamatory, or fraudulent purpose including Non-consensual Explicit Imagery (NCEI), violating intellectual property rights of others, phishing, or creating a pyramid scheme;
* to distribute viruses, worms, Trojan horses, corrupted files, hoaxes or other items of a destructive or deceptive nature;
* to gain unauthorized access to, disrupt, or impair the use of the Services, or the equipment used to provide the Services, by customers, authorized resellers, or other authorized users;
* to alter, disable, interfere with or circumvent any aspect of the Services, Software, or the equipment used to provide the Services;
* to test or reverse-engineer the Services in order to find limitations or vulnerabilities, or to evade filtering capabilities;
* to grant multiple individuals access to an individual End User Account other than via the delegation and sharing features provided within the Services;
* to create End User Accounts assigned to business functions rather than to human beings for the purpose of sharing data within or outside of the domain;
* to use or resell End User Accounts, or parts thereof, as added into a commercial product offered to third parties (without the consent of Stacksync). It is also forbidden to do so in order to benefit from bulk discounts obtained from the common use of the same billing entity between different otherwise distinct business entities or companies;
* to process data of any kind without consent if such consent is required by applicable laws and regulations (You are solely responsible for ensuring compliance with all applicable laws and regulations in the relevant jurisdiction(s));
* to use the Services, or any interfaces provided with the Services, to access any other Stacksync product or service in a manner that violates the terms of service of such other Stacksync product or service.

Your failure to comply with the AUP may result in suspension or termination, or both, of the Services pursuant to the Agreement. You are solely responsible for any data you or your End Users transmit, process, or store through the Services. Stacksync will not be liable for, and You agree to indemnify and hold Stacksync harmless from, any claims, damages, or losses arising from the content, nature, or legality of such data or its transfer.


# Data Processing Addendum (DPA)

Updated March 2, 2024.

This Data Processing Addendum ("DPA") is incorporated into and forms part of the terms and conditions of the Stacksync Terms and Conditions, Service Consumption Tables, or other agreement under which Stacksync Inc. ("Stacksync") provides services to Customer ("Agreement") executed between the party identified as the "Customer" and Stacksync. This DPA is supplemental to the Agreement and sets out the roles and obligations that apply when Stacksync processes Personal Data on behalf of Customer in connection with Customer's use of Stacksync’s services ("Services"). If there is any conflict between the Agreement and this DPA, the terms of this DPA will prevail to the extent of such conflict. Any capitalized terms not defined in this DPA will have the meanings given to them in the Agreement.

1\. Definitions. For the purpose of this DPA:

1.1 "controller", "processor", "data subject", "personal data" and "processing" (and "process") will have the meanings given in EU/UK Data Protection Law;

1.2 "Applicable Data Protection Law" means all worldwide data protection and privacy laws and regulations applicable to the Personal Data in question, including, where applicable, EU/UK Data Protection Law, US Data Protection Law, Serbian Data Protection Law, Canadian Data Protection Law, and the Swiss DPA;

1.3 “Breach” means an accidental or unlawful destruction, loss, alteration, or unauthorised disclosure or access that is in violation of Stacksync’s security obligations under this Agreement by Stacksync or its agents of which Stacksync becomes aware. Breach will not include an unsuccessful Breach, which is one that results in no unauthorized access to Personal Data or to any Stacksync equipment or facilities storing the Personal Data, and could include (without limitation) pings and other broadcast attacks of firewalls or edge servers, port scans, unsuccessful log-on attempts, denial of service attacks, packet sniffing (or other unauthorized access to traffic data that does not result in access beyond headers) or similar incidents;

1.4 "Canadian Data Protection Law" means: (i) the Personal Information Protection and Electronic Documents Act S.C. 2000, c. 5; (ii) applicable provincial law; (iii) any and all applicable data protection laws made under, pursuant to or that apply in conjunction with any of (i) or (ii); in each case as may be amended or superseded from time to time;

1.5 “Data Privacy Framework” means the EU-US Data Privacy Framework, the UK extension to the EU-US Data Privacy Framework, and the Swiss-US Data Privacy Framework self-certification program operated by the US Department of Commerce;

1.6 “Data Privacy Principles” means the Data Privacy Framework principles (as supplemented by the Supplemental Principles);

1.7 "EU/UK Data Protection Law" means: (i) Regulation 2016/679 of the European Parliament and of the Council on the protection of natural persons with regard to the Processing of Personal Data and on the free movement of such data (General Data Protection Regulation) (the "EU GDPR"); (ii) the EU GDPR as saved into United Kingdom law by virtue of section 3 of the United Kingdom's European Union (Withdrawal) Act 2018 (the "UK GDPR"); (iii) the EU e-Privacy Directive (Directive 2002/58/EC); and (iv) any and all applicable national data protection laws made under, pursuant to or that apply in conjunction with any of (i), (ii) or (iii); in each case as may be amended or superseded from time to time;

1.8 "US Data Protection Law" means: (i) the California Consumer Privacy Act of 2018, including as amended by the California Privacy Rights Act of 2020, codified at Cal. Civ. Code §1798.100 et seq., upon the CPRA’s enforcement date of July 1, 2023 (together with its implementing regulations) (“CPRA”); (ii) the Virginia Consumer Data Protection Act; (iii) the Colorado Privacy Act; (iv) the Connecticut Personal Data Privacy and Online Monitoring Act; (v) the Utah Consumer Privacy Act; (vi) the Iowa Consumer Data Protection Act; (vii) the Indiana Consumer Data Protection Act; (viii) the Tennessee Information Protection Act; (ix) the Montana Consumer Data Privacy Act; (x) the Texas Data Privacy and Security Act; (xi) the Oregon Consumer Privacy Act; (xii) the Delaware Personal Data Privacy Act; and (xiii) any and all applicable comprehensive state data protection laws and regulations that are or are not yet in effect as of the Effective Date; in each case as may be amended or superseded from time to time;

1.9 "Serbian Data Protection Law" means: Law on Personal Data Protection (Zakon o zaštiti podataka o ličnosti; Official Gazette of the Republic of Serbia, no 87/2018). In the case of a transfer of Personal Data to a Non-Adequate Country, by entering into this DPA, the Customer is entering into the Serbian Standard Contractual Clauses (“Serbian SCCs”) as adopted by the "Serbian Commissioner for Information of Public Importance and Personal Data Protection", published at <https://www.poverenik.rs/images/stories/dokumentacija-nova/podzakonski-akti/Klauzulelat.docx> to provide an adequate level of protection. References to the Standard Contractual Clauses in this DPA will include the Serbian SCCs. Information required to complete Appendices 1 to 8 of the Serbian SCCs for the purpose of governing the transfer of Personal Data to a Non-Adequate Country can be found in this DPA and accompanying appendices;

1.10 “Supplemental Principles” will have the meaning given in the Data Privacy Framework;

1.11 "Standard Contractual Clauses" means: (i) where the EU GDPR or Swiss DPA applies, the contractual clauses annexed to the European Commission's Implementing Decision 2021/914 of 4 June 2021 on standard contractual clauses for the transfer of Personal Data to third countries pursuant to Regulation (EU) 2016/679 of the European Parliament and of the Council ("EU SCCs"); and (ii) where the UK GDPR applies, standard data protection clauses adopted pursuant to or permitted under Article 46 of the UK GDPR ("UK SCCs"); and (iii) where Serbian Data Protection Law applies, the Serbian SCCs; and

1.12 "Swiss DPA" means the revised Swiss Federal Act on Data Protection enacted on September 25, 2020, and effective on September 1, 2023, as may be amended or superseded from time to time.

2\. Relationship of the parties: Customer instructs Stacksync to process the personal data described in Annex I (the "Personal Data") on its behalf. In respect of such processing, Customer will be the controller (or, where Customer is instructing Stacksync on behalf of a third party controller, a processor on behalf of that controller) and Stacksync will be a processor (or, where Customer is a processor on behalf of a third party controller, Stacksync will be a subprocessor to Customer). Each party will comply with the obligations that apply to it under Applicable Data Protection Law.

3\. Purpose limitation: Stacksync will process Personal Data for the purposes described in Annex I and strictly in accordance with the documented instructions of Customer (which instructions, where Customer is a processor, will reflect the instructions of its controller) (the "Permitted Purpose"), except where otherwise required by law(s) that are not incompatible with Applicable Data Protection Law. In no event will Stacksync process Personal Data for its own purposes or those of any third party. Stacksync will immediately inform Customer (who, where Customer is a processor, will inform its controller) if it becomes aware that such processing instructions infringe Applicable Data Protection Law.

4\. Cross-border transfer mechanisms:

4.1 Order of precedence: To the extent Customer’s use of the Services requires an onward transfer mechanism to lawfully transfer personal data from a jurisdiction to Stacksync located outside of that jurisdiction (“Transfer Mechanism”), the terms set forth in this Section 4 will apply. In the event the Services are covered by more than one Transfer Mechanism, the transfer of Personal Data will be subject to a single Transfer Mechanism, as applicable, and in accordance with the following order of precedence: (i) the Data Privacy Framework as set forth in Section 4.2 (Data Privacy Framework) of this DPA; (ii) Standard Contractual Clauses as set forth in Section 4.3 (Standard Contractual Clauses) of this DPA; and, if neither (i) nor (ii) is applicable, then (iii) other applicable data Transfer Mechanisms permitted under Applicable Data Protection Law.

4.2 Data Privacy Framework: To the extent Stacksync processes any Personal Data via the services subject to EU/UK Data Protection Law and/or Swiss DPA, Stacksync represents that it is self-certified under the Data Privacy Framework and complies with the Data Privacy Principles when processing any such Personal Data. To the extent that Customer is either located in the United States of America and is self-certified under the Data Privacy Framework or subject to EU/UK Data Protection Law and/or Swiss DPA, Stacksync further agrees to (i) provide at least the same level of protection to any Personal Data as required by the Data Privacy Principles; (ii) notify Customer in writing, without undue delay, if its self-certification to the Data Privacy Framework is withdrawn, terminated, revoked, or otherwise invalidated; and (iii) upon written notice, work with Customer to take reasonable and appropriate steps to stop and remediate any unauthorized processing of Personal Data.

4.3 Standard Contractual Clauses: For cross-border data transfers that are subject to Standard Contractual Clauses, the Standard Contractual Clauses will be deemed entered into, and incorporated into this DPA by this reference, and completed as follows:

4a. in relation to Personal Data that is protected by the EU GDPR, the EU SCCs will apply completed as follows:

(i) Module Two will apply to the extent that Customer is a controller of Personal Data, and Module Three will apply to the extent that Customer is a processor of Personal Data on behalf of a third party controller;

(ii) in Clause 7, the optional docking clause will not apply;

(iii) in Clause 9, Option 2 will apply, and the time period for prior notice of subprocessor changes will be as set out in Clause 8 of this DPA;

(iv) in Clause 11, the optional language will not apply;

(v) in Clause 17, Option 1 will apply, and the EU SCCs will be governed by Republic of Ireland law;

(vi) in Clause 18(b), disputes will be resolved before the courts of the Republic of Ireland;

(vii) Annex I of the EU SCCs will be deemed completed with the information set out in Annex I to this DPA;

(viii) Annex II of the EU SCCs will be deemed completed with the information set out in Annex II to this DPA; and

(ix) Annex III of the EU SCCs will be deemed completed with the information set out in Annex III to this DPA.

4b. in relation to Personal Data that is protected by the UK GDPR, the UK SCCs will apply completed as follows:

(i) for so long as Customer and Stacksync are lawfully permitted to rely on the EU SCCs for transfers of Personal Data from the United Kingdom subject to completion of a “UK Addendum to the EU Standard Contractual Clauses” (“UK Addendum”) issued by the Information Commissioner’s Office under s.119A(1) of the Data Protection Act 2018, then:

A. The EU SCCs, completed as set out above in Section 4.3(a) of this DPA will also apply to transfers of such Personal Data, subject to sub-clauses (B) and (C) below;

B. The UK Addendum will be deemed executed between the transferring Customer and Stacksync, and the EU SCCs will be deemed amended as specified by the UK Addendum in respect of the transfer of such Personal Data; and

C. The optional illustrative indemnification clause will not apply.

(ii) if Customer and Stacksync are no longer permitted to rely on the EU SCCs and the UK Addendum, then the Customer and Stacksync will cooperate in good faith to implement appropriate safeguards for transfers of such Personal Data as required or permitted by the UK GDPR without undue delay;

4c. in relation to Personal Data that is protected by the Swiss DPA, the EU SCCs will apply as set out in 4.3(a), amended as follows:

(i) references to ‘Regulation (EU) 2016/679’ in the EU SCCs will be deemed to refer to the Swiss DPA;

(ii) references to specific articles of ‘Regulation (EU) 2016/679’ will be deemed replaced with the equivalent article or section of the Swiss DPA;

(iii) references to ‘EU’, ‘Union’ and ‘Member State’ will be deemed replaced with ‘Switzerland’;

(iv) references to the ‘competent supervisory authority’ and ‘competent courts’ are replaced with the ‘Swiss Federal Data Protection Information Commissioner’ and ‘applicable courts of Switzerland’ (as applicable);

(v) in Clause 17, the EU SCCs will be governed by the laws of Switzerland; and

(vi) in Clause 18(b), disputes will be resolved before the competent courts of Switzerland.

4d. in the event that any provision of the Agreement (including this DPA) contradicts, directly or indirectly, the Standard Contractual Clauses, the Standard Contractual Clauses will prevail.

5\. Onward transfers: Stacksync will not participate in (nor permit any subprocessor to participate in) any other cross-border transfers of Personal Data (whether as an exporter or an importer of Personal Data) unless it has taken such measures as are necessary to ensure the transfer is in compliance with Applicable Data Protection Law. Without prejudice to the foregoing, Customer consents to cross-border transfers of Personal Data where Stacksync has implemented a transfer solution compliant with Applicable Data Protection Law.

6\. Confidentiality of processing: Stacksync will take appropriate measures to ensure the confidentiality of Personal Data as outlined in the Agreement.

7\. Security: Stacksync will implement appropriate technical and organisational measures to protect the Personal Data from a Breach. Such measures will have regard to the state of the art, the costs of implementation and the nature, scope, context and purposes of processing as well as the risk of varying likelihood and severity for the rights and freedoms of natural persons. Such measures will include, as appropriate:

(a) the pseudonymisation and encryption of Personal Data;

(b) the ability to ensure the ongoing confidentiality, integrity, availability and resilience of processing systems and services;

(c) the ability to restore the availability and access to Personal Data in a timely manner in the event of a physical or technical incident;

(d) a process for regularly testing, assessing and evaluating the effectiveness of technical and organisational measures for ensuring the security of the processing;

(e) at a minimum, such measures will include the measures identified in Annex II.

8\. Subprocessing: Stacksync will not subcontract any processing of the Personal Data to a third party subprocessor without the prior written consent of Customer, which consent, where Customer is a processor, will reflect the instructions of its controller. Notwithstanding this, Customer consents to Stacksync engaging third party subprocessors to process the Personal Data provided that: (i) Stacksync provides at least 5 days' prior written notice of the addition or removal of any subprocessor (including details of the processing it performs or will perform), which will also include posting detail of such addition or removal at the following URL:&#x20;

<https://docs.stacksync.com/security-and-other-resources/security/subprocessors>; and (ii) Stacksync imposes data protection terms on any subprocessor it appoints that protect the Personal Data, in substance, to the same standard provided for by this DPA. A list of approved subprocessors as of the date of this DPA is attached at Annex III, and Stacksync will maintain and provide updated copies of this list to Customer when it adds or removes subprocessors in accordance with this Section. If Customer refuses to consent to Stacksync's appointment of a third party subprocessor on reasonable grounds relating to the protection of the Personal Data, then either Stacksync will not appoint the subprocessor or Customer may elect to suspend or terminate the Agreement.

9\. Cooperation and data subjects' rights: Stacksync will provide all reasonable and timely assistance to Customer (at Customer's expense) to enable Customer (or, where Customer is a processor, its controller) to respond to: (i) any request from a data subject to exercise any of its rights under Applicable Data Protection Law (including its rights of access, correction, objection, erasure and data portability, as applicable); and (ii) any other correspondence, enquiry or complaint received from a data subject, regulator or other third party in connection with the processing of Personal Data. In the event that any such request, correspondence, enquiry or complaint is made directly to Stacksync, Stacksync will (unless prohibited by applicable law) promptly inform Customer (who, where Customer is a processor, will in turn inform its controller) providing full details of the same.

10\. Data Protection Impact Assessment: Stacksync will provide Customer with all such reasonable and timely assistance (at Customer’s expense) as Customer may require in order to enable it (or, where Customer is a processor, to enable its controller) to conduct a data protection impact assessment in accordance with Applicable Data Protection Law including, if necessary, assistance to Customer (or, where Customer is a processor, its controller) to consult with its relevant data protection authority.

11\. Breach notification: Upon becoming aware of a Breach, Stacksync will inform Customer (who, where Customer is a processor, will in turn inform its controller) without undue delay and will provide all such timely information and cooperation as Customer may require in order for Customer (or, where Customer is a processor, its controller) to fulfil its data breach reporting obligations under (and in accordance with the timescales required by) Applicable Data Protection Law. Stacksync will further take all such measures and actions as are necessary to remedy or mitigate the effects of the Breach and will keep Customer informed of all material developments in connection with the Breach.

12\. Deletion or return of Data: After a written request by Customer or the termination or expiration of the Agreement, Stacksync will destroy or return to Customer all Personal Data in its possession or control. This requirement will not apply to the extent that Stacksync: (i) is required by any applicable law to retain some or all Personal Data; and/or (ii) retains Personal Data in its backup systems until the backups have been overwritten or expunged in accordance with Stacksync’s backup policy; provided that, in the event of either (i) or (ii), Stacksync will isolate and protect Personal Data from any further processing except to the extent required until deletion is possible. Until Personal Data is deleted or returned, Stacksync will continue to ensure compliance with its security and privacy obligations in the Agreement and this DPA.

13\. Audit: Customer (and, where Customer is a processor, its controller) acknowledges that Stacksync is currently undergoing the preparation to obtain certifications and be audited against ISO 27001, and SOC 2 by independent third party auditors. Upon request, Stacksync will supply a summary copy of its audit report(s) to Customer (and, where Customer is a processor, its controller), which report(s) will be subject to the confidentiality provisions of the Agreement. Stacksync will also respond to any written audit questions submitted to it by Customer and meet by teleconference or in person (at Customer’s expense) to address follow up questions (and, where Customer is a processor, its controller), provided that Customer (and, where Customer is a processor, its controller) will not exercise this right more than once per year, except if and when required by instruction of a competent data protection authority.

14\. Processing in accordance with US Data Protection law:

14.1 Processing Of Personal Data: Customer appoints Stacksync as a processor (or, where Customer is a processor, Customer appoints Stacksync as a sub-processor) to process Personal Data only for the Business Purposes (as defined by CPRA) listed in Customer’s instructions under Annex I. Processing by Stacksync is outlined in Annex I that sets out the processing instructions to which Stacksync is bound, including the nature and purpose of the processing, the type of Personal Data subject to the processing, and the duration of the processing. Stacksync will adhere to Customer instructions as outlined in Section 3 and Annex I, and Stacksync will assist Customer in meeting its obligations under US Data Protection Law. Stacksync will comply with all applicable sections of US Data Protection Law, including providing the same level of protection for Personal Data as US Data Protection Law requires Customer to provide. Taking into account the nature of processing and the information available to Stacksync, Stacksync will assist Customer by:

(a) taking appropriate technical and organizational measures, insofar as this is possible, for the fulfillment of the controller's obligation to respond to data subject rights requests as outlined in Section 9;

(b) helping Customer meet its obligations in relation to the security of processing Personal Data and in relation to the notification of a breach of the security of the system as outlined in Section 7, Section 11, and Annex II;

(c) providing information to Customer necessary to enable Customer to conduct and document any data protection assessments as outlined in Section 10. Customer and Stacksync are each responsible for only the measures allocated to them;

(d) ensuring that each person processing Personal Data is subject to a duty of confidentiality with respect to Personal Data as outlined in Annex II; and

(e) after providing Customer an opportunity to object, engaging any subprocessor pursuant to a written contract in accordance with Section 8 that requires the subprocessor to meet the obligations of Stacksync with respect to Personal Data.

14.2 Security measures: Taking into account the context of processing, Customer and Stacksync will implement appropriate technical and organizational measures to ensure a level of security appropriate to the risk and establish a clear allocation of the responsibilities between them to implement the measures as outlined in Annex II.

14.3 Deletion or return of Personal Data: Stacksync will delete or return all Personal Data to Customer at the end of the provision of services as outlined in Section 12.

14.4 Audit rights: Stacksync grants Customer the right to take reasonable and appropriate steps to help ensure that Stacksync uses Personal Data consistent with US Data Protection Law and to stop and remediate unauthorized use of Personal Data. Stacksync will, upon the reasonable request of Customer, make available to Customer all information in its possession necessary to demonstrate Stacksync's compliance as outlined in Section 13. Stacksync will allow an audit of Stacksync's policies and technical and organizational measures in support of the obligations under US Data Protection Law and will provide a report of the audit to Customer upon request as outlined in Section 13.

14.5 Restrictions On Processing Personal Data: Stacksync is prohibited from: (i) processing Personal Data for any purposes but for the Business Purposes unless otherwise expressly permitted by US Data Protection Law; (ii) processing Personal Data for any additional commercial purpose (other than the Business Purposes) including in the servicing of a different business unless otherwise expressly permitted by US Data Protection Law; (iii) processing Personal Data outside the direct business relationship between Customer and Stacksync unless otherwise expressly permitted by US Data Protection Law; (iv) Selling or Sharing (as both are defined by CPRA) Personal Data; (v) combining Personal Data with Personal Data that it receives from, or on behalf of, another person or persons, or collects from its own interaction with a data subject unless otherwise expressly permitted by US Data Protection Law; or (vi) processing the Personal Data for any other purpose except as permitted by this DPA.

14.6 Inability To Comply With US Data Protection Law: Stacksync shall notify Customer after Stacksync determines that it no longer can meet its obligations under this DPA or US Data Protection Law. In the event of Stacksync’s inability to meet its obligations, Customer may, in its discretion; (i) take reasonable and appropriate steps to stop and remediate any unauthorized use of Personal Data; or (ii) terminate the Agreement.

14.7 Certification: Stacksync certifies that it understands and will comply with the restrictions set forth in this Section 14.

15\. System Data: Notwithstanding anything to the contrary in this Agreement, Stacksync may collect System Data and use such data internally to develop, improve, support, and operate its products and services. Stacksync’s use of System Data will comply with applicable data protection law. Stacksync may not share any System Data that includes Personal Data with a third party except to the extent the System Data is aggregated and anonymized such that Customer and Customer’s users cannot be identified.

16\. Local implementation agreement: If and when necessary to accommodate laws, regulations, and/or local business requirements in a particular country outside the United States, European Union, the European Economic Area and their member states, Switzerland and the United Kingdom, the parties may enter into a Local Implementation Addendum covering additional requirements under such laws that are not already addressed in the Agreement or this DPA.

17\. Personnel background checks: Prior to engaging any employee or contractor who may receive access to Personal Data, Stacksync will conduct a criminal history background check (modified as appropriate to comply with applicable law in countries outside the United States) covering the three-year period prior to the employment commencement date of such employee.

18\. Construction; Interpretation: This DPA is not a standalone agreement and is only effective if an Agreement is in effect between Stacksync and Customer. This DPA is part of the Agreement and is governed by its terms and conditions, including limitations of liability set forth therein. This DPA and the Agreement are the complete and exclusive statement of the mutual understanding of the parties and supersede and cancel all previous written and oral agreements and communications relating to the subject matter hereof. Headings contained in this DPA are for convenience of reference only and do not form part of this DPA.

19\. Severability: If any provision of this DPA is adjudicated invalid or unenforceable, this DPA will be amended to the minimum extent necessary to achieve, to the maximum extent possible, the same legal and commercial effect originally intended by the parties. To the extent permitted by applicable law, the parties waive any provision of law that would render any clause of this DPA prohibited or unenforceable in any respect.

20\. Amendment; Enforcement of rights: No modification of or amendment to this DPA, nor any waiver of any rights under this DPA, will be effective unless in writing signed by the parties to this DPA. The failure by either party to enforce any rights under this DPA will not be construed as a waiver of any rights of such party. This DPA may not be construed to create any right or cause of action on behalf of a third party, except to the minimum extent required available to data subjects under Applicable Data Protection Law.

21\. Assignment: This DPA may be assigned only in connection with a valid assignment pursuant to the Agreement. If the Agreement is assigned by a party in accordance with its terms, this DPA will be automatically assigned by the same party to the same assignee.

22\. Governing Law: This DPA will be governed by and construed in accordance with the laws of the jurisdiction governing the Agreement unless otherwise required by EU/UK Data Protection Law or Applicable Data Protection Law, in which case this DPA will be governed by the laws outlined in the relevant section of this DPA.

23\. Counterparts: This DPA may be executed and delivered by facsimile or electronic signature and in two or more counterparts, each of which will be deemed an original, but all of which together will constitute one and the same instrument.

24\. Supplementary terms to Standard Contractual Clauses

24.1 Documentation and compliance: For the purposes of Clause 8.9 the review and audit provisions in this DPA will apply.

24.2 Notification and transparency:

For purposes of Clause 8.3 – Modules 2 and 3 and Clause 15.1(a), the parties agree and acknowledge that it may not be possible for Stacksync to make the appropriate communications to data subjects and accordingly, Customer will (following notification by Stacksync) have the option to be the party who makes any communication to the data subject, and Stacksync will provide the level of assistance set out in this DPA.

24.3 Liability: For the purposes of Clause 12(a), the liability of the parties will be limited in accordance with the limitation of liability provisions in the Agreement. 

24.4 Signatories: Notwithstanding the fact that the Standard Contractual Clauses are incorporated herein by reference without being signed directly, Stacksync and Customer each agrees that their execution of the Agreement is deemed to constitute its execution of the Standard Contractual Clauses, and that it is duly authorized to do so on behalf of, and to contractually bind, the data exporter or data importer (as applicable) accordingly.

**Annex I**

**Data Processing Description**

This Annex I forms part of the DPA and describes the processing that the processor will perform on behalf of the controller.

A. LIST OF PARTIES

Controller(s) / Data exporter(s): \[Identity and contact details of the controller(s) /data exporter(s) and, where applicable, of its/their data protection officer and/or representative in the European Union]

| 1. | Name:                                                            | As provided by the Customer                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| -- | ---------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|    | Address:                                                         | As provided by the Customer                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
|    | Contact person’s name, position and contact details:             | As provided by the Customer                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
|    | Activities relevant to the data transferred under these Clauses: | Stacksync will process Customer personal data in order to facilitate the data transfer and synchronization of data between Customer’s data sources such as databases, data warehouses and business apps in a unidirectional or bidirectional data flow. The frequency and retention periods for which personal data may be stored will vary depending on Customer’s configuration of Stacksync’s Service and are described at <https://docs.stacksync.com/security-and-other-resources/security/overview-security> |
|    | Role (controller/processor):                                     | Controller/processor                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |

Processor(s) / Data importer(s): \[Identity and contact details of the processor(s) /data importer(s), including any contact person with responsibility for data protection]

| 1. | Name:                                                                     | Stacksync Inc.                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| -- | ------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|    | Address:                                                                  | 2611, 1007 N Orange St. 4th Floor , Wilmington, DE, New Castle, US, 19801                                                                                                                                                                                                                                                                                                                                                                                   |
|    | 2611, 1007 N Orange St. 4th Floor , Wilmington, DE, New Castle, US, 19801 | Data Protection Officer (DPO): Ruben Burdin; <privacy@stacksync.com>; <DPO@stacksync.com>                                                                                                                                                                                                                                                                                                                                                                   |
|    | Activities relevant to the data transferred under these Clauses:          | Stacksync will process Customer personal data in order to facilitate the data transfer and synchronization of data between Customer’s data sources such as databases, data warehouses and business apps in a unidirectional or bidirectional data flow. The frequency and retention periods for which personal data may be stored will vary depending on Customer’s configuration of Stacksync’s Service and are described at <https://docs.stacksync.com/> |
|    | Role (controller/processor):                                              | Processor/Sub-processor                                                                                                                                                                                                                                                                                                                                                                                                                                     |

В. DESCRIPTION OF TRANSFER

| Categories of data subjects whose Personal Data is transferred:                                                                                                                                                                                                                                                                                                                                                            | <p>Customer’s employees and consultants who use Stacksync’s Service.</p><p>Individuals whose Personal Data is stored in Customer’s data sources and processed by Stacksync.</p>                                                                                                                                                                                                                                                                                                                   |
| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Categories of Personal Data transferred:                                                                                                                                                                                                                                                                                                                                                                                   | <p>Stacksync may have access to Personal Data of Customer’s employees and consultants who use Stacksync’s Service.</p><p>Stacksync may have access to Personal Data of individuals whose Personal Data is stored in Customer’s data sources.</p><p>The types of Personal Data processed are determined by Customer and may include without limitation: Name, Email address, Physical address, IP-address and other online identifiers, Date of birth, Telephone/mobile number, Location Data.</p> |
| Sensitive data transferred (if applicable) and applied restrictions or safeguards that fully take into consideration the nature of the data and the risks involved, such as for instance strict purpose limitation, access restrictions (including access only for staff having followed specialised training), keeping a record of access to the data, restrictions for onward transfers or additional security measures: | As above                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| The frequency of the transfer (e.g. whether the data is transferred on a one-off or continuous basis):                                                                                                                                                                                                                                                                                                                     | <p>Duration of<br>account/agreement<br>life-cycle</p>                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| Nature of the processing:                                                                                                                                                                                                                                                                                                                                                                                                  | The data processing activities carried out by Stacksync under the Agreement                                                                                                                                                                                                                                                                                                                                                                                                                       |
| Purpose(s) of the data transfer and further processing:                                                                                                                                                                                                                                                                                                                                                                    | Stacksync will process Customer Personal Data in order to facilitate migration of data from Customer’s data sources into Customer’s data warehouse.                                                                                                                                                                                                                                                                                                                                               |
| The period for which the Personal Data will be retained, or, if that is not possible, the criteria used to determine that period:                                                                                                                                                                                                                                                                                          | The frequency and retention periods for which Personal Data may be stored will vary depending on Customer’s configuration of Stacksync’s Service and are described at <https://docs.stacksync.com/>                                                                                                                                                                                                                                                                                               |
| For transfers to (sub-) processors, also specify subject matter, nature and duration of the processing:                                                                                                                                                                                                                                                                                                                    | As outlined at <https://docs.stacksync.com/security-and-other-resources/security/subprocessors>                                                                                                                                                                                                                                                                                                                                                                                                   |

C. COMPETENT SUPERVISORY AUTHORITY

| Identify the competent supervisory authority/ies in accordance (e.g. in accordance with Clause 13 SCCs) | Irish Supervisory Authority (DPC) |
| ------------------------------------------------------------------------------------------------------- | --------------------------------- |

**Annex II**

**Technical and Organisational Security Measures**

Description of the technical and organisational measures implemented by the processor(s) / data importer(s) (including any relevant certifications) to ensure an appropriate level of security, taking into account the nature, scope, context and purpose of the processing, and the risks for the rights and freedoms of natural persons.

| Measure                                                                                                                                                                | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Measures of pseudonymisation and encryption of Personal Data                                                                                                           | <p>Technical and Organizational Security Measures</p><p>Description of the technical and organisational security measures implemented by Stacksync in accordance with Applicable Data Protection Law:</p><p>Stacksync security measures can be found on Stacksync's website at <a href="https://docs.stacksync.com/security-and-other-resources/security/overview-security"><https://docs.stacksync.com/security-and-other-resources/security/overview-security></a></p><p>Security measures include:</p><p>Transport layer security</p><ul><li>All data is transmitted to or from Stacksync over an encrypted protocol using industry-standard cryptographic protocols (TLS 1.2+)</li><li>Stacksync redirects unencrypted requests (HTTP) to an encrypted protocol (HTTPS)</li></ul><p>Physical & Environmental Security</p><p>The Stacksync services are hosted in Microsoft Azure, Google Cloud Platform (GCP), and Amazon Web Services (AWS), OVH and Scaleway. Hosting providers maintain physical & environmental security protections including:</p><ul><li>Physical access is restricted to approved employees based on the principle of least privilege</li><li>Multi-factor authentication when approved personnel access facilities</li><li>Closed Circuit Television Camera (CCTV) video recording of access points</li><li>Fire detection and suppression systems</li><li>Redundant infrastructure for power, networking, and cooling</li></ul><p>Logical Access controls</p><p>Logical access to the Stacksync services is restricted to employees based on the principle of least privilege. All access is formally approved and requires multi-factor authentication.</p><p>Access is removed in the event of employee termination or if the employee changes roles and no longer requires access, as well as being reviewed on a quarterly basis.</p> |
| Measures for ensuring ongoing confidentiality, integrity, availability and resilience of processing systems and services                                               | See previous section that outlines our controls                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| Measures for ensuring the ability to restore the availability and access to Personal Data in a timely manner in the event of a physical or technical incident          | See previous section that outlines our controls                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| Processes for regularly testing, assessing and evaluating the effectiveness of technical and organisational measures in order to ensure the security of the processing | Stacksync is currently undergoing the preparation to obtain certifications and be audited against ISO 27001, and SOC 2 by independent third party auditors. Upon request, Stacksync will supply a summary copy of its audit report(s) to Customer.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| Measures for user identification and authorisation                                                                                                                     | See the previous sections that outline our controls                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| Measures for the protection of data during transmission                                                                                                                | See the previous sections that outline our controls                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| Measures for the protection of data during storage                                                                                                                     | See the previous sections that outline our controls                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| Measures for ensuring physical security of locations at which Personal Data are processed                                                                              | See the previous sections that outline our controls                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| Measures for ensuring events logging                                                                                                                                   | See the previous sections that outline our controls                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| Measures for ensuring system configuration, including default configuration                                                                                            | See the previous sections that outline our controls                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| Measures for internal IT and IT security governance and management                                                                                                     | Stacksync is currently undergoing the preparation to obtain certifications and be audited against ISO 27001, and SOC 2 by independent third party auditors. Upon request, Stacksync will supply a summary copy of its audit report(s) to Customer.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| Measures for certification/assurance of processes and products                                                                                                         | Stacksync is currently undergoing the preparation to obtain certifications and be audited against ISO 27001, and SOC 2 by independent third party auditors. Upon request, Stacksync will supply a summary copy of its audit report(s) to Customer.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| Measures for ensuring data minimisation                                                                                                                                | <p>Processing of Customer Data</p><p>Data pipes for each customer are managed separately within the host environment. Stacksync does not store Customer Data, other than while in transit, except as described in <a href="https://docs.stacksync.com/security-and-other-resources/security/overview-security"><https://docs.stacksync.com/security-and-other-resources/security/overview-security></a>.</p><p>Stacksync does not control the host physical infrastructure. Stacksync relies on the fault-tolerant nature of Microsoft Azure, GCP and AWS across multiple availability zones, and can redeploy the platform to another region in case of catastrophic failure.</p><p>Except as described at <a href="https://docs.stacksync.com/security-and-other-resources/security/overview-security"><https://docs.stacksync.com/security-and-other-resources/security/overview-security></a>, Stacksync will process Customer Data within the region specified by Customer during configuration of the data pipe. Current geographic regions supported by Stacksync are found here: <a href="https://docs.stacksync.com/security-and-other-resources/security/overview-security"><https://docs.stacksync.com/security-and-other-resources/security/overview-security></a></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| Measures for ensuring data quality                                                                                                                                     | Based on the nature of the Stacksync services, Stacksync is a data pipeline, so the accuracy of the Personal Data depends on whether or not Customer has provided accurate information                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| Measures for ensuring limited data retention                                                                                                                           | Except as described at <https://docs.stacksync.com/security-and-other-resources/security/overview-security> Stacksync does not store Customer Data, other than while in transit.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| Measures for ensuring accountability                                                                                                                                   | Stacksync has a Data Protection Officer and a Chief Information Security Officer (the CTO, if CISO is not appointed).                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| Measures for allowing data portability and ensuring erasure                                                                                                            | Except as described at <https://docs.stacksync.com/security-and-other-resources/security/overview-security> Stacksync does not store Customer Data, other than while in transit.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |

For transfers to (sub-) processors, also describe the specific technical and organisational measures to be taken by the (sub-) processor to be able to provide assistance to the controller (and, for transfers from a processor to a sub-processor, to the data exporter).

| Measure              | Description                                                                                                                                                   |
| -------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Contractual language | Stacksync ensures that its subprocessors are subject to equivalent terms                                                                                      |
| Due Diligence        | Stacksync conducts due diligence on third parties, including necessary privacy and security reviews, such as privacy threshold and privacy impact assessments |

**Annex III**

**List of Subprocessors**

Stacksync’s current list of subprocessors may be found at <https://docs.stacksync.com/security-and-other-resources/security/subprocessors>


# Referral Program Policy

Refer and earn 15% revenue commission for 1 year on successful referrals with Stacksync!

Last updated: December 3rd, 2024

This referral program policy ("Policy") outlines the terms and conditions of the referral program offered by Stacksync Inc. ("Stacksync"). By participating in the referral program, you ("Referrer") agree to the terms and conditions set forth in this Policy.

### Eligibility

The referral program is open to all users of Stacksync who are 18 years of age or older, or incorporated companies. To participate, the Referrer must have an active account with Stacksync.

### Referral Process

To refer a new user to Stacksync, the Referrer must share their unique referral link with the potential new user. The referral link can be found in the Referrer's Stacksync account dashboard. The new user must sign up for a paid plan within 3 months of the registration date using the referral link provided by the Referrer.

Here are the do's for sharing your affiliate link:

* Share your affiliate link with your friends, family, and partners.
* Share your affiliate link on social media.
* Share your affiliate link on community channels.
* Share your affiliate link with your mailing list or anyone who might be interested in using Stacksync for their business needs.

The don'ts for the referral program are:

* Refer yourself (use your own affiliate link to sign up for Stacksync).
* Act on Stacksync's behalf.

### Referral Bonus

For every successful referral, the Referrer will receive a referral bonus equal to 15% of the revenue generated by the new user for Stacksync for a duration of 12 months starting from the subscription of a paid plan. The revenue generated is calculated based on the amount paid by the new user for their Stacksync subscription plan. Unpaid bills do not count towards the referral bonus.

### Payouts

Referral bonuses can be claimed 30 days after the new user has paid their bills. Payouts will be made to the Referrer's Stacksync account. The Referrer can use the payout towards their own Stacksync subscription plan or request a transfer to their bank account. Currency exchanges are applied, possibly with a fee. All banking fees resulting from the payment to the Referrer's bank account are to be borne by the Referrer.

### Misconduct

Any misconduct that is against reasonable behaviour according to the referral program policy can result in exclusion from the referral program and the cancellation of any payout still to be processed at any point. Stacksync reserves the right to exclude anyone from the referral program at any time without further reason to be provided.

### Conclusion

By participating in the referral program, the Referrer agrees to the terms and conditions set forth in this Policy. Stacksync reserves the right to modify this Policy at any time without prior notice. If you have any questions about the referral program or this Policy, please contact Stacksync support.


# Stacksync Certified Partner Program Terms and Conditions

Last updated: April 16, 2023.

These Terms and Conditions (the "Agreement") govern your participation in the Stacksync Certified Partner Program (the "Program") offered by Stacksync SA ("Stacksync"). By participating in the Program, you agree to be bound by this Agreement and any additional terms and conditions that Stacksync may adopt from time to time.

#### Program Description

The Program is designed to provide a platform for consulting partners, freelance consultants, and agencies ("Partners") to support customers who need assistance with the strategy or technical implementation of Stacksync's real-time and bidirectional data synchronization solution between CRMs and Databases. Stacksync will display Partners' logos and provide referrals to Partners who offer such services to customers.

#### Eligibility

Partners must meet the following eligibility criteria to participate in the Program:

1. Have experience and expertise in enterprise system integration, CRM integration, Data Warehousing, Data Activation and/or Cloud technologies
2. Agree to abide by this Agreement and any additional terms and conditions that Stacksync may adopt from time to time
3. Register for the Program on the Stacksync website and provide all requested information
4. Stacksync reserves the right to approve or reject any Partner application in its sole discretion, without reason to be disclosed.

#### Partner Obligations

As a Partner in the Program, you agree to:

1. Provide high-quality services to customers referred to you by Stacksync in a professional and timely manner
2. Maintain a high level of customer service and support
3. Comply with all applicable laws and regulations in the performance of your services
4. Display Stacksync's logo on your website in the relevant sections and advertising materials as a Stacksync Certified Partner
5. Not make any decisions or speak on behalf of Stacksync

#### Referral Process

Stacksync may refer customers to Partners who offer services related to Stacksync's solution. Stacksync will have no obligation to refer any customer to a Partner, and may refer customers to any other Partner or service provider at its sole discretion. Partners may not represent themselves as an agent or legal representative of Stacksync, and may not bind Stacksync to any obligation or agreement.

#### Partner Fees

Stacksync does not require any fee from Partners for participation in the Program or for referrals. Partners may receive compensation from their customers for their services in accordance with their own pricing and policies.

If a partner refers and brings new clients to Stacksync as understood in the Stacksync Referral Programme Policy, the provisions under the Stacksync Referral Program Policy apply (available at <https://docs.stacksync.com/legal/referral-program-policy>).

#### Term and Termination

This Agreement will begin upon acceptance of your Partner application and will continue until terminated by either party. Either party may terminate this Agreement at any time, with or without cause, by giving the other party written notice of termination. Upon termination of this Agreement, Partner will immediately cease all use of Stacksync's trademarks, trade names, logos, and other proprietary materials. Any rights or obligations that by their nature should survive termination of this Agreement will survive, including, without limitation, the provisions regarding intellectual property, confidentiality, and limitation of liability.

#### Confidentiality

Partners will have access to confidential and proprietary information about Stacksync's technology and business operations as a result of their participation in the Program. Partners agree to keep such information confidential and not disclose it to any third party without the prior written consent of Stacksync.

#### Intellectual Property

Stacksync owns all intellectual property rights in its technology, software, and related materials. Partners may use Stacksync's logo and trademarks solely for the purpose of promoting their participation in the Program, but may not use such intellectual property in any other manner without the prior written consent of Stacksync.

#### Indemnification

Partners agree to indemnify, defend, and hold harmless Stacksync, its affiliates, and their respective officers, directors, employees, and agents from and against any claims, damages, losses, liabilities, costs, and expenses (including reasonable attorneys' fees) arising out of or in connection with Partner's participation in the Program or any breach of this Agreement.

#### Limitation of Liability

Stacksync will not be liable to Partners for any special, indirect, incidental, consequential, or punitive damages arising out of or in connection with Partner's participation in the Program, even if Stacksync has been advised of the possibility of such damages. Stacksync's total liability under this Agreement will not exceed the fees paid to Partner, if any, under this Agreement.

#### Governing Law and Dispute Resolution

This Agreement will be governed by and construed in accordance with the laws of the state of Vaud in Switzerland, without regard to its conflict of law provisions. To promote peaceful resolution of any disputes, amicable dispute resolution through mediation should be preferred and attempted before resorting to arbitration or going to court. Any disputes arising out of or in connection with this Agreement will be resolved through confidential and binding arbitration in accordance with the rules of Swiss law. The arbitration will take place in Vaud, Switzerland, and the award of the arbitrator will be final and binding.

#### Miscellaneous

This Agreement constitutes the entire agreement between the parties regarding the subject matter hereof, and supersedes all prior agreements and understandings, whether written or oral. This Agreement may not be amended or modified except in writing signed by both parties. If any provision of this Agreement is found to be unenforceable, the remaining provisions will remain in full force and effect. This Agreement may not be assigned by Partner without the prior written consent of Stacksync. Stacksync may assign this Agreement without Partner's consent. This Agreement will be binding upon and inure to the benefit of the parties hereto and their respective successors and permitted assigns.

#### Relationship of the Parties

Nothing contained in this Agreement will be deemed or construed by the parties or any third party as creating the relationship of principal and agent, partnership, joint venture, or any other form of legal association or organization between the parties, nor will this Agreement be deemed or construed as creating any obligation of either party to enter into any further agreement with the other party.

#### Contact Information

If you have any questions about these T\&C or the Program, you can contact Stacksync at <https://www.stacksync.com/contact>.

By submitting an application to become a Stacksync Certified Partner, you acknowledge that you have read, understood, and agree to be bound by the terms and conditions of this Agreement.


# Stacksync Catalyst Program - Master Participation Agreement (“MPA”)

Master Participation Agreement ("MPA") to the Stacksync Catalyst Program.

**Last updated: 8 July 2025**\
This MPA is a binding agreement between **Stacksync Inc.** (“**Stacksync**”) and the individual or entity that registers for the Catalyst Community (the “**Participant**”). It governs all Catalyst Program activities and incorporates by reference the policies published at <https://docs.stacksync.com/legal>.

***

**1 Scope and Hierarchy**

**1.1 Program Purpose.**

The Catalyst Program enables Participants to build production-grade connectors and workflow templates for the Stacksync platform using the public Connected Development Kit (“**CDK**”).<br>

**1.2** **Precedence.**

If a Connector Assignment Agreement (“CAA”, §5) conflicts with this MPA, the CAA controls for that connector; otherwise, this MPA prevails.<br>

**1.3** **Incorporated Policies.**

The Stacksync Terms of Service, Privacy Notice, Acceptable Use Policy, Data Processing Addendum, and Certified Partner Program Terms are incorporated herein (collectively, the “**Policies**”).

***

**2 Eligibility and Onboarding**

Participation requires (i) legal capacity to contract, (ii) acceptance of this MPA and the Policies, and (iii) provision of accurate payment information. Stacksync may approve, reject, or revoke participation at its sole discretion.

***

**3 Confidentiality**

Each party shall protect non-public information disclosed by the other party, use it solely for Catalyst purposes, and return or destroy it upon request. This obligation survives for three years after disclosure.

***

**4 Intellectual Property**

**4.1** **Assignment.**

Upon payment of the reward specified in §7, the Participant assigns to Stacksync all worldwide intellectual-property rights in each accepted connector or template (“**Deliverable**”), excluding pre-existing open-source components used under their respective licences.<br>

**4.2** **Moral Rights.**

The Participant waives, to the fullest extent permitted by law, any moral rights in each Deliverable.

**4.3** **Attribution.**

Stacksync may publicly reference the Participant’s name, badge, or partner status in marketing materials.

***

**5 Connector Assignment Agreements**

Each Deliverable is governed by a CAA specifying:

* connector or template ID and title;
* scope and APIs to cover;
* complexity tier (Simple / Medium / Complex);
* delivery deadline;
* fixed reward;
* three-week post-production maintenance window;
* quality checklist (annexed to the CAA).

***

**6 Development and Quality Obligations**

Deliverables must:

* follow CDK guidelines and the Acceptable Use Policy;
* implement all API operations defined in the CAA;
* include unit or integration tests, robust error handling, logs, and user-facing documentation;
* pass Stacksync code review and continuous-integration checks;
* satisfy a 48-hour response SLA for bug reports during the maintenance window.

***

**7 Compensation**

**7.1 Base Reward Range.**\
Each Connector Assignment Agreement (“CAA”) specifies a base reward for the related Deliverable. As of the Effective Date, base rewards range from **USD 50** to **USD 300**, determined by the complexity and urgency tiers defined by Stacksync.

**7.2 Right to Modify Rewards.**\
Stacksync may revise the base-reward schedule or any related multipliers at any time and without prior notice. Any revision applies only to CAAs executed after the effective date of the revision.

**7.3 Volume-Based Multipliers.**\
Upon acceptance of cumulative Deliverables by the same Participant, the following percentage multipliers apply to the base reward stated in each subsequent CAA:

* **Six (6) to ten (10) accepted Deliverables:** +10 %
* **Eleven (11) to thirty (30) accepted Deliverables:** +20 %
* **More than thirty (30) accepted Deliverables:** +30 %

**7.4 Payment Timing.**\
Rewards, inclusive of any applicable multipliers, are payable twenty-one (21) calendar days after Stacksync confirms production acceptance of the Deliverable and no Critical-Severity defects remain open.

**7.5 Payment Method and Taxes.**\
Rewards are remitted via ACH, PayPal, or Wise. All transaction fees and applicable taxes are the responsibility of the Participant.

**7.6 Set-off.**\
Stacksync may withhold or set off amounts necessary to cover unresolved breaches, indemnity obligations, or chargebacks attributable to the Participant.

***

**8 Badges, Certifications, and Partner Status**

Badges are awarded automatically for predefined milestones. Certifications require successful completion of a technical assessment. Certified partners may display the “Stacksync Certified” mark subject to the Partner Terms.

***

**9 Data Protection**

The Participant shall process personal data only in accordance with the Data Processing Addendum and implement industry-standard security measures. Any security incident must be reported to Stacksync without undue delay.

***

**10 Acceptable Use and Community Conduct**

All Catalyst communications occur in the designated Slack workspace. The Participant shall comply with the Acceptable Use Policy and maintain professional conduct. Violations may result in immediate termination.

***

**11 Representations and Warranties**

The Participant represents that each Deliverable: (i) is original or properly licensed, (ii) does not infringe third-party rights, (iii) complies with applicable laws, and (iv) is free of malicious code.

***

**12 Indemnification**

The Participant shall indemnify and hold harmless Stacksync from any third-party claims arising from a breach of §§6, 9, or 11.

***

**13 Limitation of Liability**

Except for indemnification or gross negligence, each party’s aggregate liability under this MPA is limited to the greater of USD 1,000 or 150 % of the total rewards paid to the Participant in the preceding twelve months. Neither party is liable for indirect or consequential damages.

***

**14 Term and Termination**

This MPA commences on the Effective Date recorded in the Catalyst dashboard and continues until terminated. Either party may terminate for convenience with 30 days’ written notice. Immediate termination applies for material breach, AUP violations, or bankruptcy. §§3, 4, 11-15 survive termination.

***

**15 Governing Law and Dispute Resolution**

This MPA is governed by the laws of the State of Delaware, USA. Disputes shall be resolved by binding arbitration in Wilmington, Delaware, under AAA Commercial Rules. Class-action procedures are waived.

***

#### **16 No Public Affiliation**

The Participant is an independent contractor and shall not:\
(a) represent or imply that it is a partner, affiliate, employee, agent, or legal representative of Stacksync;\
(b) disclose or advertise any relationship with Stacksync, or use Stacksync’s name, logo, or trademarks in press releases, marketing materials, social media, or other public communications, without Stacksync’s prior written consent; or\
(c) create any obligation or liability on behalf of Stacksync.<br>

Nothing in this Agreement creates a joint venture, franchise, agency, fiduciary, or employment relationship between the parties.

***

**17 Miscellaneous**

* **Independent Contractors.** The parties are independent entities.
* **Assignment.** The Participant may not assign this MPA without Stacksync’s prior written consent.
* **Notices.** Legal notices must be sent to <legal@stacksync.com> and to the Participant’s email on record.
* **Entire Agreement.** This MPA, all CAAs, and the Policies constitute the entire agreement.
* **Amendments.** Stacksync may update this MPA on 30 days’ notice; continued participation constitutes acceptance.

***

**Stacksync Inc.**                      **Participant**

*Execution through the Catalyst dashboard constitutes acceptance of all terms herein.*


# Overview - Security

Stacksync is committed to security and focused on keeping you and your data safe.

Updated July 10, 2024

Stacksync adheres to industry-leading standards while connecting, replicating, and loading data from all of your data sources.

Contact [<mark style="color:$primary;">security@stacksync.com</mark>](mailto:security@stacksync.com) if you have any questions or comments.

***

## TL;DR

Stacksync does not store any customer data. Data is processed at Stacksync but never persisted. Even during transit, all data is encrypted with AES encryption (a military-grade protocol). Only the credentials to access the client’s external platform instance or database, and minimal metadata about the selected tables and columns, are stored. This metadata is stored in a custom Stacksync format. It removes most table and column attributes, keeping only the column name (or identifier) and data type.

All data and credentials are encrypted with AES using regularly rotating keys. Key rotation is fully automated, so no one can access production data.

Stacksync lets you choose the region where your data is processed. This enables maximum compliance and system performance (due to proximity to the client’s data sources).

***

## Detailed security policies

### Web portal connectivity

* All connections to Stacksync's web portal are encrypted by default using industry-standard cryptographic protocols (TLS 1.2+).
* Any attempt to connect over an unencrypted channel (HTTP) is redirected to an encrypted channel (HTTPS).
* To take advantage of HTTPS, your browser must support encryption protection (all versions of Google Chrome, Firefox, and Safari).

***

### Role-Based Access Control (RBAC)

Users accessing the Stacksync User Interface (UI) for a given workspace are subject to Role-Based Access Control (RBAC). These are the different roles. Below is a top-level description for every role:

* **Owner** (there is exactly one Owner per workspace). The Owner has all the permissions that the Editors have, but they are also able and responsible for managing the billing settings for the workspace.
* **Editor** (there can be zero or many Editors per workspace). Editors can view and edit most resources in the workspace.
* **Viewer** (there can be zero or many Viewers per workspace). Viewers can view most workspace resources but cannot edit anything in the workspace.

Some resources, such as *Connections*, *API proxy services*, or *scheduled jobs*, have the option to be shared with other members of the workspace. Depending on the resource type and whether collaboration with other members of the workspace is deactivated, the resource will be non-editable for all users other than its creator and, in some cases, even non-visible. This offers higher security levels for some workspace resources.

RBAC is workspace-specific. Users can have different roles in different workspaces. A User can have only one role per workspace.

***

### Connectors

* Connections to customers' database sources and destinations are SSL encrypted by default.
* Stacksync can support multiple connectivity channels.
* Connections to customers' software-as-a-service (SaaS) tool sources and destinations are encrypted through HTTPS.

***

### Permissions

* Databases and API cloud applications - Stacksync requires READ and WRITE permissions.
* Connected Applications - Stacksync requires the READ and WRITE permission. This permission allows Stacksync to CREATE a schema within your destination, CREATE tables within that schema, and WRITE to those tables.

***

### Retention of customer data

How long we retain customer data depends on the data type:

| Customer data (in-flight processing)                                       | a few seconds (< 1 hour in rare conditions, usually) | <p>We purge customer data as soon as it is successfully written to the destination, except in the cases below.</p><p>The operations should last, in most cases, only a couple of milliseconds or seconds since we sync data in real-time but some technical conditions and data volumes might require longer processing, usually up to one hour.<br>-> In-flight data is fully encrypted and is never persisted in plain text. We are compatible with the highest security standard for in-flight data processing.</p>                                                                                                                                                                                                         |
| -------------------------------------------------------------------------- | ---------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| Customer data (synced)                                                     | Persistent                                           | In order to detect changes when customers edit data in their app, Stacksync needs to keep a hashed version (fingerprint only) of each synced record. The hashed copy is stored permanently (or until it is deleted in the synced apps) in our regional storage, in the region you have chosen in your Base configuration. The data is hashed using various algorithms so it cannot be reversed in any case. This hashed record image is also stored in our most secure storages. This technical design is fully approved by highest security and privacy standards and regulations.                                                                                                                                            |
| Customer data where sync errors are detected.                              | Varies                                               | Stacksync detects errors when syncing one-way or bidirectionally between apps. These errors most often result from differences in schemas between synced apps. These differences are authorized and are normally handled by Stacksync automatically. However, customers might insert data in one app that cannot be replicated on the other synced app. When this is the case, Stacksync detects the error and stores the encrypted data to display it to the user (for troubleshooting) and then tries to re-sync it. When the error is fixed by the user or is overridden by another valid (i.e., non-error) update, the error is deleted from our storage. The retention period depends on the time taken to fix the issue. |
| Event data from the Webhooks connector and other connectors using webhooks | < 3 minutes                                          | If you sync webhooks or event data, we do not retain data since data is processed immediately when it is received on your servers.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| Customer access keys                                                       | Persistent                                           | We retain customer database credentials and SaaS OAuth tokens to securely and continuously extract data and troubleshoot customer issues. These credentials are securely stored in a key management system, which is backed by a hardware security module managed by our cloud provider.                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| Customer metadata                                                          | Persistent                                           | We retain configuration details and data points (such as table and column names) for each connector so that this information can be displayed in your Stacksync dashboard and be used to process data as well.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |

In the following two cases, customer data is purged as soon as it is successfully written to the destination. If the data writing process takes longer than usual, the data is however kept for object lifecycle management:

* Destination outage: If your destination is down, we maintain the data that we've read from your source so we can resume the sync without losing progress once the issue is resolved.
* Schema information for column blocking or hashing purposes: If you choose not to sync a column before syncing your new connector, we queue your data while we read the full schema. We only write the data to the destination that you approve.

***

### Encryption and Hashing

Stacksync uses best-in-class algorithms to encrypt and hash your data.

**Encryption**: AES encryption with autonomous rotating keys. Encryption keys are frequently updated, ensuring effective partitioning of data across several keys as well as [perfect forward secrecy](https://en.wikipedia.org/wiki/Forward_secrecy). AES is a military-grade standard.

**Hashing**: various algorithms, often coupled with byte compression.

***

### Solution infrastructure

Access to Stacksync production infrastructure is only allowed via hardened IAM (identity and access management) policies. Further access to the environment and enforcement of least privilege is controlled by IAM policies. Privileged actions are captured in audit logs for review and anomalous behavior detection.

***

### Physical and environmental safeguards

Physical and environmental security is handled entirely by our cloud service providers. Each of our cloud service providers provides an extensive list of compliance and regulatory assurances, including SOC 1/2-3, PCI-DSS, and ISO27001.

#### Google

See the [Google Cloud Platform compliance](https://cloud.google.com/security/compliance/), [security](https://cloud.google.com/security/overview/), and [data center security](https://cloud.google.com/security/overview/whitepaper#state-of-the-art_data_centers) documentation for more detailed information.

#### Amazon

See the [Amazon Web Services compliance](https://aws.amazon.com/compliance/), [security](https://aws.amazon.com/security/), and [data center security](https://aws.amazon.com/compliance/data-center/controls/) documentation for more detailed information.

#### Azure

See the [Azure compliance](https://docs.microsoft.com/en-us/azure/compliance/), [security](https://docs.microsoft.com/en-us/azure/security/), and [data center security](https://docs.microsoft.com/en-us/azure/security/fundamentals/physical-security) documentation for more detailed information.

**Scaleway**

See the [Scaleway compliance, security and data center security](https://www.scaleway.com/en/security-and-resilience/) documentation for more detailed information.

**OVH**

See the [OVH compliance, security and data center security](https://www.ovhcloud.com/en/enterprise/certification-conformity/) documentation for more detailed information.

***

### Stacksync data residency

Stacksync runs data connectors on servers such as in the United States (US), Canada, European Union (EU), United Kingdom (UK), Australia, Singapore (non-exhaustive list). You can select your preferred data processing location when configuring your Base. All connectors configured in a destination run in the destination's designated location. This means that your data will not leave our region-specific servers during processing. For example, if you configure your destination to use our EU servers, your data will not leave the EU during processing or storage. See our Base and Connected Apps documentation to learn how to configure your data processing location.

Stacksync runs services on Google Cloud Platform (GCP), Amazon Web Services (AWS), and Azure. The following table lists regions supported by Stacksync for each service provider:

| GEOGRAPHY | GCP REGIONS                                                                                                         | AWS REGIONS                                               | AZURE REGIONS | Scaleway | OVH                    |
| --------- | ------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------- | ------------- | -------- | ---------------------- |
| Americas  | <p>us-east1 (South Carolina)\*</p><p>us-west1 (Oregon)</p><p>us-central1 (Iowa)<br>us-east4 (Northern Virginia)</p> | <p>us-east-1 (N. Virginia)\*</p><p>us-west-2 (Oregon)</p> | N/A           |          | Beauharnois (Canada)\* |
| EU        | <p>europe-west1 (Belgium)\*</p><p>europe-west3 (Frankfurt, Germany)<br>europe-west6 (Zurich, Switzerland)</p>       | eu-central-1 (Frankfurt)\*                                | N/A           | Paris\*  |                        |
| Asia      | asia-southeast1 (Singapore)\*                                                                                       | <p>ap-southeast-1 (Singapore)\*</p><p><br></p>            | N/A           |          |                        |

\*NOTE: Default region for a given cloud provider / geography combination.

IMPORTANT: Google Cloud Platform is the default cloud service provider. You can select a different cloud service provider and region if you are on a plan that allows that option.

***

### Your organization permissions

* Only users of your organization registered within Stacksync and Stacksync operations staff have access to your organization's Stacksync dashboard.
* Your organization's Stacksync Dashboard provides visibility into the status of each integration, the aforementioned metadata for each integration, and the ability to pause or delete the integration connection - not organization data.
* Organization administrators can immediately revoke an organization member’s access to a workspace at any time from the Workspace Settings page. Otherwise, Organization administrators can request that Stacksync revoke an organization member's access at any point; these requests will be honored within 24 hours or less.

***

### Company policies

* Stacksync requires that all employees comply with security policies designed to keep any and all customer information safe, and address multiple security compliance standards, rules and regulations.
* Two-factor authentication and strong password controls are required for administrative access to systems.
* Security policies and procedures are documented and reviewed on a regular basis.
* Current and future development follows industry-standard secure coding guidelines, such as those recommended by OWASP.

***

### In the event of a data breach

To date, Stacksync has not experienced a breach in security of any kind. In the event of such an occurrence, Stacksync protocol is such that customers would be made aware as soon as the compromise is confirmed.

***

### Responsible disclosure policy

At Stacksync, we are committed to keeping our systems, data and product(s) secure. Despite the measures we take, security vulnerabilities will always be possible.

If you believe you’ve found a security vulnerability, please send it to us by emailing <security@stacksync.com>. Please include the following details with your report:

* Description of the location and potential impact of the vulnerability.
* A detailed description of the steps required to reproduce the vulnerability (POC scripts, screenshots, and compressed screen captures are all helpful to us).

Please make a good faith effort to avoid privacy violations as well as destruction, interruption or segregation of services and/or data.

We will respond to your report within 5 business days of receipt. If you have followed the above instructions, we will not take any legal action against you regarding the report.

***

### Diagnostic data access

IMPORTANT: Stacksync cannot access your data without your approval.

When working on a support ticket, we may need to access your data to troubleshoot or fix your broken connector or destination. In that case, we will ask you to grant Stacksync access to your data for the next 21 days. You can allow or deny data access. If you grant us data access, you can revoke it at any moment before the 21-day diagnostic period has expired.

See our support documentation for more details.

***

Questions?

We're always happy to help with any other questions you might have. Send us an email at [<mark style="color:$primary;">security@stacksync.com</mark>](mailto:security@stacksync.com).


# Subprocessors

Updated July 31, 2023.

Stacksync SA (“Stacksync”) uses certain subprocessors to assist it in providing the Stacksync Services as described in the Terms of Service (TOS). Defined terms used herein shall have the same meaning as defined in the TOS.

### What is a Subprocessor?

A subprocessor is a third-party data processor engaged by Stacksync, including entities from within the Stacksync Group, that has or potentially will have access to or process personal data on behalf of a Customer. Stacksync engages different types of subprocessors to perform various functions as explained in the tables below. Stacksync refers to third parties that do not have access to or process personal data on behalf of a Customer, but who are otherwise used to provide the Services, as "subcontractors" and not "subprocessors".

### Pipeline Data Subprocessors

**These are subprocessors who have access to Stacksync production systems and data by virtue of the services they provide.**

| NAME            | NATURE OF PROCESSING                                                | TERRITORY(IES) |
| --------------- | ------------------------------------------------------------------- | -------------- |
| Amazon, Inc.    | AWS hosting environment for Supplier services                       | Global         |
| Google, Inc.    | Google Cloud hosting environment for Supplier services              | Global         |
| Microsoft, Inc. | Azure hosting environment for Supplier services                     | Global         |
| Okta, Inc.      | Authentication and authorization for Stacksync websites (via Auth0) | Global         |
| Scaleway SAS    | Scaleway hosting environment for Supplier services                  | Global         |
| OVH Groupe SAS  | OVH hosting environment for Supplier services                       | Global         |

### Affiliates

Stacksync SA maintains affiliate companies in countries where our full-time employees work. Each of these affiliate companies comprises members of the Stacksync team who contribute from outside of Switzerland.

| NAME    | NATURE OF PROCESSING | TERRITORY(IES) |
| ------- | -------------------- | -------------- |
| Cegelem | Web Consultants      | France         |

***

### Questions?

We're always happy to help with any other questions you might have. Send us an email at <hello@stacksync.com>.


# EU Data Protection

Updated January 10, 2023.

Stacksync prioritizes customer trust. We know that the safekeeping of customer data is critically important to our customers’ values and operations. That is why we keep it private and safe.

Stacksync helps customers maintain control of privacy and data security in multiple ways:

* Data Security: Stacksync complies with high security standards, such as encryption of data in transit and at rest, a focus on the latest regulations, and a support team that is on-call when you need it.
* Disclosure of Customer Data: Stacksync only discloses customer data to third parties where disclosure is necessary to provide the services or as required to respond to lawful requests from public authorities.
* Trust: Stacksync has developed security protections and control processes to help our customers ensure a secure environment for their information. Stacksync adheres to high industry standards.
* Access Management: Stacksync provides an advanced set of access and encryption features to help customers effectively protect their information. We do not access or use customers’ data for any purpose other than providing, maintaining, and improving the Stacksync services and as otherwise required by law.

**What is Customer Data?**

**Customer Data is any information, including personal data, which is replicated via the Stacksync services, by, or on behalf of, our customers and their end-users.**

**Who owns control of the Customer Data?**

From a privacy perspective, the customer is the controller of Customer Data, and Stacksync is a processor. This means that throughout the time that a customer subscribes to services with Stacksync, the customer retains ownership of and control over Customer Data in its account.

**Who are Stacksync’s sub-processors?**

Stacksync maintains an up-to-date list of the names and locations of all sub-processors (including members of the Stacksync subsidiaries and third parties) used for hosting or other processing of Customer Data, which can be found in our Stacksync Subprocessors documentation. The list may also be obtained by contacting <security@stacksync.com>.

**How does Stacksync process Customer Data?**

Stacksync replicates data from Customer databases and cloud sources, processes it, and loads it into the Customer’s destination. This can also be done in a bidirectional manner, from and to connected applications (“apps”), also named “Services” or “External Platforms”.

To learn more about our data handling and retention periods, see our technical documentation.

**What steps does Stacksync take to secure Service Data?**

Stacksync prioritizes data security and combines enterprise-class security features with comprehensive audits of our applications, systems, and networks to ensure customer and business data is always protected.

**Where will Customer Data be stored?**

Stacksync runs data connectors on servers in various locations, such as the United States (US), Canada, the European Union (EU), the United Kingdom (UK), Australia, and Singapore (non-exhaustive list). When customers connect an app, they select the region used for processing and storing encrypted data. If customers configure their connectors to use our EU servers, their data will not leave the EU during processing, including for connectors that sync webhooks and event data. See our Stacksync Data Residency documentation for details. Customer Data is cached on Stacksync servers while operations are running and is purged from Stacksync's system as soon as it is deleted in the connected app. See our Data Retention documentation for details.

**How does Stacksync respond to Information Requests?**

**Stacksync recognizes that privacy and data security issues are top priorities for customers. Stacksync does not disclose Customer Data except as necessary to provide its services to its customers and comply with the law as detailed in our Privacy Policy.**

**GDPR (General Data Protection Regulation)**

Stacksync has a strong commitment to privacy, security, compliance and transparency. This includes supporting our customers’ compliance with EU data protection requirements, including those set out in the General Data Protection Regulation (“GDPR”).

If a Stacksync customer collects, transmits, hosts, or analyzes personal data of EU citizens, GDPR requires the company to comply with specific technical and organizational requirements. Stacksync does not persistently store Customer Data, but we nevertheless assist customers in meeting their obligations to:

* Respond to requests from data subjects to correct, amend or delete personal data;
* Report personal data breaches to relevant supervisory authorities and data subjects in accordance with GDPR time frames;
* Demonstrate compliance with the GDPR as pertaining to Stacksync’s services.

**How does the GDPR apply to customers?**

Stacksync customers that collect and store personal data are considered data controllers under the GDPR. Data controllers bear the primary responsibility for ensuring that their processing of personal data is compliant with relevant EU data protection law, including the GDPR.

**What implications does GDPR have for organizations processing the personal data of EU citizens?**

One of the key aspects of the GDPR is that it creates consistency across EU member states on how personal data can be processed, used, and exchanged securely. Organizations need to demonstrate the security of the data they are processing and their compliance with GDPR on a continual basis, by implementing and regularly reviewing robust technical and organizational measures, as well as compliance policies.

**How has Stacksync been preparing for the GDPR?**

Stacksync’s Services are designed with privacy and security at its core. It is therefore GDPR-native in a sense. Additionally, our privacy team is continuing its review of Stacksync’s current product features and practices (including adding features such as column exclusion and column hashing) to ensure we support our customers with their GDPR compliance requirements.

**Which Stacksync services and features can support customers' compliance with the GDPR?**

All Stacksync services are GDPR compliant, so customers can use any available Stacksync service and remain GDPR compliant.

***

#### Questions? <a href="#questions" id="questions"></a>

We're always happy to help with any other questions you might have. Send us an email at <privacy@stacksync.com>.


# Security Whitepaper

An in-depth overview of Stacksync's commitment to data protection, privacy, and compliance for modern enterprise automation.

{% embed url="<https://drive.google.com/file/d/1ANEh9qLfTy7Sk4y5u8agfz4oRzTEZy7I/view>" %}


# What is Stacksync?

Stacksync helps you deliver CRM integrations in minutes, not projects!

## Glad to see you here! 👋

[Stacksync](https://www.stacksync.com/) is a no-code tool that makes it easy to sync data between your Enterprise systems and Databases with real-time and two-way sync!

{% embed url="<https://www.youtube.com/watch?v=lG7O_FYsM5w>" %}
Stacksync Demo in 2 minutes!
{% endembed %}

CRMs integrations are complex, costly and hard to maintain. Stacksync reduces implementation delays from months to minutes, costs by x10 factor and removes all the complexity behind enterprise system integration or CRM feature development.

Stacksync is a real-time and bidirectional data synchronization tool between CRMs (e.g., Salesforce, Hubspot or SAP) and databases (e.g., Postgres or Google BigQuery). Edits made to data in your CRM will instantly update in your Database, and vice versa.

To set up a sync, users simply have to connect the two chosen apps in one click and select the tables they want to sync, that’s it!

<figure><img src="/files/rB74TuB8DldohIL8Kzf7" alt=""><figcaption></figcaption></figure>

### With Stacksync you can do amazing things such as...

* Maintaining a single source of truth across your CRM and Databases with no effort
* Simplify the integration between CRM and your backend
* Ship all data insights from your data warehouse such as Google BigQuery or Snowflake to your CRM in real time!
* Stacksync is ideal for real-time updates of your:
  * lead scoring in your CRM
  * know how many times the user visited your website in the last days or hours in your CRM
  * Ship Google Analytics insights into your Salesforce contacts
* Have better campaign management from your CRM in real time as your campaigns roll out live
* Make your Sales and Marketing team happy by delivering them the new CRM features they need in hours, not years! Finally! 🎉

Stacksync is a pioneer of the composable CDP movement, where we make your backend/data warehouse the source of truth and let you work with data in any of your systems without worrying of data consistency issues. We got you covered 💪🏼

👉 If you are ready to step up data adoption in your organization like many of our customers already did (from startups to multinationals), [let's get started](/two-way-sync/start-here/quick-start)!


# Getting Started with Stacksync

Set up your first sync in less than 5 minutes

Stacksync lets you sync data across your tools so when you update data anywhere, it updates everywhere! You can create your first sync in under 5 minutes. Here's how:

### Step 1: Create a new sync

From your dashboard, click "Create a new sync"

<figure><img src="/files/rx65rEFD3CfwRJdSaOPR" alt=""><figcaption><p>Click "Create a new sync"</p></figcaption></figure>

### Step 2: Connect your apps

Click on each app you want to sync and connect with a single click!

<figure><img src="/files/29ktKT4HeEs3BrvBfwC4" alt=""><figcaption><p>Connect your App in a click</p></figcaption></figure>

### Step 3: Map tables

<figure><img src="/files/uJcFMKiGPEjDuPBo5sPH" alt=""><figcaption><p>Map tables between your Apps</p></figcaption></figure>

If both of your apps contain tables that should be synced together, you can select them side by side. If, for some tables in an app, you don’t yet have a table in the other app, Stacksync will create pixel-perfect schemas for you! ✨ In most cases, you’ll let Stacksync create new tables for you, but it’s up to you!

You can also choose the sync direction: **one-way or two-way sync 😍**

### Step 4: Map fields

For every table you want to sync, you will map fields (i.e. columns) together.

Stacksync uses AI auto-mapping, which finds the best matching pairs for you so you don’t have to do all the work manually. You can modify the proposed mapping as you like, with maximum flexibility.

<figure><img src="/files/w3MS4yMuVxmpcAMIF9cG" alt=""><figcaption><p>Map fields in Stacksync UI</p></figcaption></figure>

{% hint style="info" %}
Field *names* do not have to match.

Field *types* need to be compatible (no need to be exactly the same but semantically compatible). Check our documentation on field mapping for more details.
{% endhint %}

### Step 5: Turn sync on!

<figure><img src="/files/IS0aywqCQ3HnCaqbhDop" alt=""><figcaption><p>Turn sync on and data starts syncing between your apps!</p></figcaption></figure>

That's it! 🎉 Data will start syncing between your tools. With real-time and two-way sync you can modify your data in any of your synced apps for it to be updated in any other apps.

{% hint style="info" %}
After turning sync on, you can check the **issues dashboard** to see any sync errors from your connected apps. Access it from the menu on the left of your Stacksync screen.
{% endhint %}

### 👉 Keep reading!

{% content-ref url="/pages/xxVl2zgI1w3mK16ZTpiL" %}
[Two-Way Sync Salesforce and Postgres](/two-way-sync/guides/two-way-sync-salesforce-and-postgres)
{% endcontent-ref %}


# Community

Join the Stacksync community to connect with other data syncers and share what you are building. 💪🏼

We're glad you are here! 💜

## Slack community 🎉

Our [Slack community](https://join.slack.com/t/stacksync-community/shared_invite/zt-1tx5lljv4-xNErkvjR9K4MXwUOSI7ItQ) is full of folks ready help you and share what they're building with Stacksync!

[Join our community now with this invite link](https://join.slack.com/t/stacksync-community/shared_invite/zt-1tx5lljv4-xNErkvjR9K4MXwUOSI7ItQ)

<figure><img src="/files/yHdgy5bl1Rf1M83UhRVs" alt=""><figcaption></figcaption></figure>

Our founders host office hours, events, and more. You can also reach our support team, who are ready to jump in and help anytime. See you there!

### Book a demo or support session with an engineer

{% embed url="<https://cal.com/rubenburdin/stacksync-demo>" %}

## Contact us

For any other chit chat, send us a note at <hello@stacksync.com>.

If you're trying to reach us in other ways, here's all our [contact info](https://www.stacksync.com/contact).

{% hint style="info" %}
For critical issues, use [<mark style="color:$danger;">critical@stacksync.com</mark>](mailto:critical@stacksync.com).
{% endhint %}


# Quick Start

Welcome to real-time two-way sync in Stacksync! Get started by watching this video

{% embed url="<https://www.youtube.com/watch?v=xcU_7XU3txw>" %}


# Modify Salesforce Data in Postgres

A 5-minute tutorial on how to set up a two-way sync between Salesforce and Postgres with no code! 🚀

{% embed url="<https://www.youtube.com/watch?v=CWd3-UYL7ds>" %}
Stacksync Demo: Two-way sync between Salesforce and Postgres in real time, no code required! 🤯
{% endembed %}


# Two-Way Sync Salesforce and Postgres

This guide gets you from zero to hero in minutes and addresses anyone willing to try out the magic of Stacksync, even without a database or Salesforce instance. This tutorial walks you through all the steps to get your Postgres Database for free and your Salesforce developer instance (free forever too!). If you already have any of the above, feel free to skip the step to the next one ;)

Once you've created your Stacksync account at [www.stacksync.com](https://www.stacksync.com), you're ready to go!

Here are three steps, each taking about four minutes:

1. [Create a PostgreSQL database with Supabase (free forever)](/two-way-sync/guides/two-way-sync-salesforce-and-postgres/create-a-postgres-database-with-supabase-free-forever)
2. [Create a Salesforce Developer Instance (free forever)](/two-way-sync/guides/two-way-sync-salesforce-and-postgres/salesforce-developer-instance-free-forever-create-yours-in-4-minutes-2025)
3. [Set up a sync between your Salesforce and Postgres services with Stacksync](/two-way-sync/guides/two-way-sync-salesforce-and-postgres/create-a-sync-between-supabase-postgres-and-salesforce)


# Create a Postgres Database with Supabase (free forever)

Create your free Postgres database in 4 minutes with Supabase 😍

Supabase is an open-source backend-as-a-service that provides developers with a database built on top of PostgreSQL. This guide shows you how to create your database for free in the Supabase cloud.

<figure><img src="/files/31X7mHv8qc7nUIoPlNgT" alt=""><figcaption><p>Create a Postgres Database with Supabase Cloud in 4 minutes!</p></figcaption></figure>

Let's first go to [**supabase.com**](https://supabase.com/)

#### 1. Click "Start your project"

<figure><img src="/files/Nv4rSjoLMH1HRRw0MvH8" alt=""><figcaption></figcaption></figure>

#### 2. Click "Sign Up Now" to create a new account or "Sign in" to log in to an existing account

<figure><img src="/files/ndgUnkMa2QCRZhiVZ3Hz" alt=""><figcaption></figcaption></figure>

#### 3. Switch to [app.supabase.com](https://app.supabase.com/projects)

#### 4. Click "New project" and select your organization (typically the default one)

<figure><img src="/files/Sxo6HnYQNeEfBrsmPiN7" alt=""><figcaption></figcaption></figure>

#### 5. Fill in "Project name"

This can be any name such as "Stacksync pilot project"

<figure><img src="/files/Scci02KXEQUxL9czh7sF" alt=""><figcaption></figcaption></figure>

#### 6. Click "Copy the suggested strong password"

☝ Before creating a new project, it is crucial to COPY the database password, as it will not be accessible again. The only way to retrieve your database password later is by regenerating it, which will invalidate previous passwords (potentially breaking existing database connections).

<figure><img src="/files/oSYBQ0iQe7TDgwQpHkwD" alt=""><figcaption></figcaption></figure>

#### 7. Click "Create new project"

<figure><img src="/files/8Bw4XqjMhRjPz8pgFjmI" alt=""><figcaption></figcaption></figure>

#### 8. Click on "Connect"

<figure><img src="/files/R0LaH4oCBdA09UAfRQWQ" alt=""><figcaption></figcaption></figure>

You just created your first database project in Supabase! 🎉

Now let's get the <mark style="color:purple;">**Database Connection URL**</mark> which is the fastest way to connect your Supabase instance to Stacksync.

#### 9. Click "URI" and copy the connection URL

<figure><img src="/files/rZQYbleyadQR6G6YDkCr" alt=""><figcaption></figcaption></figure>

## That's it! 🥳

Now that you have created your Postgres Database with Supabase, you can connect it to your existing Salesforce CRM (if you don't have a Salesforce CRM instance yet, check out this guide to [create a new Salesforce CRM developer instance, free forever!](https://docs.stacksync.cloud/guides/two-way-sync-salesforce-and-postgres/create-a-salesforce-developer-instance-free-forever)


# Salesforce Developer Instance Free Forever – Create Yours in 4 Minutes (2025)

Set up your Salesforce Developer instance free forever in 2025. Follow this 4-minute guide and start testing your CRM integrations instantly with Stacksync.

<figure><img src="/files/uDDscqHTfsln91f5Z2H8" alt=""><figcaption><p>Create a Salesforce Developer Instance in 4 minutes!</p></figcaption></figure>

### How to Create a Salesforce Developer Instance (Free Forever in 2025)

Want to build and test on Salesforce without paying a cent? In this 2025 guide, you’ll learn **how to create a Salesforce Developer instance (free forever)** in just 4 minutes. It’s perfect for developers who want to explore Salesforce apps, APIs, or connect their CRM with tools like **Stacksync** for real-time sync.

### 🧭 Steps to Create Your Salesforce Developer Instance

#### **1. Visit the official Salesforce signup page:**

👉 <https://developer.salesforce.com/signup>

<figure><img src="/files/Gz7CJzVZ95Y0VICdECrm" alt=""><figcaption></figcaption></figure>

#### **2. Fill in your details and click “Sign Up.”**

* Use your work email for smoother integration later.
* **Remember** your username, you’ll need it to log in.

<figure><img src="/files/IS4EQdPeHFh2ePEfI1J5" alt=""><figcaption></figcaption></figure>

👉 Make sure to remember the username you chose so you can log in later.

#### **3. Verify your email.**

{% hint style="info" %}
You will receive an email in your mailbox to validate your email and account creation. The email might take a minute to arrive, perfect time to clean up your desk for 50 seconds!
{% endhint %}

#### 3. Access your instance

Switch to *<mark style="color:blue;">yourcompany-dev-ed.develop.my.salesforce.com</mark>* (the link has been sent to you via email for validation).

This link leads to your developer instance. Make sure to remember or bookmark it so you can return to it anytime!

<figure><img src="/files/e0HnjiVAlrKT2Io9LyAZ" alt=""><figcaption></figcaption></figure>

#### 4. Create your password

You now have to create your secure password to connect to your Salesforce instance.

<figure><img src="/files/yKzSt2DVFVjxw7qPjdaY" alt=""><figcaption></figcaption></figure>

#### 5. Click "Change Password"

<figure><img src="/files/ceKHmUYP0YYig0ZC89q4" alt=""><figcaption></figcaption></figure>

#### 6. Switch to *<mark style="color:blue;">yourcompany-dev-ed.develop.lightning.force.com</mark>* (you should be automatically redirected)

You are now in your Salesforce instance! 🎉

<figure><img src="/files/aTgVYtJcYkoTzFMKCV9R" alt=""><figcaption></figcaption></figure>

Once inside, explore Salesforce’s core objects: **Accounts, Leads, and Opportunities.**\
These are your main data tables.\
To view them:

* Click the **App Launcher (grid icon)**.
* Type **“Accounts”** and select it.
* Switch to **All Accounts** view to see your sample data.

{% hint style="info" %}
💡 Tip: This sandbox mirrors a real Salesforce org, ideal for testing custom fields, workflows, and integrations before production.
{% endhint %}

#### 7. Click on the App Launcher MENU

<figure><img src="/files/HQj0cPJcgSWx98pub4vY" alt=""><figcaption></figcaption></figure>

#### 8. \[1] Search "Accounts" and \[2] Click on "Accounts" in results

<figure><img src="/files/r0YyImEC9LAkUjY0jIEd" alt=""><figcaption></figcaption></figure>

#### 9. Click "Recently Viewed"

<figure><img src="/files/SYqat5xKfxkYHipHNwkh" alt=""><figcaption></figcaption></figure>

#### 10. Click "All Accounts" to view all your data

<figure><img src="/files/ae2eybcd93Q2MMicBXHP" alt=""><figcaption></figcaption></figure>

#### 11. You are now in your "All Accounts" view!

<figure><img src="/files/Z2lyqenTrebfG1Dz97BC" alt=""><figcaption></figcaption></figure>

### That's it! 🥳 - Next Step: Connect Your Salesforce Instance to a Database

Now that your developer instance is live, you can **sync Salesforce data in real time** with your database using **Stacksync**.\
Stacksync enables **bi-directional, sub-second sync** between Salesforce and Postgres, MySQL, or any database, no code required.

👉 [follow this short and sweet guide](/two-way-sync/guides/two-way-sync-salesforce-and-postgres/create-a-sync-between-supabase-postgres-and-salesforce)!


# Create a Sync between Supabase Postgres and Salesforce

You are 5 minutes away from your real-time and two-way sync between Salesforce and Postgres. This guide walks you through the 3 simple steps to get up and running!

<figure><img src="/files/ET1CLvWUnIQXGbVoQIXh" alt=""><figcaption></figcaption></figure>

#### Go to [www.stacksync.com](https://app.stacksync.com)

#### 1. Sign in or create your account

<figure><img src="/files/4pLjJij8YDdidgLixeAH" alt=""><figcaption></figcaption></figure>

#### 2. Click "Create a New Sync"

<figure><img src="/files/dqbOMm5bl7uXQWDAbu9E" alt=""><figcaption></figcaption></figure>

#### 3. Select "Postgres" to connect this app

<figure><img src="/files/0olM4voKxSLfB0l7H1C1" alt=""><figcaption></figcaption></figure>

#### 4. Paste your database 'Connection String' or manually fill in the connection credentials

<figure><img src="/files/RYt14UNf91MgJk90NwCE" alt=""><figcaption></figcaption></figure>

#### 5. Click "Authorize App"

<figure><img src="/files/NDWRBOQ4ncVSGiYQz8LH" alt=""><figcaption></figcaption></figure>

#### 6. Click on the Salesforce icon to connect this app

<figure><img src="/files/SbmvDI9HbivhUJXnW2oq" alt=""><figcaption></figcaption></figure>

#### 7. Fill in your credentials and click "Log In"

<figure><img src="/files/wQgb46EjEz6AyPexYPOx" alt=""><figcaption></figcaption></figure>

#### 8. Click " Allow "

#### 9. Click "Link Tables"

<figure><img src="/files/W2ppndK1CDoxJgTz31Dd" alt=""><figcaption></figcaption></figure>

#### 10. Click "Create New Table (Recommended)" or map existing tables as you prefer

Stacksync lets you map existing tables if both apps you want to connect already contain tables with the data you want to keep in sync (there’s no need for either to be empty). Alternatively, Stacksync can automatically create new tables for you if only one of your apps contains a table or schema with the data you want to sync.

In most cases, people will let Stacksync create tables as the new schemas created will always be pixel-perfect 😉.

<figure><img src="/files/g9FfsSftEufxOQCNgP30" alt=""><figcaption></figcaption></figure>

#### 11. Click "Map Fields"

<figure><img src="/files/yFW0fDdYEE2OoA2hjsdT" alt=""><figcaption></figcaption></figure>

#### 12. Click "Show More Columns" to review all the fields to be synced or select/unselect them

Now that you've mapped the tables, let's do the same for each of the fields you want to sync.

Stacksync will cleverly auto-map your columns. Some columns might need to be mapped manually if their names or meanings can’t be matched automatically.

Feel free to map, select, and unselect columns as you like.

<figure><img src="/files/FYaoclnRySAZUHa1v6QI" alt=""><figcaption></figcaption></figure>

#### 13. Click "Create Base"

<figure><img src="/files/aEwFHH8KK5HQUHQCIGbJ" alt=""><figcaption></figcaption></figure>

#### 14. Switch on the sync

<figure><img src="/files/Hs519SoKdyHqfQSPoYi8" alt=""><figcaption></figcaption></figure>

#### 15. Your data is syncing!

<figure><img src="/files/JlKhAqKa56AV48lrpQtY" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
After turning the sync on, you can check the Issues page to view any sync errors from your connected apps. This can help you troubleshoot why some data isn’t appearing in one of your apps.
{% endhint %}

## Yay! Your data is syncing! 🥳


# Configure Event Triggers

Trigger a custom workflow in Zapier, Make or any HTTP REST endpoint of your choice (e.g. Slack and AWS Lambda functions!) or execute a database query when your data gets updated.

Stacksync lets you trigger custom workflows in real time when your data is created, updated, or deleted. When a data event happens and matches your custom filters, an HTTP request (or Database query) is sent to the endpoint of your choice.

* The triggered HTTP endpoint can be anything from an AWS Lambda function, a Zapier or Make workflow, or any other API endpoint.
* The triggered database query can target systems such as Postgres, Snowflake, BigQuery, DynamoDB, MongoDB, and more.

This guide illustrates how to create a trigger within a sync.

## Create a trigger

### 1. First, go to your Stacksync dashboard

[**https://app.stacksync.com**](https://app.stacksync.com)

### 2. Open a sync

<figure><img src="/files/N0sTLVvHuANDCXtKPeNw" alt=""><figcaption><p>Open a sync</p></figcaption></figure>

### 3. Click "Create trigger"

<figure><img src="/files/bEeF1y2ntZMjSAsM9oI1" alt=""><figcaption><p>Click "Create trigger" button</p></figcaption></figure>

### 4. Configure your trigger

<figure><img src="/files/oJgR1OpOpwtW9xZIpTYe" alt=""><figcaption><p>Example of trigger configuration</p></figcaption></figure>

<figure><img src="/files/tAW3d7X3CugJrD28p0Un" alt=""><figcaption><p>Example configuration of Webhook in a trigger</p></figcaption></figure>

<figure><img src="/files/XwlSCNKOEWUnrng4lpNk" alt=""><figcaption><p>Example configuration of DB query in a trigger</p></figcaption></figure>

Below is an explanation of every configuration parameter:

<details>

<summary>From app... [app_1, app_2]</summary>

This let's you choose which app should be watched for actions. For instance, if your sync is between Salesforce and Postgres and you create a trigger to be fired when a record is created **from app \[Salesforce],** this means that the trigger will only fire up when a record is created in Salesforce but not when a record is created in Postgres.

</details>

<details>

<summary>Conditional filter based on record values</summary>

You filter can contain zero (no conditions) or many conditions. The no-code editor lets you create any sort of custom logics in a "drag and drop" fashion.

Need any help or have a feedback? Drop your question at <hello@stacksync.com>.

</details>

<details>

<summary>CURL to be executed</summary>

This field is a full CURL as you know it from the open source project <https://curl.se/>

You can include any authentication, parameters, turn the POST into a GET request or anything else. The CURL will just get executed **as is**, we will not run any checks on your behalf. If the API call fails or timeouts, the failure will not stop the execution of other triggers as every trigger will be fired up independently.

We recommend to keep the CURL as a POST request.

The **payload** is also fully customizable. For example, add some additional custom parameters in the JSON body as follows:

```url
curl --request POST \
--url https://{YOUR_URL_HERE} \
--header 'Content-Type: application/json' \
--data '{ "record": "<<record>>", "my param": "my value", "my number": 1234 }'
```

If you need a utility to setup and test your requests and payloads, feel free to use the sandbox in our free and secure webhook utility [**my.hookforce.app**](https://my.hookforce.app/)**.**

</details>

{% hint style="info" %}
If you need a free and secure sandbox to test your HTTP webhooks, check out Stacksync's free sandbox at [**my.hookforce.app**.](https://my.hookforce.app/)

<img src="/files/VBsmAztouGnNQoBtH9Ra" alt="" data-size="original">
{% endhint %}

<details>

<summary>Select Column Name Source for the JSON payload</summary>

When you sync data between your apps, apps will not always have the same schema and therefore column names. For instance, your column `first_name` in your CRM could be `user_first_name` in your database. Stacksync lets you choose which field names should be used for the data included in the JSON payload.

![](/files/O8h1JGof4HHX5R7CGW3g)

In this example, selecting "Salesforce" will use field names from your Salesforce app.

</details>

<details>

<summary>Do not fire up trigger when all the changes belong to a given list of fields</summary>

Some Systems such as HubSpot do have frequently changing system fields that might fire trigger execution when you do not want it.

![](/files/E9DXWZY6bQPaTW6vr3Ej)

You can choose a *list of fields to ignore*. This means that if the **all the fields that changed in a record** belong to fields in this list, then the **trigger will NOT fire**.

For instance, let's assume you decide to ignore changes in columns `lastModifiedTime` and `PhoneNumber` (i.e. these fields are included in the *list of fields to ignore*).

* If only the column `lastModifiedTime` was updated, the trigger will NOT fire.
* If the columns `lastModifiedTime` and `PhoneNumber` were updated, the trigger will NOT fire.
* If the columns `lastModifiedTime` and `Address` were updated, the trigger WILL fire since a field that does not belong to the *list of fields to ignore* was updated.

<mark style="background-color:green;">Good to know 💡:</mark>

* Fields included in the *list of fields to ignore* can still be used in all of your filters and conditions.
* The execution of a trigger remains subject to match all of the filters and conditions (if any) that you have defined for that trigger. So when at least one field not in the *list of fields to ignore* is updated, the data will still be evaluated against your filters and conditions as usual.

</details>

### 5. Click "Create trigger"

Once your configuration is done, click "Create trigger" to start sending data to your HTTP endpoint.

<figure><img src="/files/ujr1Gpekd9sasaym9EL2" alt=""><figcaption><p>Click "Create trigger"</p></figcaption></figure>

{% hint style="info" %}
Created, Updated, or Deleted triggers can take up to a minute to propagate and start responding.
{% endhint %}

That's it! 🎉 You created a trigger!

## Pause a trigger

Pausing a trigger will stop its execution until you resume the trigger.

<figure><img src="/files/QrgQZEoDPxn7iJRnBPFN" alt=""><figcaption><p>Pause a trigger</p></figcaption></figure>

## Edit a trigger

Editing a trigger is easy, it follows the same procedure as creating one, but you first need to select the trigger you want to edit.

<figure><img src="/files/EDBIWtGwnDxs2Gs8l991" alt=""><figcaption><p>Edit a trigger</p></figcaption></figure>

You can then follow our [Create a trigger](#create-a-trigger) guide to edit your trigger.

## Remove a trigger

Simply click on the bin icon to remove a trigger.

<figure><img src="/files/Uc7XdHyk4vw5aLCH1eeu" alt=""><figcaption><p>Click the bin icon to remove a trigger.</p></figcaption></figure>

That’s it for triggers! Stacksync’s simple no-code editor lets you greatly simplify your backend and create as many triggers as you want. No limits!

Learn more by visiting our full trigger documentation at [Event triggers](/two-way-sync/features/event-triggers)


# Add a New Custom Field to an Existing Sync

As your business evolves, your data evolves too. This guide shows you how to add a new custom field to an existing sync between your CRM and database.

{% embed url="<https://www.youtube.com/watch?v=BuGp2agb4Ww>" %}
Add a custom field in HubSpot CRM and send data to it directly from your database.
{% endembed %}


# Database as a Write Proxy to another system

For example, Stacksync allows PostgreSQL to act as a write proxy for systems like Salesforce, enabling teams to batch large volumes of changes, significantly reduce API calls, stay within rate limits, and minimize load on Salesforce.

Stacksync supports upsert-based syncs between a source application and a destination application using a custom-managed unique identifier, rather than the source or destination’s native primary key (for example, a Salesforce ID). Concretely, this means each write operation will create a new record or update an existing one in the destination based on that custom identifier, regardless of the destination’s internal primary key.

This allows the source system to act as a **write proxy** for the destination while preserving record uniqueness based on the custom identifier.

### Setup

1. **Prepare fields in the destination app**\
   Ensure that the customer-managed unique identifier, as well as every field you plan to populate from the source app, exists and is properly configured in the destination app (type, format, and uniqueness where applicable).
2. **Create the sync in StackSync**
   * Open the StackSync app and create a new sync.
   * Select the source app and table you want to sync from.
   * Select the destination app and object you want to sync to.
3. **Select columns to sync**\
   In the list of columns to sync, include only:
   * The customer-managed unique identifier.
   * The fields you want to populate in the destination app from the source app.
4. **Configure sync direction**\
   Set the sync direction to two-way sync so the customer-managed unique identifier is available in the source app and in Postgres. You are responsible for performing upserts in the source app using this identifier, and StackSync is responsible for propagating the updated fields from the source (via Postgres) into the destination app.


# Salesforce

## Introduction

Salesforce is a cloud-based customer relationship management (CRM) platform that helps businesses manage and streamline their sales, marketing, and customer service activities. It provides a range of tools and features to manage customer data, track leads and opportunities, automate sales processes, and deliver personalized customer experiences. Salesforce also offers a range of enterprise-level solutions for analytics, marketing automation, and customer service management.

You can now keep your Salesforce data in sync with all your other CRMs and database systems with Stacksync!

Check out our [Salesforce guides](/two-way-sync/guides/modify-salesforce-data-in-postgres) to get started!

## Things to keep in mind

#### Can’t find a table in the list of available tables to map?

If any of the tables you’d like to sync isn’t listed in your sync configuration, it doesn’t mean it can’t be synced. Write us a message at <hello@stacksync.com> and we will be glad to help and add your custom object to the list!

#### **The Salesforce connector is available with triggers or with regular polling, which might fit better in different cases.**

For the two-way sync technology to work, Stacksync needs to be notified when your data changes. The use of the Salesforce connector with triggers or regular polling for data notifications is done automatically for you by Stacksync. If you want to know more or have some specific needs, [contact us](https://www.stacksync.com/contact) and we'll be happy to help!

Stacksync offers two ways to capture data changes from Salesforce. Both methods allow reading and syncing only incremental data changes for maximum efficiency.

Here’s a short summary of the change data capture methods used and when they apply:

1. **Apex Triggers** are used whenever possible (i.e. Salesforce will actively notify Stacksync of any data update made in your CRM). To do so, Stacksync must be able to set Apex triggers and set a remote site setting. If these conditions are not met, the **regular polling** alternative for change data capture is used.
2. **Regular polling** is used for change data capture on Salesforce synced objects whenever **the Apex triggers** method cannot be used. Stacksync will intelligently poll at regular frequencies the data updates that happened on your synced objects. Only incremental data updates are captured by this method for maximal efficiency.\
   In most cases, **regular polling** will be used, as it requires fewer authorizations, less setup for production deployment, and offers good performance for large data volumes.

#### Some tables and custom objects might not be supported

As of now, most Salesforce objects are supported by Stacksync but not all. Tables and objects that are not yet supported are:

* Objects that are not writable (i.e. where data can be updated via API).
* If you use the Salesforce connector with triggers: the objects that are not triggerable (i.e. where triggers cannot be set on the object).
* If you use the Salesforce connector with regular polling, the tables that do not have a `last_modified_data` column are automatically maintained by Salesforce.

These limitations exist because Stacksync provides a powerful real-time and two-way sync, which requires writable tables and notification of data changes to Stacksync’s system. We are working on some alternatives to cleverly enable the sync of all tables. Stay tuned!

#### Experimenting in Sandbox or Developer Accounts

A good practice is always to experiment in a Sandbox environment and promote your working and tested systems to stage and prod environments. [Contact us](https://www.stacksync.cloud/contact) anytime at <hello@stacksync.com> if you need any support.


# Authorize Salesforce

Authenticate your Salesforce app and sync data with Stacksync

You can also watch a quick video on how to authorize Salesforce

{% embed url="<https://www.youtube.com/watch?v=13BDs2x5igg>" %}

## Adding Credentials to Stacksync

#### 1. Select Salesforce in the Create Sync page in Stacksync.

<figure><img src="/files/UC7oH6mL1C2TykfGJybP" alt=""><figcaption></figcaption></figure>

<details>

<summary>Getting stuck on this step?</summary>

If you get stuck on a loading page after when trying to connect Salesforce (i.e. waiting a few minutes), verify that **you do not have an&#x20;*****Ad blocker*****&#x20;or that&#x20;*****popup windows are not blocked*****.**

![](/files/CRr3wBLksedt16aYepVL)

**Fix ✅: Press cancel, Deactivate your&#x20;*****Ad blocker*****&#x20;and try again to Authorize Salesforce.**

</details>

#### 2. A new tab will open. Select your account.

<figure><img src="/files/GOkXbWSIEAkyGOllNejZ" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
On production: We recommend creating a specific Salesforce user for your Stacksync application, and make sure that it has the [required permissions](https://docs.stacksync.cloud/connectors/salesforce/authorize-salesforce#permissions-needed-to-use-stacksync-salesforce-connector).
{% endhint %}

#### 3. Fill out the credentials and log into your account.

<figure><img src="/files/IhXZcX4zDK2SKgvOmKZ6" alt=""><figcaption></figcaption></figure>

### Troubleshoot

{% hint style="info" %}
If you are facing issues during salesforce oauth page, follow this tutorial to fix it [Fix the Salesforce OAuth Error](/two-way-sync/connectors/salesforce/authorize-salesforce/fix-the-salesforce-oauth-error)
{% endhint %}

{% hint style="info" %}
If you do not have the API Enabled for your Salesforce user, follow this tutorial to activate it: [Enable API Access in Salesforce](/two-way-sync/connectors/salesforce/authorize-salesforce/enable-api-access-in-salesforce)
{% endhint %}

<details>

<summary>Permissions needed to use Stacksync Salesforce connector</summary>

When your data changes, Stacksync needs to be notified in order to power real-time sync. Depending on your setup, using regular data polling or triggers can be best. Stacksync proposes the two alternatives and selects the best one automatically for you.

To use the Salesforce connector, you will need a Salesforce user with the following permissions,

1. for the <mark style="background-color:purple;">connector using regular polling</mark> for change data capture:

* **API Enabled** - Allows the user to execute API calls.

To [activate the API for your Salesforce User, follow this tutorial 👍🏼](/two-way-sync/connectors/salesforce/authorize-salesforce/enable-api-access-in-salesforce)

With regular polling, Stacksync works as follows: When you create a sync with Salesforce, we will only query your Salesforce instance regularly in an optimized manner to get the latest changes on your data. We only sync the incremental changes that happened since our last poll. As we detect some activity in your Salesforce data, we optimize our polling rate to provide you with a real-time sync performance, and save your resources otherwise when your data is not active. You will save much API resources compared to all other alternatives for real-time and two-way sync.

2. for the <mark style="background-color:purple;">connector using triggers</mark> for change notifications:

* **API Enabled** - Allows the user to execute API calls.
* **Author Apex** - Allows the user to create and EDIT Apex classes and Triggers.
* **Customize Application** OR **Modify All Data** - Allows the user to create or edit remote site settings.

With triggers, Stacksync works as follows: When you create a sync with Salesforce, we will create an *Apex trigger* that calls an *Apex callout class* which sends data to Stacksync via a *remote site setting*. This is why we need all three of the above permissions.

</details>

<details>

<summary>I get the error "The REST API is not enabled for this Organization"</summary>

Stacksync accesses your data to be synced in the background via the Salesforce API, which makes the integration frictionless. You Salesforce Organization must have the API feature enabled and this depends your Salesforce subscription plan.

#### Editions with API Access (enabled by default)

* Enterprise Edition
* Unlimited Edition
* Developer Edition
* Performance Edition

#### Editions with optional API access

* Professional Edition (can be purchased as an add-on, contact the Salesforce sales team to order the API access)

#### Editions without API Access

* Group Edition
* Essentials Edition

Unfortunately, editions without API Access cannot use Stacksync now, please contact us at if you have a special use case we can help you with!

[Read more](https://help.salesforce.com/s/articleView?id=000385436\&type=1) on Salesforce documentation

</details>

<details>

<summary>Error enabling Bulk API</summary>

The **"View All Data"** permission is required for Stacksync to access the Salesforce **Tooling API**, which is necessary when configuring the Sync to use the **Bulk API**.

You can enable this permission by navigating to:\
**Setup → Users → Profiles → \[Select the user profile connected to Stacksync] → Edit → Enable "View All Data".**

.![](/files/oqKIHsEgvBX098Fo9h28)

</details>


# Enable API Access in Salesforce

API access needs to be enabled in Salesforce for the user connecting Stacksync to its Salesforce instance.

Follow the steps below to:

* Enable API access in Salesforce by Profile
* Enable API access in Salesforce by Permission Set

{% tabs %}
{% tab title="Enable API access by Profile" %}
**Enable API access in Salesforce by Profile**

\
1\. Click the Gear icon and click **Setup.**

<figure><img src="/files/ALAWPWyXcEilvYwraYEw" alt=""><figcaption></figcaption></figure>

\
2\. Type **profiles** into the Quick Find box and select **Profiles.**\
\
3\. Click **Edit** against the Profile you wish to enable API access for.

<figure><img src="/files/oRuhAfMVjZKNh6K2sOkx" alt=""><figcaption></figcaption></figure>

4\. Scroll down to **Administrative Permissions** and check the **API Enabled** box and click **Save**.<br>

<figure><img src="/files/1mUyezr6BISLH0D88fmQ" alt=""><figcaption></figcaption></figure>

The API in Salesforce is now enabled for the modified profile. All users with this profile now have API enabled permissions.

***

***Optional:*** If your sync includes the ContentDocumentLink object (used for Salesforce Files / attachments), also enable the Query All Files permission in the same permission set. This only works for custom profiles, salesforce standard profiles do not allow you to turn enable this permission.\
\
5\. In your custom profile scroll down to *Administrative Permissions* section and enable *Query all data*

<figure><img src="/files/8Q1unW5cqA4vPPXGBxsZ" alt=""><figcaption></figcaption></figure>
{% endtab %}

{% tab title="Enable API access by Permission Set" %}

#### Enable API Access in Salesforce by Permission Set

\
1\. Click the Gear icon and click **Setup.**

<figure><img src="/files/cQkiPGdps0rzUiv2ndrt" alt=""><figcaption></figcaption></figure>

\
2\. Type **permission** into the Quick Find box and select **Permission Sets.**

3\. Select the Permission Set you wish to enable API access for. (Or click "NEW" if you want to create a new one).

<figure><img src="/files/czonicj0NEMm1tgopxmS" alt=""><figcaption></figcaption></figure>

4\. Scroll down to **System** and click **System Permissions.**

<figure><img src="/files/BDXQQH84vqQ028AiFw3e" alt=""><figcaption></figcaption></figure>

5\. Click **Edit**

<figure><img src="/files/nqHahjhLenhlvTmDTHXs" alt=""><figcaption></figcaption></figure>

6\. Check the **API Enabled** box and then scroll up and click **Save.**

<figure><img src="/files/cryVhogh4eaGnGemeMng" alt=""><figcaption></figcaption></figure>

The permission set now has the API Enabled permission. The permission set should be applied to the user connecting Salesforce to Stacksync.

7. Select the permission set and click **Manage Assignments** and then **Add Assignments**.
8. Select the check boxes next the names of the users you want assigned to the permission set, and click **Assign**.

***

*Optional:* If your sync includes the ContentDocumentLink object (used for Salesforce Files / attachments), also enable the Query All Files permission in the same permission set.

8\. Switch the permission set overview to *App Permissions*

<figure><img src="/files/xkQEFSF4a0xH3zgXbWVc" alt=""><figcaption></figcaption></figure>

9. Click **Edit**

<figure><img src="/files/GyLx2XuJBlMo50POfepd" alt=""><figcaption></figcaption></figure>

10. Scroll down to the *Content* section and enable *Query All FIles* and then scroll up and click **Save.**

<figure><img src="/files/Ur0v0V4WH1QMXg33g36Y" alt=""><figcaption></figcaption></figure>

<br>
{% endtab %}
{% endtabs %}

Learn more in [this Salesforce documentation](https://help.salesforce.com/s/articleView?id=sf.branded_apps_commun_api_permset.htm\&type=5).


# Fix the Salesforce OAuth Error

When creating your Salesforce connection, you may see this error:

<figure><img src="/files/4kAkv5y9BpyrtX94bfut" alt=""><figcaption></figcaption></figure>

This happens because Salesforce requires the **Stacksync a**pp to be installed and approved in your **Organization** before anyone can use OAuth.

## Install the Stacksync App in Your Salesforce Org

Before any user can create a Salesforce connection in Stacksync, the **Stacksync** App must be installed in your Salesforce org. This step only needs to be done **once**.

#### 1. Make sure the installer has the required permission

The user who performs the first OAuth authorization **must** have the Salesforce permission:

**“Approve Uninstalled Connected Apps”**

To enable it:

1. Go to **Setup**
2. Search for **Profiles**
3. Open the profile of the user who will install the app\
   (e.g., **System Administrator** or any user profile with this permission)
4. Enable **“Approve Uninstalled Connected Apps”**

<figure><img src="/files/ba3FeR9D0zR9LAFQ7QAX" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/ghZ3NVL8ZTMtwiLNiN95" alt=""><figcaption></figcaption></figure>

This permission lets the user approve and install connected apps.

#### **2. Perform the first OAuth authorization**

After the permission is enabled:

1. The user with that permission logs into **Stacksync**
2. Starts the **Salesforce OAuth flow**
3. Salesforce will show a prompt to **approve and install** the **Stacksync** App
4. Once approved, if you want other users in your organization to be able to install this app, go to **Setup → Connected Apps OAuth Usage**, find **Stacksync**, and click **Install.** After that, selected users will be able to authorize successfully.

<figure><img src="/files/sZ1bSUJqyWzvqGlp02yY" alt=""><figcaption></figcaption></figure>

## **Other Users Can Now Use OAuth**

Once the **Stacksync** app is installed, other Salesforce users (for example, a dedicated “Stacksync Integration User” with limited permissions) should be able to complete the OAuth flow without any extra steps.

If a user still encounters an OAuth error, go to **Setup → Connected Apps OAuth Usage**, find **Stacksync**, click **Install or** assign access. After that, the user will be able to authorize successfully.

***

## **Final Result**

* **One user with the proper permission installs the app once**
* **All other allowed users can now use OAuth to create Salesforce connections in Stacksync**


# Make Custom Fields Visible

When a custom field is created, it’s not visible by default to all profiles in the Salesforce organization. Users with different roles won’t be able to see the newly created custom field.

You need to modify the Field-Level Security settings after the custom field is created to allow other Salesforce profiles to see it. Stacksync enables Custom Field Visibility for the following profiles:

* System Administrator
* Standard User

{% hint style="info" %}
**How to enable a custom field for other profiles:**

1. Click on `Setup`\
   ![](/files/pzibMgIQ2mTtM5THH665)
2. Go to `Object Manager`

   ![](/files/MF5qRpG5BzS5YiZmM2mV)
3. Select the related Object

<img src="/files/f9WIlmHVfUJHnyF2OIWl" alt="" data-size="original">

4. Select `Fields & Relationships`

<img src="/files/T7OZ0OpQWfJVSvRFjlIb" alt="" data-size="original">

5. Select the `Custom Field`

<img src="/files/D5i88YHPRbbFTuTuIIgg" alt="" data-size="original">

6. Select Field-Level Security and make it visible to the user groups you want

<img src="/files/islScjdWlR0pGmKeGN4U" alt="" data-size="original">

**To make the custom Field visible in a layout:**

1. Click on `Setup`\
   ![](/files/pzibMgIQ2mTtM5THH665)
2. Go to `Object Manager`\
   ![](/files/MF5qRpG5BzS5YiZmM2mV)
3. Select the related Object\
   ![](/files/f9WIlmHVfUJHnyF2OIWl)
4. Go to the Page Layout section\
   ![](/files/T7OZ0OpQWfJVSvRFjlIb)
5. Select and edit the layout where you want to include the custom field you just created.\
   ![](/files/5ipw3CUkDCrBZonUrBQY)<br>
   {% endhint %}


# Formula Fields

## Formula Fields in Salesforce

Formula fields in Salesforce are **read-only fields** whose values are dynamically calculated based on other fields, expressions, or functions.\
Because their values are derived rather than stored, they might not always trigger standard change events when the underlying data changes.

***

### Syncing Formula Fields with Stacksync

Stacksync can **synchronize formula fields** at a custom frequency that you define.\
This ensures that even though formula fields don’t emit direct change notifications, their computed values remain up-to-date in your destination system.

#### How It Works

* Formula fields are detected automatically during setup.
* You can configure a **full table scan** for specific tables containing formula fields.
* Stacksync will recheck and update those formula field values at the chosen frequency (e.g., every 24 hours).<br>

<figure><img src="/files/V0sOTqqISx6BRUdmjZrf" alt=""><figcaption></figcaption></figure>


# Dynamics 365 Finance and Operations

The Stacksync **Dynamics 365 Finance & Operations (D365 F\&O)** connector lets you sync ERP data to any warehouse or operational system, with support for full syncs, incremental syncs (change tracking), and write-back.

Here are the key steps to have Stacksync sync your data:

{% content-ref url="/pages/DK5yXcQm0LdG3ax78YU6" %}
[Authorize Dynamics 365 F\&O](/two-way-sync/connectors/dynamics-365-finance-and-operations/authorize-dynamics-365-f-and-o)
{% endcontent-ref %}

{% content-ref url="/pages/xpwL0xRlBuVeRNVz0Qi2" %}
[Enable Changes Detection Capture (CDC)](/two-way-sync/connectors/dynamics-365-finance-and-operations/enable-changes-detection-capture-cdc)
{% endcontent-ref %}

{% content-ref url="/pages/LowIJ883pXQe4YzlAL9e" %}
[Make a Custom Entity Syncable by Stacksync](/two-way-sync/connectors/dynamics-365-finance-and-operations/make-a-custom-entity-syncable-by-stacksync)
{% endcontent-ref %}

If you have any questions or run into any blockers, reach out anytime at <hello@stacksync.com> and the Stacksync team will be happy to help.


# Authorize Dynamics 365 F\&O

This guide explains how to connect your Dynamics 365 Finance & Operations environment to Stacksync.

## 1. Find your Microsoft Dynamics Environment URL

Your environment URL is the base address of your D365 F\&O instance. To find it, copy the URL from your browser when you are in the application.

Examples:

* Production: `https://yourorg.operations.dynamics.com`
* Sandbox: `https://yourorg.sandbox.operations.dynamics.com`

### 2. Select Dynamics 365 Finance

In Stacksync:

1. Click **Create Sync**
2. Choose **Dynamics 365 Finance & Operations**<br>

   <figure><img src="/files/Q1SwnvvnzX1fWHg5Ocu4" alt=""><figcaption></figcaption></figure>

This opens the authorization flow.

***

### 3. Enter Your Environment URL

Provide the base URL of your D365 Finance & Operations environment you retrieved in the first step.<br>

<figure><img src="/files/Yvx9CTyMqQ0gF6QTAVqC" alt=""><figcaption></figcaption></figure>

Click **Authorize App**.

***

### 4. Sign In with Microsoft

You will be redirected to Microsoft’s login page.

1. Enter your Microsoft credentials
2. Continue to the permissions screen

This authenticates you as a valid D365 user.

***

### 5. Grant Stacksync Access

Microsoft will ask you to approve the Stacksync app.

Click **Accept** to authorize:

* Permission to read ERP data
* Permission to interact with OData entities

If you see this message:

> *“Need admin approval for this app.”*

Ask your admin to:

* Open the Microsoft identity / directory admin portal and go to the **enterprise applications / app registrations** area.
* Locate the **Stacksync** application or the corresponding app registration.
* Review and grant the requested API permissions (for example, access to Dynamics 365 F\&O APIs).

Once an admin has granted consent, the “Need admin approval” screen will no longer appear when you authorize Stacksync. You can then restart the authorization from step 2, and the flow will complete successfully, allowing Stacksync to connect to your Microsoft account and start syncing data.

If you have any questions or run into any blockers, reach out anytime at <hello@stacksync.com> and the Stacksync team will be happy to help.


# Enable Changes Detection Capture (CDC)

To synchronize your data efficiently, Stacksync must detect incremental changes—that is, new and updated records—without repeatedly scanning entire tables. Stacksync’s change data capture (CDC) relies on the `Change Tracking` feature in Dynamics 365, which **you must enable for each entity** you plan to sync. The following section explains how to turn on change tracking so Stacksync can reliably capture those incremental updates.

1. In the search bar search for **Data Management**
2. On the data Management page go on the data entities page<br>

   <figure><img src="/files/bULcej6GEcnuPDKMJ4jF" alt=""><figcaption></figcaption></figure>
3. Search for the entities you need to sync (e.g., Customers, Vendors)
4. Select the entity
5. Click **Change tracking** in the top ribbon<br>

   <figure><img src="/files/yL56RFWkoZA5wPLadngp" alt=""><figcaption></figcaption></figure>
6. Select the tracking mode:
   * `Enable entire entity` if available (tracks changes when any table used by the entity (root or child tables) changes, so it captures more updates and is usually better for integrations.
   * Otherwise `Enable primary table` (tracks changes only when the main (root) table of the entity changes)<br>

     Example:\
     For a **Customer** entity, the primary table is the core customer record and child tables include addresses.

     * If you enable **primary table**, changing the customer’s name is tracked, but changing only the address is not.
     * If you enable **entire entity**, both the name change and the address change are tracked and show up in your incremental sync.

     <figure><img src="/files/nitBf2ULR0XWF6eoo0se" alt=""><figcaption></figcaption></figure>

{% hint style="warning" %}
Some entities cannot have change tracking turned on. In complex entities, the “Track changes” option may be disabled or fail validation during activation, which means incremental change tracking is not available. In those cases, StackSync automatically falls back to full-sync mode for that entity, periodically re-reading all records to detect inserts and updates.
{% endhint %}

If you have any questions or run into any blockers, reach out anytime at <hello@stacksync.com> and the Stacksync team will be happy to help.


# Make a Custom Entity Syncable by Stacksync

Custom data entities in Dynamics 365 Finance & Operations are not always exposed to the APIs that Stacksync uses. If you don’t see your custom entity in Stacksync’s list, follow the steps below to make it available with as little developer involvement as possible.

### 1. Confirm the entity exists <a href="#id-1-confirm-the-entity-exists" id="id-1-confirm-the-entity-exists"></a>

* In D365 F\&O, in the search bar search for **Data management → Data entities**.<br>

  <figure><img src="/files/Co56MLQj3ulJ0iw8crEj" alt=""><figcaption></figcaption></figure>
* Search for your custom entity by its **name or label**.

Once you confirm the custom data entity exists, you can move on to checking whether it is API‑exposed.

### 2. Check if the entity is API-exposed <a href="#id-2-check-if-the-entity-is-public-api-exposed" id="id-2-check-if-the-entity-is-public-api-exposed"></a>

* While signed into D365, open a new browser tab and go to:\
  `https://<your-environment-url>/data`\
  For example:
  * `https://yourorg.operations.eu.dynamics.com/data`.
  * `https://yourorg.sandbox.operations.eu.dynamics.com/data`.
* Use the browser search (**Ctrl+F** or **Cmd+F**) and look for a collection name that matches your entity, usually in **plural** form (for example, `MyCustomEntities`).

Interpretation:

* **If you find the entity**:
  * The entity is already API-exposed.
  * In Stacksync, refresh the list of entities/tables in your Dynamics connector; the entity should be available to select and sync.
* **If you see cannot see it under `/data`**:
  * The entity exists Stacksync cannot access it via API.

### 3. If the entity is not API-exposed: what to ask a developer <a href="#id-3-if-the-entity-is-not-public-what-to-ask-a-develo" id="id-3-if-the-entity-is-not-public-what-to-ask-a-develo"></a>

Making an entity API-exposed requires a small, one-time change in the development environment. To keep this focused, send your D365 developer or partner the following brief request:

> **Goal:** Make custom data entity `<EntityName>` API-exposed so Stacksync can sync it.\
> **Environment:** `<your D365 environment URL>`

Ask them to:

1. Open the custom data entity in the development workspace.
2. Select the **root node** of the entity and set these properties:
   * **IsPublic** = `Yes`
   * **Public Entity Name** = singular name (e.g. `MyCustomEntity`)
   * **Public Collection Name** = plural name (e.g. `MyCustomEntities`)
3. Build and deploy the model to the target environment.
4. Confirm the entity is now API-exposed by repeating step 2.

Note that setting **IsPublic = Yes** does **not** make the entity publicly accessible on the internet.\
It only exposes the entity through the OData API **for authenticated and authorized users**. Without this flag, the entity is simply **not available via the API at all**.

If you have any questions or run into any blockers, reach out anytime at <hello@stacksync.com> and the Stacksync team will be happy to help.


# Rillet

The **Stacksync Rillet connector** enables **bidirectional synchronization** of ERP data with any data warehouse or operational system.

#### Rillet connector supports:

1. Historical data backfill.
2. Near real-time updates via change tracking
3. Bidirectional write-back support.

Here are the key steps to have Stacksync sync your data:

{% content-ref url="/pages/664dRHaUuwfncpluwOVO" %}
[Authorize Rillet Connection](/two-way-sync/connectors/rillet/authorize-dynamics-365-f-and-o)
{% endcontent-ref %}

{% content-ref url="/pages/W6FbpMHEMRm3dQ3n1rUw" %}
[Rillet Supported Objects](/two-way-sync/connectors/rillet/make-a-custom-entity-syncable-by-stacksync)
{% endcontent-ref %}

If you have any questions or run into any blockers, reach out anytime at <hello@stacksync.com> and the Stacksync team will be happy to help.


# Authorize Rillet Connection

This guide explains how to connect your Rillet environment to Stacksync.

### 1. Generate an API Key in [Rillet](https://app.rillet.io/)

1. Login to [Rillet](https://app.rillet.io/) App
2. Navigate to **Organization Setting** -> **API Access**

<figure><img src="/files/cigZPj7ekokhcdcbR1Kc" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/LFrdMQcvC0T6BwlROPLU" alt=""><figcaption></figcaption></figure>

3. Click on **Create new API key**
4. Enter a name for the API Key

**a. Enable full access (read/write):** Uncheck Read Only to allow bidirectional sync.

**b. Enable read-only access:** Check Read Only for one-way sync.

5\. Copy the secret key generated.

<figure><img src="/files/L5s02ezxBq6LWopDeLqL" alt=""><figcaption></figcaption></figure>

### 2. Create a Connection in [Stacksync](https://app.stacksync.com/) App

1. Click **Create Resource**
2. Select **Syncs**
3. Choose the **Rillet connector**

<figure><img src="/files/iGkLDhTT6EXdo0xkzEEZ" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/T5j5cKHvsR9sEeQqTkFv" alt=""><figcaption></figcaption></figure>

This opens the authorization flow.

### 3. Complete the Connection Setup

1. Provide the **Rillet API key** generated in Step 1.
2. Follow the on-screen steps to finalize the connection

<figure><img src="/files/UabaKdapWxYX1PyaCEDp" alt=""><figcaption></figcaption></figure>

If you have any questions or run into any blockers, reach out anytime at <hello@stacksync.com> and the Stacksync team will be happy to help.


# Rillet Supported Objects

Stacksync supports **17 objects** from Rillet, covering core financial and operational data.

| Object           | Incremental Sync | Historic Sync | Delete Detection |
| ---------------- | ---------------- | ------------- | ---------------- |
| Account          | ✅                | ✅             | ✅ Every 1h       |
| Subsidiary       | ❌                | ✅             | ✅ Every 1h       |
| Tax Rate         | ❌                | ✅             | ✅ Every 1h       |
| Customer         | ✅                | ✅             | ✅                |
| Vendor           | ✅                | ✅             | ✅                |
| Product          | ❌                | ✅             | ✅ Every 1h       |
| Contract         | ❌                | ✅             | ✅ Every 1h       |
| Invoice          | ✅                | ✅             | ✅                |
| Credit Memo      | ✅                | ✅             | ✅                |
| Bill             | ✅                | ✅             | ✅                |
| Journal Entry    | ✅                | ✅             | ✅                |
| Invoice Payment  | ✅                | ✅             | ✅                |
| Charge           | ✅                | ✅             | ✅                |
| Reimbursement    | ✅                | ✅             | ✅                |
| Bank Account     | ❌                | ✅             | ✅ Every 1h       |
| Bank Transaction | ❌                | ✅             | ✅ Every 4h       |
| Custom Field     | ✅                | ✅             | ✅                |

If you have any questions or run into any blockers, reach out anytime at <hello@stacksync.com> and the Stacksync team will be happy to help.


# Campfire

The **Stacksync Campfire connector** enables **bidirectional synchronization** of ERP data with any data warehouse or operational system.

#### Campfire connector supports:

1. Historical data backfill.
2. Near real-time updates via change tracking.
3. Bidirectional write-back support.

Here are the key steps to have Stacksync sync your data:

{% content-ref url="/pages/Ggg3e3uhqlMRMTChQpdG" %}
[Authorize Campfire Connection](/two-way-sync/connectors/campfire/authorize-dynamics-365-f-and-o)
{% endcontent-ref %}

{% content-ref url="/pages/QrkYkb5FnR0nXYVaPEu1" %}
[Campfire Supported Objects](/two-way-sync/connectors/campfire/make-a-custom-entity-syncable-by-stacksync)
{% endcontent-ref %}

If you have any questions or run into any blockers, reach out anytime at <hello@stacksync.com> and the Stacksync team will be happy to help.


# Authorize Campfire Connection

This guide explains how to connect your Campfire environment to Stacksync.

### 1. Generate an API Key in [Campfire](https://app.meetcampfire.com/v2/auth/sign-in)

1. Login to [Campfire](https://app.meetcampfire.com/v2/auth/sign-in)
2. Navigate to **Setting** -> **API Keys**

<figure><img src="/files/IfOYx8TmA207QEqQCpdC" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/cpGXnBV7KDROyphnfd0w" alt=""><figcaption></figcaption></figure>

3. Click on **New User** and Create a API user with a **Super User Role.**

<figure><img src="/files/zyiEsD6wW1BWms75NLZF" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/IJP6exaQmo2MiUofJsFn" alt=""><figcaption></figcaption></figure>

4. Click on **Create API Key** and Copy the **API Key secret** generated.

<figure><img src="/files/llbP5kdMtwyyAorGRXsh" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/IkMK6Gbqz6syGENvfPMe" alt=""><figcaption></figcaption></figure>

### 2. Create a Connection in [Stacksync](https://app.stacksync.com/) App

1. Click **Create Resource**
2. Select **Syncs**
3. Choose the **Rillet connector**

<figure><img src="/files/iGkLDhTT6EXdo0xkzEEZ" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/dDflIfgkw9PDOSb8dgb7" alt=""><figcaption></figcaption></figure>

This opens the authorization flow.

### 3. Complete the Connection Setup

1. Provide the **Campfire API key** generated in Step 1.
2. Follow the on-screen steps to finalize the connection

<figure><img src="/files/ozA3S1NrsqPLUZr8SGZK" alt=""><figcaption></figcaption></figure>

If you have any questions or run into any blockers, reach out anytime at <hello@stacksync.com> and the Stacksync team will be happy to help.


# Campfire Supported Objects

Stacksync supports **37 objects** from Campfire, covering core financial and operational data.

1. **Accounts Payable**<br>

   | Object     | Incremental Sync | Full Sync | Delete Detection |
   | ---------- | ---------------- | --------- | ---------------- |
   | Bill       | ✅                | ✅         | ✅ Every 24h      |
   | Debit Memo | ✅                | ✅         | ✅                |
2. **Accounts Receivable**<br>

   | Object      | Incremental Sync | Full Sync | Delete Detection |
   | ----------- | ---------------- | --------- | ---------------- |
   | Invoice     | ✅                | ✅         | ✅                |
   | Credit Memo | ✅                | ✅         | ✅                |
3. **Cash Management**<br>

   | Object           | Incremental Sync | Full Sync | Delete Detection |
   | ---------------- | ---------------- | --------- | ---------------- |
   | Bank Account     | ✅                | ✅         | ✅                |
   | Bank Transaction | ✅                | ✅         | ✅                |
4. **Core Accounting**<br>

   | Object                       | Incremental Sync | Full Sync | Delete Detection        |
   | ---------------------------- | ---------------- | --------- | ----------------------- |
   | Journal Entry                | ✅                | ✅         | ✅                       |
   | Intercompany Journal Entry   | ✅                | ✅         | ✅                       |
   | Chart of Accounts            | ✅                | ✅         | ✅                       |
   | Chart Transaction            | ✅                | ✅         | ✅                       |
   | Fixed Asset                  | ✅                | ✅         | ✅                       |
   | Fixed Asset Class            | ✅                | ✅         | ✅                       |
   | Fixed Asset Automation Rule  | ✅                | ✅         | ✅ Every 24h             |
   | Fixed Asset Automation Match | ✅                | ✅         | N/A (cannot be deleted) |
   | Budget                       | ✅                | ✅         | ✅                       |
   | Transaction Match            | ✅                | ✅         | ✅                       |
5. **Company & Organization**<br>

   | Object              | Incremental Sync | Full Sync | Delete Detection        |
   | ------------------- | ---------------- | --------- | ----------------------- |
   | Vendor              | ✅                | ✅         | ✅                       |
   | Vendor Summary      | ✅                | ✅         | N/A (cannot be deleted) |
   | Vendor Custom Field | ✅                | ✅         | ✅ Every 24h             |
   | Department          | ✅                | ✅         | ✅ Every 24h             |
   | Entity              | ✅                | ✅         | ✅ Every 24h             |
   | Tag                 | ✅                | ✅         | ✅                       |
   | Tag Group           | ✅                | ✅         | ✅ Every 24h             |
   | Cost Allocation     | ✅                | ✅         | ✅                       |
   | Custom Field        | ✅                | ✅         | ✅                       |
6. **Files**<br>

   | Object | Incremental Sync | Full Sync | Delete Detection |
   | ------ | ---------------- | --------- | ---------------- |
   | File   | ✅                | ✅         | ✅                |
7. **Revenue Recognition**<br>

   | Object              | Incremental Sync | Full Sync | Delete Detection |
   | ------------------- | ---------------- | --------- | ---------------- |
   | Contract            | ✅                | ✅         | ✅                |
   | Contract Customer   | ✅                | ✅         | ✅                |
   | Product             | ✅                | ✅         | ✅                |
   | Product Bundle      | ✅                | ✅         | ✅                |
   | Revenue Transaction | ✅                | ✅         | ✅                |
   | Customer Currency   | ✅                | ✅         | ✅                |
8. **Bank Reconciliation**<br>

   | Object                | Incremental Sync | Full Sync | Delete Detection |
   | --------------------- | ---------------- | --------- | ---------------- |
   | Reconciliation Report | ✅                | ✅         | ✅                |
9. **Integrations**<br>

   | Object  | Incremental Sync | Full Sync | Delete Detection |
   | ------- | ---------------- | --------- | ---------------- |
   | Webhook | ✅                | ✅         | ✅                |

If you have any questions or run into any blockers, reach out anytime at <hello@stacksync.com> and the Stacksync team will be happy to help.


# Amazon Seller Central

The Stacksync Amazon Seller Central connector lets you sync Amazon Seller Central data to your warehouse or operational systems, with support for historical and incremental syncs, including reports, in a one-way flow from Amazon to your destination systems.

#### Stacksync supports syncing:

1. SP-API exposed Objects
2. SP-API eposed Reports

Here are the key steps to have Stacksync sync your data:

{% content-ref url="/pages/IrWOQ2B7iRhJ0uajRa7R" %}
[Authorize Amazon Seller Central](/two-way-sync/connectors/amazon-seller-central/authorize-amazon-seller-central)
{% endcontent-ref %}

If you have any questions or run into any blockers, reach out anytime at <hello@stacksync.com> and the Stacksync team will be happy to help.


# Authorize Amazon Seller Central

This guide explains how to connect your Amazon Seller Central Account to Stacksync.

{% hint style="info" %}

#### Prerequisites:

1. Primary account access to Amazon Seller Central
2. An SP-API app in Amazon Developer Central
3. Required credentials: LWA client ID/secret, application ID, Merchant ID/Seller ID, refresh token.
   {% endhint %}

## Setup instructions

#### STEP 1: Find merchant token

1. Sign in to your [Amazon Seller Central account](https://sellercentral.amazon.com/).
2. In the top-right corner, open **Settings** and select **Account Info**.
3. In the left navigation, select **Business Information**.
4. Click **Your Merchant Token**.
5. Copy the Merchant Token for the marketplace you plan to sync and keep it for connector setup.

#### STEP 2: Create an SP-API app client

1. Sign in to your Amazon Seller Central.
2. Go to **Apps and Services > Develop Apps**.
3. In Developer Central, click **+ Add new app client**.
4. Enter an **App name**.
5. Set **API Type** to **SP API and Select Production in the dropdown.**<br>

   <figure><img src="/files/sFfzq9N8RVD0RrBiIivo" alt=""><figcaption></figcaption></figure>
6. Under **Business entities supported**, select your entity:
   * **Sellers**
   * **Vendors**
7. Assign the required roles for your entity.

For **Sellers**, select:

* Finance and Accounting
* Selling Partner Insights
* Buyer Communication
* Pricing
* Inventory and Order Tracking
* Brand Analytics
* Amazon Fulfillment
* Buyer Solicitation
* Product Listing

For **Vendors**, select:

* Brand Analytics
* Amazon Fulfillment
* Product Listing

8. In **Restricted Data Token (RDT)**, select:\
   **Yes, I will delegate access to PII to another developer's application**.
9. Click **Save and exit**.
10. In the app list, click View for your app.
11. Make a note of the Client identifier and Client secret, and then click Done. You will need them to configure Connection on Stacksync.<br>

    <figure><img src="/files/YqepNutRaotQq9mJGezP" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
Do **not** set an OAuth Login URI or OAuth Redirect URI for this setup.
{% endhint %}

{% hint style="info" %}
Amazon sets a 6-month expiration on client secrets. To avoid sync interruptions, regenerate the client secret every 6 months and update the connection to use the new secret.
{% endhint %}

#### STEP 3: Generate refresh token

1. In Developer Central, open your app’s action menu and select **Authorize**.
2. In **Add Authorizations**, click **Authorize app** for the marketplace you want to sync.
3. Copy and securely store the generated **Refresh Token** for use during Stacksync configuration.<br>

   <figure><img src="/files/AK42YpGiucuhpEKfflwA" alt=""><figcaption></figcaption></figure>

#### STEP 4: Finish Stacksync Connection configuration

1. Login to [Stacksync](https://app.stacksync.com/) -> **Create Resource** -> **Connections** -> Select **Amazon Seller Central**<br>

   <figure><img src="/files/uAQTcN9vbSIes84wdEG3" alt=""><figcaption></figcaption></figure>
2. Enter the connection details collected in the previous steps into the form.\
   a. Client ID\
   b. Client Secret\
   c. Merchent Token\
   d. Select Production / Sandbbox Account\
   e. Refresh Token\
   f. Select the Region where the App is created in previous steps<br>

   <figure><img src="/files/a5XjRZMOUqHvQmpRzdFj" alt=""><figcaption></figcaption></figure>
3. Click **Next**, then **Authorize Connection** to complete setup.

The connector is now ready to start syncing data.

If you have any questions or run into any blockers, reach out anytime at <hello@stacksync.com> and the Stacksync team will be happy to help.


# Dynamics 365 CRM

The Stacksync **Dynamics 365 CRM** connector lets you sync CRM data to any warehouse or operational system, with support for full syncs, incremental syncs (change tracking), and write-back.

Here are the key steps to have Stacksync sync your data:

{% content-ref url="/pages/Rkss4qqa0D7bU7ehR7I2" %}
[Authorize Dynamics 365 CRM](/two-way-sync/connectors/dynamics-365-crm/authorize-dynamics-365-crm)
{% endcontent-ref %}

{% content-ref url="/pages/fsDLkuZC0DCzDDhI6byM" %}
[Enable Changes Detection Capture (CDC) for Custom Entities](/two-way-sync/connectors/dynamics-365-crm/enable-changes-detection-capture-cdc)
{% endcontent-ref %}

If you have any questions or run into any blockers, reach out anytime at <hello@stacksync.com> and the Stacksync team will be happy to help.


# Authorize Dynamics 365 CRM

This guide explains how to connect your Dynamics 365 CRM environment to Stacksync.

## 1. Find your Microsoft Dynamics Environment URL

Your environment URL is the base address of your D365 CRM instance. To find it, copy the URL from your browser when you are in the application.

Examples:

* Production: `https://yourorg.crm.dynamics.com`
* Sandbox: `https://yourorg.sandbox.crm.dynamics.com`

### 2. Select Dynamics 365 CRM

In Stacksync:

1. Click **Create Sync**
2. Choose **Dynamics 365 CRM**<br>

   <figure><img src="/files/RWwlug28fYnOcUBrk6FU" alt=""><figcaption></figcaption></figure>

This opens the authorization flow.

***

### 3. Enter Your Environment URL

Provide the base URL of your D365 CRM environment you retrieved in the first step.\
\ <br>

<figure><img src="/files/1VyEerMGc4SfVOhJlOtI" alt=""><figcaption></figcaption></figure>

Click **Authorize App**.

***

### 4. Sign In with Microsoft

You will be redirected to Microsoft’s login page.

1. Enter your Microsoft credentials
2. Continue to the permissions screen

This authenticates you as a valid D365 user.

***

### 5. Grant Stacksync Access

Microsoft will ask you to approve the Stacksync app.

Click **Accept** to authorize:

* Permission to read CRM data
* Permission to interact with OData entities

If you see this message:

> *“Need admin approval for this app.”*

Ask your admin to:

* Open the Microsoft identity / directory admin portal and go to the **enterprise applications / app registrations** area.
* Locate the **Stacksync** application or the corresponding app registration.
* Review and grant the requested API permissions (for example, access to Dynamics 365 CRM APIs).

Once an admin has granted consent, the “Need admin approval” screen will no longer appear when you authorize Stacksync. You can then restart the authorization from step 2, and the flow will complete successfully, allowing Stacksync to connect to your Microsoft account and start syncing data.

If you have any questions or run into any blockers, reach out anytime at <hello@stacksync.com> and the Stacksync team will be happy to help.


# Enable Changes Detection Capture (CDC) for Custom Entities

To synchronize your data efficiently, Stacksync must detect incremental changes, that is new, updated and deleted records, without repeatedly scanning entire tables. Stacksync’s change data capture (CDC) relies on the `Change Tracking` feature in Dynamics 365, which **you must enable for Custom entities** you plan to sync. The following section explains how to turn on change tracking so Stacksync can reliably capture those incremental updates.

{% hint style="info" %}
**Standard entities** have change tracking **enabled by default,** no action required. This guide is only for **custom entities**.
{% endhint %}

1. Sign in to [Power Apps](https://make.powerapps.com/).
2. Expand **Dataverse**, and then select **Tables.**
3. Select a table, and then in **Table properties** select **Properties**.
4. In the Edit table page, expand **Advanced options.**
5. In the **For this table** section, enable the **Track Changes** checkbox.<br>

   <div align="left" data-full-width="false"><figure><img src="/files/cOKzBG2YYiJw3foEVwyd" alt=""><figcaption></figcaption></figure></div>
6. Select **Save.**

If you have any questions or run into any blockers, reach out anytime at <hello@stacksync.com> and the Stacksync team will be happy to help.


# Postgres

## Introduction

PostgreSQL (Postgres) is a powerful, open-source, object-relational database management system that uses and extends the SQL language. It is known for its stability, reliability, and advanced features such as concurrency control, transaction management, and support for various programming languages. Postgres is the backbone database of many backend production services.

You can now keep data in sync with all your other CRMs and database systems with Stacksync!

Check out our [Postgres guides](/two-way-sync/guides/modify-salesforce-data-in-postgres) to get started!

## Things to keep in mind

### During setup

* [x] **All Postgres tables must have a (single) primary key**\
  We use the primary key to keep your data in sync.\
  The primary key must be a single column, composite primary keys are not valid. Check our [Postgres snippets](/two-way-sync/connectors/postgres/snippets) collection for additional hints.
* [x] **Primary keys must be auto-generated**\
  Make sure your primary keys are generated by your database (i.e. have a default value set).
* [x] **Double-check that the Postgres user used by Stacksync to connect to your database is the owner** (or has the same role as the owner) **of&#x20;*****the tables*****&#x20;you want to map.**

If a table you see in your database does not appear in Stacksync, one of the previous conditions is not met. Check our [Postgres snippets](/two-way-sync/connectors/postgres/snippets) collection for additional hints.

{% hint style="info" %}
You must have replication rights to connect your Postgres instance. If you get the following error:

`The user does not have the right permissions for replication. Please check the documentation for more information.`

Please use the "**Postgres Heroku**" connector instead of the "Postgres" Connector. They are the same but the "Postgres Heroku" connector does not require replication rights in trade for some negligible database performance. So you can use the "Postgres Heroku" connector with your current database even if it is not provided by Heroku as long as you get the error message displayed above.
{% endhint %}

<details>

<summary>How to enable Logical Replication? (If not already enabled)</summary>

To use **logical replication** for change data capture the ***wal\_level*** value must be set to ***logical.*** To change the value of this parameter, modifications need to be made to the *postgresql.conf* file.

1. Open the *postgresql.conf* file. On Linux, this file can be found in the following directory:

   **/etc/postgresql/version/main**
2. Find the **wal\_level** variable under WRITE-AHEAD LOG settings.
3. Uncomment it if it's commented and set its value to **logical:**\
   wal\_level = logical
4. Restart the PostgreSQL service. On Linux it can be restarted with the following commands:\
   `sudo service postgresql stop`

   `sudo service postgresql start`
5. Use the following SQL query to ensure logical replication has been enabled:\
   `SHOW wal_level;`\
   The value displayed should be **logical.**
6. After enabling, in Stacksync, use the **Postgres** option instead of the **Postgres Heroku** option while creating the sync.

</details>

### After setup

{% hint style="warning" %}
Renaming schemas, tables, or columns will break Stacksync configuration. No worries, we get you covered! Please refer to our [Manual Sync Configuration Update](/two-way-sync/features/update-sync-configuration) guide.
{% endhint %}


# Authorize Postgres

Authenticate your Postgres app and sync data with Stacksync

You can also watch a quick video on how to authorize Postgres

{% embed url="<https://youtu.be/J4Q09Vt57h8>" %}

## Adding Credentials to Stacksync

#### 1. Select Postgres in the Create Sync page in Stacksync.

<figure><img src="/files/xDIXOn4VdhZmJ2j6CWuf" alt=""><figcaption></figcaption></figure>

#### 2. Add your Postgres credentials as Connection String or as Parameters.

<figure><img src="/files/yaZ1EDdPKi7RlDt621hu" alt=""><figcaption></figcaption></figure>

#### 3. (Optional) Upload your SSL Root Certificate file

<figure><img src="/files/NZC14x16IoPjG4rQh0zA" alt=""><figcaption></figcaption></figure>

#### 4. (Optional) Add SSH user and SSH host

<figure><img src="/files/7pSA8NEVjbbqwsaREQsU" alt=""><figcaption></figcaption></figure>

#### 5. Click "Authorize App"

<figure><img src="/files/b53lxxakvw6WZyLb40Rs" alt=""><figcaption><p>Click "Authorize App"</p></figcaption></figure>


# Supabase

Find your Supabase connection URL.

#### 1. Open your Supabase project

#### 2. Click "Connect"

<figure><img src="/files/vXld4mKdyb4XSiOB4oeO" alt=""><figcaption><p>Click "Connect"</p></figcaption></figure>

#### 3. Copy connection string

Make sure to:

1. use **Transaction Pooler**. Compared to direct connections, a transaction pooler enables higher connection concurrency without exhausting the database. It improves connection reuse, load isolation, and fault tolerance, ensuring stable performance under high throughput.
2. use **IPv4-compatible** connection string. Stacksync does not currently support IPv6. You must use an IPv4-compatible connection string.

<figure><img src="/files/uKltTcBtyGjGJSKg2Bmy" alt=""><figcaption></figcaption></figure>

#### 4. Create the connection on Stacksync

<figure><img src="/files/UBy2If0XdjKdwHOw8uWi" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/WH6kPgpZ14z95cIyQ4gg" alt=""><figcaption></figcaption></figure>

Make sure to fill in all fields, including the password as it may not be copied as part of the connection string.

{% hint style="info" %}
If you face the error `Please use IPv4 compatible supabase connection pooler` go back to Supabase app and make sure to use a connection string which is IPv4 compatible.
{% endhint %}


# Cloud SQL

Find your Cloud SQL connection URL.

#### 1. Go to your [Google Cloud Console](https://console.cloud.google.com)

#### 2. Click on SQL

<figure><img src="/files/KVkmRS5s3qEkBSTdJ9h8" alt=""><figcaption></figcaption></figure>

#### 3. Write down the public IP address of the SQL Instance you want to use

<figure><img src="/files/SwTwtZ2UbClNEHYnJfCu" alt=""><figcaption></figcaption></figure>

#### 4. Click on the instance you want to use

<figure><img src="/files/kTeF2pVK2VOothhYtPqM" alt=""><figcaption></figcaption></figure>

#### 5. Go to "Users"

<figure><img src="/files/aQwFyiAxmeJe9S7IIDP6" alt=""><figcaption></figcaption></figure>

#### 6. Make sure the user you want to use is listed here, let's take "fake\_user"

<figure><img src="/files/4cDQmqOzKIpXRWyZl9Xf" alt=""><figcaption></figcaption></figure>

#### NOTE: You can manage the user's password by clicking on the 3 dots

<figure><img src="/files/uu4IfVueKFe9vXq8QaHV" alt=""><figcaption></figcaption></figure>

#### NOTE: you can add a new user by clicking "ADD USER ACCOUNT"

<figure><img src="/files/uGlqZhOdPd6pZW8FG6HM" alt=""><figcaption></figcaption></figure>

#### 7. Click on "Databases" and find the database inside the SQL Instance

<figure><img src="/files/rqIAOMTUZyRo3Qvyj7Dy" alt=""><figcaption></figcaption></figure>

8. Write down the Database Name you want to use, here let's take "my\_tutorial\_database"

<figure><img src="/files/vJz4cbkxbmJ6bvAJ8hDv" alt=""><figcaption></figcaption></figure>

8. In Cloud SQL the port is always 5432, the connection string will then have the form: postgres\://\[USER]:\[PASSWORD]@\[PUBLIC\_IP\_ADDRESS]:5432/\[DATABASE\_NAME] In our example: postgres\://fake\_user:\*\*\*\*\*\*\*\*@74.75.177.158:5432/my\_tutorial\_database- you can now paste into Stacksync

<figure><img src="/files/pMFt8xjSRrToBUPxhlQI" alt=""><figcaption><p>Paste your database connection URL into Stacksync</p></figcaption></figure>

## That's it! 🥳


# Ensuring Secure Cloud SQL Connections with SSL Certificate

Providing the database's SSL certificate when connecting to Cloud SQL is essential to verify the server's identity and prevent man-in-the-middle (MITM) attacks. Without specifying the certificate, the client cannot be sure it is connecting to the intended server, leaving the connection vulnerable to interception by malicious actors. By supplying the SSL certificate, the client can authenticate the server's identity, ensuring that the data exchange happens only with the legitimate database server. This verification step adds a critical layer of trust and security in database connections.

### 1. Identify Your Cloud SQL Instance Configuration

**Access the Google Cloud Console:**

* Log in to the Google Cloud Console and navigate to the **SQL** service
* Select your target database instance from the list

<figure><img src="/files/knzjXmyr14WNX0edY8em" alt=""><figcaption></figcaption></figure>

**Determine Instance Details:**

* Click on the instance name to open the instance details page
* Note your database engine type (PostgreSQL, MySQL, or SQL Server)

<figure><img src="/files/kJO73aEXzp7R47AZhkuB" alt=""><figcaption></figcaption></figure>

### 2. Download the SSL Certificate

**Navigate to Certificate Management:**

* Click on the **Connections** tab
* Click on the **Security** tab
* Locate the **Manage certificates** area

<figure><img src="/files/PuCMjii6vRwxpIdqLlhl" alt=""><figcaption></figcaption></figure>

**Download the Server Certificate:**

* Click **Download Certificates** to get the Certificate Authority (CA) certificate
* The downloaded file will be named `server-ca.pem`
* Save this file securely as you'll need to upload it to Stacksync

<figure><img src="/files/Zz2r2btOGpVxLxCXSxES" alt=""><figcaption></figcaption></figure>

### 3. Upload the SSL Certificate to Stacksync

When creating a new database connection in the Stacksync app, upload the downloaded SSL certificate to complete the secure configuration.

<figure><img src="/files/gZ5rXGKZazsIaCVLgD3B" alt=""><figcaption></figcaption></figure>

***

If you have any questions or need further assistance, reach out to us at <hello@stacksync.com>. We're here to help ensure a seamless and secure database connection setup.


# Digital Ocean

Connect a Postgres hosted on Digital Ocean

To authorize DigitalOcean, you'll need to set `sslmode=no-verify` in the connection string.

You might also need to Whitelist Stacksync's IP address. Learn more at [IP Whitelisting](/two-way-sync/connectors/setup-options/ip-whitelisting)


# Heroku

Find your Postgres Heroku connection string

For Heroku, use the "Postgres Heroku" connector.

#### 1. Go to <https://dashboard.heroku.com/apps>

#### 2. Open one of your apps

<figure><img src="/files/xjY3V1ySo9Ight3AJgXW" alt=""><figcaption></figcaption></figure>

#### 3. Open your database add-on

<figure><img src="/files/MOBLCeBWNAneUh1ifQQ8" alt=""><figcaption></figcaption></figure>

#### 4. Go to settings and view Database credentials

<figure><img src="/files/IOuVZbAoEMhn0PK762Gx" alt=""><figcaption></figcaption></figure>

#### 5. Copy Connection URI

<figure><img src="/files/782G6RSuT2CaqIbn1Or1" alt=""><figcaption></figcaption></figure>

#### 6. Paste the connection URI into Stacksync to connect your database

<figure><img src="/files/gYk8yIl1tO8kdfb3k8gb" alt=""><figcaption><p>Paste your connection URL to connect your database</p></figcaption></figure>

{% hint style="info" %}
For the Heroku connector, the user is required to have the **Create** privilege on the database.

This privilege can be enabled for the user using the following SQL query:

```sql
GRANT CREATE ON DATABASE database_name TO user_name;
```

{% endhint %}

Finally, click "Authorize App" to connect!

That's it, your Postgres Heroku instance is connected! 🎉


# Amazon Lightsail

Find the connection credentials for your Amazon Lightsail Database.

Get your database endpoint and port information from the Lightsail console. You use these later when configuring your client to connect to your database.

#### 1. To get your database connection details

#### 2. Sign in to the [Lightsail console](https://lightsail.aws.amazon.com/).

#### 3. On the Lightsail home page, choose the Databases tab.

#### 4. Choose the name of the database that you want to connect to.

#### 5. Get the Hostname and Port

On the Connect tab, under the **Endpoint and port** section, note the endpoint and port information.

<figure><img src="https://d9yljz1nd5001.cloudfront.net/en_us/2b894762c8e4d8e91e7f44a16ed9b990/images/amazon-lightsail-postgres-database-endpoint-and-port.png" alt=""><figcaption></figcaption></figure>

#### 6. Get username and password

On the Connect tab, under the "User name" and "passwords" section, make note of the user name, then choose "Show" under the "Password" section to view the current database password.

Because managed passwords are complex, we also recommend copying and pasting it to avoid entering it incorrectly. Highlight the managed password and press Ctrl+C if you’re using Windows, or Cmd+C if you’re using macOS, to copy it to your clipboard. Then, press Ctrl+V or Cmd+V as appropriate to paste it.

{% hint style="info" %}
For the Amazon Lightsail connector, the user is required to have the **Create** privilege on the database.

This privilege can be enabled for the user using the following SQL query:

```sql
GRANT CREATE ON DATABASE database_name TO user_name;
```

{% endhint %}

#### 7. Paste all of this information into the Stacksync UI

For the database type, enter `postgresql`

<figure><img src="/files/wQg8llISjf2oIfmhQsgF" alt=""><figcaption><p>Past the credentials in the Stacksync UI</p></figcaption></figure>

{% hint style="info" %}
Enter `postgres` if you can’t remember the name of your primary database. Every PostgreSQL managed database has a `postgres` database that you can connect to, after which you’ll be able to access all other databases on the PostgreSQL managed database.
{% endhint %}

{% hint style="info" %}
The connection string on top of the credentials setup box will autofill as you past your credentials in the designated fields (Host, Post, Username, Password, Database and Database type). You can ignore it, it is done automatically for you! Just fill up the other credential boxes.
{% endhint %}

Finally, click "Authorize App" to connect your database.

That's it, your database should be connected! 🎉

### Other useful sources

Amazon connection tutorial: <https://lightsail.aws.amazon.com/ls/docs/en_us/articles/amazon-lightsail-connecting-to-your-postgres-database>


# Amazon RDS

Find your Amazon RDS connection URL.

1. Sign in to the AWS Management Console and open the Amazon RDS console at\
   <https://console.aws.amazon.com/rds/>
2. In the navigation panel, choose **Databases** to display a list of your DB instances.

<figure><img src="/files/QoLG7plts8RK5T9PMg3I" alt="" width="254"><figcaption><p>Navigation panel</p></figcaption></figure>

3. Click on the DB you want to sync.
4. On the **Connectivity & security tab**, copy the endpoint and the port number.

<figure><img src="/files/OpKMLDNKKuBN6TOMTZxG" alt="" width="442"><figcaption><p>RDS endpoint and port number</p></figcaption></figure>

5. Then click on the **Configuration** tab and view the **Master username** and **DB name** values.\
   If the DB name is empty as it is the case here, then use **'postgres'** as DB name.\
   The password was set when the database was originally created. Please ask whoever set up the database for the connection password.<br>

<figure><img src="/files/oDjT9ZvlOULWPj2gB2Q2" alt=""><figcaption></figcaption></figure>

5. Use this template for the connection string and replace the element with your values

```
postgresql://USERNAME:YOUR_PASSWORD@ENDPOINT:PORT/DB_NAME
```

7. Paste the connection string into Stacksync

<figure><img src="/files/gW68gcZSqfte4IW0gI5V" alt=""><figcaption></figcaption></figure>

If your database is in a **private subnet** and doesn't have any way to access it from internet currently, you can set up a jumpbox / bastion host to allow Stacksync to access your database using this tutorial:

{% content-ref url="/pages/WtisCNpQmZWu8Z4PAEXS" %}
[Access a Private AWS RDS Instance via a Jumpbox](/two-way-sync/connectors/setup-options/ssh-tunneling/access-a-private-aws-rds-instance-via-a-jumpbox)
{% endcontent-ref %}


# Ensuring Secure RDS Connections with SSL Certificate

Providing the database's SSL certificate when connecting to the RDS database is important to verify the server's identity and prevent man-in-the-middle (MITM) attacks. Without specifying the certificate, the client cannot be sure it is connecting to the intended server, leaving the connection vulnerable to interception by malicious actors. By supplying the SSL certificate, the client can authenticate the server's identity, ensuring that the data exchange happens only with the legitimate database server. This verification step adds a critical layer of trust and security in database connections.

### 1. Identify the SSL Certificate used by your RDS

1. **Access the AWS Console:**
   * Log in to the AWS Management Console and navigate to the RDS service.
   * Select the target database instance.
2. **Determine Certificate Details:**
   * Identify the Certificate Authority (CA) your database uses.
   * Confirm the AWS Region where your database is hosted.

<figure><img src="/files/fgeWiHCx0MdnuDHDgmFN" alt=""><figcaption></figcaption></figure>

### 2. Download the SSL Certificate

1. **Download from AWS Documentation:**
   * Visit the [AWS RDS SSL Documentation](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.SSL.html) and locate the appropriate certificate bundle based on your database’s region (e.g., `eu-west-3`).

<figure><img src="/files/rK7dg1rKc7pszneUrkiu" alt=""><figcaption></figcaption></figure>

2. **Extract the Correct Key:**

* The downloaded certificate file includes three keys for supported encryption methods: `rsa2048`, `rsa4096`, and `ecc384`.
* Use a text editor like VSCode to open the file.
* Select the appropriate certificate based on your database’s encryption method:
  * **Shortest key:** `ecc384`
  * **Longest key:** `rsa4096` (commonly used for enterprise-grade databases).

### Upload the SSL certificate to Stacksync

When creating a new database connection in the Stacksync app, upload the selected SSL certificate to complete the secure configuration.

<figure><img src="/files/g0qLkfJ8mNPI0gXZigov" alt=""><figcaption></figcaption></figure>

If you have any questions or need further assistance, reach out to us at <hello@stacksync.com>. We’re here to help ensure a seamless and secure database connection setup.


# Basedash

Find your Basedash connection URL.


# Render

Connect your Postgres database hosted on Render to Stacksync

[Render](https://render.com/) is a easy and cheap database to host all your projects.


# Retool

Authenticate your Retool app and sync data with Stacksync

### 1. Access your dashboard

### 2. Click on "Database"

<figure><img src="/files/1H9LOk4kWJqQ7yvRnru4" alt=""><figcaption><p>Click on "Database"</p></figcaption></figure>

### 3. Reveal Database Options

<figure><img src="/files/nDtpvrD5fTj5EwED8hEF" alt=""><figcaption><p>Click and reveal options</p></figcaption></figure>

### 4. Click "Connection"

<figure><img src="/files/JOGWURtVKWMrvqZHDRF6" alt=""><figcaption><p>Click "Connection"</p></figcaption></figure>

### 5. Reveal Postgres Connection URL

<figure><img src="/files/9DcWZaIdJvylwoGrtrEH" alt=""><figcaption><p>Reveal the Connection URL</p></figcaption></figure>

### 6. Copy connection URL

<figure><img src="/files/mS7zsxtmZTLpsujsK0Sa" alt=""><figcaption><p>Copy the connection URL</p></figcaption></figure>

### 7. Get credentials from connection URL

{% hint style="info" %}
Retool doesn't give you the port info to connect Postgres via connection URL.
{% endhint %}

From your connection URL. Manually get the data needed to fill the connection form that will be shown in Step 9.

* **Database Type**
* **Host**
* **Port**
* **Username**
* **Password**
* **Database**
* **Schema**

### 6. Click on "Connections"

<figure><img src="/files/zlGWQJsm10WtcOt4a652" alt=""><figcaption><p>Go to "Connections" on Stacksync</p></figcaption></figure>

### 7. Click on "Create New Connection"

<figure><img src="/files/TRZeFjrImF0DOHUsFRxA" alt=""><figcaption></figcaption></figure>

### 8. Click "Postgres"

<figure><img src="/files/uukYnXaTMxAvW85vKiss" alt=""><figcaption></figcaption></figure>

### 9. Fill the connection form

<figure><img src="/files/i5c51FteBW1IncGSgDyo" alt=""><figcaption><p>Fill the connection form with all the data from step 7</p></figcaption></figure>


# Snippets

Handy snippets to help you set up Postgres to work with Stacksync

## Create a Primary Key

When creating a table in Postgres, you must define a primary key for the table. This can be done using a UUID or an integer that is auto-generated. Here are example snippets to create a primary key with auto-generated UUIDs or integers in Postgres:

Code snippet for UUID primary key:

```sql
CREATE TABLE public."my_table" (
   id uuid PRIMARY KEY DEFAULT gen_random_uuid(),
   my_column varchar,
   -- other columns here
);
```

Code snippet for integer primary key:

```sql
CREATE TABLE my_table (
   id serial PRIMARY KEY,
   my_column varchar,
   -- other columns here
);
```

In the above code snippets, we have defined a primary key column named `id` using UUID and integer data types respectively. For integer primary keys, the `serial` data type is used, which automatically generates a sequence of unique integer values for the `id` column. By using either of these techniques, you can ensure that each row in the table has a unique identifier.

## Alter a Primary Key

In Postgres, you can alter a primary key on a table to set it to a new column that is auto-generated with UUIDs or integers. This can be useful when you need to change the primary key column of a table to make it work with Stacksync's requirements. Here is an example code snippet that demonstrates how to alter a primary key on a table to set it to a new column that is auto-generated with UUIDs (BEST PRACTICE) or integers:

Code snippet for UUID primary key: (recommended)

```sql
-- first, create the new column with the desired data type
ALTER TABLE public."my_table" ADD COLUMN new_id uuid DEFAULT uuid_generate_v4() PRIMARY KEY;

-- then, drop the old primary key constraint
ALTER TABLE public."my_table" DROP CONSTRAINT my_table_pkey;

-- finally, add the new primary key constraint using the new column
ALTER TABLE public."my_table" ADD PRIMARY KEY (new_id);
```

Code snippet for Integer primary key:

```sql
-- first, create the new column with the desired data type
ALTER TABLE public."my_table" ADD COLUMN new_id serial PRIMARY KEY;

-- then, drop the old primary key constraint
ALTER TABLE public."my_table" DROP CONSTRAINT my_table_pkey;

-- finally, add the new primary key constraint using the new column
ALTER TABLE public."my_table" ADD PRIMARY KEY (new_id);
```

In the above code snippets, we have created a new column named `new_id` with the desired data type and auto-generation mechanism for the primary key. We have then dropped the old primary key constraint on the table and added a new primary key constraint using the new column. Note that this operation may require data type conversion and may cause data loss, so you should be careful when modifying the primary key column of a table.

## Create a User with restricted access rights on your database

When you use Stacksync on production databases, you might feel more comfortable creating a user where Stacksync has only the necessary access rights to access the data.

Usually, Stacksync will create some tables directly and read and write data on these. For this setup, it is recommended to create a user for Stacksync that has the `create table` and `read + write` access rights.

Here is how to do it:

1. Connect to your PostgreSQL database with a user that has administrative privileges (e.g., the superuser or an account with the `CREATEDB` privilege).
2. Use the `CREATE ROLE` command to create a new user for Stacksync. You can grant the required privileges using the `GRANT` command.

```sql
-- Create the user
CREATE ROLE stacksync_user WITH LOGIN PASSWORD 'your_password';

-- Grant the necessary privileges
-- To create tables in a specific schema (e.g., public)
GRANT CREATE ON SCHEMA public TO stacksync_user;

-- Grant read and write privileges on all tables in the public schema
GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA public TO stacksync_user;
```

3. The Stacksync user also needs to have either `replication` rights on your database or `create schema`. This is necessary for Stacksync to be able to capture data changes in real-time and make the sync work.

Option 1: `replication` rights (recommended)

```sql
-- Grant replication rights to the Stacksync user (you must be a superuser to give replication rights to another user)
ALTER ROLE stacksync_user WITH REPLICATION;
```

Option 2: `create schema` (if your database does not allow you to activate `replication` rights)

```sql
-- Grant create schema rights to the Stacksync user
GRANT CREATE ON DATABASE your_database_name TO stacksync_user;
```

## Grant user read and write access rights on a specific existing table

```sql
-- Grant read and write access to the table for the user
GRANT SELECT, INSERT, UPDATE, DELETE ON your_table TO your_user;
```

The user "`your_user`" now has read and write access rights to the "`your_table`" table in the database. They can perform SELECT, INSERT, UPDATE, and DELETE operations on that table as needed.

## Create a new column in Postgres

To create a new column, here is a generic code snippet:

```sql
ALTER TABLE table_name
ADD COLUMN new_column_name data_type;
```

Here's an example that adds a new column named `age` with the data type `integer` to a table named `persons`:

```sql
ALTER TABLE persons
ADD COLUMN age integer;
```

To add a new column named `name` with the data type `varchar` (i.e. string) to a table named `persons`:

```sql
ALTER TABLE persons
ADD COLUMN name VARCHAR;
```


# Required Permissions

For Stacksync to sync data from/to your Postgres, Stacksync requires a given set of permissions. These are the least minimal permissions required for Stacksync to work.

When creating a Postgres sync on the Stacksync Dashboard, you will need to provide a DB user. Here is a guide to creating a user with the least permissions while still enabling Stacksync Syncs from/to your Postgres DB.

Here is the list of queries you need to execute in your Postgres DB to create and grant the DB user `stacksync_user` the necessary permissions.

You need to replace the following fields in the query:

* `'<PROVIDE_STRONG_PASSWORD>'`
* `` `<DATABASE_NAME_CONTAINING_THE_TABLES_YOU_WANT_TO_SYNC>' ``
* `'<SCHEMA_NAME_CONTAINING_THE_TABLES_YOU_WANT_TO_SYNC>'`
* `'<NAMES_OF_TABLES_YOU_WANT_TO_SYNC>'`

```plsql
CREATE USER stacksync_user WITH PASSWORD '<PROVIDE_STRONG_PASSWORD>';
--necessary to create tables
CREATE SCHEMA IF NOT EXISTS stacksync_logging;
GRANT ALL PRIVILEGES ON SCHEMA stacksync_logging TO stacksync_user;

--necessary to create triggers on the table you want to sync
GRANT CREATE ON DATABASE '<DATABASE_NAME_CONTAINING_THE_TABLES_YOU_WANT_TO_SYNC>' TO stacksync_user;
GRANT USAGE, CREATE ON SCHEMA '<SCHEMA_NAME_CONTAINING_THE_TABLES_YOU_WANT_TO_SYNC>' TO stacksync_user;
GRANT USAGE ON LANGUAGE plpgsql TO stacksync_user;
GRANT SELECT, INSERT, UPDATE, DELETE, TRIGGER ON TABLE '<NAMES_OF_TABLES_YOU_WANT_TO_SYNC>' TO stacksync_user;

-- necessary to detect which tables can be synced by Stacksync
GRANT SELECT ON pg_class TO stacksync_user;
GRANT SELECT ON pg_namespace TO stacksync_user;
GRANT SELECT ON pg_constraint TO stacksync_user;
GRANT SELECT ON pg_attribute TO stacksync_user;
GRANT SELECT ON pg_attrdef TO stacksync_user;
GRANT SELECT ON information_schema.sequences TO stacksync_user;
```

### Additional permissions required for PostgreSQL partitioned tables

In PostgreSQL, permissions are managed per partition table.

If your partitioned tables already had **existing partitions before granting permissions to Stacksync** on the parent table, you must also grant permissions on those existing partitions manually.

Future partitions created afterward will automatically inherit the parent table permissions.

Run the following query to grant the required permissions on all existing partitions in your database:

```sql
DO $$
DECLARE
    r RECORD;
BEGIN
    FOR r IN
        SELECT c.oid::regclass AS partition_table
        FROM pg_class c
        JOIN pg_inherits i ON i.inhrelid = c.oid
    LOOP
        EXECUTE format(
            'GRANT SELECT, INSERT, UPDATE, DELETE, TRIGGER ON TABLE %s TO stacksync_user;',
            r.partition_table
        );
    END LOOP;
END $$;
```


# BigQuery

Connect your CRM to your Data Warehouse with Stacksync!

## Introduction

Google BigQuery is a cloud-based data warehousing and analytics platform that enables users to analyze and process large datasets using SQL-like queries. It is highly scalable and allows users to store and query massive amounts of data in real time.

Check out our [BigQuery guides](/two-way-sync/guides/modify-salesforce-data-in-postgres) to get started and sync data to your other systems and databases!

## Things to keep in mind

#### Quotas and Limits

There is a limit of 1,500 table modifications that can be made to a BigQuery table in a day. Table modifications include `DELETE`, `INSERT`, `MERGE`, `TRUNCATE TABLE`, or `UPDATE` statements. If a table reaches this limit, any new modifications made through independent load jobs might fail. However, Stacksync operations are designed to avoid quota limitations so your syncs won't fail.

This is a restriction set by Google, for more details:

{% embed url="<https://cloud.google.com/bigquery/quotas>" %}

#### Views are not supported

As of now, only **tables** can be synced with Stacksync. Views and materialized views cannot be synced, but we are working on it! Stay tuned!


# Authorize BigQuery

Authorize your BigQuery app and sync data with Stacksync

## Enabling Required Google APIs <a href="#id-1367fe36-76e9-430d-a949-7b538bc2ab00" id="id-1367fe36-76e9-430d-a949-7b538bc2ab00"></a>

The following APIs are required by the Stacksync services in order to access the data and create a sync in BigQuery:

1. [Cloud Run API](https://console.cloud.google.com/marketplace/product/google/run.googleapis.com) (to create a secure portal for real-time notification service in your space)
2. [Cloud Resource Manager API](https://console.cloud.google.com/marketplace/product/google/cloudresourcemanager.googleapis.com) (to set up all services)
3. [BigQuery API](https://console.cloud.google.com/marketplace/product/google/bigquery.googleapis.com) (this is where your data resides)
4. [Eventarc API](https://console.cloud.google.com/marketplace/product/google/eventarc.googleapis.com) (a notification service that enables real-time updates to happen)

#### 1. Open <https://console.cloud.google.com/apis/library>

#### 2. Search for the API "cloud run API"

<figure><img src="/files/k6GAVClpU7bl6WczHMo3" alt=""><figcaption></figcaption></figure>

#### 3. Click on the API "Cloud Run API"

<figure><img src="/files/RCAH9oXtjENgauTfJa6a" alt=""><figcaption></figcaption></figure>

#### 4. Enable the API

<figure><img src="/files/Uc932g6zfgH9INQZHBis" alt=""><figcaption></figcaption></figure>

#### 5. Repeat Steps 2-3 for the following APIs

Cloud Resource Manager API

<figure><img src="/files/zAk0kMh9g5tmHQgaW3zX" alt=""><figcaption></figcaption></figure>

BigQuery API

<figure><img src="/files/yukpG6TuJdEXgQWKf4dP" alt=""><figcaption></figcaption></figure>

Eventarc API

<figure><img src="/files/vaz7EDKqAQqgZ1iez6Ut" alt=""><figcaption></figcaption></figure>

## Create Service Account

The Service Account gives access to Stacksync to your data for it to be synced. It is used to set up all the necessary Stacksync Services in your Google Cloud Project. You will need to create one Service Account dedicated to Stacksync which will enable you with better access control.

#### 1. Open <https://console.cloud.google.com/iam-admin/serviceaccounts>

#### 2. Click "Create Service Account"

<figure><img src="/files/Ty5r7Cr3Z7uqGn7WUqG3" alt=""><figcaption></figcaption></figure>

#### 3. Fill in the Service Account details

<figure><img src="/files/IFjsEJV7DyMDLF7FRpuQ" alt=""><figcaption></figcaption></figure>

#### 4. Click "Select a role"

<figure><img src="/files/xdia99GHJ5aAqKGwBLDT" alt=""><figcaption></figcaption></figure>

#### 5. Add the following Roles to the Service Account

These roles are necessary for Stacksync to get data access and set up the required services to make the data sync happen.

1. BigQuery Data Editor
2. BigQuery Job User
3. Cloud Functions Service Agent
4. Cloud Run Developer
5. Eventarc Event Receiver
6. Eventarc Service Agent

<figure><img src="/files/OANvdZdMG1MT8HocF8cE" alt=""><figcaption></figcaption></figure>

#### 6. Click "Continue"

<figure><img src="/files/nAIPBPlTQKGm9EbHrgEC" alt=""><figcaption></figcaption></figure>

#### 7. Click "DONE"

<figure><img src="/files/Ry44a60Xv5muNhwxXoEW" alt=""><figcaption></figcaption></figure>

## Adding Credentials to Stacksync

#### 1. Go to <https://console.cloud.google.com/iam-admin/serviceaccounts>

#### 2. Click "Keys"

<figure><img src="/files/DZwPh0SX5sxMEIWLLKD4" alt=""><figcaption></figcaption></figure>

#### 3. Click "Add Key" and Select "Create New Key"

<figure><img src="/files/1fcJZkVRzVgyGEVwhDqs" alt=""><figcaption></figcaption></figure>

#### 4. Select Key Type "JSON" and click "Create"

After clicking "Create", the JSON file will be downloaded.

<figure><img src="/files/bAtPtjEOWMNSpRWVqclt" alt=""><figcaption></figcaption></figure>

#### 5. Select BigQuery in the Create Base page in Stacksync

<figure><img src="/files/rICHEl5xY9o4Kpe1HxAQ" alt=""><figcaption></figcaption></figure>

#### 6. Upload the JSON file from Step 4 and Click "Authorize App"

<figure><img src="/files/fTtZpqobzHD47OuqRvBR" alt=""><figcaption></figcaption></figure>


# HubSpot

Two-way sync between HubSpot and your other systems.

## Supported Objects

Stacksync lets you sync the following HubSpot objects:

<table><thead><tr><th width="404">Object</th><th>Status<select><option value="a662c4f74a5246de8d959e2d6454c7e2" label="✅ Supported" color="blue"></option><option value="e419d109b16f48f6a6b41f71280b1cd1" label="❌ Not supported" color="blue"></option><option value="95e574ba8f4048a89aaa1f63b28591ef" label="🕘 Coming soon" color="blue"></option></select></th></tr></thead><tbody><tr><td>Contact</td><td><span data-option="a662c4f74a5246de8d959e2d6454c7e2">✅ Supported</span></td></tr><tr><td>Company</td><td><span data-option="a662c4f74a5246de8d959e2d6454c7e2">✅ Supported</span></td></tr><tr><td>Deal</td><td><span data-option="a662c4f74a5246de8d959e2d6454c7e2">✅ Supported</span></td></tr><tr><td>Line Item</td><td><span data-option="a662c4f74a5246de8d959e2d6454c7e2">✅ Supported</span></td></tr><tr><td>Product</td><td><span data-option="a662c4f74a5246de8d959e2d6454c7e2">✅ Supported</span></td></tr><tr><td>Ticket</td><td><span data-option="a662c4f74a5246de8d959e2d6454c7e2">✅ Supported</span></td></tr><tr><td>Quote</td><td><span data-option="a662c4f74a5246de8d959e2d6454c7e2">✅ Supported</span></td></tr><tr><td>Goal</td><td><span data-option="a662c4f74a5246de8d959e2d6454c7e2">✅ Supported</span></td></tr><tr><td>Owner</td><td><span data-option="a662c4f74a5246de8d959e2d6454c7e2">✅ Supported</span></td></tr><tr><td>Pipeline</td><td><span data-option="a662c4f74a5246de8d959e2d6454c7e2">✅ Supported</span></td></tr><tr><td>Stages</td><td><span data-option="a662c4f74a5246de8d959e2d6454c7e2">✅ Supported</span></td></tr><tr><td>Audit</td><td><span data-option="a662c4f74a5246de8d959e2d6454c7e2">✅ Supported</span></td></tr><tr><td>Subscriptions</td><td><span data-option="a662c4f74a5246de8d959e2d6454c7e2">✅ Supported</span></td></tr><tr><td>HubDB</td><td><span data-option="a662c4f74a5246de8d959e2d6454c7e2">✅ Supported</span></td></tr><tr><td>Forms</td><td><span data-option="a662c4f74a5246de8d959e2d6454c7e2">✅ Supported</span></td></tr><tr><td>Calls</td><td><span data-option="a662c4f74a5246de8d959e2d6454c7e2">✅ Supported</span></td></tr><tr><td>Communications</td><td><span data-option="a662c4f74a5246de8d959e2d6454c7e2">✅ Supported</span></td></tr><tr><td>Emails</td><td><span data-option="a662c4f74a5246de8d959e2d6454c7e2">✅ Supported</span></td></tr><tr><td>Meetings</td><td><span data-option="a662c4f74a5246de8d959e2d6454c7e2">✅ Supported</span></td></tr><tr><td>Notes</td><td><span data-option="a662c4f74a5246de8d959e2d6454c7e2">✅ Supported</span></td></tr><tr><td>Post Mail</td><td><span data-option="a662c4f74a5246de8d959e2d6454c7e2">✅ Supported</span></td></tr><tr><td>Tasks</td><td><span data-option="a662c4f74a5246de8d959e2d6454c7e2">✅ Supported</span></td></tr><tr><td>Marketing Emails</td><td><span data-option="a662c4f74a5246de8d959e2d6454c7e2">✅ Supported</span></td></tr><tr><td>Invoices</td><td><span data-option="a662c4f74a5246de8d959e2d6454c7e2">✅ Supported</span></td></tr><tr><td>Attachments</td><td><span data-option="a662c4f74a5246de8d959e2d6454c7e2">✅ Supported</span></td></tr><tr><td>Custom objects (all)</td><td><span data-option="a662c4f74a5246de8d959e2d6454c7e2">✅ Supported</span></td></tr><tr><td>Associations</td><td><span data-option="a662c4f74a5246de8d959e2d6454c7e2">✅ Supported</span></td></tr><tr><td>Users</td><td><span data-option="a662c4f74a5246de8d959e2d6454c7e2">✅ Supported</span></td></tr><tr><td>Services</td><td><span data-option="a662c4f74a5246de8d959e2d6454c7e2">✅ Supported</span></td></tr><tr><td>Listings</td><td><span data-option="a662c4f74a5246de8d959e2d6454c7e2">✅ Supported</span></td></tr><tr><td>Courses</td><td><span data-option="a662c4f74a5246de8d959e2d6454c7e2">✅ Supported</span></td></tr><tr><td>Appointments</td><td><span data-option="a662c4f74a5246de8d959e2d6454c7e2">✅ Supported</span></td></tr><tr><td>Commerce Payments</td><td><span data-option="a662c4f74a5246de8d959e2d6454c7e2">✅ Supported</span></td></tr><tr><td>Email Events</td><td><span data-option="a662c4f74a5246de8d959e2d6454c7e2">✅ Supported</span></td></tr><tr><td>Property History</td><td><span data-option="a662c4f74a5246de8d959e2d6454c7e2">✅ Supported</span></td></tr><tr><td>Campaigns</td><td><span data-option="95e574ba8f4048a89aaa1f63b28591ef">🕘 Coming soon</span></td></tr><tr><td>Feedback Submissions</td><td><span data-option="e419d109b16f48f6a6b41f71280b1cd1">❌ Not supported</span></td></tr></tbody></table>

Need to sync other objects? Email us at <hello@stacksync.com> and we can add support for them in no time!

{% hint style="success" %}
All Associations between synced objects are supported. You can choose which associations to sync during the sync setup or sync update.
{% endhint %}

## Things to keep in mind

#### HubSpot Account Type

The type of HubSpot Account can have restrictions on the supported objects.

* The free version of HubSpot Account does not support the Audit object.
* Custom Objects are only supported in the HubSpot Enterprise version.

**Custom Fields**

HubSpot allows the creation of custom fields with duplicate field names that can conflict with HubSpot system fields, such as the `id` field for example.

In cases where an object includes a custom field named `id`, it may conflict with HubSpot’s native record ID, which is also named `id`. HubSpot permits the creation of custom fields with duplicate names in any object due to its underlying data storage model, which does not enforce uniqueness of field names and lacks a logic layer to prevent such conflicts. To avoid ambiguity during data sync, any custom fields named `id` that conflict with native HubSpot fields will be ignored and excluded from synchronization.

#### Backup and Restore Capabilities

{% hint style="warning" %}
With two-way sync, we recommend using a professional backup/restore for your HubSpot CRM.
{% endhint %}

HubSpot does not have a native backup and restore functionality. Two-way syncing is powerful. A mistake in a connected App could have consequences on your HubSpot data as well. If you sync to another system that has backup capabilities built-in such as a modern database (e.g. Postgres), it could be used to back up data in HubSpot as well but we still recommend using a robust backup and restore service such as:

* [SysCloud](https://ecosystem.hubspot.com/marketplace/apps/productivity/connector/syscloud-backup-for-hubspot-595013)
* [Pro Backup](https://ecosystem.hubspot.com/marketplace/apps/productivity/connector/pro-backup-380854)
* [Rewind](https://rewind.com/products/backups/hubspot/)

***

### Q\&A

<details>

<summary>Syncing columns with custom data constraints</summary>

HubSpot allows columns to have certain data constraints that may cause issues when the incorrect format of data is synced.

For example, the single-line text field can have constraints for allowing only numeric values, not allowing any special characters, and having a maximum or minimum character limit.

If you face an error regarding this, either modify the restrictions on the HubSpot column to allow the data to sync or modify the data to fit the format of the HubSpot column.

</details>


# Authorize HubSpot

Authorize your HubSpot app and sync data with Stacksync

{% hint style="info" %}
You need to be 'Super Admin' in HubSpot to be able to grant Stacksync access to HubSpot.\
This is because only the 'Super Admins' have the OAuth scope which is required to connect your HubSpot to an external service such as Stacksync (more info [here](https://community.hubspot.com/t5/APIs-Integrations/OAuth-issue-requiring-superadmin/m-p/250649)).
{% endhint %}

#### 1. Click the connection tile

<figure><img src="/files/UQR112N0O4v3SaMiYy8D" alt=""><figcaption></figcaption></figure>

#### 2. Select the HubSpot connector

<figure><img src="/files/ueVqSHUTHjRa8C0nU6PJ" alt=""><figcaption></figcaption></figure>

#### 3. Optional: Check the Grant access to sensitive fields checkbox.

This will allow our system to read sensitive and highly sensitive fields from your hubspot account

<figure><img src="/files/pDWwrOgOEERlPrkqgfGU" alt=""><figcaption></figcaption></figure>

#### 4. Choose the hubspot account you want to use

<figure><img src="/files/fLldKj6m0vrWgFZxFiNK" alt=""><figcaption></figcaption></figure>

#### 5. Authorize access to stacksync

<figure><img src="/files/8P6AT9zzdWao9IY2txLK" alt=""><figcaption></figcaption></figure>

#### 6. Configure your connection on stacksync

6.1 Choose your connection name

6.2 Choose your connection resource id. This is auto generated based on the name - changing it is optional.

6.3 Choose the region you wish to create your connection in. *Resources in one region cannot access resources created in other regions*

<figure><img src="/files/pAaJDpoXin9ChFdCJzxQ" alt=""><figcaption></figcaption></figure>

That's it! Your HubSpot instance is connected 🎉


# Associations

Stacksync supports syncing your HubSpot Associations

### TL;DR

* Stacksync supports *two-way sync* for HubSpot associations
* Associations are *undirected*, meaning that if object A is associated with object B, object B is also associated with object A in return.
* Associations cannot be updated, but you can delete and create a new one.
* You can add several associations (with different association labels) to the same pair of objects.
* Associations between ALL synced objects are supported, including emails, meetings, engagements, all standard and custom objects...
* Associations for custom objects are also supported ✅

### How HubSpot associations work

To associate two objects in HubSpot, you need to sync and use a third table *"the association table"* which contains in each row both of the object\_ids to associate (e.g. associating a contact\_id and a company\_id).

When you connect two objects in HubSpot, the connection is undirected. If Contact A is connected to Company X, then Company X is also connected to Contact A in return.

To specify the type of connection between two objects, you can utilize association labels. For instance, Contact A can be labeled as a *manager* at Company X and also as a *director* at Company Y. In this case, you would connect Contact A with both companies but assign different labels to each connection.

<figure><img src="/files/QfUb7AeDnfvXRP1UNHR4" alt=""><figcaption><p>Example of HubSpot associations: the same Contact is associated with two different Companies, each with different roles.</p></figcaption></figure>

{% hint style="success" %}
You can add several labels to the same pair of objects. For instance, Contact A can be in the *finance\_department* and in the *marketing\_department* of the same company. For that, you can add **two rows for the same pair of objects but with different association labels** as follows:

<img src="/files/mRiFecM9pFidE8rc77pP" alt="" data-size="original">
{% endhint %}

Stacksync ensures that all associations between pairs of object types are synchronized to an associative table. For example, any connection between a Contact and a Company will be synced to the "`associations_company_and_contact`" table, which has the following 3 columns:

* `contact_id` (string)
* `company_id` (string)
* `association_label` (string)

There will be an additional column `stacksync_record_id_xxxxxx`. Don't worry, this column is just used by Stacksync to keep your records syncing properly. Just do not tamper with this column!

Because HubSpot associations are undirected, these associations will only appear in one table. If you have a table `associations_company_and_contact`, there won't be a table with the opposite order (`associations_contact_and_company`).

{% hint style="info" %}
Associations cannot be updated. Instead, you can delete and then create an association between the two desired objects with a different label.
{% endhint %}

### Association Type IDs

Every association in HubSpot has an `association_type_id`, defining the relationship between objects. Even if not specified during creation, HubSpot automatically assigns an `association_type_id`.\
The list of `association_type_ids` is available on the [HubSpot documentation](https://developers.hubspot.com/docs/guides/api/crm/associations/associations-v4#company-to-object).

### Association Labels

HubSpot provides a set of predefined association types (e.g. unlabeled contact to company), but users can define custom association labels, if it is included in their HubSpot plan. There are two HubSpot-defined association types:

* **No Label (Default Association Type)**
  * Every association between objects (Contacts, Companies, Deals, etc.) automatically has a default unlabeled association.
  * Even when a labeled association is added (Primary or Custom), the unlabeled association remains.
* **'Primary' Label (For Company-Contact Associations)**
  * HubSpot has a built-in 'Primary' label specifically for associating a Contact with their main Company.
  * While a Contact must have a primary company, other objects (e.g., Deals) may or may not have a primary company.
  * Example: Joe works at both Google and Amazon, but Google is his primary employer.
* **Custom Labels**
  * Users on eligible HubSpot plans can define custom association labels (e.g., ‘Advisor’ for a Contact-Company relationship), which you can define through the [HubSpot UI](https://knowledge.hubspot.com/object-settings/create-and-use-association-labels) or the [HubSpot API](https://developers.hubspot.com/docs/reference/api/crm/associations/associations-schema#post-%2Fcrm%2Fv4%2Fassociations%2Fdefinitions%2Fconfigurations%2F%7Bfromobjecttype%7D%2F%7Btoobjecttype%7D%2Fbatch%2Fcreate).
  * When a custom label is added, the default unlabeled association still exists.
  * Example: Tom is an Advisor at Amazon, so a custom label 'Advisor' is created for his Contact-Company association in addition to the default unlabeled association.

Read more on the HubSpot Association documentation [here](https://developers.hubspot.com/docs/api/crm/associations).

### Querying your data

You can `JOIN` your data using the associations tables as follows:

```sql
SELECT
  -- Contact data
  contact.id, contact.email,
  -- Company data
  company.id, company.city,
  -- Association label
  associations.association_label
FROM (SELECT DISTINCT company_id, contact_id FROM hubspot.associations_company_and_contact) associations
LEFT JOIN hubspot.company company ON company.id = association.company_id
LEFT JOIN hubspot.contact contact ON contact.id = association.contact_id;
```

In this particular example, Contact and Company are used, but the principles mentioned can be applied to any other HubSpot CRM objects that can be synced with Stacksync. Suppose you have the custom Pets and custom Shelters objects in HubSpot. In that case, Stacksync will synchronize an `associations_pets_and_shelters` table, including the `pet_id` and `shelter_id` columns.

***

### Advanced

{% content-ref url="/pages/I7uRExcq17LBX3qp5QpW" %}
[Associations CDC Boost](/two-way-sync/connectors/hubspot/associations/associations-cdc-boost)
{% endcontent-ref %}

***

If you have any questions or run into any blockers, reach out anytime at <hello@stacksync.com> and the Stacksync team will be happy to help.


# Associations CDC Boost

Many teams expect to track association changes in HubSpot the same way they track record updates: incrementally and in near real time. In practice, that’s not possible.

HubSpot does not provide a native mechanism to incrementally detect association changes (CDC). As a result, tracking association updates at scale is challenging and often inefficient. To know what changed, the only option is to repeatedly read the entire associations dataset. This works at small scale, but as association volumes grow, sync times degrade rapidly.

| Number of Associations | Time to Detect Changes |
| ---------------------- | ---------------------- |
| < 10,000               | < 1 minute             |
| 100,000                | < 10 minutes           |
| 1,000,000              | > 1 hour               |

The situation gets worse when multiple association tables are involved. Each table must be scanned independently, and HubSpot’s API concurrency limits quickly become a bottleneck.

At first glance, Hubspot native webhooks seem like a solution. In reality, they are unreliable especially at scale and do not support associations involving custom objects. For teams running real-time, mission-critical pipelines, this creates a hard blocker.

#### **Solution: Associations CDC Boost**

To meet these requirements, we took a different approach.

Instead of polling association tables directly or relying on unpredictables Hubspot webhooks, Stacksync monitors these rollup properties to instantly identify which records have experienced association changes.

This provides a deterministic, incremental signal suitable for real-time mission-critical workloads.

#### **Key Benefits**

* Association changes detected in seconds instead of minutes.
* Dramatically lower API usage.
* Predictable, fast, and scalable syncs suitable for mission-critical real-time pipelines.

***

{% hint style="info" %}

* Free and Starter Hubspot accounts can't benefit of Stacksync CDC Boost.
* The following setup must be performed by a HubSpot Admin or Super Admin.
* This setup is recommended only for associations tables with more than 10,000 records.
  {% endhint %}

### 1. Identify Your Association Tables

Determine which association tables you want to speed up.

For each association, the rollup fields must be created on **the first object listed in the association table name** in Stacksync (e.g. for `associations_contact_deal`, the rollups live on `contact`). If that first object isn't part of the sync, Stacksync automatically falls back to the second object.

#### **The simplest way: let Stacksync tell you**

Stacksync now ships a built-in panel that lists every association table on your sync, its current CDC status, and — for each table — the exact HubSpot object the rollup must live on and the exact property names to create.

&#x20;1\. Open the sync and go to the **Schema** tab.

2. Click the HubSpot app to expand its section.

<figure><img src="/files/EVkunt8HPkenROoboUnZ" alt=""><figcaption></figcaption></figure>

3. At the bottom of the section, click **Show associations CDC configuration**.

<figure><img src="/files/w1DOHsuXELIglyMxW5O9" alt=""><figcaption></figcaption></figure>

4. For each table, click the chevron on the row to expand it. The panel lists every expected rollup property name and the HubSpot object they belong to.

<figure><img src="/files/EULc4zzGFavyhV0MG35m" alt=""><figcaption></figcaption></figure>

The status column tells you where each table stands:

| Status            | Meaning                                                                                                  |
| ----------------- | -------------------------------------------------------------------------------------------------------- |
| **CDC boosted**   | CDC is currently active for this table.                                                                  |
| **Fully set up**  | Every expected rollup property exists in HubSpot. CDC will turn on at the next sync restart.             |
| **Partial setup** | The unlabeled `_label_none` rollup is present — CDC will work. Labeled rollups are missing but optional. |
| **Not set up**    | The unlabeled `_label_none` rollup is missing. CDC cannot turn on until that one property is created.    |

Use this panel as the source of truth for the rest of the steps below — it removes any ambiguity about which object to create the rollups on.

***

### 2. Navigate to Properties in HubSpot

1. In your HubSpot account, click the **Settings** icon (gear) in the top navigation bar.
2. In the left sidebar, go to **Data Management → Properties**.
3. Select the object type where the properties will be created — use the object that the **Show associations CDC configuration** panel tells you to use for that table (the first object in the association table name, or its fallback).
4. Click **Create property** to start the setup.

<figure><img src="/files/aA0kZ3cUMe1KYgZ53Hvi" alt=""><figcaption></figcaption></figure>

***

### 3. Create Rollup Fields

You only need **one** rollup field per association table for CDC to work: the unlabeled one (`_label_none`). Anything beyond that is optional and only refines per-label change tracking.

* **Required** — one rollup field for associations with **no labels** (the unlabeled `_label_none` rollup). Without this, CDC cannot turn on.
* **Optional** — one rollup field per **association label** you actively use (e.g. `_label_primary`, `_label_billing_contact`). Without these, CDC still works — HubSpot just treats all labeled associations as a single bucket and you lose per-label change tracking.

{% hint style="info" %}
If you only create the unlabeled rollup and skip the labeled ones, the **Show associations CDC configuration** panel will report the table as **Partial setup**. That is not an error: it means CDC will run, just without per-label resolution.
{% endhint %}

#### 3.1 Naming Convention

Property labels must follow this pattern:

```
sync_associations_{object1}_{object2}_label_{suffix}
```

**Components:**

* `sync_associations_` - Required prefix
* `{object1}` - First object in your association table name, lowercase plural (e.g. `contacts`, `companies`, `deals`)
* `{object2}` - Second object in your association table name, lowercase plural (e.g. `tickets`, `deals`, `line_items`)
* `label_` - Required separator
* `{suffix}` - Either `none` (for unlabeled) or the label name in lowercase (e.g., `primary`)

**Examples:**

| Association       | Unlabeled Field                                   | Primary Label Field                                  |
| ----------------- | ------------------------------------------------- | ---------------------------------------------------- |
| Contact ↔ Ticket  | `sync_associations_contacts_tickets_label_none`   | `sync_associations_contacts_tickets_label_primary`   |
| Company ↔ Contact | `sync_associations_companies_contacts_label_none` | `sync_associations_companies_contacts_label_primary` |

> **Important**: Use lowercase plural forms (e.g., `contacts` not `Contact`)

#### **3.2 Create the "No Labels" Rollup Field**

Click **Create property** and configure:

<table><thead><tr><th width="218.75848388671875">Field</th><th>Value</th></tr></thead><tbody><tr><td><strong>Object type</strong></td><td>The object indicated by the <strong>Show associations CDC configuration</strong> panel (the first object in the association table name)</td></tr><tr><td><strong>Group</strong></td><td>Use the default group for that object (e.g., Contact information)</td></tr><tr><td><strong>Label</strong></td><td><code>sync_associations_{object1}_{object2}_label_none</code></td></tr><tr><td><strong>Field type</strong></td><td><strong>Calculation property</strong> → <strong>Rollup</strong></td></tr><tr><td><strong>Rollup type</strong></td><td><strong>Sum</strong></td></tr><tr><td><strong>Number format</strong></td><td><strong>Formatted number</strong></td></tr><tr><td><strong>Association record type</strong></td><td>The other object (e.g., Ticket)</td></tr><tr><td><strong>Association labels</strong></td><td><strong>All association labels</strong></td></tr><tr><td><strong>Property to calculate</strong></td><td><strong>Record ID</strong></td></tr></tbody></table>

**Example for Contact-Ticket:**

* Label: `sync_associations_contacts_tickets_label_none`
* Create on: Contact
* Association record type: Ticket

Click **Create** to save.

#### **3.3 Create a Rollup Field for Each Association Label**

If you use association labels (like "Primary", "Secondary", etc.), create one rollup field for each label.

Click **Create property** and configure:

<table><thead><tr><th width="219.110107421875">Field</th><th>Value</th></tr></thead><tbody><tr><td><strong>Object type</strong></td><td>Same as above</td></tr><tr><td><strong>Group</strong></td><td>Use the default group</td></tr><tr><td><strong>Label</strong></td><td><code>sync_associations_{object1}_{object2}_label_{labelname}</code></td></tr><tr><td><strong>Field type</strong></td><td><strong>Calculation property</strong> → <strong>Rollup</strong></td></tr><tr><td><strong>Rollup type</strong></td><td><strong>Sum</strong></td></tr><tr><td><strong>Number format</strong></td><td><strong>Formatted number</strong></td></tr><tr><td><strong>Association record type</strong></td><td>The other object</td></tr><tr><td><strong>Association labels</strong></td><td><strong>Select association labels</strong> → Select <strong>ONLY</strong> this specific label</td></tr><tr><td><strong>Property to calculate</strong></td><td><strong>Record ID</strong></td></tr></tbody></table>

**Example for Contact-Ticket with "Primary" label:**

* Label: `sync_associations_contacts_tickets_label_primary`
* Association labels: Select only "Primary"

Repeat this for **each** association label you use.

***

### 4. Enable the Hubspot Association CDC Boost in Stacksync

After creating the rollup fields in HubSpot, restart the sync so Stacksync can re-detect them. There is no manual toggle — Stacksync auto-enables CDC for every association table whose unlabeled `_label_none` rollup it finds on HubSpot at startup.

1. Navigate to your sync in Stacksync.
2. Click **Stop sync** and wait for it to fully stop.
3. Click **Start sync**.

That's it. When the sync starts back up, Stacksync re-checks your HubSpot setup for every association table and automatically turns on the CDC Boost wherever the required rollup property is in place.

To confirm the change took effect, reopen the **Show associations CDC configuration** panel — any table that previously read **Fully set up** should now read **CDC boosted**.

<figure><img src="/files/IEr2wZEniOZnxz2MXpU8" alt=""><figcaption></figcaption></figure>

***

### **5. Maintenance & Monitoring**

#### 5.1 Custom rollup fields monitoring

Stacksync re-evaluates rollup configuration in two ways:

* **At every sync restart** — when you stop and start the sync, Stacksync re-detects which rollups exist for every association table and updates CDC eligibility accordingly. Creating a previously-missing rollup and restarting the sync is enough to turn CDC on for that table.
* **Continuously, in the background** — Stacksync periodically verifies that the rollup properties it relies on still exist in HubSpot. If a rollup property is deleted or modified mid-sync:
  * Stacksync automatically detects the issue.
  * Falls back to a full association scan for the impacted table.
  * Sends an email notification with remediation guidance.

This combination ensures data correctness whether the change happens at restart time or while the sync is running.

#### 5.2 Association Model Change

If HubSpot or your team introduces **new association labels** for an existing object pair:

* Stacksync automatically detects the change
* You receive an email notification
* The email includes instructions to extend the rollup configuration if needed

This allows association models to evolve safely over time without silent data gaps.

#### 5.3 Operational Guarantees

* No data loss if rollups are misconfigured or removed
* Automatic fallback mechanisms
* Explicit customer notifications on required actions
* Designed for enterprise-scale data volumes and SLAs

***

### Summary

The Associations CDC Boost replaces slow full-scan or webhooks approaches with a scalable, incremental, and reliable detection mechanism. By leveraging HubSpot rollup properties, Stacksync enables real-time association syncing that meets enterprise performance and reliability requirements.

If you have any questions or run into any blockers, reach out anytime at <hello@stacksync.com> and the Stacksync team will be happy to help.


# Syncing Associations using Postgres IDs

When managing HubSpot associations through Stacksync, the most robust approach is to decouple the creation of the association from the generation of HubSpot's internal IDs. By using your internal Postgres IDs as the "stable join key," you ensure that associations are created deterministically and without race conditions.

We recommend creating associations using internal Postgres IDs rather than waiting for HubSpot IDs.

1. **Atomic Transactions:**

   When a new relationship is created in your application (e.g., a Deal is linked to a Client), insert the Client, the Deal, and their Association into your Postgres database within a single atomic transaction.

   This ensures that the relationship is recorded immediately in your system, even before Stacksync has finished syncing the individual records to HubSpot.
2. **ID Propagation:**

   Once Stacksync creates the records in HubSpot and writes the `hubspot_id` back to your `deals` and `clients` tables, you can propagate those IDs into your associations table.

#### Sync options

Depending on your requirements for latency, you can choose between two implementation methods:

1. **Near-real-time (Triggers):**

   Use Postgres triggers to monitor updates on your `deals` and `clients` tables. As soon as both records in a relationship have been assigned a HubSpot ID, the trigger executes the sync query to update the association table.

   1. **Pros:** Low latency; associations are ready for HubSpot almost instantly.
   2. **Cons:** Higher database overhead and complexity.
2. **Batch (Scheduled Job):**\
   Run the sync query below as a scheduled job (e.g., a cron job) every 1 minute. This backfills missing HubSpot IDs in the associations table in bulk.
   1. **Pros:** Simpler to implement and monitor.
   2. **Cons:** Up to a 60-second delay in association syncing.

#### Implementation: The Sync Query

Use the following SQL query to bridge your internal Postgres IDs with HubSpot IDs. This query identifies associations that lack HubSpot IDs and pulls them from the successfully synced `deals` and `clients` tables.

```sql
UPDATE associations_deal_client
SET
  hubspot_deal_id = d.id,
  hubspot_client_id = c.id
FROM deals d
JOIN clients c
  ON associations_deal_client.postgres_deal_id = d.postgres_id
 AND associations_deal_client.postgres_client_id = c.postgres_id
WHERE associations_deal_client.hubspot_deal_id IS NULL
   OR associations_deal_client.hubspot_client_id IS NULL;
```

By using `postgres_id` as the join key, you guarantee that the association is pinned to the correct records. Once the `hubspot_deal_id` and `hubspot_client_id` are populated in the `associations_deal_client` table, Stacksync can pick them up and create the corresponding association in HubSpot.

If you have any questions or run into any blockers, reach out anytime at <hello@stacksync.com> and the Stacksync team will be happy to help.


# HubDB

Stacksync supports both syncing existing HubDB tables and generating new HubDB tables. Choose whether to sync the Published or Draft versions.

{% hint style="info" %}
Syncing published HubDB tables will cause draft changes to be published.
{% endhint %}

If you're syncing an existing HubDB table, you can choose the version when linking tables.

<figure><img src="/files/AzxmfdV7W8IaJJbBch7j" alt=""><figcaption></figcaption></figure>

If you're generating a new table in HubDB, choose the version when mapping fields.

<figure><img src="/files/xZIq046ADeBLSpa0gwNp" alt=""><figcaption></figcaption></figure>


# Attachments

### How HubSpot Attachments Work

Attachments are always associated with an Engagement object, such as a call, note, or similar interaction. They can be linked to both Standard and Custom objects in HubSpot.

<figure><img src="/files/at60k9xBjhZbxr3PqIpR" alt=""><figcaption></figcaption></figure>

Syncing Attachments in Stacksync:

* At least one Engagement object needs to be synced along with the Attachments object. For example, to sync all attachments linked specifically to Calls, you must sync both *Calls* and *Attachments*.
* To sync all attachments regardless of the engagement object they are associated with, you need to sync *all objects*. However, syncing all objects is not recommended unless it is necessary, as this can result in syncing unnecessary data.


# Sensitive fields

HubSpot requires additional authorization before sensitive fields can be synced. This page explains how to enable access to sensitive fields on our platform.

### New Connection

When creating a new connection, follow the standard connection flow.\
During **Step 3**, enable the following option:

[**Grant access to sensitive fields**](https://docs.stacksync.com/two-way-sync/connectors/hubspot/pages/Io5jqkoeBG2XdWcqW2KR#id-3.-optional-check-the-grant-access-to-sensitive-fields-checkbox)

### Existing connection

To enable sensitive fields for an existing connection:

1. Re-authorize your HubSpot connection
2. During **Step 3**, enable:

[**Grant access to sensitive fields**](https://docs.stacksync.com/two-way-sync/connectors/hubspot/pages/Io5jqkoeBG2XdWcqW2KR#id-3.-optional-check-the-grant-access-to-sensitive-fields-checkbox)<br>

### Syncing sensitive fields

Once your connection has been created or re-authorized with sensitive field access enabled, you can include sensitive fields in your sync configuration.

To do this, [edit your sync configuration](/two-way-sync/features/two-way-sync).\
Sensitive fields will appear during the **Map fields** step.


# MotherDuck

Two-way sync between MotherDuck and your other systems.

Introduction

MotherDuck is a cloud analytics platform built on top of DuckDB, designed to deliver fast and efficient data analysis in the cloud. By combining the simplicity of DuckDB with the scalability of cloud infrastructure, MotherDuck allows teams to run complex queries on larger datasets without needing extensive infrastructure. It integrates seamlessly with popular data tools, offering a user-friendly experience for data engineers, analysts, and developers who seek powerful, scalable analytics in a lightweight platform.

## Authorize MotherDuck

1. In MotherDuck, navigate to **Settings** > **General** and select **Create Token**.

<figure><img src="/files/9VLoFwXfagD55IUSQEyX" alt=""><figcaption></figcaption></figure>

2. Enter a name for your token, then click Create.

<figure><img src="/files/qGpjQFUGR9hbUxNdlqic" alt=""><figcaption></figcaption></figure>

3. Copy the generated access token.

<figure><img src="/files/EkwAs6rx1ZTa0JjpTqes" alt=""><figcaption></figcaption></figure>

4. Log in to Stacksync and click on **Connections** > **Create new connection**.
5. Search for MotherDuck and select it.

<figure><img src="/files/jvQx9PCcBNKPcJG5K0Na" alt=""><figcaption></figcaption></figure>

6. Paste the access token here. If you're using a database name or schema other than the default, update those settings accordingly.

<figure><img src="/files/OgqUF5k5xkpLVkH4xN09" alt=""><figcaption></figcaption></figure>

You can now use your MotherDuck connection in a sync!


# Snowflake

Two-way sync between Snowflake and your other systems.

## Introduction

[Snowflake](https://www.snowflake.com/en/) is a cloud-based data warehousing and analytics platform that enables users to analyze and process large data sets using SQL-like queries. It is highly scalable and allows users to store and query massive amounts of data in real time.

Check out our [Snowflake guides](/two-way-sync/connectors/snowflake/authorize-snowflake) to get started and sync data to your other systems and databases!

## Supported Objects

Stacksync lets you sync the following Snowflake table types:

<table><thead><tr><th width="404">Object</th><th>Status<select><option value="a662c4f74a5246de8d959e2d6454c7e2" label="✅ Supported" color="blue"></option><option value="e419d109b16f48f6a6b41f71280b1cd1" label="❌ Not supported" color="blue"></option><option value="95e574ba8f4048a89aaa1f63b28591ef" label="🕘 Coming soon" color="blue"></option></select></th></tr></thead><tbody><tr><td>Standard tables (including Permanent, Transient and Temporary tables)</td><td><span data-option="a662c4f74a5246de8d959e2d6454c7e2">✅ Supported</span></td></tr><tr><td>Views (including materialized and non-materialized views)</td><td><span data-option="95e574ba8f4048a89aaa1f63b28591ef">🕘 Coming soon</span></td></tr><tr><td>External tables</td><td><span data-option="e419d109b16f48f6a6b41f71280b1cd1">❌ Not supported</span></td></tr></tbody></table>

**All field types are supported** except for [geospatial datatypes](https://docs.snowflake.com/en/sql-reference/data-types-geospatial) (i.e. geography and geometry).

## Things to keep in mind

* A Snowflake account with the `SECURITY_ADMIN` and `ACCOUNT_ADMIN` roles is required. The `SECURITY_ADMIN` role will be needed to create a Stacksync Role and User. The `ACCOUNT_ADMIN` will be needed to grant permissions to the Stacksync Role to grant access to the database and schemas, grant privilege to create schemas and tables in the specified database and allow read and write privilege to the tables in the specified database and schemas.
* To sync an existing table from Snowflake, the table must have a primary key which is not nullable and has a default value of `UUID_STRING()`.<br>


# Authorize Snowflake

Authorize your Snowflake Data Warehouse and sync data with Stacksync

{% embed url="<https://youtu.be/zXmxxIql_fI>" %}
Connect Snowflake on Stacksync in less than two minutes
{% endembed %}

{% hint style="info" %}
To follow this tutorial, the (human user) Snowflake account needs the `SECURITY_ADMIN` and `ACCOUNTADMIN`. Read more [here](https://docs.stacksync.com/connectors/snowflake#things-to-keep-in-mind).
{% endhint %}

### 1. Select Snowflake in the Create Sync page in Stacksync.

<figure><img src="/files/OfyRjdAwxjQH60iMhKWD" alt=""><figcaption></figcaption></figure>

### 2. Copy the user public key for the next steps

<figure><img src="/files/4JnTqtSAiuUEbPUMH11L" alt=""><figcaption></figcaption></figure>

### 3. Run the setup script in Snowflake

#### Create a new Snowflake user (see the next section to reuse an existing Snowflake user)

Copy the following script to create a new user with the necessary permissions.\
In the `SECTION TO EDIT`, enter the following values:

* `warehouse_name`
* `database_name`
* `schema_name`
* `rsa_public_key`

```plsql
-----------------------SECTION TO EDIT------------------------------------
-- create the variables for user and role details
set role_name = 'STACKSYNC_ROLE'; --enter the role name
set user_name = 'STACKSYNC_USER'; -- enter the username
set warehouse_name = 'COMPUTE_WH'; -- enter the warehouse you want to use
set database_name = 'STACKSYNC_TEST'; --enter database name
set schema_name = 'PUBLIC'; -- enter schema name
set user_type = 'service';
-----------------------END OF SECTION TO EDIT------------------------------------

-- change role to security admin to create user and role
use role securityadmin;

-- create the Stacksync Role
create role if not exists identifier($role_name);
grant role identifier($role_name) to role SYSADMIN;

 -- create a user for Stacksync
create user if not exists identifier($user_name)
 -- copy paste public key from stacksync.
rsa_public_key = '-----BEGIN PUBLIC KEY-----
....TODO REPLACE WITH STACKSYNC PROVIDED RSA PUBLIC KEY....
-----END PUBLIC KEY-----'

-----------------------END OF SECTION TO EDIT-----------------------------

type = $user_type
default_role = $role_name
default_warehouse = $warehouse_name;

-- grant Stacksync role to the new user
grant role identifier($role_name) to user identifier($user_name);

-- change role to accountadmin to grant permissions to the Stacksync Role
use role accountadmin;

-- grant Stacksync role access to warehouse
grant usage on warehouse identifier($warehouse_name) to role identifier($role_name);

-- grant Stacksync role access to database and create schemas
grant usage on database identifier($database_name) to role identifier($role_name);
grant create schema on database identifier($database_name) to role identifier($role_name);

-- select the database
use database identifier($database_name);

-- grant table and stream privileges to all the schemas you want to sync
grant usage on schema identifier($schema_name) to role identifier($role_name);
grant create table on schema identifier($schema_name) to role identifier($role_name);
grant create stream on schema identifier($schema_name) to role identifier($role_name);
grant select on all tables in schema identifier($schema_name) to role identifier($role_name);
grant select on future tables in schema identifier($schema_name) to role identifier($role_name);

-- repeat the steps above for all the schemas you want to sync.
```

#### Use an existing Snowflake user

You can simply set the `rsa_public_key` for an existing user (make sure the user type is set to `service`).

```plsql
ALTER USER <username> SET RSA_PUBLIC_KEY='<public_key_copied_from_stacksync>';
```

### 4. Find the credentials for your Snowflake instance.

Note the database name, schema name, and account identifier.

{% hint style="info" %}
Account Identifier uniquely identifies a Snowflake account within your organization. It is a combination of your organization name and account name. It can be found in the Snowflake web interface in the Account Details section.

[Learn More](https://docs.snowflake.com/en/user-guide/admin-account-identifier#finding-the-organization-and-account-name-for-an-account)
{% endhint %}

<figure><img src="/files/LmnzZeqg1eoZlAGwiwEK" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/4Mct14rBP6Cv6aDktxDf" alt=""><figcaption></figcaption></figure>

Once copied, paste this information in the Stacksync connection screen.

### 5. Enter the credentials for Snowflake and Click Authorize App.

<figure><img src="/files/aFkTWg4Aqi2T32Al78tT" alt=""><figcaption></figcaption></figure>

That's it! 🎉


# Attio

Two-way sync between Attio and your other systems.

## Supported Objects

Stacksync lets you sync the following Attio objects:

<table><thead><tr><th width="404">Object</th><th>Status<select><option value="a662c4f74a5246de8d959e2d6454c7e2" label="✅ Supported" color="blue"></option><option value="e419d109b16f48f6a6b41f71280b1cd1" label="❌ Not supported" color="blue"></option><option value="95e574ba8f4048a89aaa1f63b28591ef" label="🕘 Coming soon" color="blue"></option></select></th></tr></thead><tbody><tr><td>People</td><td><span data-option="a662c4f74a5246de8d959e2d6454c7e2">✅ Supported</span></td></tr><tr><td>Companies</td><td><span data-option="a662c4f74a5246de8d959e2d6454c7e2">✅ Supported</span></td></tr><tr><td>Users</td><td><span data-option="a662c4f74a5246de8d959e2d6454c7e2">✅ Supported</span></td></tr><tr><td>Deals</td><td><span data-option="a662c4f74a5246de8d959e2d6454c7e2">✅ Supported</span></td></tr><tr><td>Workspaces</td><td><span data-option="a662c4f74a5246de8d959e2d6454c7e2">✅ Supported</span></td></tr><tr><td>Custom objects (all)</td><td><span data-option="a662c4f74a5246de8d959e2d6454c7e2">✅ Supported</span></td></tr></tbody></table>

Need to sync other objects? Email us at <integrations@stacksync.com> and we can add support for them in no time!


# Authorize Attio

Authorize your Attio app and sync data with Stacksync

Attio connection is done without any coding required in a few steps.

#### 1. Click on "Connections"

<figure><img src="/files/mEl0RqVDxmihPdvfxJUu" alt=""><figcaption></figcaption></figure>

#### 2. Click "create new connection"

<figure><img src="/files/Mr1KR6LD0ZxPU67fYMzf" alt=""><figcaption></figcaption></figure>

#### 3. Click "Attio CRM"

<figure><img src="/files/vi5ZEGr9TLAmPJwBPDcM" alt=""><figcaption></figcaption></figure>

#### 4. Click "Confirm"

<figure><img src="/files/7Xlrherhmgq0HlzLLqmt" alt=""><figcaption></figcaption></figure>

That's it! Your Attio instance is now connected to Stacksync!🎉


# Pipedrive

Two-way sync between Pipedrive and your other systems.

## Supported Objects

Stacksync lets you sync the following Pipedrive objects:

<table><thead><tr><th width="404">Object</th><th>Status<select><option value="a662c4f74a5246de8d959e2d6454c7e2" label="✅ Supported" color="blue"></option><option value="e419d109b16f48f6a6b41f71280b1cd1" label="❌ Not supported" color="blue"></option><option value="95e574ba8f4048a89aaa1f63b28591ef" label="🕘 Coming soon" color="blue"></option><option value="tKDHHnUS6KwF" label="✍️ On Request" color="blue"></option></select></th></tr></thead><tbody><tr><td>Deals</td><td><span data-option="a662c4f74a5246de8d959e2d6454c7e2">✅ Supported</span></td></tr><tr><td>Persons</td><td><span data-option="a662c4f74a5246de8d959e2d6454c7e2">✅ Supported</span></td></tr><tr><td>Organizations</td><td><span data-option="a662c4f74a5246de8d959e2d6454c7e2">✅ Supported</span></td></tr><tr><td>Activities</td><td><span data-option="a662c4f74a5246de8d959e2d6454c7e2">✅ Supported</span></td></tr><tr><td>MailThreads</td><td><span data-option="a662c4f74a5246de8d959e2d6454c7e2">✅ Supported</span></td></tr><tr><td>MailMessages</td><td><span data-option="a662c4f74a5246de8d959e2d6454c7e2">✅ Supported</span></td></tr><tr><td>CallLogs</td><td><span data-option="tKDHHnUS6KwF">✍️ On Request</span></td></tr><tr><td>Files</td><td><span data-option="tKDHHnUS6KwF">✍️ On Request</span></td></tr><tr><td>Goals</td><td><span data-option="tKDHHnUS6KwF">✍️ On Request</span></td></tr><tr><td>Leads</td><td><span data-option="tKDHHnUS6KwF">✍️ On Request</span></td></tr><tr><td>Notes</td><td><span data-option="tKDHHnUS6KwF">✍️ On Request</span></td></tr><tr><td>Pipelines</td><td><span data-option="tKDHHnUS6KwF">✍️ On Request</span></td></tr><tr><td>Products</td><td><span data-option="tKDHHnUS6KwF">✍️ On Request</span></td></tr><tr><td>Subscriptions</td><td><span data-option="tKDHHnUS6KwF">✍️ On Request</span></td></tr><tr><td>Tasks</td><td><span data-option="tKDHHnUS6KwF">✍️ On Request</span></td></tr><tr><td>Users</td><td><span data-option="tKDHHnUS6KwF">✍️ On Request</span></td></tr></tbody></table>

Need to sync other objects? Email us at <integrations@stacksync.com> and we can add support for them in no time!


# Authorize Pipedrive

Authorize your Pipedrive app and sync data with Stacksync

Pipedrive connection is done without coding required in a few steps.

#### 1. Click on "Connections"

<figure><img src="/files/38GWmNWZY8kzEvYKiBSG" alt=""><figcaption></figcaption></figure>

#### 2. Click on "Create New Connection"

<figure><img src="/files/Mr1KR6LD0ZxPU67fYMzf" alt=""><figcaption></figcaption></figure>

#### 3. Click on "Pipedrive"

<figure><img src="/files/kP7csQjizfaIWB2Vxxwe" alt=""><figcaption></figcaption></figure>

#### 4. Click on "Allow and Install"

<figure><img src="/files/YP0DDJ2JNkfRZj8EiTGT" alt=""><figcaption></figcaption></figure>

That's it! Your Pipedrive instance is now connected to Stacksync!🎉


# Front

Two-way sync between Front and your other systems.

## Supported Objects

Stacksync lets you sync the following Front objects:

<table><thead><tr><th width="404">Object</th><th>Status<select><option value="a662c4f74a5246de8d959e2d6454c7e2" label="✅ Supported" color="blue"></option><option value="e419d109b16f48f6a6b41f71280b1cd1" label="❌ Not supported" color="blue"></option><option value="95e574ba8f4048a89aaa1f63b28591ef" label="🕘 Coming soon" color="blue"></option></select></th></tr></thead><tbody><tr><td>Accounts</td><td><span data-option="a662c4f74a5246de8d959e2d6454c7e2">✅ Supported</span></td></tr><tr><td>Contacts</td><td><span data-option="a662c4f74a5246de8d959e2d6454c7e2">✅ Supported</span></td></tr><tr><td>Contact Groups</td><td><span data-option="a662c4f74a5246de8d959e2d6454c7e2">✅ Supported</span></td></tr><tr><td>Events</td><td><span data-option="a662c4f74a5246de8d959e2d6454c7e2">✅ Supported</span></td></tr></tbody></table>

Need to sync other objects? Email us at <integrations@stacksync.com> and we can add support for them in no time!


# Authorize Front

Authorize your Front app and sync data with Stacksync

Connecting to Front is done without any coding required in a few steps.

#### 1. Click on "Connections"

<figure><img src="/files/mEl0RqVDxmihPdvfxJUu" alt=""><figcaption></figcaption></figure>

#### 2. Click "create new connection"

<figure><img src="/files/Mr1KR6LD0ZxPU67fYMzf" alt=""><figcaption></figcaption></figure>

#### 3. Click "Front"

<figure><img src="/files/3Q7R9saDuBk7Icdq4q4d" alt=""><figcaption></figcaption></figure>

#### 4. Click "Authorize"

<figure><img src="/files/LN1t99IhwYX5w8jgQCVX" alt=""><figcaption></figcaption></figure>

That's it! Your Front instance is now connected to Stacksync!🎉


# Zoho

Two-way sync between Zoho and your other systems.

Stacksync lets you sync the following Zoho CRM objects:

| Object         | Status      |
| -------------- | ----------- |
| Lead           | ✅ Supported |
| Contact        | ✅ Supported |
| Account        | ✅ Supported |
| Deal           | ✅ Supported |
| Task           | ✅ Supported |
| Meeting        | ✅ Supported |
| Call           | ✅ Supported |
| Product        | ✅ Supported |
| Quote          | ✅ Supported |
| Sales Order    | ✅ Supported |
| Purchase Order | ✅ Supported |
| Invoice        | ✅ Supported |
| Campaign       | ✅ Supported |
| Vendor         | ✅ Supported |
| Price Book     | ✅ Supported |
| Case           | ✅ Supported |
| Solution       | ✅ Supported |
| Note           | ✅ Supported |
| Attachment     | ✅ Supported |

Need to sync other objects? Email us at <integrations@stacksync.com> and we can add support for them in no time!


# Authorize Zoho

Authorize your Zoho app and sync data with Stacksync

Connecting to Zoho is done without any coding required in a few steps.

1. In Stacksync, click on "Create new sync".

   <figure><img src="/files/z9iI72Eqw5cllpFZ5qnW" alt=""><figcaption></figcaption></figure>
2. Select "Zoho CRM".

   <figure><img src="/files/bJeHnptuFkxaEd8Qdikd" alt=""><figcaption></figcaption></figure>
3. A new tab will open. Log in to Zoho and authorize Stacksync.

   <figure><img src="/files/ifQVmFg1rZhklBeo6fU6" alt=""><figcaption></figcaption></figure>
4. Connect your database and click continue.
5. Map which Zoho objects to sync. Choose between an existing table in your database, or generating a new one.

   <figure><img src="/files/RbzjivtdsFfM1inBhxja" alt=""><figcaption></figcaption></figure>
6. Finally, link the fields to sync between Zoho and your target database.

   <figure><img src="/files/sD1IlH9EBbTpqrFQruC1" alt=""><figcaption></figcaption></figure>
7. Click "Create sync". Click on the toggle to activate your sync. Data is now flowing!


# MySQL

Two-way sync between MySQL and your other systems.

## Introduction

MySQL is a widely-used, open-source relational database management system that uses SQL (Structured Query Language) for data manipulation. Known for its speed, reliability, and ease of use, MySQL is the foundation for many popular applications and websites. It powers critical backend systems and supports large-scale enterprise solutions.

Now you can seamlessly synchronize data across all your CRM and database systems using Stacksync!

## Things to keep in mind

### During setup

* [x] **All MySQL tables must have a (single) primary key**\
  We use the primary key to keep your data in sync.\
  The primary key must be a single column; composite primary keys are not supported.
* [x] **Primary keys must be auto-generated**\
  Ensure your primary keys are auto-generated by your database (e.g. use `AUTO_INCREMENT` for primary keys).
* [x] **Check user permissions**\
  Verify that the MySQL user used by Stacksync to connect to your database has sufficient privileges (e.g., `SELECT`, `INSERT`, `UPDATE`, and `DELETE`) on the tables you want to map.
* [x] **Run this query to check if Stacksync can create triggers:**

  ```sql
  SELECT
    CASE
      WHEN @@log_bin = 0 THEN '✅ Binary logging is OFF — No issues.'
      WHEN @@log_bin = 1 AND @@log_bin_trust_function_creators = 1 THEN '✅ Binary logging is ON — Trust is enabled — All good.'
      ELSE '⚠️  Binary logging is ON but trust_function_creators is OFF — Please fix to allow trigger creation.'
    END AS status;
  ```

  If you see ⚠️, it means you need to update the server settings (requires admin access).

  ```sql
  SET GLOBAL log_bin_trust_function_creators = 1;
  ```

  **Reason:**\
  Stackync creates deterministic triggers for internal logging and syncing.\
  By default, MySQL restricts non-super users from creating triggers when binary logging is enabled — unless `log_bin_trust_function_creators` is set to `ON`.

  Feel free to reach out to us at <hello@stacksync.com>

If a table in your database does not appear in Stacksync, one of the above conditions is likely not met. Check our MySQL snippets collection for troubleshooting tips.

### After setup

Renaming schemas, tables, or columns will break Stacksync configuration. But don't worry, we've got you covered! Refer to our [Update Sync Configuration](/two-way-sync/features/update-sync-configuration) guide for detailed steps to address this.


# Authorize MySQL

Authorize your MySQL app and start syncing data with Stacksync

### Adding Credentials to Stacksync <a href="#adding-credentials-to-stacksync" id="adding-credentials-to-stacksync"></a>

#### 1. Select MySQL in the Create New Sync page in Stacksync.

<figure><img src="/files/AMnL3eTEteXE9a9nkKDP" alt=""><figcaption></figcaption></figure>

**2. Add your** MySQL **credentials as Connection String or as Parameters.**

<figure><img src="/files/Gc0BZx5HWtS54wD0D3X2" alt=""><figcaption></figcaption></figure>

**3. (Optional) Upload your SSL Root Certificate file**

**More details on how to retrieve your SSL Certificate:**

[**https://docs.stacksync.com/connectors/postgres/authorize-postgres/amazon-rds/ensuring-secure-rds-connections-with-ssl-certificate**](https://docs.stacksync.com/connectors/postgres/authorize-postgres/amazon-rds/ensuring-secure-rds-connections-with-ssl-certificate)

<figure><img src="/files/LrxZJ6Q59TCFofI8YOeF" alt=""><figcaption></figcaption></figure>

**4. (Optional) Add SSH user and SSH host**

**More details on how to set up a SSH tunnel to connect to your RDS instance:** [**https://docs.stacksync.com/connectors/postgres/authorize-postgres/amazon-rds/access-private-rds-instance-through-jumpbox**](https://docs.stacksync.com/connectors/postgres/authorize-postgres/amazon-rds/access-private-rds-instance-through-jumpbox)

<figure><img src="/files/JRWT5YmcgoEX1ofo5muf" alt=""><figcaption></figcaption></figure>

**5. Click 'Authorize App'**

<figure><img src="/files/E1JBMAa0WNsyS21OBB8e" alt=""><figcaption></figcaption></figure>

If you have any questions or need further assistance, reach out to us at <hello@stacksync.com>. We’re here to help ensure a seamless and secure database connection setup.


# SQL Server (MSSQL)

Two-way sync between Microsoft SQL Server (MSSQL) and your other systems.

## Introduction

SQL Server is Microsoft's enterprise relational database management system known for high performance, advanced security features, and scalability. Stacksync enables seamless data\
synchronization between Microsoft SQL Server and other CRM and database systems.

## Things to keep in mind

### During setup

* [x] **All SQL Server tables must have a (single) primary key**\
  We use the primary key to keep your data in sync.\
  The primary key must be a single column; composite primary keys are not supported.
* [x] **Primary keys must be auto-generated**\
  Ensure your primary keys are auto-generated by your database (e.g. use `IDENTITY` for primary keys).
* [x] **Check user permissions**\
  Verify that the SQL Server user used by Stacksync to connect to your database has sufficient privileges (e.g., `SELECT`, `INSERT`, `UPDATE`, and `DELETE`) on the tables you want to map. Additionally, the user must have `EXECUTE` permission on the StackSync CDC wrapper procedures (created during one-time setup).
* [x] **Native CDC Setup**\
  SQL Server connector uses Native Change Data Capture (CDC) for efficient change tracking. A database administrator must run a one-time setup script to enable CDC and create wrapper\
  procedures.\
  To enable CDC functionality, the DBA should execute the CDC setup script. See the setup instructions below.
* [x] **Why CDC Setup is Required:**\
  Stacksync uses SQL Server's built-in Change Data Capture to track data changes. Since enabling CDC requires elevated privileges, a DBA must run a setup script once. After this setup,\
  your regular Stacksync user can enable CDC on tables without needing sysadmin privileges.
* [x] **CDC Setup Script:**\
  The setup script must be executed by a user with **sysadmin** privileges.<br>

  ```sql
  -- ================================================================
  -- StackSync CDC Setup Script
  --
  -- Run this ONCE as a database administrator with sysadmin privileges.
  --
  -- StackSync automatically manages CDC using capture instances named:
  --   stacksync_{app_id}_{table_name}
  --
  -- This allows multiple StackSync apps to use CDC on the same tables.
  -- SQL Server supports maximum 2 capture instances per table.
  -- ================================================================

  USE [YOUR_DATABASE];
  GO

  -- ================================================================
  -- Step 1: Enable CDC on database
  -- ================================================================
  EXEC sys.sp_cdc_enable_db;
  GO

  -- ================================================================
  -- Step 2: Create helper procedures for StackSync
  -- ================================================================

  -- Drop existing procedures if they exist
  IF OBJECT_ID('SCHEMA.sp_stacksync_enable_cdc_db', 'P') IS NOT NULL
      DROP PROCEDURE SCHEMA.sp_stacksync_enable_cdc_db;
  GO

  IF OBJECT_ID('SCHEMA.sp_stacksync_enable_cdc_table', 'P') IS NOT NULL
      DROP PROCEDURE SCHEMA.sp_stacksync_enable_cdc_table;
  GO

  IF OBJECT_ID('SCHEMA.sp_stacksync_disable_cdc_table', 'P') IS NOT NULL
      DROP PROCEDURE SCHEMA.sp_stacksync_disable_cdc_table;
  GO

  IF OBJECT_ID('SCHEMA.sp_stacksync_disable_cdc_db', 'P') IS NOT NULL
      DROP PROCEDURE SCHEMA.sp_stacksync_disable_cdc_db;
  GO

  -- Create procedure to enable CDC on database
  CREATE PROCEDURE SCHEMA.sp_stacksync_enable_cdc_db
      WITH EXECUTE AS OWNER
  AS
  BEGIN
      SET NOCOUNT ON;

      DECLARE @is_cdc_enabled BIT;
      DECLARE @database_name NVARCHAR(128) = DB_NAME();

      SELECT @is_cdc_enabled = is_cdc_enabled
      FROM sys.databases
      WHERE name = @database_name;

      IF @is_cdc_enabled = 1
          BEGIN
              RETURN 0;
          END

      EXEC sys.sp_cdc_enable_db;
      RETURN 0;
  END;
  GO

  -- Create procedure to enable CDC on table
  CREATE PROCEDURE SCHEMA.sp_stacksync_enable_cdc_table
      @source_schema NVARCHAR(128),
      @source_name NVARCHAR(128),
      @capture_instance NVARCHAR(128) = NULL,
      @supports_net_changes BIT = 1,
      @role_name NVARCHAR(128) = NULL
      WITH EXECUTE AS OWNER
  AS
  BEGIN
      SET NOCOUNT ON;

      DECLARE @instance_exists INT;

      IF @capture_instance IS NULL
          SET @capture_instance = @source_schema + '_' + @source_name;

      IF LEN(@capture_instance) > 100
          SET @capture_instance = LEFT(@capture_instance, 100);

      -- Check if THIS specific capture instance already exists
      -- (Not just if table is tracked - we support up to 2 capture instances per table)
      SELECT @instance_exists = COUNT(*)
      FROM cdc.change_tables
      WHERE capture_instance = @capture_instance;

      IF @instance_exists > 0
          BEGIN
              -- This specific capture instance already exists, nothing to do
              RETURN 0;
          END

      -- Enable CDC with the specified capture instance name
      -- SQL Server supports up to 2 capture instances per table
      EXEC sys.sp_cdc_enable_table
           @source_schema = @source_schema,
           @source_name = @source_name,
           @role_name = @role_name,
           @supports_net_changes = @supports_net_changes,
           @capture_instance = @capture_instance;

      RETURN 0;
  END;
  GO

  -- Create procedure to disable CDC on table
  CREATE PROCEDURE SCHEMA.sp_stacksync_disable_cdc_table
      @source_schema NVARCHAR(128),
      @source_name NVARCHAR(128),
      @capture_instance NVARCHAR(128) = NULL
      WITH EXECUTE AS OWNER
  AS
  BEGIN
      SET NOCOUNT ON;

      IF @capture_instance IS NULL
          SET @capture_instance = @source_schema + '_' + @source_name;

      IF LEN(@capture_instance) > 100
          SET @capture_instance = LEFT(@capture_instance, 100);

      EXEC sys.sp_cdc_disable_table
           @source_schema = @source_schema,
           @source_name = @source_name,
           @capture_instance = @capture_instance;

      RETURN 0;
  END;
  GO

  -- Create procedure to disable CDC on database
  CREATE PROCEDURE SCHEMA.sp_stacksync_disable_cdc_db
      WITH EXECUTE AS OWNER
  AS
  BEGIN
      SET NOCOUNT ON;

      EXEC sys.sp_cdc_disable_db;
      RETURN 0;
  END;
  GO

  -- ================================================================
  -- Step 3: Grant permissions to StackSync user
  -- ================================================================

  GRANT EXECUTE ON SCHEMA.sp_stacksync_enable_cdc_db TO [USERNAME];
  GRANT EXECUTE ON SCHEMA.sp_stacksync_enable_cdc_table TO [USERNAME];
  GRANT EXECUTE ON SCHEMA.sp_stacksync_disable_cdc_table TO [USERNAME];
  GRANT EXECUTE ON SCHEMA.sp_stacksync_disable_cdc_db TO [USERNAME];
  GO


  -- Read CDC metadata and change data
  GRANT SELECT ON SCHEMA::cdc TO [USERNAME];
  PRINT 'Granted SELECT on cdc schema';
  GO

  -- Query DMVs for partitioning and row counts
  GRANT VIEW DATABASE STATE TO [USERNAME];
  PRINT 'Granted VIEW DATABASE STATE';
  GO

  -- Read user tables and system catalog
  ALTER ROLE db_datareader ADD MEMBER [USERNAME];
  PRINT 'Added to db_datareader role';
  GO

  -- Write to user tables (for bidirectional sync)
  ALTER ROLE db_datawriter ADD MEMBER [USERNAME];
  PRINT 'Added to db_datawriter role';
  GO

  -- Create temporary tables during write operations
  GRANT CREATE TABLE TO [USERNAME];
  PRINT 'Granted CREATE TABLE';
  GO

  -- Drop temporary tables after write operations
  GRANT ALTER ON SCHEMA::SCHEMA TO [USERNAME];
  PRINT 'Granted ALTER on schema';
  GO

  -- Required: To Check SQL Server Agent status
  GRANT VIEW SERVER STATE TO [USERNAME];
  PRINT 'Granted VIEW SERVER STATE';
  GO


  ```
* [x] **SQL Server Agent**\
  SQL Server Agent must be running for CDC to capture changes:
  * **On-premise:** Start SQL Server Agent via SQL Server Configuration Manager
  * **AWS RDS:** Enable via RDS Parameter Group setting `agent XPs = 1`
  * **Azure SQL Database:** CDC is managed automatically

#### Important Considerations

* **Renaming schemas, tables, or columns will break Stacksync configuration.** If you need to rename objects, refer to the Update Sync Configuration guide for remediation steps.
* **Schema Names:** SQL Server supports multiple schemas per database. Ensure you specify the correct schema when setting up your connection (default is `dbo`).

### Troubleshooting

If tables don't appear in Stacksync during setup, one of the above requirements is likely unmet. Common issues include:

* Missing primary keys or composite primary keys
* Insufficient user permissions
* CDC wrapper procedures not created (setup script not run)
* SQL Server Agent not running

For diagnostic queries and troubleshooting steps, refer to the SQL Server Snippets page.

Feel free to reach out to us at <hello@stacksync.com>


# Authorize SQL Server

Authorize your Microsoft SQL Server database and start syncing data with Stacksync

### Adding Credentials to Stacksync <a href="#adding-credentials-to-stacksync" id="adding-credentials-to-stacksync"></a>

#### 1. Select SQL Server in the Create New Sync page in Stacksync.

<figure><img src="/files/AWLBn0MNCi2AeVgokRW9" alt=""><figcaption></figcaption></figure>

**2. Add your SQL Server credentials as Connection String or as Parameters.**

<figure><img src="/files/49XlzaLYzpoyAPRMaBpV" alt=""><figcaption></figcaption></figure>

If you have any questions or need further assistance, reach out to us at <hello@stacksync.com>. We’re here to help ensure a seamless and secure database connection setup.


# MariaDB

Two-way sync between MariaDB and your other systems.

## Introduction

MariaDB is a popular open-source relational database management system that originated as a fork of MySQL. It remains fully compatible with MySQL while offering additional features and improved performance in some scenarios. It’s widely used in enterprise and cloud environments for its flexibility, speed, and reliability.

Now you can seamlessly synchronize data across all your CRM and database systems using **StacksSync**!

## Things to keep in mind

### During setup

* [x] **All MariaDB existing tables must have a (single) primary key**\
  We use the primary key to keep your data in sync.\
  The primary key must be a single column; composite primary keys are not supported.
* [x] **Primary keys must be auto-generated**\
  Ensure your primary keys are auto-generated by your database (e.g. use `AUTO_INCREMENT` for primary keys).
* [x] **Check user permissions**\
  Verify that the MariaDB user used by Stacksync to connect to your database has sufficient privileges (e.g., `SELECT`, `INSERT`, `UPDATE`, and `DELETE`) on the tables you want to map.
* [x] **Run this query to check if Stacksync can create triggers:**

  ```sql
  SELECT
    CASE
      WHEN @@log_bin = 0 THEN '✅ Binary logging is OFF — No issues.'
      WHEN @@log_bin = 1 AND @@log_bin_trust_function_creators = 1 THEN '✅ Binary logging is ON — Trust is enabled — All good.'
      ELSE '⚠️  Binary logging is ON but trust_function_creators is OFF — Please fix to allow trigger creation.'
    END AS status;
  ```

  if you see ⚠️, it means you need to update the server settings (requires admin access).

  ```sql
  SET GLOBAL log_bin_trust_function_creators = 1;
  ```

  **Reason:**\
  Stacksync creates deterministic triggers for internal logging and syncing.\
  By default, MariaDB restricts non-super users from creating triggers when binary logging is enabled — unless `log_bin_trust_function_creators` is set to `ON`.

  Feel free to reach out to us at <hello@stacksync.com>.

If a table in your database does not appear in Stacksync, one of the above conditions is likely not met. Check out our MariaDB snippets collection for troubleshooting tips.

### After setup

Renaming schema, tables, or columns will break Stacksync configuration. But don't worry, we've got you covered! Refer to our [Update Sync Configuration](/two-way-sync/features/update-sync-configuration) guide for detailed steps to address this.


# Authorize MariaDB

Authorize your MariaDB app and start syncing data with Stacksync

### Adding Credentials to Stacksync <a href="#adding-credentials-to-stacksync" id="adding-credentials-to-stacksync"></a>

#### 1. Select MariaDB in the Create New Sync page in Stacksync.

<figure><img src="/files/ySSuMaJNLPdyrpBmI1QB" alt=""><figcaption></figcaption></figure>

**2. Add your MariaDB credentials as Connection String or as Parameters.**

<figure><img src="/files/Gc0BZx5HWtS54wD0D3X2" alt=""><figcaption></figcaption></figure>

**3. (Optional) Upload your SSL Root Certificate file**

**More details on how to retrieve your SSL Certificate:**

[**https://docs.stacksync.com/connectors/postgres/authorize-postgres/amazon-rds/ensuring-secure-rds-connections-with-ssl-certificate**](https://docs.stacksync.com/connectors/postgres/authorize-postgres/amazon-rds/ensuring-secure-rds-connections-with-ssl-certificate)

<figure><img src="/files/LrxZJ6Q59TCFofI8YOeF" alt=""><figcaption></figcaption></figure>

**4. (Optional) Add SSH user and SSH host**

**More details on how to set up a SSH tunnel to connect to your RDS instance:**

[**https://docs.stacksync.com/connectors/setup-options/ssh-tunneling/access-private-asw-rds-instance-through-jumpbox**](https://docs.stacksync.com/connectors/setup-options/ssh-tunneling/access-private-asw-rds-instance-through-jumpbox)

<figure><img src="/files/JRWT5YmcgoEX1ofo5muf" alt=""><figcaption></figcaption></figure>

**5. Click 'Authorize App'**

<figure><img src="/files/E1JBMAa0WNsyS21OBB8e" alt=""><figcaption></figcaption></figure>

If you have any questions or need further assistance, reach out to us at <hello@stacksync.com>. We’re here to help ensure a seamless and secure database connection setup.


# NetSuite

Two-way sync between NetSuite and your other systems.

Stacksync lets you sync the following NetSuite objects:

### Custom Objects

<table><thead><tr><th width="299">Object</th><th>Read</th><th>Write</th></tr></thead><tbody><tr><td>All custom objects</td><td>✅ Supported</td><td>🔓 Request Access</td></tr></tbody></table>

### Accounting Objects

<table><thead><tr><th width="302">Object</th><th>Read</th><th>Write</th></tr></thead><tbody><tr><td>Nexus</td><td>✅ Supported</td><td>✅ Supported</td></tr><tr><td>Tax Type</td><td>✅ Supported</td><td>✅ Supported</td></tr><tr><td>Sales Tax Item</td><td>✅ Supported</td><td>✅ Supported</td></tr><tr><td>Billing Schedule Customer Subsidiary Relationship</td><td>✅ Supported</td><td>✅ Supported</td></tr><tr><td>Account</td><td>✅ Supported</td><td>🕜 Coming soon</td></tr><tr><td>Accounting Period</td><td>✅ Supported</td><td>🕜 Coming soon</td></tr><tr><td>Bin Transfer</td><td>✅ Supported</td><td>🕜 Coming soon</td></tr><tr><td>Currency Rate</td><td>✅ Supported</td><td>🕜 Coming soon</td></tr><tr><td>Price Level</td><td>✅ Supported</td><td>🕜 Coming soon</td></tr><tr><td>Term</td><td>✅ Supported</td><td>🕜 Coming soon</td></tr><tr><td>Subsidiary</td><td>✅ Supported</td><td>🕜 Coming soon</td></tr></tbody></table>

### Entity Objects

<table><thead><tr><th width="306">Object</th><th>Read</th><th>Write</th></tr></thead><tbody><tr><td>Customer</td><td>✅ Supported</td><td>✅ Supported</td></tr><tr><td>Vendor</td><td>✅ Supported</td><td>✅ Supported</td></tr><tr><td>Vendor Category</td><td>✅ Supported</td><td>✅ Supported</td></tr><tr><td>Contact</td><td>✅ Supported</td><td>✅ Supported</td></tr><tr><td>Employee</td><td>✅ Supported</td><td>✅ Supported</td></tr><tr><td>Other Name Category</td><td>✅ Supported</td><td>✅ Supported</td></tr><tr><td>Vendor Subsidiary Relationship</td><td>✅ Supported</td><td>✅ Supported</td></tr><tr><td>Lead</td><td>🔓 Request Access</td><td>🔓 Request Access</td></tr></tbody></table>

### Project Objects

<table><thead><tr><th width="312">Object</th><th>Read</th><th>Write</th></tr></thead><tbody><tr><td>Project</td><td>✅ Supported</td><td>✅ Supported</td></tr><tr><td>Project Status</td><td>✅ Supported</td><td>✅ Supported</td></tr><tr><td>Project Task</td><td>✅ Supported</td><td>✅ Supported</td></tr><tr><td>Job Type</td><td>✅ Supported</td><td>✅ Supported</td></tr><tr><td>Task</td><td>🔓 Request Access</td><td>🔓 Request Access</td></tr></tbody></table>

### Transaction Objects

| Object                              | Read        | Write       |
| ----------------------------------- | ----------- | ----------- |
| Check                               | ✅ Supported | ✅ Supported |
| Credit Card Charge                  | ✅ Supported | ✅ Supported |
| Credit Card Refund                  | ✅ Supported | ✅ Supported |
| Credit Memo                         | ✅ Supported | ✅ Supported |
| Currency Revaluation                | ✅ Supported | ✅ Supported |
| Customer Deposit                    | ✅ Supported | ✅ Supported |
| Customer Payment                    | ✅ Supported | ✅ Supported |
| Customer Refund                     | ✅ Supported | ✅ Supported |
| Deposit                             | ✅ Supported | ✅ Supported |
| Deposit Application                 | ✅ Supported | ✅ Supported |
| Estimate                            | ✅ Supported | ✅ Supported |
| Expense Report                      | ✅ Supported | ✅ Supported |
| Intercompany Journal Entry          | ✅ Supported | ✅ Supported |
| Advanced Intercompany Journal Entry | ✅ Supported | ✅ Supported |
| Invoice                             | ✅ Supported | ✅ Supported |
| Item Fulfillment                    | ✅ Supported | ✅ Supported |
| Item Receipt                        | ✅ Supported | ✅ Supported |
| Journal Entry                       | ✅ Supported | ✅ Supported |
| Opportunity                         | ✅ Supported | ✅ Supported |
| Purchase Order                      | ✅ Supported | ✅ Supported |
| Sales Order                         | ✅ Supported | ✅ Supported |
| Transfer                            | ✅ Supported | ✅ Supported |
| Vendor Bill                         | ✅ Supported | ✅ Supported |
| Vendor Credit                       | ✅ Supported | ✅ Supported |
| Vendor Payment                      | ✅ Supported | ✅ Supported |

### CRM Objects

<table><thead><tr><th width="321">Object</th><th>Read</th><th>Write</th></tr></thead><tbody><tr><td>Partner</td><td>✅ Supported</td><td>✅ Supported</td></tr><tr><td>Customer Status</td><td>✅ Supported</td><td>✅ Supported</td></tr><tr><td>Phone Call</td><td>✅ Supported</td><td>✅ Supported</td></tr><tr><td>Support Case</td><td>✅ Supported</td><td>✅ Supported</td></tr><tr><td>Calendar Event</td><td>✅ Supported</td><td>✅ Supported</td></tr><tr><td>Note Type</td><td>✅ Supported</td><td>✅ Supported</td></tr><tr><td>Task</td><td>✅ Supported</td><td>✅ Supported</td></tr><tr><td>Message</td><td>✅ Supported</td><td>✅ Supported</td></tr><tr><td>Contact Category</td><td>✅ Supported</td><td>🕜 Coming soon</td></tr><tr><td>Contact Role</td><td>✅ Supported</td><td>🕜 Coming soon</td></tr><tr><td>Customer Category</td><td>✅ Supported</td><td>🕜 Coming soon</td></tr><tr><td>Customer Message</td><td>✅ Supported</td><td>🕜 Coming soon</td></tr></tbody></table>

### Employee Objects

<table><thead><tr><th width="326">Object</th><th>Read</th><th>Write</th></tr></thead><tbody><tr><td>Department</td><td>✅ Supported</td><td>🕜 Coming soon</td></tr><tr><td>Expense Category</td><td>✅ Supported</td><td>🕜 Coming soon</td></tr><tr><td>Job Status</td><td>✅ Supported</td><td>✅ Supported</td></tr><tr><td>Classification</td><td>✅ Supported</td><td>🕜 Coming soon</td></tr><tr><td>Location</td><td>✅ Supported</td><td>🕜 Coming soon</td></tr></tbody></table>

### Communication Objects

<table><thead><tr><th width="331">Object</th><th>Read</th><th>Write</th></tr></thead><tbody><tr><td>Case</td><td>🔓 Request Access</td><td>🔓 Request Access</td></tr></tbody></table>

### Saved Searches

<table><thead><tr><th width="331">Object</th><th>Read</th><th>Write</th></tr></thead><tbody><tr><td>Saved Searches</td><td><span data-gb-custom-inline data-tag="emoji" data-code="2705">✅</span> Supported</td><td>Read-only object</td></tr></tbody></table>

### Published Reports (requires [NetSuite SuiteProjects Pro](https://www.netsuite.com/portal/products/professional-services-automation/suiteprojects-pro.shtml))

<table><thead><tr><th width="331">Object</th><th>Read</th><th>Write</th></tr></thead><tbody><tr><td>Published Reports</td><td>🔓 Request Access</td><td>Read-only object</td></tr></tbody></table>

Need to sync other objects? Email us at <integrations@stacksync.com> and we can add support for them in no time!


# Authorize NetSuite

9 min read

{% hint style="info" %}
If you do not see the following screens to create your API token, it means that you do not have the necessary access rights to authorize your NetSuite instance. An admin role is necessary to perform the connection setup.
{% endhint %}

1. Log in to your NetSuite account and navigate to **Setup** > **Company** > **Enable Features.**<br>

   <figure><img src="/files/0NyKsoBziXNP9VX3eN0Z" alt=""><figcaption><p>Navigate to the NetSuite features configuration panel</p></figcaption></figure>

   1. Under the ”**SuiteCloud**” header make sure the *REST WEB SERVICES* checkbox is checked.

      <figure><img src="/files/o7B09MJOUiOhbDpA5Ofg" alt=""><figcaption><p>Click "SuiteCloud"</p></figcaption></figure>

      <figure><img src="/files/eLWT9phT0C8n6khWdj9b" alt=""><figcaption><p>In the SuiteTalk section, enable SOAP WEB SERVICES and REST WEB SERVICES.</p></figcaption></figure>
   2. Under the ”**Manage Authentication**” header make sure the *TOKEN-BASED AUTHENTICATION* checkbox is checked.

      <figure><img src="/files/20YBucBUsbNDQqeSujQG" alt=""><figcaption><p>Activate Token-Based Authentication</p></figcaption></figure>
   3. Click the save button at the bottom of the page.<br>
2. Navigate to **Setup** > **Integration** > **Manage Integrations** > **New.**

   <figure><img src="/files/gnI9ikW6xzKGMMv43c2u" alt=""><figcaption><p>Create a new integration in NetSuite</p></figcaption></figure>

   <figure><img src="/files/RPxgT7RioIDrqmfTO9lb" alt=""><figcaption><p>Configure the new Stacksync integration in NetSuite</p></figcaption></figure>

   1. Select `Token-based Authentication` only
   2. Click the save button.
   3. The client credentials will now be displayed and be sure to copy the **Consumer ID** and **Consumer Secret.**

      <figure><img src="/files/5XN723udkR0SaERf5jWu" alt=""><figcaption><p>Save the "Consumer ID" and "Consumer Secret" values safely (to be used in the next steps of this tutorial).</p></figcaption></figure>
3. Navigate to the homepage by clicking the home icon.<br>

   <figure><img src="/files/nBOurteNUHdTqqySh1nU" alt=""><figcaption><p>Navigate to the NetSuite homepage</p></figcaption></figure>
4. At the bottom left corner click the **Manage Access Tokens** button.<br>

   <figure><img src="/files/oYvlUw0JZAruvfRcbSKU" alt=""><figcaption><p>Click "Manage Access Tokens"</p></figcaption></figure>

   <figure><img src="/files/4lMq9GUSqO4Ex0pIthFO" alt=""><figcaption><p>Click "New Access Token"</p></figcaption></figure>

   1. Select the **Application Name** you created for this integration.
   2. Enter a ”**Token Name**”.
   3. Save your new access token.
   4. The token credentials will now be displayed. Copy the ”**Token ID**” & ”**Token Secret**”.

   <figure><img src="/files/DfGUDHWMwxbNFXqcjnKt" alt=""><figcaption><p>Save "Token ID" and "Token Secret" values safely (to be used in the next steps of this tutorial).</p></figcaption></figure>
5. Get the `Account ID` from the URL, the domain name has the following format: `<account_id>.app.netsuite.com` .
6. You now have all the necessary credentials to grant Stacksync access to your NetSuite account. Go back to the Stacksync dashboard at <https://app.stacksync.com>.

   <figure><img src="/files/T5yWyMzQFDDsF3eFxO8H" alt=""><figcaption><p>Click on the "NetSuite" connector icon</p></figcaption></figure>

<figure><img src="/files/FneKwWYxnMKyhU0eluN8" alt=""><figcaption><p>Insert the credentials obtained from the preview steps in the NetSuite app</p></figcaption></figure>

You successfully granted Stacksync access to your NetSuite account! :tada:\
Feel free to reach out to us at <hello@stacksync.com> if there is anything we can help with!




---

[Next Page](/llms-full.txt/1)

