LinkedIn Ads Loader
The LinkedIn Ads loader pulls campaign structure, creative content, and analytics data from your LinkedIn Campaign Manager accounts into your data warehouse. It uses the LinkedIn Marketing API and supports incremental sync for analytics data based on date segments.
Prerequisites
- A LinkedIn Campaign Manager account with at least one ad account
- A LinkedIn user account with Reporting Viewer or Campaign Manager access to the ad accounts
- A connected Warehouse (target warehouse) with write permissions on the target schema
Authentication
The LinkedIn Ads loader uses OAuth 2.0 for authentication.
OAuth 2.0 Setup
- In SignalSmith, click Add Loader and select LinkedIn Ads
- Click Connect with LinkedIn
- You’ll be redirected to LinkedIn’s authorization page
- Sign in with your LinkedIn credentials
- Grant SignalSmith access to your advertising data
- You’ll be redirected back to SignalSmith with the connection established
SignalSmith requests the following OAuth scopes:
| Scope | Purpose |
|---|---|
r_ads | Read ad accounts, campaigns, and creatives |
r_ads_reporting | Read performance analytics and reporting data |
SignalSmith automatically refreshes the access token. LinkedIn refresh tokens are valid for 365 days. If the refresh token expires, you’ll need to re-authenticate.
Ad Account Selection
After authentication, SignalSmith lists all LinkedIn ad accounts accessible to the authenticated user. Select the account(s) you want to sync.
Available Objects
| Object | API Name | Description | Default Sync Mode |
|---|---|---|---|
| Campaigns | campaigns | Campaign settings, objective, status, budget, and schedule | Incremental |
| Campaign Groups | campaign_groups | Groupings of related campaigns | Incremental |
| Creatives | creatives | Ad creative content — text, images, videos, and carousel cards | Incremental |
| Campaign Analytics | campaign_analytics | Daily campaign performance metrics | Incremental |
| Creative Analytics | creative_analytics | Daily creative-level performance metrics | Incremental |
| Ad Accounts | ad_accounts | Account-level settings, currency, and status | Full Refresh |
| Conversion Rules | conversion_rules | Conversion tracking definitions | Full Refresh |
| Audience Counts | audience_counts | Matched audience sizes for targeting | Full Refresh |
Analytics (Performance Reports)
Analytics objects contain daily aggregated performance metrics. Each row represents one day of data for the parent entity.
Key metrics available in analytics:
| Metric | Description |
|---|---|
impressions | Number of times ads were displayed |
clicks | Total clicks |
costInLocalCurrency | Total spend in the account’s currency |
costInUsd | Total spend in USD |
externalWebsiteConversions | Conversions tracked via the LinkedIn Insight Tag |
externalWebsitePostClickConversions | Post-click conversions |
externalWebsitePostViewConversions | Post-view conversions |
likes | Social likes/reactions on sponsored content |
comments | Social comments on sponsored content |
shares | Social shares of sponsored content |
follows | New company page follows from the ad |
videoViews | Video views (at least 2 seconds) |
videoCompletions | Videos watched to completion |
leadGenerationMailContactInfoShares | Lead Gen Form submissions |
Pivot Dimensions
Analytics can be broken down by additional dimensions:
| Pivot | Description |
|---|---|
MEMBER_COMPANY_SIZE | Company size of the viewer |
MEMBER_INDUSTRY | Industry of the viewer |
MEMBER_SENIORITY | Seniority level of the viewer |
MEMBER_JOB_FUNCTION | Job function of the viewer |
MEMBER_COUNTRY_V2 | Country of the viewer |
Enable pivot dimensions during object configuration. Each pivot adds segmented rows to the analytics table.
Configuration
| Setting | Description | Default |
|---|---|---|
| Ad Account ID | LinkedIn ad account ID(s) to sync | — (required) |
| Objects | List of objects and reports to sync | — (you choose during setup) |
| Analytics Pivots | Additional dimensions for analytics breakdowns | None |
| Sync Mode | Full Refresh or Incremental (per object) | Incremental |
| Date Range | Lookback period for analytics | Last 30 days |
| Primary Key | Composite key for analytics rows | campaign_id + date (+ pivot fields) |
| Target Schema | Warehouse schema for LinkedIn Ads tables | — (required) |
| Table Prefix | Optional prefix for table names | li_ |
| Schedule | Sync frequency | Daily |
Scheduling Notes
- Rate limits: The LinkedIn Marketing API enforces rate limits per application and per member. SignalSmith handles rate limiting with automatic backoff and retry.
- Data freshness: LinkedIn analytics data may be delayed by 24-48 hours. Schedule daily syncs with a 2-day lookback to ensure completeness.
- Conversion window: LinkedIn attributes conversions using a 30-day click-through and 7-day view-through window by default. SignalSmith re-fetches recent data to capture late-attributed conversions.
- Analytics granularity: The LinkedIn API supports daily granularity only for analytics. Hourly or real-time metrics are not available.
- Historical data: LinkedIn provides up to 2 years of historical analytics data. The initial backfill fetches the available history.
Schema Mapping
LinkedIn Ads field types are mapped to warehouse-compatible types:
| LinkedIn Type | Warehouse Type | Notes |
|---|---|---|
string | VARCHAR | |
long | BIGINT | IDs and count metrics |
float | DOUBLE | Monetary values and rates |
boolean | BOOLEAN | |
date | DATE | Analytics date segments |
enum | VARCHAR | Status, objective, type values |
URN | VARCHAR | LinkedIn URN identifiers (e.g., urn:li:sponsoredCampaign:123) |
Troubleshooting
| Issue | Solution |
|---|---|
| ”401 Unauthorized” | Access token has expired. Re-authenticate by clicking “Reconnect" |
| "403 Not enough permissions” | The authenticated user lacks access to the ad account. Verify permissions in LinkedIn Campaign Manager |
| ”429 Rate limit exceeded” | SignalSmith handles rate limits automatically. If persistent, reduce the number of pivot dimensions |
| Analytics data doesn’t match Campaign Manager | Check the date range and attribution window. LinkedIn’s UI may apply different defaults |
| Missing creative content | Some creative types (e.g., Dynamic Ads) may have limited API data. Verify the creative type is supported |
| No data for recent dates | LinkedIn analytics may be delayed by 24-48 hours |
| URN values in ID columns | LinkedIn uses URN format for identifiers. Extract the numeric ID using string parsing in your models |
Next Steps
- Create a model to transform your raw LinkedIn Ads data
- Combine LinkedIn ad performance with B2B CRM data for attribution analysis
- Sync audiences to LinkedIn for targeting