or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

Files

docs

common-utilities.mddata-transfers.mdfirebase.mdgcp-services.mdgoogle-ads.mdgoogle-workspace.mdindex.mdleveldb.mdmarketing-platform.md

marketing-platform.mddocs/

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

```