Advertising categoryCertified by Stitch
Expected Facebook Ads data
Here’s a sample of the raw Facebook Ads data that Stitch will replicate to your analytics warehouse:
Campaigns
This table is the core table of campaigns in a Facebook Ads account. Columns include campaign id, name, status (active/paused), objective.
Table name:campaigns
Ads
This table records all of the ads in a Facebook Ads account. Columns include the ad information including the Ad Set and Ad Campaign it belongs to, the ad bidding, ad targeting and reference to specific creative (image/text) that the ad uses.
Table name:ads
Ads Insights
This table records all of the creatives that are used in Ads. These includes creative name, description and relevant image urls where appropriate.
Table name:ads_insights
Ad Sets
This table records is the core table of Ad Sets in a Facebook Ads account. Columns include the Ad Campaign id/name the Ad Set belongs to, the budgeting, bid type, scheduling and audience targeting information.
Table name:facebook_adsets
Learn more about the Facebook Ads integration
Documentation
Detailed documentation on how to start syncing Facebook Ads data.
Facebook Ads to your data warehouse in minutes
ETL your Facebook Ads data to the destination of your choice.
Jumpstart your Facebook Ads analytics with reusable blocks
dbt packages can speed up your work
Once you replicate your Facebook Ads data with Stitch, you can use it in many ways. For example, you can use the data modeling and transformation tool dbt to prepare data for reporting, analytics, or machine learning applications.
Dbt has prebuilt packages for many Stitch data sources, including Facebook Ads. Here’s a look at code for modeling Facebook Ads data. This particular block of code prepares your Facebook Ads order data for analysis.
View the source on GitHub →1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
{% macro stitch_fb_ad_creatives() %}
{{ adapter_macro('facebook_ads.stitch_fb_ad_creatives') }}
{% endmacro %}
{% macro default__stitch_fb_ad_creatives() %}
with base as (
select * from {{ var('ad_creatives_table') }}
),
child_links as (
select * from {{ ref('fb_ad_creatives__child_links') }}
),
links_joined as (
select
id as creative_id,
lower(coalesce(
nullif(child_link, ''),
nullif({{ facebook_ads.nested_field('base.object_story_spec', ['link_data', 'call_to_action', 'value', 'link']) }}, ''),
nullif({{ facebook_ads.nested_field('base.object_story_spec', ['video_data', 'call_to_action', 'value', 'link']) }}, ''),
nullif({{ facebook_ads.nested_field('base.object_story_spec', ['link_data', 'link']) }}, '')
)) as url,
lower(coalesce(
nullif(url_tags, {{ dbt_utils.split_part('url', "'?'", 2) }}), '')
) as url_tags
from base
left join child_links
on base.id = child_links.creative_id
),
parsed as (
select
links_joined.*,
{{ dbt_utils.split_part('url', "'?'", 1) }} as base_url,
{{ dbt_utils.get_url_host('url') }} as url_host,
{{ dbt_utils.concat(["'/'", dbt_utils.get_url_path('url')]) }} as url_path,
{{ facebook_ads.get_url_parameter() }}
from links_joined
)
select * from parsed
{% endmacro %}
... or use Looker blocks with your Facebook Ads data
We've developed a Looker Block for Facebook Ads data provisioned by Stitch. This block includes prebuilt code to create dashboards and models that can help uncover insights from your Facebook Ads data.
This Looker Block includes three dashboards that provide granular analysis on ad performance metrics. This LookML file produces an overview dashboard and highlights marketing performance metrics such as ad spend, clicks, and impressions over time.
View the source on GitHub →1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
- dashboard: overview
title: Overview
layout: grid
rows:
- elements: [total_impressions, total_actions, total_spend]
height: 150
- elements: [spend_actions_impressions]
height: 400
- elements: [campaign_performance]
height: 400
- elements: [campaign_value]
height: 400
- elements: [campaign_delivery]
height: 400
- elements: [actions_by_country]
height: 400
- elements: [campaign_performance_and_clicks]
height: 400
- elements: [actions_by_type, avg_frequency_by_objective]
height: 400
- elements: [campaign_engagement]
height: 400
filters:
- name: campaign_name
type: string_filter
- name: date_start
type: date_filter
elements:
- name: total_impressions
title: Total impressions
type: single_value
model: facebook
explore: ad_insights
measures: [ad_insights.total_impressions]
sorts: [ad_insights.total_impressions desc]
limit: 5000
show_single_value_title: true
show_comparison: false
listen:
campaign_name: ad_insights.campaign_name
date_start: ad_insights.date_start_date
- name: total_actions
title: Total actions
type: single_value
model: facebook
explore: ad_insights
measures: [ad_insights.total_actions]
sorts: [ad_insights.total_actions desc]
limit: 5000
show_single_value_title: true
show_comparison: false
listen:
campaign_name: ad_insights.campaign_name
date_start: ad_insights.date_start_date
- name: total_spend
title: Total spend
type: single_value
model: facebook
explore: ad_insights
measures: [ad_insights.total_spend]
sorts: [ad_insights.total_spend desc]
limit: 5000
show_single_value_title: true
show_comparison: false
listen:
campaign_name: ad_insights.campaign_name
date_start: ad_insights.date_start_date
- name: spend_actions_impressions
title: Spend, actions, and impressions over time
type: looker_line
model: facebook
explore: ad_insights
dimensions: [ad_insights.date_start_month]
measures: [ad_insights.total_spend, ad_insights.total_actions,
ad_insights.total_impressions]
sorts: [ad_insights.date_start_month desc]
limit: 5000
stacking: ''
colors: ['#FFCC00', '#1E2023', '#3399CC', '#CC3399', '#66CC66', '#999999', '#FF4E00', '#A2ECBA', '#9932CC', '#0000CD']
show_value_labels: false
label_density: 25
legend_position: center
x_axis_gridlines: false
show_view_names: true
limit_displayed_rows: false
y_axis_combined: false
show_y_axis_labels: true
show_y_axis_ticks: false
y_axis_tick_density: default
show_x_axis_label: true
show_x_axis_ticks: true
x_axis_scale: auto
y_axis_scale_mode: linear
show_null_points: true
point_style: none
interpolation: linear
listen:
campaign_name: ad_insights.campaign_name
date_start: ad_insights.date_start_date
- name: campaign_performance
title: Campaign performance
type: table
model: facebook
explore: ad_insights
dimensions: [campaigns.name, adsets.end_date, adsets.effective_status,
campaigns.objective]
measures: [ad_insights.total_actions, ad_insights.total_clicks,
ad_insights.total_reach, ad_insights.total_spend]
dynamic_fields:
- table_calculation: cost_per_action
label: cost_per_action
expression: ${ad_insights.total_spend} / ${ad_insights.total_actions}
sorts: [campaigns.name]
limit: 5000
show_view_names: false
show_row_numbers: true
truncate_column_names: false
table_theme: editable
limit_displayed_rows: false
listen:
campaign_name: ad_insights.campaign_name
date_start: ad_insights.date_start_date
- name: campaign_value
title: Cost per action v. total actions by campaign
type: looker_scatter
model: facebook
explore: ad_insights
dimensions: [campaigns.name]
measures: [ad_insights.total_actions, ad_insights.total_spend]
dynamic_fields:
- table_calculation: cost_per_action
label: Cost per action
expression: ${ad_insights.total_spend} / ${ad_insights.total_actions}
hidden_fields: [ad_insights.total_spend, campaigns.name]
sorts: [cost_per_action desc]
description: 'Evaluate campaign performance by comparing the actions generated to the total spent on the campaign.'
limit: 5000
column_limit: 50
stacking: ''
colors: ['#FFCC00', '#1E2023', '#3399CC', '#CC3399', '#66CC66', '#999999', '#FF4E00', '#A2ECBA', '#9932CC', '#0000CD']
show_value_labels: false
label_density: 25
legend_position: center
x_axis_gridlines: false
y_axis_gridlines: true
show_view_names: false
limit_displayed_rows: false
y_axis_combined: true
show_y_axis_labels: true
show_y_axis_ticks: true
y_axis_tick_density: default
show_x_axis_label: true
show_x_axis_ticks: true
x_axis_scale: auto
y_axis_scale_mode: linear
show_null_points: true
point_style: circle
listen:
campaign_name: ad_insights.campaign_name
date_start: ad_insights.date_start_date
- name: campaign_delivery
title: Campaign delivery
type: table
model: facebook
explore: ad_insights
dimensions: [campaigns.name, adsets.end_date, adsets.effective_status,
campaigns.objective]
measures: [ad_insights.total_reach, ad_insights.avg_frequency,
ad_insights.avg_cpp, ad_insights.avg_cpm, ad_insights.total_impressions]
sorts: [campaigns.name]
limit: 5000
show_view_names: false
show_row_numbers: true
truncate_column_names: false
table_theme: editable
limit_displayed_rows: false
listen:
campaign_name: ad_insights.campaign_name
date_start: ad_insights.date_start_date
- name: actions_by_country
title: Actions by country
type: looker_geo_choropleth
model: facebook
explore: ad_insights_by_country
dimensions: [ad_insights_by_country.country_iso]
measures: [ad_insights_by_country.total_actions]
sorts: [ad_insights_by_country.total_actions desc]
limit: 5000
map: auto
colors: ['#FFCC00']
show_view_names: true
quantize_colors: false
listen:
campaign_name: ad_insights_by_country.campaign_name
date_start: ad_insights_by_country.date_start_date
- name: campaign_performance_and_clicks
title: Campaign performance and clicks
type: table
model: facebook
explore: ad_insights
dimensions: [campaigns.name, adsets.effective_status, adsets.end_date,
campaigns.objective]
measures: [ad_insights.total_actions, ad_insights.total_reach,
ad_insights.avg_frequency, ad_insights.total_clicks, ad_insights.avg_ctr,
ad_insights.avg_cpc, ad_insights.total_impressions, ad_insights.avg_cpm,
ad_insights.total_inline_link_clicks, ad_insights.avg_inline_link_click_ctr,
ad_insights.avg_cost_per_inline_link_click, ad_insights.total_spend]
sorts: [ad_insights.total_actions desc]
limit: 5000
show_view_names: false
show_row_numbers: true
truncate_column_names: false
table_theme: editable
limit_displayed_rows: false
listen:
campaign_name: ad_insights.campaign_name
date_start: ad_insights.date_start_date
- name: actions_by_type
title: Actions by type
type: looker_pie
model: facebook
explore: ad_action_insights
dimensions: [ad_action_insights.action_type]
measures: [ad_action_insights.total_actions]
sorts: [ad_action_insights.total_actions desc]
limit: 5000
colors: ['#FFCC00', '#1E2023', '#3399CC', '#CC3399', '#66CC66', '#999999', '#FF4E00', '#A2ECBA', '#9932CC', '#0000CD']
value_labels: legend
show_view_names: true
listen:
campaign_name: ad_action_insights.campaign_name
date_start: ad_action_insights.date_start_date
- name: avg_frequency_by_objective
title: Average frequency by objective
type: looker_column
model: facebook
explore: ad_insights
dimensions: [campaigns.objective]
measures: [ad_insights.avg_frequency]
sorts: [ad_insights.avg_frequency desc]
limit: 5000
stacking: ''
colors: ['#FFCC00', '#1E2023', '#3399CC', '#CC3399', '#66CC66', '#999999', '#FF4E00', '#A2ECBA', '#9932CC', '#0000CD']
show_value_labels: false
label_density: 25
legend_position: center
x_axis_gridlines: false
y_axis_gridlines: true
show_view_names: true
limit_displayed_rows: false
y_axis_combined: true
show_y_axis_labels: true
show_y_axis_ticks: true
y_axis_tick_density: default
show_x_axis_label: true
show_x_axis_ticks: true
x_axis_scale: auto
y_axis_scale_mode: linear
show_null_labels: false
listen:
campaign_name: ad_insights.campaign_name
date_start: ad_insights.date_start_date
- name: campaign_engagement
title: Campaign engagement
type: table
model: facebook
explore: ad_action_insights
dimensions: [campaigns.name, adsets.effective_status, adsets.end_date,
campaigns.objective]
measures: [ad_action_insights.post_likes, ad_action_insights.post_comments,
ad_action_insights.link_clicks, ad_action_insights.page_likes,
ad_action_insights.post_shares]
sorts: [campaigns.name]
limit: 5000
show_view_names: false
show_row_numbers: true
truncate_column_names: false
table_theme: editable
limit_displayed_rows: false
listen:
campaign_name: ad_action_insights.campaign_name
date_start: ad_action_insights.date_start_date
We set up all of the integrations we needed in a matter of hours. Writing custom code to do all of that would have taken up a month's worth of back-end engineering time. Using Stitch allowed us to move forward without having to hire another person.
Why our customers choose Stitch
Stitch is a simple, powerful ETL service built for developers. Stitch connects to your first-party data sources – from databases like MongoDB and MySQL, to SaaS tools like Salesforce and Zendesk – and replicates that data to your warehouse. With Stitch, developers can provision data for their internal users in minutes, not weeks.
Explore all of Stitch's features- Simple setup
- Start replicating data in minutes, and never worry about ETL maintenance.
- Own your own data infrastructure
- Stitch replicates to your warehouse, meaning you’re always in control.
- Mature replication engine
- Accurate data from any structure, all the time.
Start replicating your Facebook Ads data
Select your integrations, choose your warehouse, and enjoy Stitch free for 14 days.
Set up in minutesUnlimited data volume during trial
Connect to your ecosystem of data sources
Stitch integrates with leading databases and SaaS products. No API maintenance, ever, while you maintain full control over replication behavior.
ActiveCampaign
StandardStitch-certifiedAmazon Aurora MySQL
StandardStitch-certifiedAmazon Aurora PostgreSQL
StandardStitch-certifiedAmazon RDS for MariaDB
StandardStitch-certifiedAmazon RDS for MySQL
StandardStitch-certifiedAmazon RDS for Oracle Database
EnterpriseStitch-certifiedAmazon RDS for PostgreSQL
StandardStitch-certifiedAmazon RDS for SQL Server
StandardStitch-certifiedAmazon S3 CSV
StandardStitch-certifiedAmplitude
StandardCommunity-supportedAppsFlyer
StandardCommunity-supportedAsana
StandardCommunity-supportedAutopilot
StandardCommunity-supportedAutopilot Activities
StandardCommunity-supportedBigCommerce
StandardCommunity-supportedBraintree
StandardCommunity-supportedBranch
StandardStitch-certifiedCampaign Manager
StandardCommunity-supportedCampaign Monitor
StandardCommunity-supportedChargebee
StandardCommunity-supportedClose
StandardStitch-certifiedClub Speed
StandardCommunity-supportedCodat
StandardCommunity-supportedContentful
StandardStitch-certifiedCustomer.io
StandardStitch-certifiedDelighted
StandardStitch-certifiedDeputy
StandardCommunity-supportedDesk.com
StandardStitch-certifiedDrip
StandardStitch-certifiedDynamoDB
StandardStitch-certifiedEloqua
StandardCommunity-supportedFacebook Ads
StandardStitch-certifiedFormKeep
StandardStitch-certifiedFreshdesk
StandardCommunity-supportedFront
StandardCommunity-supportedFullStory
StandardCommunity-supportedGitHub
StandardCommunity-supportedGitLab
StandardCommunity-supportedGoogle Ads
StandardStitch-certifiedGoogle Analytics
StandardStitch-certifiedGoogle Analytics 360
EnterpriseCommunity-supportedGoogle Cloud SQL MySQL
StandardStitch-certifiedGoogle Cloud SQL MySQL
StandardStitch-certifiedGoogle Cloud SQL PostgreSQL
StandardStitch-certifiedGoogle Ecommerce
StandardStitch-certifiedGoogle Search Console
StandardStitch-certifiedGoogle Sheets
StandardStitch-certifiedHarvest
StandardCommunity-supportedHarvest Forecast
StandardCommunity-supportedHeap
StandardStitch-certifiedHelp Scout
StandardCommunity-supportedHeroku
StandardStitch-certifiedHubSpot
StandardStitch-certifiedIBM Db2
StandardCommunity-supportedImpact
StandardCommunity-supportedImport API
StandardStitch-certifiedIntacct
StandardCommunity-supportedIntercom
StandardStitch-certifiedInvoiced
StandardCommunity-supportedIterable
StandardStitch-certifiedJira
StandardStitch-certifiedKlaviyo
StandardCommunity-supportedLever
StandardCommunity-supportedLinkedIn Ads
StandardStitch-certifiedListrak
StandardCommunity-supportedLivePerson
StandardCommunity-supportedLookML
StandardCommunity-supportedMagento
StandardStitch-certifiedMailchimp
StandardStitch-certifiedMailjet
StandardStitch-certifiedMailshake
StandardCommunity-supportedMambu
StandardStitch-certifiedMariaDB
StandardStitch-certifiedMarketo
StandardStitch-certifiedMicrosoft Advertising (Bing Ads)
StandardStitch-certifiedMicrosoft Azure SQL Server Database
StandardStitch-certifiedMicrosoft SQL Server
StandardStitch-certifiedMicrosoft Teams
StandardCommunity-supportedMixpanel
StandardStitch-certifiedMongoDB
StandardStitch-certifiedMySQL
StandardStitch-certifiedNetsuite
StandardStitch-certifiedNetsuite Suite Analytics
StandardStitch-certifiedOnfleet
StandardCommunity-supportedOracle
EnterpriseStitch-certifiedOracle Netsuite Bronto Marketing Platform
StandardCommunity-supportedOutbrain
StandardCommunity-supportedOutreach
StandardCommunity-supportedPardot
StandardStitch-certifiedParticle
StandardStitch-certifiedPendo
StandardStitch-certifiedPepperjam
StandardCommunity-supportedPinterest Ads
StandardCommunity-supportedPipedrive
StandardCommunity-supportedPlatform Purple
StandardCommunity-supportedPostgreSQL
StandardStitch-certifiedQuick Base
StandardCommunity-supportedQuickBooks
StandardStitch-certifiedReCharge
StandardCommunity-supportedRecurly
StandardStitch-certifiedReferral SaaSquatch
StandardCommunity-supportedResponsys
StandardStitch-certifiedRevinate
StandardCommunity-supportedRingCentral
StandardCommunity-supportedSFTP
StandardStitch-certifiedSailthru
StandardStitch-certifiedSalesforce
StandardStitch-certifiedSalesforce Marketing Cloud
StandardCommunity-supportedSegment
StandardStitch-certifiedSelligent
StandardCommunity-supportedSendGrid
StandardStitch-certifiedSendGrid Core
StandardCommunity-supportedSendwithus
StandardStitch-certifiedShipHero
StandardCommunity-supportedShippo
StandardCommunity-supportedShopify
StandardStitch-certifiedSparkPost
StandardStitch-certifiedSquare
StandardStitch-certifiedStripe
StandardStitch-certifiedSurveyMonkey
StandardCommunity-supportedTaboola
StandardCommunity-supportedToggl
StandardCommunity-supportedTypeform
StandardCommunity-supportedUrban Airship
StandardCommunity-supportedUserVoice
StandardCommunity-supportedVero
StandardStitch-certifiedWebhooks
StandardStitch-certifiedWorkday RaaS
EnterpriseStitch-certifiedXero
StandardStitch-certifiedYotpo
StandardCommunity-supportedZapier
StandardStitch-certifiedZendesk Chat
StandardCommunity-supportedZendesk Support
StandardStitch-certifiedZoom
StandardCommunity-supportedZuora
StandardStitch-certified