0
# Google Marketing Platform
1
2
Integration with Google Marketing Platform services including Google Analytics Admin, Campaign Manager, Display & Video 360, and Search Ads. Provides comprehensive digital marketing automation and reporting capabilities for advertising campaign management and performance analysis.
3
4
## Capabilities
5
6
### Google Analytics Admin
7
8
Google Analytics Admin API integration for managing Analytics properties, data streams, and administrative settings.
9
10
```python { .api }
11
class GoogleAnalyticsAdminHook(GoogleBaseHook):
12
def __init__(
13
self,
14
gcp_conn_id: str = "google_cloud_default",
15
api_version: str = "v1beta",
16
**kwargs
17
): ...
18
19
def list_accounts(
20
self,
21
page_size: Optional[int] = None,
22
page_token: Optional[str] = None,
23
show_deleted: bool = False
24
): ...
25
def create_property(
26
self,
27
analytics_property: Dict[str, Any],
28
**kwargs
29
): ...
30
def delete_property(
31
self,
32
property_name: str,
33
**kwargs
34
): ...
35
def create_data_stream(
36
self,
37
parent: str,
38
data_stream: Dict[str, Any],
39
**kwargs
40
): ...
41
42
class GoogleAnalyticsAdminListAccountsOperator(BaseOperator):
43
def __init__(
44
self,
45
gcp_conn_id: str = "google_cloud_default",
46
api_version: str = "v1beta",
47
**kwargs
48
): ...
49
50
class GoogleAnalyticsAdminCreatePropertyOperator(BaseOperator):
51
def __init__(
52
self,
53
analytics_property: Dict[str, Any],
54
gcp_conn_id: str = "google_cloud_default",
55
api_version: str = "v1beta",
56
**kwargs
57
): ...
58
59
class GoogleAnalyticsAdminDeletePropertyOperator(BaseOperator):
60
def __init__(
61
self,
62
property_id: str,
63
gcp_conn_id: str = "google_cloud_default",
64
api_version: str = "v1beta",
65
**kwargs
66
): ...
67
68
class GoogleAnalyticsAdminCreateDataStreamOperator(BaseOperator):
69
def __init__(
70
self,
71
property_id: str,
72
data_stream: Dict[str, Any],
73
gcp_conn_id: str = "google_cloud_default",
74
api_version: str = "v1beta",
75
**kwargs
76
): ...
77
```
78
79
### Campaign Manager
80
81
Google Campaign Manager API integration for managing advertising campaigns, reports, and conversions.
82
83
```python { .api }
84
class GoogleCampaignManagerHook(GoogleBaseHook):
85
def __init__(
86
self,
87
gcp_conn_id: str = "google_cloud_default",
88
api_version: str = "v4",
89
**kwargs
90
): ...
91
92
def insert_report(
93
self,
94
profile_id: str,
95
report: Dict[str, Any],
96
**kwargs
97
): ...
98
def run_report(
99
self,
100
profile_id: str,
101
report_id: str,
102
synchronous: bool = True,
103
**kwargs
104
): ...
105
def get_report(
106
self,
107
profile_id: str,
108
report_id: str,
109
**kwargs
110
): ...
111
def get_report_file(
112
self,
113
profile_id: str,
114
report_id: str,
115
file_id: str,
116
**kwargs
117
): ...
118
def batch_insert_conversions(
119
self,
120
profile_id: str,
121
conversions: List[Dict[str, Any]],
122
encryption_entity_type: str,
123
encryption_entity_id: str,
124
encryption_source: str,
125
**kwargs
126
): ...
127
128
class GoogleCampaignManagerInsertReportOperator(BaseOperator):
129
def __init__(
130
self,
131
profile_id: str,
132
report: Dict[str, Any],
133
gcp_conn_id: str = "google_cloud_default",
134
api_version: str = "v4",
135
**kwargs
136
): ...
137
138
class GoogleCampaignManagerRunReportOperator(BaseOperator):
139
def __init__(
140
self,
141
profile_id: str,
142
report_id: str,
143
synchronous: bool = True,
144
gcp_conn_id: str = "google_cloud_default",
145
api_version: str = "v4",
146
**kwargs
147
): ...
148
149
class GoogleCampaignManagerDownloadReportOperator(BaseOperator):
150
def __init__(
151
self,
152
profile_id: str,
153
report_id: str,
154
file_id: str,
155
bucket_name: str,
156
report_name: Optional[str] = None,
157
gcp_conn_id: str = "google_cloud_default",
158
api_version: str = "v4",
159
**kwargs
160
): ...
161
162
class GoogleCampaignManagerBatchInsertConversionsOperator(BaseOperator):
163
def __init__(
164
self,
165
profile_id: str,
166
conversions: List[Dict[str, Any]],
167
encryption_entity_type: str,
168
encryption_entity_id: str,
169
encryption_source: str,
170
gcp_conn_id: str = "google_cloud_default",
171
api_version: str = "v4",
172
**kwargs
173
): ...
174
175
class GoogleCampaignManagerReportSensor(BaseSensorOperator):
176
def __init__(
177
self,
178
profile_id: str,
179
report_id: str,
180
file_id: str,
181
gcp_conn_id: str = "google_cloud_default",
182
api_version: str = "v4",
183
**kwargs
184
): ...
185
```
186
187
### Display & Video 360
188
189
Google Display & Video 360 API integration for programmatic advertising campaign management and reporting.
190
191
```python { .api }
192
class GoogleDisplayVideo360Hook(GoogleBaseHook):
193
def __init__(
194
self,
195
gcp_conn_id: str = "google_cloud_default",
196
api_version: str = "v2",
197
**kwargs
198
): ...
199
200
def create_query(
201
self,
202
query: Dict[str, Any],
203
**kwargs
204
): ...
205
def run_query(
206
self,
207
query_id: str,
208
**kwargs
209
): ...
210
def get_query(
211
self,
212
query_id: str,
213
**kwargs
214
): ...
215
def download_report(
216
self,
217
query_id: str,
218
**kwargs
219
): ...
220
def create_sdf_download_operation(
221
self,
222
body_request: Dict[str, Any],
223
**kwargs
224
): ...
225
def get_sdf_download_operation(
226
self,
227
operation_name: str,
228
**kwargs
229
): ...
230
231
class GoogleDisplayVideo360CreateQueryOperator(BaseOperator):
232
def __init__(
233
self,
234
query: Dict[str, Any],
235
gcp_conn_id: str = "google_cloud_default",
236
api_version: str = "v2",
237
**kwargs
238
): ...
239
240
class GoogleDisplayVideo360RunQueryOperator(BaseOperator):
241
def __init__(
242
self,
243
query_id: str,
244
gcp_conn_id: str = "google_cloud_default",
245
api_version: str = "v2",
246
**kwargs
247
): ...
248
249
class GoogleDisplayVideo360DownloadReportV2Operator(BaseOperator):
250
def __init__(
251
self,
252
query_id: str,
253
bucket_name: str,
254
report_name: Optional[str] = None,
255
gcp_conn_id: str = "google_cloud_default",
256
api_version: str = "v2",
257
**kwargs
258
): ...
259
260
class GoogleDisplayVideo360SDFtoGCSOperator(BaseOperator):
261
def __init__(
262
self,
263
body_request: Dict[str, Any],
264
bucket_name: str,
265
gcp_conn_id: str = "google_cloud_default",
266
api_version: str = "v2",
267
**kwargs
268
): ...
269
270
class GoogleDisplayVideo360RunQuerySensor(BaseSensorOperator):
271
def __init__(
272
self,
273
query_id: str,
274
gcp_conn_id: str = "google_cloud_default",
275
api_version: str = "v2",
276
**kwargs
277
): ...
278
279
class GoogleDisplayVideo360GetSDFDownloadOperationSensor(BaseSensorOperator):
280
def __init__(
281
self,
282
operation_name: str,
283
gcp_conn_id: str = "google_cloud_default",
284
api_version: str = "v2",
285
**kwargs
286
): ...
287
```
288
289
### Search Ads
290
291
Google Search Ads API integration for search advertising campaign management and reporting.
292
293
```python { .api }
294
class GoogleSearchAdsHook(GoogleBaseHook):
295
def __init__(
296
self,
297
gcp_conn_id: str = "google_cloud_default",
298
api_version: str = "v0",
299
**kwargs
300
): ...
301
302
def search(
303
self,
304
customer_id: str,
305
query: str,
306
**kwargs
307
): ...
308
def get_field(
309
self,
310
field_name: str,
311
customer_id: str,
312
**kwargs
313
): ...
314
def list_custom_columns(
315
self,
316
customer_id: str,
317
**kwargs
318
): ...
319
320
class GoogleSearchAdsReportingHook(GoogleBaseHook):
321
def __init__(
322
self,
323
gcp_conn_id: str = "google_cloud_default",
324
api_version: str = "v0",
325
**kwargs
326
): ...
327
328
def generate_report(
329
self,
330
customer_id: str,
331
report_request: Dict[str, Any],
332
**kwargs
333
): ...
334
335
class GoogleSearchAdsSearchOperator(BaseOperator):
336
def __init__(
337
self,
338
customer_id: str,
339
query: str,
340
gcp_conn_id: str = "google_cloud_default",
341
api_version: str = "v0",
342
**kwargs
343
): ...
344
345
class GoogleSearchAdsGetFieldOperator(BaseOperator):
346
def __init__(
347
self,
348
field_name: str,
349
customer_id: str,
350
gcp_conn_id: str = "google_cloud_default",
351
api_version: str = "v0",
352
**kwargs
353
): ...
354
355
class GoogleSearchAdsListCustomColumnsOperator(BaseOperator):
356
def __init__(
357
self,
358
customer_id: str,
359
gcp_conn_id: str = "google_cloud_default",
360
api_version: str = "v0",
361
**kwargs
362
): ...
363
```
364
365
## Usage Examples
366
367
### Analytics Property Management
368
369
```python
370
from airflow import DAG
371
from airflow.providers.google.marketing_platform.operators.analytics_admin import (
372
GoogleAnalyticsAdminCreatePropertyOperator,
373
GoogleAnalyticsAdminCreateDataStreamOperator
374
)
375
from datetime import datetime
376
377
dag = DAG(
378
'analytics_property_setup',
379
default_args={'start_date': datetime(2023, 1, 1)},
380
schedule_interval=None,
381
catchup=False
382
)
383
384
# Create Analytics property
385
create_property = GoogleAnalyticsAdminCreatePropertyOperator(
386
task_id='create_property',
387
analytics_property={
388
'displayName': 'My Website Analytics',
389
'industryCategory': 'TECHNOLOGY',
390
'timeZone': 'America/New_York',
391
'currencyCode': 'USD'
392
},
393
dag=dag
394
)
395
396
# Create web data stream
397
create_stream = GoogleAnalyticsAdminCreateDataStreamOperator(
398
task_id='create_stream',
399
property_id='{{ task_instance.xcom_pull(task_ids="create_property", key="property_id") }}',
400
data_stream={
401
'type_': 'WEB_DATA_STREAM',
402
'displayName': 'Website Stream',
403
'webStreamData': {
404
'defaultUri': 'https://example.com'
405
}
406
},
407
dag=dag
408
)
409
410
create_property >> create_stream
411
```
412
413
### Campaign Manager Reporting Pipeline
414
415
```python
416
from airflow import DAG
417
from airflow.providers.google.marketing_platform.operators.campaign_manager import (
418
GoogleCampaignManagerInsertReportOperator,
419
GoogleCampaignManagerRunReportOperator,
420
GoogleCampaignManagerDownloadReportOperator
421
)
422
from airflow.providers.google.marketing_platform.sensors.campaign_manager import (
423
GoogleCampaignManagerReportSensor
424
)
425
from datetime import datetime, timedelta
426
427
dag = DAG(
428
'campaign_manager_reporting',
429
default_args={'start_date': datetime(2023, 1, 1)},
430
schedule_interval='@daily',
431
catchup=False
432
)
433
434
# Define report configuration
435
report_config = {
436
'name': 'Daily Campaign Performance',
437
'type': 'STANDARD',
438
'criteria': {
439
'dateRange': {
440
'relativeDateRange': 'YESTERDAY'
441
},
442
'dimensions': [
443
{'name': 'date'},
444
{'name': 'campaign'},
445
{'name': 'placement'}
446
],
447
'metricNames': [
448
'impressions',
449
'clicks',
450
'totalConversions'
451
]
452
}
453
}
454
455
# Insert report definition
456
insert_report = GoogleCampaignManagerInsertReportOperator(
457
task_id='insert_report',
458
profile_id='12345678',
459
report=report_config,
460
dag=dag
461
)
462
463
# Run the report
464
run_report = GoogleCampaignManagerRunReportOperator(
465
task_id='run_report',
466
profile_id='12345678',
467
report_id='{{ task_instance.xcom_pull(task_ids="insert_report", key="report_id") }}',
468
synchronous=False,
469
dag=dag
470
)
471
472
# Wait for report completion
473
wait_for_report = GoogleCampaignManagerReportSensor(
474
task_id='wait_for_report',
475
profile_id='12345678',
476
report_id='{{ task_instance.xcom_pull(task_ids="insert_report", key="report_id") }}',
477
file_id='{{ task_instance.xcom_pull(task_ids="run_report", key="file_id") }}',
478
timeout=300,
479
poke_interval=30,
480
dag=dag
481
)
482
483
# Download report to GCS
484
download_report = GoogleCampaignManagerDownloadReportOperator(
485
task_id='download_report',
486
profile_id='12345678',
487
report_id='{{ task_instance.xcom_pull(task_ids="insert_report", key="report_id") }}',
488
file_id='{{ task_instance.xcom_pull(task_ids="run_report", key="file_id") }}',
489
bucket_name='marketing-reports',
490
report_name='campaign-performance/{{ ds }}/daily_report.csv',
491
dag=dag
492
)
493
494
insert_report >> run_report >> wait_for_report >> download_report
495
```
496
497
## Types
498
499
```python { .api }
500
from typing import Dict, List, Optional, Any, Union
501
from airflow.models import BaseOperator
502
from airflow.sensors.base import BaseSensorOperator
503
504
# Analytics Admin types
505
AnalyticsProperty = Dict[str, Any]
506
DataStream = Dict[str, Any]
507
PropertyId = str
508
509
# Campaign Manager types
510
CampaignManagerReport = Dict[str, Any]
511
ProfileId = str
512
ReportId = str
513
FileId = str
514
ConversionData = Dict[str, Any]
515
516
# Display & Video 360 types
517
DV360Query = Dict[str, Any]
518
QueryId = str
519
SDFRequest = Dict[str, Any]
520
OperationName = str
521
522
# Search Ads types
523
SearchQuery = str
524
CustomerId = str
525
FieldName = str
526
CustomColumn = Dict[str, Any]
527
```