LinkedIn Ads
LinkedIn Ads exposes one statistics report and three metadata snapshots. The statistics report carries daily figures for every ad: impressions, clicks, cost, leads, conversions, engagement, video, and carousel metrics. The metadata reports return the current attributes of ads, campaigns, and the connected ad account.
Renta exports any of the four to your data warehouse. A pre-built template loads the statistics and metadata tables together.
Authentication
Renta uses OAuth to authenticate with LinkedIn. You will be redirected to LinkedIn to grant Renta limited access to your LinkedIn Ads account.
Your credentials are encrypted in transit and at rest, and never stored in Renta's application database. You stay in control and can revoke access from your LinkedIn account settings at any time.
Connect LinkedIn Ads source
- Navigate to the Connections > Catalog section in the left sidebar.
- Open the Advertising category and click the LinkedIn Ads card.

Click Log in to your LinkedIn Ads account. You will be redirected to LinkedIn to sign in and confirm the permissions Renta requests. If the browser already holds an authorized LinkedIn session, the confirmation resolves right away and you return to Renta.

Finish the setup:
- Source name.
Specify a name for this data source. This is used exclusively in the Renta interface. - Access granted.
Verify that the account is connected successfully. The connected account carries the name of your LinkedIn profile.
Click Save to finish.
If your LinkedIn authorization later changes (for example, after a password change), click Re-authorize on this source. The connection refreshes in place and every pipeline built on it keeps running.

The new source appears in the Sources list with the Active status. You can now use it in pipelines.

Create a LinkedIn Ads pipeline
In the left sidebar, click New pipeline. On the Source step, select LinkedIn Ads under Already connected and click Next step.

Choose the LinkedIn Ads connection you created earlier and click Next step.

On the Destination step, select your destination (for example, Google BigQuery) and click Next step.

Choose the destination connection you want to load data into and click Next step.

Pipeline configuration
On the final step, choose which LinkedIn Ads data to export and how Renta loads it.
Integration type
Choose how to configure the pipeline: assemble the report yourself or start from a template.

| Integration type | Description |
|---|---|
| Custom report | You choose the report type, the fields, and the load settings yourself. The sections below describe this path. |
| Pre-built templates | A predefined set of pipelines with a fixed field selection. You pick only the ad account and the template. |
Renta offers one template, LinkedIn Ads Performance report. It creates three pipelines at once: a daily Ad statistics report with date, Creative ID, and 19 cost, conversion, and engagement metrics, plus Campaign metadata report and Ad metadata report snapshots.
The statistics pipeline is created with the overwrite period set to Last 7 days. The destination tables get the la_ prefix.
Report configuration
Pick the ad account and the report type. The report type defines the set of fields available in the Parameters picker.

-
Ad accounts The dropdown lists every ad account available to the authorized LinkedIn profile. The Viewer role on the account is enough for exporting statistics. A pipeline exports data for one account. To load several accounts, create a pipeline for each.
-
Report Types Select the type of report to export.
Report type Description Ad statistics report Daily performance statistics for each ad: impressions, clicks, cost, conversions, leads, engagement, video, carousel, and document metrics. Ad metadata report Current attributes of each ad: name, campaign and account identifiers, review status, serving status, creation and modification dates. Campaign metadata report Current attributes of each campaign: name, status, objective, format, cost type, budget, schedule, and feature flags. Account metadata report Current attributes of the connected ad account: name, identifier, type, status, and currency.
The Ad statistics report is always grouped by ad and day. To get campaign or account totals, aggregate the exported rows in the warehouse and join the metadata reports by the campaign and account identifiers.
Parameters
Select the fields to include in the destination table. Your dataset schema is defined by the parameters you choose here.

