Model sync (Reverse ETL) from BigQuery to LinkedIn Ads

This example creates a Model Sync from BigQuery to LinkedIn Ads using the Polytomic Terraform provider.

Prerequisites:

1. Configure the Polytomic provider

Configure the Polytomic provider in your Terraform script:

1terraform {
2 required_providers {
3 polytomic = {
4 source = "polytomic/polytomic"
5 version = "~> 1.5"
6 }
7 }
8}
9
10provider "polytomic" {
11 api_key = var.polytomic_api_key
12}

Define var.polytomic_api_key in your variables file or pass it at apply time.

🤝 Partner keys

If you are using a partner key, set partner_key on the provider and set organization on each resource that targets a specific organization.

1provider "polytomic" {
2 partner_key = "<value from settings page>"
3}

2. Create a BigQuery Connection

Define a resource for the BigQuery connection:

1resource "polytomic_bigquery_connection" "user_data" {
2 name = "BigQuery Users"
3
4 configuration = {
5 auth_method = "service_account_key"
6 service_account = file("bq.json")
7 }
8}

This example loads the service account key with the file function. Any string value or variable works as well.

3. Create a LinkedIn Ads Connection

Create the LinkedIn Ads Connection through Polytomic’s OAuth flow so Polytomic can request the required LinkedIn Ads API permissions on your behalf. Use the admin console or embedded authentication.

Once the Connection exists, reference it from Terraform with the Polytomic LinkedIn Ads datasource. Pass the Connection ID from the admin console:

1data "polytomic_linkedinads_connection" "destination" {
2 id = "<linkedin-ads-connection-id>"
3}

4. Create a source model for the LinkedIn Ads audience

Define a model that queries BigQuery:

1resource "polytomic_model" "audience_source" {
2 name = "LinkedIn Audience Source"
3 connection_id = polytomic_bigquery_connection.user_data.id
4
5 configuration = jsonencode({
6 query = "SELECT first_name, last_name, email FROM acme_inc.publicusers"
7 })
8
9 fields = ["email", "first_name", "last_name"]
10}

5. Create the Model Sync

Define a resource that syncs the model to a LinkedIn Ads audience:

1resource "polytomic_sync" "bigquery_to_linkedin_ads_audience" {
2 name = "Audience to LinkedIn Ads Sync"
3 mode = "create"
4 active = true
5
6 schedule = {
7 frequency = "daily"
8 hour = "0"
9 minute = "0"
10 }
11
12 target = {
13 connection_id = data.polytomic_linkedinads_connection.destination.id
14 create = {
15 "name" : var.linkedin_audience_name,
16 "type" : "my_user_audience",
17 "account" : var.linkedin_ad_account
18 }
19 }
20
21 fields = [
22 {
23 source = {
24 model_id = polytomic_model.audience_source.id
25 field = "email"
26 }
27 target = "user_email"
28 },
29 {
30 source = {
31 model_id = polytomic_model.audience_source.id
32 field = "first_name"
33 }
34 target = "firstName"
35 },
36 {
37 source = {
38 model_id = polytomic_model.audience_source.id
39 field = "last_name"
40 }
41 target = "lastName"
42 },
43 ]
44}

6. Apply the configuration

Initialize Terraform and apply:

$terraform init
$terraform apply

Review the planned changes and confirm to proceed.

For more details, see the Polytomic Terraform provider documentation.