# Spotify Ads schema ERD

Table and field reference for the Fivetran Spotify Ads connector.

## Table & Field Reference

### ad_set_audience_exclusion

| Column | Type | Keys |
| --- | --- | --- |
| audience_exclusion_id | String | PK |
| ad_set_id | String | PK, FK |
| ad_set_updated_at | Instant | PK, FK |

### audience

| Column | Type | Keys |
| --- | --- | --- |
| id | String | PK |
| updated_at | Instant | PK |
| ad_account_id | String | PK, FK |
| created_at | Instant |  |
| description | String |  |
| name | String |  |
| seed_audience_id | String |  |
| size_max | Int |  |
| size_min | Int |  |
| status | String |  |
| type | String |  |

### ad_set_geo_target_dma

| Column | Type | Keys |
| --- | --- | --- |
| dma_id | String | PK |
| ad_set_id | String | PK, FK |
| ad_set_updated_at | Instant | PK, FK |

### ad_set_geo_target_post_code

| Column | Type | Keys |
| --- | --- | --- |
| post_code_id | String | PK |
| ad_set_id | String | PK, FK |
| ad_set_updated_at | Instant | PK, FK |

### video_asset

| Column | Type | Keys |
| --- | --- | --- |
| ad_account_id | String | PK |
| id | String | PK |
| updated_at | Instant | PK |
| aspect_ratio | String |  |
| created_at | Instant |  |
| duration_ms | Int |  |
| file_type | String |  |
| name | String |  |
| status | String |  |
| thumbnail_url | String |  |
| url | String |  |

### ad_category

| Column | Type | Keys |
| --- | --- | --- |
| id | String | PK |
| name | String |  |
| parent_category | String |  |

### audio_asset

| Column | Type | Keys |
| --- | --- | --- |
| ad_account_id | String | PK |
| id | String | PK |
| updated_at | Instant | PK |
| audio_type | String |  |
| canvas_asset_id | String |  |
| created_at | Instant |  |
| duration_ms | Int |  |
| file_type | String |  |
| name | String |  |
| status | String |  |
| url | String |  |

### ad_set_interest

| Column | Type | Keys |
| --- | --- | --- |
| interest_id | String | PK |
| ad_set_id | String | PK, FK |
| ad_set_updated_at | Instant | PK, FK |

### ad_set_geo_target_city

| Column | Type | Keys |
| --- | --- | --- |
| city_id | String | PK |
| ad_set_id | String | PK, FK |
| ad_set_updated_at | Instant | PK, FK |

### ad_set

| Column | Type | Keys |
| --- | --- | --- |
| id | String | PK |
| updated_at | Instant | PK |
| campaign_id | String | FK |
| category | String | FK |
| geo_target_country_code | String | FK |
| target_language | String | FK |
| asset_format | String |  |
| bid_micro_amount | Long |  |
| bid_optimization_goal | String |  |
| bid_strategy | String |  |
| budget_currency | String |  |
| budget_micro_amount | Long |  |
| budget_type | String |  |
| cost_model | String |  |
| created_at | Instant |  |
| delivery | String |  |
| end_time | Instant |  |
| name | String |  |
| promotion_goal | String |  |
| promotion_target_id | String |  |
| reject_reason | String |  |
| start_time | Instant |  |
| status | String |  |

### ad_set_platform

| Column | Type | Keys |
| --- | --- | --- |
| platform | String | PK |
| ad_set_id | String | PK, FK |
| ad_set_updated_at | Instant | PK, FK |

### ad_set_artist

| Column | Type | Keys |
| --- | --- | --- |
| artist_id | String | PK |
| ad_set_id | String | PK, FK |
| ad_set_updated_at | Instant | PK, FK |

### geo_target

| Column | Type | Keys |
| --- | --- | --- |
| id | String | PK |
| country_code | String |  |
| name | String |  |
| parent_geo_name | String |  |
| type | String |  |

### business

| Column | Type | Keys |
| --- | --- | --- |
| id | String | PK |
| updated_at | Instant | PK |
| created_at | Instant |  |
| name | String |  |
| status | String |  |
| type | String |  |

### ad_set_placement

| Column | Type | Keys |
| --- | --- | --- |
| placement | String | PK |
| ad_set_id | String | PK, FK |
| ad_set_updated_at | Instant | PK, FK |

### ad_account