| Name | API name | Description |
|---|---|---|
Creative ID text | creative_id | Creative ID |
date date | date | Interaction date |
actionClicks int | action_clicks | The count of clicks on the action button of the Sponsored Messaging ad. |
adUnitClicks int | ad_unit_clicks | The count of clicks on the ad unit displayed alongside the Sponsored Messaging ad. |
approximateMemberReach int | approximate_member_reach | Non-demographic pivots only (i.e. not MEMBER_). The estimated number of unique member accounts with at least one impression. This metric is an updated and more accurate version of legacy metric approximateUniqueImpressions. This metric is only available when the number of days in the date range is less than or equal to 92 days. This metric is fully launched in Jan 2024. |
averageDwellTime int | average_dwell_time | Average user dwell time (in seconds). It measures the duration for which more than 50% of the ad's pixels remain visible in the viewport. Note: The averageDwellTime field is only supported from API version 202411 onwards. |
audiencePenetration float | audience_penetration | The approximate number of unique members reached by the advertiser divided by the approximate total target audience size. The field will be null if the date range has more than 92 days. This metric only supports the CAMPAIGN pivot. Note: The audiencePenetration field is only supported from API version 202411 onwards. |
cardClicks int | card_clicks | Non-demographic pivots only (i.e. not MEMBER_). The number of clicks for each card of a carousel ad. The first card click of the carousel ad results in an immediate cardClick and click, whereas scrolling to other cards and clicking will count as additional cardClick. |
cardImpressions int | card_impressions | Non-demographic pivots only (i.e. not MEMBER_). The number of impressions shown for each card of a carousel ad. The first card of the carousel ad results in an immediate cardImpression and impression, whereas scrolling to other cards will count as additional cardImpressions. |
clicks int | clicks | The count of chargeable clicks. Despite not charging for clicks for CPM campaigns, this field still represents those clicks for which we would otherwise charge advertisers based on objective (for example, clicks to view the landing page or company page). |
commentLikes int | comment_likes | The count of likes of a comment. Sponsored Content only. |
comments int | comments | The count of comments. Sponsored Content only. |
companyPageClicks int | company_page_clicks | The count of clicks to view the company page. |
conversionValueInLocalCurrency float | conversion_value_in_local_currency | Non-demographic pivots only (i.e. not MEMBER_). Value of the conversions in the account's local currency based on rules defined by the advertiser. Conversion value is set by the advertiser at a per conversion level, and aggregated across the query time range. |
costInLocalCurrency float | cost_in_local_currency | Cost in the account's local currency based on the pivot and timeGranularity. For example, this would be spend by member company size per month if the pivot is MEMBER_COMPANY_SIZE and timeGranularity is MONTHLY. Cost is not adjusted for over delivery when a member professional demographic pivot is specified in the request. |
costInUsd float | cost_in_usd | Cost in USD based on the pivot and timeGranularity. For example, this would be spend by campaign on a given day if the pivot is CAMPAIGN and timeGranularity is DAILY. Cost is not adjusted for over delivery when a member professional demographic pivot is specified in the request. |
costPerQualifiedLead float | cost_per_qualified_lead | How much money was spent per qualified lead. Ratio is costInLocalCurrency / qualifiedLeads. |
documentCompletions int | document_completions | The number of times users reached 100% of the document’s length, including those that skipped to this point. This metric is only available for document ads and not all dimensions. |
documentFirstQuartileCompletions int | document_first_quartile_completions | The number of times users reached the first quartile of the document’s length, including those that skipped to this point. This metric is only available for document ads and not all dimensions. |
documentMidpointCompletions int | document_midpoint_completions | The number of times users reached the second quartile of the document’s length, including those that skipped to this point. This metric is only available for document ads and not all dimensions. |
documentThirdQuartileCompletions int | document_third_quartile_completions | The number of times users reached the third quartile of the document’s length, including those that skipped to this point. This metric is only available for document ads and not all dimensions. |
downloadClicks int | download_clicks | The number of times users have indicated the intent to download the media in an ad by clicking the download icon. This may or may not result in an actual download (e.g. if the user rejects a browser download prompt). This metric is only available for ad formats supporting media downloads. |
externalWebsiteConversions int | external_website_conversions | Total number of times users took a desired action after clicking on or seeing your ad. When conversions cannot be attributed to individual users, group level attribution or estimation may be used. |
externalWebsitePostClickConversions int | external_website_post_click_conversions | Total number of times users took a desired action after clicking on your ad. When conversions cannot be attributed to individual users, group level attribution or estimation may be used. |
externalWebsitePostViewConversions int | external_website_post_view_conversions | Total number of times users took a desired action after seeing your ad. When conversions cannot be attributed to individual users, group level attribution or estimation may be used. |
follows int | follows | The count of follows. Sponsored Content and Follower ads only. |
fullScreenPlays int | full_screen_plays | Number of times members click on the full screen button or on the video(mobile only) to go into full screen mode. |
headlineClicks int | headline_clicks | The number of times members clicked on the headline of conversation ads. |
headlineImpressions int | headline_impressions | The number of times members were shown the headline of conversation ads. |
impressions int | impressions | This is the count of "impressions" for Sponsored Content and "sends" for Sponsored Messaging. |
jobApplications float | job_applications | The number of times a member completed a job application after viewing or clicking on an ad. Currently, this metric is broken down into postViewJobApplications (if the member applied after viewing the ad) and postClickJobApplications (if the member applied after clicking the ad). |
jobApplyClicks float | job_apply_clicks | The number of times a member clicked on the job’s apply button on an LinkedIn jobs page after viewing or clicking on an ad which has a LinkedIn job landing page. Currently, this metric is broken down into postViewJobApplyClicks (if the member performed the action after viewing the ad) and postClickJobApplyClicks (if the member performed the action after clicking the ad). |
landingPageClicks int | landing_page_clicks | The count of clicks which take the user to the creative landing page. |
leadGenerationMailContactInfoShares int | lead_generation_mail_contact_info_shares | The number of times users shared contact info through the One Click Lead Gen for Sponsored Messaging ads. |
leadGenerationMailInterestedClicks int | lead_generation_mail_interested_clicks | The count of Sponsored Messaging ad recipients who clicked to demonstrate interest. |
likes int | likes | The count of likes. Sponsored Content only. |
oneClickLeadFormOpens int | one_click_lead_form_opens | The count of times users opened the lead form for a One Click Lead Gen campaign. |
oneClickLeads int | one_click_leads | The count of leads generated through One Click Lead Gen. |
opens int | opens | The count of opens of Sponsored Messaging ads. |
otherEngagements int | other_engagements | The count of user interactions with the ad unit that do not fit into any other more specific category. |
postClickJobApplications float | post_click_job_applications | The number of times a member completed a job application after clicking on an ad. See also jobApplications. |
postClickJobApplyClicks float | post_click_job_apply_clicks | The number of times a member clicked on the job’s apply button on an LinkedIn jobs page after clicking on an ad which has a LinkedIn job landing page. See also jobApplyClicks. |
postClickRegistrations float | post_click_registrations | The number of times a member has registered for an event or seminar after clicking on an ad which has a LinkedIn landing page. This includes gross registrations and does not account for a user unregistering. |
postViewJobApplications float | post_view_job_applications | The number of times a member completed a job application after viewing an ad. See also jobApplications. |
postViewJobApplyClicks float | post_view_job_apply_clicks | The number of times a member clicked on the job’s apply button on an LinkedIn jobs page after clicking an ad which has a LinkedIn job landing page. See also jobApplyClicks. |
postViewRegistrations float | post_view_registrations | The number of times a member has registered for an event or seminar after viewing an ad which has a LinkedIn event landing page. This includes gross registrations and does not account for a user unregistering. See also registrations. |
qualifiedLeads int | qualified_leads | The count of qualified leads shared by the advertiser. Qualified lead is a lead that has been deemed more likely to become a customer compared to other leads, based on their engagement and fit. |
reactions int | reactions | The count of positive reactions on Sponsored Content which can capture, like, interest, praise, and other responses. |
registrations float | registrations | The number of times a member has registered for an event or seminar after viewing or clicking on an ad which has a LinkedIn event landing page. This includes gross registrations and does not account for a user unregistering. |
sends int | sends | The count of sends of Sponsored Messaging ads. |
shares int | shares | The count of shares. Sponsored Content only. |
subscriptionClicks int | subscription_clicks | The count of clicks to subscribe to a series, such as a Newsletter. |
talentLeads int | talent_leads | Number of leads captured through a talent media campaign. |
textUrlClicks int | text_url_clicks | The count of clicks on any links (anchor tags) that were included in the body of the Sponsored Messaging ad. |
totalEngagements int | total_engagements | The count of all user interactions with the ad unit. |
validWorkEmailLeads int | valid_work_email_leads | The count of leads with a valid work email that does not use an established free or personal email domain. |
videoCompletions int | video_completions | The count of video ads that played 97-100% of the video. This includes watches that skipped to this point if the serving location is ON_SITE. |
videoFirstQuartileCompletions int | video_first_quartile_completions | The count of video ads that played through the first quartile of the video. This includes watches that skipped to this point if the serving location is ON_SITE. |
videoMidpointCompletions int | video_midpoint_completions | The count of video ads that played through the midpoint of the video. This includes watches that skipped to this point if the serving location is ON_SITE. |
videoStarts int | video_starts | The count of video ads that were started by users. |
videoThirdQuartileCompletions int | video_third_quartile_completions | The count of video ads that played through the third quartile of the video. This includes watches that skipped to this point if the serving location is ON_SITE. |
videoViews int | video_views | A video ad playing for at least 2 continuous seconds 50% in-view, or a click on the CTA, whichever comes first. An interaction with the video (like going to fullscreen mode) does not count as a view. |
viralCardClicks int | viral_card_clicks | Non-demographic pivots only (i.e. not MEMBER_). The number of viralClicks for each card of a carousel ad. The first viralCardClick of the carousel ad results in an immediate viralCardClick and viralClick, whereas scrolling to other cards and clicking will count as additional viralCardClick. |
viralCardImpressions int | viral_card_impressions | Non-demographic pivots only (i.e. not MEMBER_). The number of viralImpressions shown for each card of a carousel ad. The first card of the carousel ad results in an immediate viralCardImpression and viralImpression, whereas scrolling to other cards will count as additional viralCardImpressions. |
viralClicks int | viral_clicks | The count of clicks on viral impressions. See viral impressions definition. Sponsored Content only. |
viralCommentLikes int | viral_comment_likes | The count of likes on comments from viral impressions for this activity. See viral impressions definition. Sponsored Content only. |
viralComments int | viral_comments | The count of comments from viral impressions for this activity. See viral impressions definition. Sponsored Content only. |
viralCompanyPageClicks int | viral_company_page_clicks | The count of clicks to view the company page from viral impressions for this activity. See viral impressions definition. Sponsored Content only. |
viralDocumentCompletions int | viral_document_completions | The number of times users reached 100% of the document’s length on a viral post, including those that skipped to this point. This metric is only available for document ads. |
viralDocumentFirstQuartileCompletions int | viral_document_first_quartile_completions | The number of times users reached the first quartile of the document’s length on a viral post, including those that skipped to this point. This metric is only available for document ads. |
viralDocumentMidpointCompletions int | viral_document_midpoint_completions | The number of times users reached the second quartile of the document’s length on a viral post, including those that skipped to this point. This metric is only available for document ads. |
| Name | API name | Description |
|---|---|---|
Serving Hold Reasons array_string | serving_hold_reasons | A list of reasons why the creative is on hold. |
Last Modified At int | last_modified_at | The timestamp of the last modification. |
Last Modified By text | last_modified_by | The URN of the user or system that last modified the campaign. |
Content Reference text | content_reference | The URN reference to the associated content. |
Created At int | created_at | The timestamp when the campaign was created. |
Datetime Created At datetime | datetime_created_at | The datetime when the ad creative was created. |
Date Created At date | date_created_at | The date when the ad creative was created. |
Is Test bool | is_test | Indicates whether the creative is a test campaign. |
Created By text | created_by | The URN of the user who created the campaign. |
Review Rejection Reasons array_string | review_rejection_reasons | A list of reasons why the campaign was rejected. |
Review Status text | review_status | The review status of the campaign. |
Is Serving bool | is_serving | Indicates whether the campaign is currently serving. |
Creative Name text | creative_name | The name of the campaign. |
Campaign ID text | campaign_id | The ID of the campaign. |
Creative ID text | creative_id | The ID of the sponsored creative. |
Intended Status text | intended_status | The intended status of the campaign. |
Account ID text | account_id | The ID of the advertising account. |
| Name | API name | Description |
|---|---|---|
campaign id text | campaign_id | The unique identifier for the campaign. |
campaign name text | campaign_name | The name of the campaign. |
Is test campaign? bool | test | Indicates if this is a test campaign. |
storyDeliveryEnabled bool | story_delivery_enabled | Whether story delivery is enabled for this campaign. |
format text | format | The format of the ad unit. |
servingStatuses array_string | serving_statuses | The current serving statuses of the campaign. |
connectedTelevisionOnly bool | connected_television_only | Indicates whether the campaign is limited to connected television only. |
localeCountry text | locale_country | The country locale setting for the campaign. |
localeLanguage text | locale_language | The language locale setting for the campaign. |
type text | type | The type of ad campaign. |
versionTag text | version_tag | The version tag for tracking campaign updates. |
objectiveType text | objective_type | The marketing objective type for the campaign. |
associatedEntity text | associated_entity | The entity associated with this campaign (e.g., an organization). |
optimizationTargetType text | optimization_target_type | The optimization target type for the campaign. |
runScheduleStart int | run_schedule_start | The campaign start time in epoch milliseconds. |
createdBy text | change_audit_stamps_created_actor | The actor who created this campaign. |
createdTime int | change_audit_stamps_created_time | The timestamp of when the campaign was created. |
lastModifiedBy text | change_audit_stamps_last_modified_actor | The actor who last modified this campaign. |
lastModifiedTime int | change_audit_stamps_last_modified_time | The timestamp of when the campaign was last modified. |
campaignGroupId text | campaign_group_id | The campaign group identifier. |
costType text | cost_type | The pricing model used in the campaign (CPC, CPM, etc.). |
creativeSelection text | creative_selection | The method for selecting creatives in the campaign. |
unitCostCurrency text | unit_cost_currency_code | The currency used for campaign cost. |
unitCostAmount float | unit_cost_amount | The unit cost amount for the campaign. |
offsiteDeliveryEnabled bool | offsite_delivery_enabled | Indicates whether offsite delivery is enabled. |
audienceExpansionEnabled bool | audience_expansion_enabled | Whether audience expansion is enabled for broader reach. |
account id text | account_id | The LinkedIn ad account associated with this campaign. |
status text | status | The current status of the campaign (DRAFT, ACTIVE, etc.). |
| Name | API name | Description |
|---|---|---|
Currency text | currency | The currency associated with the account. |
Account ID text | account_id | The unique identifier for the account. |
Account Name text | account_name | The name of the account. |
Notified On Campaign Optimization bool | notified_on_campaign_optimization | Indicates if the account is notified of campaign optimization. |
Notified On Creative Approval bool | notified_on_creative_approval | Indicates if the account is notified of creative approval. |
Notified On Creative Rejection bool | notified_on_creative_rejection | Indicates if the account is notified of creative rejection. |
Notified On End Of Campaign bool | notified_on_end_of_campaign | Indicates if the account is notified when a campaign ends. |
Notified On New Features Enabled bool | notified_on_new_features_enabled | Indicates if the account is notified when new features are enabled. |
Reference text | reference | The URN reference associated with the account. |
Serving Statuses array_string | serving_statuses | A list of serving statuses for the account. |
Status text | status | The current status of the account. |
Is Test Account bool | test | Indicates whether the account is a test account. |
Account Type text | type | The type of the account. |
Every row in the picker shows the field name with the destination column name below it: actionClicks becomes the action_clicks column.
Check the fields to export and review the choice on the Selected tab.
The Ad statistics report carries cost in two fields: cost_in_local_currency (the currency of the ad account) and cost_in_usd.
Identifiers such as Creative ID and Campaign ID are exported as plain numbers, so the statistics table joins the metadata tables directly.
Include the date parameter in the Ad statistics report. With it, the destination table is partitioned by the date column and Renta loads data incrementally. It also enables the Overwrite Period setting, which appears below the date range. Without it, Renta reloads the whole date range on every run.
The LinkedIn reporting API returns at most 20 fields per request, so the Ad statistics report can include at most 19 metric fields besides date and Creative ID. Select All picks all 71 fields, so pipeline creation fails with the error: Too many fields requested. Maximum possible fields to request: 20. Renta validates the selection with a test request when you create the pipeline, so you see the error immediately rather than on the first run.
Table name
Name the pipeline and the destination table.

