# Connect Reverse ETL Source to LinkedIn Audience


This guide takes you through the steps to connect a [Reverse ETL source]({{< ref "sources/reverse-etl/" >}}) to your LinkedIn Audience destination.

{{< success >}}
You can connect multiple Reverse ETL sources to the LinkedIn Audience destination.
{{< /success >}}

## Setup 

1. Set up and configure your Reverse ETL source.
2. In the **Overview** tab of the source page, click **Add destination** > **Create new destination**. You can also select an already-configured destination here.
3. From the list of destinations, select **LinkedIn Audience** and click **Continue**.
4. Specify a unique name to identify this destination in RudderStack.
5. In the **Event delivery account** section, click **Select** to choose from an existing LinkedIn account from the list. You can also click **Add account** and authenticate via OAuth, by specifying the following settings:

| Setting | <div style="width: 350px;">Description</div> |
| :----| :-----|
| Account Name | Specify a unique account name |
| oAuth settings | Click **Connect account**, sign in with LinkedIn, and give RudderStack the required permissions to access your LinkedIn Ads account. |

{{< info >}}
**Why do I see a request for Conversions API permissions while authorizing RudderStack?**

Since the [LinkedIn Ads]({{< ref "destinations/streaming-destinations/linkedin-ads/" >}}) and LinkedIn Audience destination integrations share a common OAuth app in the backend, RudderStack requests all the necessary permissions needed for both integrations to work correctly. 

RudderStack will **not** make any Conversions API-related calls when sending data to your LinkedIn Audience destination.
{{< /info >}}

6. Click **Continue** to configure the mapping settings.

## Mapping settings

This section lists the settings to correctly map data from your Reverse ETL source to the LinkedIn Audience destination.

### Select LinkedIn account

Select your LinkedIn Ads account from the dropdown — all the data will be synced with this account.

### Audience type

Select the audience type from the dropdown. RudderStack supports two types - **User** and **Company**.

### Select audience

In this section, you can create a new audience or use an existing one.

- **Create new audience**: Use this option to create a new custom audience in LinkedIn. You can specify the name and description of the new LinkedIn audience.
- **Use existing audience**: Use this option if you have an existing audience in LinkedIn. RudderStack automatically populates this field with the relevant audiences based on your specified [connection settings](#setup) and audience type configured above.

### Sync mode

RudderStack supports only [Mirror mode]({{< ref "data-pipelines/reverse-etl/developer-guides/sync-modes.md#mirror-mode" >}}) for this integration.

### Mapping settings

1. Select a warehouse columns that act as identifiers for your records and map them to the relevant LinkedIn identifiers based on your audience type — see [Identifier mappings](#identifier-mappings) section below for more information.
2. Map the other warehouse columns to specific LinkedIn fields that represent your audience's identity.

{{< info >}}
RudderStack does not typecast any data while syncing it to LinkedIn - it expects the data to be present in your warehouse in the correct format.

You can [connect a transformation]({{< ref "transformations/usage.md#from-destination" >}}) to the destination to update the data in the required format.
{{< /info >}}

{{< image src="images/audiences/destinations/linkedin/map-identifier-retl.webp" >}}

#### Identifier mappings

{{< success >}}
RudderStack supports specifying multiple identifiers for both the **User** and **Company** audience types.
{{< /success >}}

- For the **User** audience type, RudderStack supports the below LinkedIn identifiers to which you can map your warehouse columns:

| Identifier | <div style="width: 350px;">Description</div> |
| :----| :----|
| Email (SHA256) |  User's email in a hex-encoded string format with a maximum length of 64 characters. |
| Email (SHA512) |  User's email in a hex-encoded string format with a maximum length of 128 characters. | 
| [Google Advertising ID](https://support.google.com/googleplay/android-developer/answer/6048248?hl=en) | Plain text string (in lower case) with a maximum length of 32 characters. |

- For the **Company** audience type, RudderStack supports the below identifiers:

| Identifier | <div style="width: 350px;">Description</div> |
| :----| :----|
| Company Name | The company name. | 
| Company Email Domain | Company's email domain  string in a URL format, for example, `linkedin.com`. |
| Company Website Domain | Company's website domain string in a URL format, for example, `www.linkedin.com`. |
| Company Page URL | The LinkedIn company page URL with a maximum length of 100 characters, for example, `linkedin.com/company/acmecorp`. |
| Organization URN | The LinkedIn company page URN, for example, `urn:li:organizationUrn:123`. |

#### Other mappings

Apart from the [identifier mappings](#identifier-mappings), the **User** audience type also supports the below field mappings:

| Field | <div style="width: 350px;">Description</div> |
| :----| :----|
| First Name  | User's first name with a maximum length of 35 characters, for example, `Alex`. | 
| Last Name | User's last name with a maximum length of 35 characters, for example, `Keener`. | 
| Title | User's title in the company with a maximum length of 50 characters, for example, `Engineer`. | 
| Company | User's company name with a maximum length of 50 characters, for example, `Acme Corp`. |
| Country | ISO standard two letter country code, for example, `US`. |  

For the **Company** audience type, RudderStack supports the below field mappings:

| Field | <div style="width: 350px;">Description</div> |
| :----| :----|
| Stock Symbol | Stock symbol of the company with a maximum length of 5 letters, for example, `ACME`. | 
| Industries | Three industry names for the company with a maximum length of 50 characters, for example, `Technology`, `Software`. | 
| City | City of the company with a maximum length of 50 characters, for example, `New York`. | 
| State | State or province of the company with a maximum length of 50 characters, for example, `Louisiana`. |
| Country | ISO standard two letter country code, for example, `US`. | 
| Postal Code | Postal code of the company with a maximum length of 20 characters, for example, `560001`. | 

### Advanced settings

| Setting | <div style="width: 350px;">Description</div> |
| :----| :-----|
| Automatically hash PII data | When set to **Yes**, RudderStack hash-encodes user data to LinkedIn. <br /><br />**Note that**: <ul><li>This setting is applicable only for the **User** audience type.</li><li>**Do not use** this setting if you are syncing already-hashed data from your warehouse to LinkedIn. Otherwise, it can lead to failures. See [Data hashing](#data-hashing) section for more information.</li></ul> |

## Sync settings

{{< customreadfile "/includes/retl/schedule-syncs.md" >}}

#### Sync observability settings

{{< customreadfile "/includes/retl/sync-observability-settings.md" >}}

## Enable destination

Once the setup is complete, make sure to click the **Enable** button to enable and activate the connection.

{{< image src="images/audiences/destinations/tiktok/enable-button.webp" >}}

## Data hashing

The [Automatically hash PII data](#advanced-settings) setting lets you hash your user data before sending it to LinkedIn. This setting is enabled by default.

- Configure the setting to **Yes** if your incoming data is not pre-hashed
- Configure this setting to **No** if your data is already hashed

{{< warning >}}
Incorrect configuration of the **Automatically hash PII data** setting will result in failures.

- If the **Automatically hash PII data** setting is configured to **Yes** and your data is pre-hashed, the event will fail.
- If the **Automatically hash PII data** setting is configured to **No** and your data is not pre-hashed, the event will fail.
{{< /warning >}}

RudderStack rejects such events with a clear error message, for example:

```text
Automatically hash PII data is disabled but the value for field EMAIL appears to be unhashed. Either enable hashing or send pre-hashed data.
```

You will also see errors in the **Events** tab for cases that were previously marked as successful, but were effectively resulting in no matches, helping you quickly identify and fix any data quality or configuration issues.