| Column | Type | Keys |
| --- | --- | --- |
| id | String | PK |
| updated_at | Instant | PK |
| business_id | String | FK |
| ad_account_role | String |  |
| billing_address_city | String |  |
| billing_address_name | String |  |
| billing_address_postal_code | String |  |
| billing_address_region | String |  |
| billing_address_street | String |  |
| billing_address_tax_region | String |  |
| country_code | String |  |
| created_at | Instant |  |
| currency_code | String |  |
| display_name | String |  |
| industry | String |  |
| legal_entity_name | String |  |
| name | String |  |
| status | String |  |
| status_reason | String |  |
| tax_id | String |  |
| website | String |  |

### ad_set_genre

| Column | Type | Keys |
| --- | --- | --- |
| genre_id | String | PK |
| ad_set_id | String | PK, FK |
| ad_set_updated_at | Instant | PK, FK |

### artist

| Column | Type | Keys |
| --- | --- | --- |
| id | String | PK |
| images | String |  |
| name | String |  |

### playlist

| Column | Type | Keys |
| --- | --- | --- |
| id | String | PK |
| name | String |  |

### image_asset

| Column | Type | Keys |
| --- | --- | --- |
| ad_account_id | String | PK |
| id | String | PK |
| updated_at | Instant | PK |
| created_at | Instant |  |
| file_type | String |  |
| image_type | String |  |
| name | String |  |
| status | String |  |
| url | String |  |

### genre

| Column | Type | Keys |
| --- | --- | --- |
| id | String | PK |
| name | String |  |

### ad_set_playlist

| Column | Type | Keys |
| --- | --- | --- |
| playlist_id | String | PK |
| ad_set_id | String | PK, FK |
| ad_set_updated_at | Instant | PK, FK |

### ad_set_podcast_episode_topic

| Column | Type | Keys |
| --- | --- | --- |
| podcast_episode_topic_id | String | PK |
| ad_set_id | String | PK, FK |
| ad_set_updated_at | Instant | PK, FK |

### language

| Column | Type | Keys |
| --- | --- | --- |
| id | String | PK |
| name | String |  |

### ad

| Column | Type | Keys |
| --- | --- | --- |
| id | String | PK |
| updated_at | Instant | PK |
| ad_account_id | String | PK, FK |
| ad_set_id | String | FK |
| ad_preview_url | String |  |
| advertiser_name | String |  |
| asset_id | String |  |
| call_to_action_clickthrough_url | String |  |
| call_to_action_language | String |  |
| call_to_action_text | String |  |
| companion_asset_id | String |  |
| created_at | Instant |  |
| delivery | String |  |
| logo_asset_id | String |  |
| name | String |  |
| reject_reason | String |  |
| status | String |  |
| tagline | String |  |
| user_uploaded_image | String |  |

### ad_set_gender

| Column | Type | Keys |
| --- | --- | --- |
| gender | String | PK |
| ad_set_id | String | PK, FK |
| ad_set_updated_at | Instant | PK, FK |

### ad_set_audience

| Column | Type | Keys |
| --- | --- | --- |
| audience_id | String | PK |
| ad_set_id | String | PK, FK |
| ad_set_updated_at | Instant | PK, FK |

### sensitive_topic

| Column | Type | Keys |
| --- | --- | --- |
| id | String | PK |
| name | String |  |

### interest

| Column | Type | Keys |
| --- | --- | --- |
| id | String | PK |
| name | String |  |

### ad_set_frequency_cap

| Column | Type | Keys |
| --- | --- | --- |
| frequency_period | Int | PK |
| frequency_unit | String | PK |
| ad_set_id | String | PK, FK |
| ad_set_updated_at | Instant | PK, FK |
| max_impressions | Int |  |

### podcast_show

| Column | Type | Keys |
| --- | --- | --- |
| id | String | PK |
| images | String |  |
| name | String |  |

### ad_third_party_tracking

| Column | Type | Keys |
| --- | --- | --- |
| index | Int | PK |
| ad_id | String | PK, FK |
| ad_updated_at | Instant | PK, FK |
| measurement_partner | String |  |
| url | String |  |

### ad_set_conversion_event

| Column | Type | Keys |
| --- | --- | --- |
| index | Int | PK |
| ad_set_id | String | PK, FK |
| ad_set_updated_at | Instant | PK, FK |
| tracking_event_type | String |  |
| window_duration_ms | Int |  |

### campaign