- Integration name.
The name of the pipeline. It is used exclusively in the Renta interface. - Table name.
The destination table name. You can keep the auto-generated name or enter your own.
Date range
Set the historical period to load. By default, Date start is the first day of the current month and Date end is Today.

- Date start.
The first date of the extraction period. - Date end.
The last date of the extraction period. You can pick a fixed date or a relative option such as Today.
Overwrite period
The overwrite period defines how many recent days Renta reloads on every run. The setting appears once the date parameter is selected.

On each run, Renta re-fetches the data starting from the date of the last successful run minus the overwrite period. The affected days are deleted from the destination table and inserted again, while older data stays untouched.
The options range from Without overwrite data to Overwrite all data. The default is Last 3 days.
LinkedIn attributes conversions to clicks and views retroactively, within attribution windows of up to 30 days, so conversion figures for recent days keep changing after the fact. Set the overwrite period to at least Last 7 days, or Last 30 days to cover the longest attribution window.
Schedule
Choose how often the pipeline runs.

| Schedule type | Description |
|---|---|
| Manual | The pipeline runs only when triggered manually through the interface or via API. |
| Daily | The pipeline runs once a day at the specified update time. |
| Interval | The pipeline runs at specified time intervals. |
| Cron Expression | The pipeline runs on a schedule defined by a cron expression. |
For Daily schedules, set the Update time, the exact time each run starts, then click Create pipeline.

Renta also supports API triggers and integration with external orchestrators such as Apache Airflow, Dagster, and Prefect. See the full scheduling documentation for details.
The new pipeline appears in the Pipelines section under the ETL tab, where you can track its runs, progress, and the destination table name.

Limitations
The LinkedIn reporting API sets boundaries that apply to every pipeline built on this source.
| Limitation | Description |
|---|---|
| Fields per report | The API returns at most 20 fields per request. In practice the Ad statistics report fits date, Creative ID, and up to 19 metric fields. |
| Daily statistics depth | LinkedIn retains day-level statistics for roughly the last six months. An earlier Date start returns nothing for the part of the range that falls outside that window. |
| Statistics grain | The Ad statistics report is always grouped by ad with daily granularity. Campaign and account totals are aggregated in the warehouse. |
| No history in metadata reports | Ad metadata report, Campaign metadata report, and Account metadata report return the current state of the objects, without change history. |
Sync strategy
The synchronization strategy depends on the report type and on whether the report includes the date parameter.
| Strategy | Supported report types | Description |
|---|---|---|
| Incremental | Ad statistics report (with the date parameter selected) | Each row carries its date, and the destination table is partitioned by the date column. On every run Renta requests the window from the last successful run minus the overwrite period: the affected daily partitions are deleted and inserted again, and older partitions stay untouched. |
| Full reload | Ad statistics report (without the date parameter) | The table has no date column to partition by, so Renta requests the statistics for the whole configured date range and replaces the dataset on every run. |
| Full reload | Ad metadata report, Campaign metadata report, Account metadata report | These reports return the current state of ads, campaigns, and the account and have no date field, so Renta reloads the entire dataset on every run. |
Ready to get started?
Build your data pipeline today or get a personalized demo. Start free!
Need help?
Get expert support to ensure your project succeeds. We're here to help!
Feature requests?
Help shape our product! Share your ideas for new features and integrations.