| Column | Type | Keys |
| --- | --- | --- |
| id | String | PK |
| updated_at | Instant | PK |
| ad_account_id | String | PK, FK |
| created_at | Instant |  |
| measurement_partner | String |  |
| name | String |  |
| objective | String |  |
| purchase_order | String |  |
| spaa_pixel_id | String |  |
| status | String |  |

### ad_set_geo_target_region

| Column | Type | Keys |
| --- | --- | --- |
| region_id | String | PK |
| ad_set_id | String | PK, FK |
| ad_set_updated_at | Instant | PK, FK |

### podcast_episode_topic

| Column | Type | Keys |
| --- | --- | --- |
| id | String | PK |
| name | String |  |

### ad_set_sensitive_topic_exclusion

| Column | Type | Keys |
| --- | --- | --- |
| sensitive_topic_exclusion_id | String | PK |
| ad_set_id | String | PK, FK |
| ad_set_updated_at | Instant | PK, FK |

### ad_set_age_range

| Column | Type | Keys |
| --- | --- | --- |
| index | Int | PK |
| ad_set_id | String | PK, FK |
| ad_set_updated_at | Instant | PK, FK |
| max | Int |  |
| min | Int |  |

## Relationships

- ad_set_audience_exclusion(ad_set_id) → ad_set(id)
- ad_set_audience_exclusion(ad_set_updated_at) → ad_set(updated_at)
- audience(ad_account_id) → ad_account(id)
- ad_set_geo_target_dma(ad_set_id) → ad_set(id)
- ad_set_geo_target_dma(ad_set_updated_at) → ad_set(updated_at)
- ad_set_geo_target_post_code(ad_set_id) → ad_set(id)
- ad_set_geo_target_post_code(ad_set_updated_at) → ad_set(updated_at)
- ad_set_interest(ad_set_id) → ad_set(id)
- ad_set_interest(ad_set_updated_at) → ad_set(updated_at)
- ad_set_geo_target_city(ad_set_id) → ad_set(id)
- ad_set_geo_target_city(ad_set_updated_at) → ad_set(updated_at)
- ad_set(category) → ad_category(id)
- ad_set(campaign_id) → campaign(id)
- ad_set(target_language) → language(id)
- ad_set(geo_target_country_code) → geo_target(id)
- ad_set_platform(ad_set_id) → ad_set(id)
- ad_set_platform(ad_set_updated_at) → ad_set(updated_at)
- ad_set_artist(ad_set_id) → ad_set(id)
- ad_set_artist(ad_set_updated_at) → ad_set(updated_at)
- ad_set_placement(ad_set_id) → ad_set(id)
- ad_set_placement(ad_set_updated_at) → ad_set(updated_at)
- ad_account(business_id) → business(id)
- ad_set_genre(ad_set_id) → ad_set(id)
- ad_set_genre(ad_set_updated_at) → ad_set(updated_at)
- ad_set_playlist(ad_set_id) → ad_set(id)
- ad_set_playlist(ad_set_updated_at) → ad_set(updated_at)
- ad_set_podcast_episode_topic(ad_set_id) → ad_set(id)
- ad_set_podcast_episode_topic(ad_set_updated_at) → ad_set(updated_at)
- ad(ad_account_id) → ad_account(id)
- ad(ad_set_id) → ad_set(id)
- ad_set_gender(ad_set_id) → ad_set(id)
- ad_set_gender(ad_set_updated_at) → ad_set(updated_at)
- ad_set_audience(ad_set_id) → ad_set(id)
- ad_set_audience(ad_set_updated_at) → ad_set(updated_at)
- ad_set_frequency_cap(ad_set_id) → ad_set(id)
- ad_set_frequency_cap(ad_set_updated_at) → ad_set(updated_at)
- ad_third_party_tracking(ad_id) → ad(id)
- ad_third_party_tracking(ad_updated_at) → ad(updated_at)
- ad_set_conversion_event(ad_set_id) → ad_set(id)
- ad_set_conversion_event(ad_set_updated_at) → ad_set(updated_at)
- campaign(ad_account_id) → ad_account(id)
- ad_set_geo_target_region(ad_set_id) → ad_set(id)
- ad_set_geo_target_region(ad_set_updated_at) → ad_set(updated_at)
- ad_set_sensitive_topic_exclusion(ad_set_id) → ad_set(id)
- ad_set_sensitive_topic_exclusion(ad_set_updated_at) → ad_set(updated_at)
- ad_set_age_range(ad_set_id) → ad_set(id)
- ad_set_age_range(ad_set_updated_at) → ad_set(updated_at)
