or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

Files

docs

ad-management.mdasset-management.mdaudience-management.mdbatch-operations.mdcampaign-management.mdclient-setup.mdconversion-tracking.mdindex.mdreporting-search.mdtargeting-keywords.md

ad-management.mddocs/

0

# Ad Management

1

2

Comprehensive ad group and advertisement management including ad group creation, ad creation and modification, ad group targeting, and performance optimization at the ad level. The Google Ads API provides extensive capabilities for managing ads across all ad formats and advertising networks.

3

4

## Capabilities

5

6

### Ad Group Operations

7

8

Core ad group management operations for creating, updating, and managing ad groups within campaigns including targeting and bidding configurations.

9

10

```python { .api }

11

def mutate_ad_groups(

12

self,

13

request: Optional[MutateAdGroupsRequest] = None,

14

customer_id: Optional[str] = None,

15

operations: Optional[Sequence[AdGroupOperation]] = None,

16

partial_failure: bool = False,

17

validate_only: bool = False,

18

response_content_type: Optional[ResponseContentTypeEnum.ResponseContentType] = None

19

) -> MutateAdGroupsResponse:

20

"""

21

Create, update, or remove ad groups.

22

23

Args:

24

request: The request object containing all parameters

25

customer_id: Required customer ID for the account

26

operations: List of ad group operations to perform

27

partial_failure: Continue processing on individual failures

28

validate_only: Validate operations without executing

29

response_content_type: Type of response content to return

30

31

Returns:

32

MutateAdGroupsResponse with operation results

33

"""

34

35

def get_ad_group(

36

self,

37

request: Optional[GetAdGroupRequest] = None,

38

resource_name: Optional[str] = None

39

) -> AdGroup:

40

"""

41

Retrieve a single ad group by resource name.

42

43

Args:

44

request: The request object

45

resource_name: Ad group resource name (customers/{customer_id}/adGroups/{ad_group_id})

46

47

Returns:

48

AdGroup resource object

49

"""

50

```

51

52

### Ad Group Ad Operations

53

54

Advertisement management operations for creating and managing ads within ad groups including responsive search ads, expanded text ads, and display ads.

55

56

```python { .api }

57

def mutate_ad_group_ads(

58

self,

59

request: Optional[MutateAdGroupAdsRequest] = None,

60

customer_id: Optional[str] = None,

61

operations: Optional[Sequence[AdGroupAdOperation]] = None,

62

partial_failure: bool = False,

63

validate_only: bool = False,

64

response_content_type: Optional[ResponseContentTypeEnum.ResponseContentType] = None

65

) -> MutateAdGroupAdsResponse:

66

"""

67

Create, update, or remove ads in ad groups.

68

69

Args:

70

request: The request object

71

customer_id: Required customer ID

72

operations: List of ad operations

73

partial_failure: Continue on individual failures

74

validate_only: Validate without executing

75

response_content_type: Response content type

76

77

Returns:

78

MutateAdGroupAdsResponse with results

79

"""

80

81

def get_ad_group_ad(

82

self,

83

request: Optional[GetAdGroupAdRequest] = None,

84

resource_name: Optional[str] = None

85

) -> AdGroupAd:

86

"""

87

Retrieve an ad group ad by resource name.

88

89

Args:

90

request: The request object

91

resource_name: Ad group ad resource name

92

93

Returns:

94

AdGroupAd resource object

95

"""

96

```

97

98

### Ad Group Criterion Operations

99

100

Ad group level targeting and keyword management including keyword bidding, negative keywords, and audience targeting at the ad group level.

101

102

```python { .api }

103

def mutate_ad_group_criteria(

104

self,

105

request: Optional[MutateAdGroupCriteriaRequest] = None,

106

customer_id: Optional[str] = None,

107

operations: Optional[Sequence[AdGroupCriterionOperation]] = None,

108

partial_failure: bool = False,

109

validate_only: bool = False,

110

response_content_type: Optional[ResponseContentTypeEnum.ResponseContentType] = None

111

) -> MutateAdGroupCriteriaResponse:

112

"""

113

Create, update, or remove ad group criteria.

114

115

Args:

116

request: The request object

117

customer_id: Required customer ID

118

operations: List of criterion operations

119

partial_failure: Continue on individual failures

120

validate_only: Validate without executing

121

response_content_type: Response content type

122

123

Returns:

124

MutateAdGroupCriteriaResponse with results

125

"""

126

```

127

128

### Ad Group Bid Modifier Operations

129

130

Bid modifier management for adjusting bids based on targeting criteria like device, location, and audience at the ad group level.

131

132

```python { .api }

133

def mutate_ad_group_bid_modifiers(

134

self,

135

request: Optional[MutateAdGroupBidModifiersRequest] = None,

136

customer_id: Optional[str] = None,

137

operations: Optional[Sequence[AdGroupBidModifierOperation]] = None,

138

partial_failure: bool = False,

139

validate_only: bool = False,

140

response_content_type: Optional[ResponseContentTypeEnum.ResponseContentType] = None

141

) -> MutateAdGroupBidModifiersResponse:

142

"""

143

Create, update, or remove ad group bid modifiers.

144

145

Args:

146

request: The request object

147

customer_id: Required customer ID

148

operations: List of bid modifier operations

149

partial_failure: Continue on individual failures

150

validate_only: Validate without executing

151

response_content_type: Response content type

152

153

Returns:

154

MutateAdGroupBidModifiersResponse with results

155

"""

156

```

157

158

## Ad Group Creation Examples

159

160

### Basic Search Ad Group

161

162

```python

163

from google.ads.googleads.client import GoogleAdsClient

164

from google.ads.googleads.errors import GoogleAdsException

165

166

def create_search_ad_group(client, customer_id, campaign_resource_name, ad_group_name, cpc_bid_micros):

167

"""Create a search ad group with manual CPC bidding."""

168

169

ad_group_service = client.get_service("AdGroupService")

170

171

# Create ad group operation

172

operation = client.get_type("AdGroupOperation")

173

ad_group = operation.create

174

ad_group.name = ad_group_name

175

ad_group.campaign = campaign_resource_name

176

ad_group.status = client.enums.AdGroupStatusEnum.ENABLED

177

ad_group.type_ = client.enums.AdGroupTypeEnum.SEARCH_STANDARD

178

ad_group.cpc_bid_micros = cpc_bid_micros

179

180

try:

181

response = ad_group_service.mutate_ad_groups(

182

customer_id=customer_id,

183

operations=[operation]

184

)

185

186

ad_group_resource_name = response.results[0].resource_name

187

print(f"Created ad group: {ad_group_resource_name}")

188

return ad_group_resource_name

189

190

except GoogleAdsException as ex:

191

print(f"Request failed with status {ex.error.code().name}")

192

for error in ex.failure.errors:

193

print(f"Error: {error.message}")

194

return None

195

```

196

197

### Shopping Ad Group

198

199

```python

200

def create_shopping_ad_group(client, customer_id, campaign_resource_name, ad_group_name):

201

"""Create a shopping ad group for product listing ads."""

202

203

ad_group_service = client.get_service("AdGroupService")

204

205

operation = client.get_type("AdGroupOperation")

206

ad_group = operation.create

207

ad_group.name = ad_group_name

208

ad_group.campaign = campaign_resource_name

209

ad_group.status = client.enums.AdGroupStatusEnum.ENABLED

210

ad_group.type_ = client.enums.AdGroupTypeEnum.SHOPPING_PRODUCT_ADS

211

212

# Shopping ad groups use campaign-level bidding

213

# No CPC bid set at ad group level

214

215

response = ad_group_service.mutate_ad_groups(

216

customer_id=customer_id,

217

operations=[operation]

218

)

219

220

return response.results[0].resource_name

221

```

222

223

### Display Ad Group

224

225

```python

226

def create_display_ad_group(client, customer_id, campaign_resource_name, ad_group_name, cpm_bid_micros):

227

"""Create a display ad group with CPM bidding."""

228

229

ad_group_service = client.get_service("AdGroupService")

230

231

operation = client.get_type("AdGroupOperation")

232

ad_group = operation.create

233

ad_group.name = ad_group_name

234

ad_group.campaign = campaign_resource_name

235

ad_group.status = client.enums.AdGroupStatusEnum.ENABLED

236

ad_group.type_ = client.enums.AdGroupTypeEnum.DISPLAY_STANDARD

237

ad_group.cpm_bid_micros = cpm_bid_micros

238

239

# Display settings

240

ad_group.display_custom_bid_dimension = client.enums.TargetingDimensionEnum.AUDIENCE

241

242

response = ad_group_service.mutate_ad_groups(

243

customer_id=customer_id,

244

operations=[operation]

245

)

246

247

return response.results[0].resource_name

248

```

249

250

## Ad Creation Examples

251

252

### Responsive Search Ad

253

254

```python

255

def create_responsive_search_ad(client, customer_id, ad_group_resource_name, headlines, descriptions, final_urls):

256

"""Create a responsive search ad with multiple headlines and descriptions."""

257

258

ad_group_ad_service = client.get_service("AdGroupAdService")

259

260

# Create ad operation

261

operation = client.get_type("AdGroupAdOperation")

262

ad_group_ad = operation.create

263

ad_group_ad.ad_group = ad_group_resource_name

264

ad_group_ad.status = client.enums.AdGroupAdStatusEnum.ENABLED

265

266

# Configure responsive search ad

267

ad = ad_group_ad.ad

268

ad.type_ = client.enums.AdTypeEnum.RESPONSIVE_SEARCH_AD

269

ad.final_urls.extend(final_urls)

270

271

# Add headlines (3-15 required)

272

for i, headline_text in enumerate(headlines):

273

headline = client.get_type("AdTextAsset")

274

headline.text = headline_text

275

if i < 3: # Pin first 3 headlines to position 1

276

headline.pinned_field = client.enums.ServedAssetFieldTypeEnum.HEADLINE_1

277

ad.responsive_search_ad.headlines.append(headline)

278

279

# Add descriptions (2-4 required)

280

for description_text in descriptions:

281

description = client.get_type("AdTextAsset")

282

description.text = description_text

283

ad.responsive_search_ad.descriptions.append(description)

284

285

# Add path fields for display

286

ad.responsive_search_ad.path1 = "shop"

287

ad.responsive_search_ad.path2 = "deals"

288

289

try:

290

response = ad_group_ad_service.mutate_ad_group_ads(

291

customer_id=customer_id,

292

operations=[operation]

293

)

294

295

ad_resource_name = response.results[0].resource_name

296

print(f"Created responsive search ad: {ad_resource_name}")

297

return ad_resource_name

298

299

except GoogleAdsException as ex:

300

print(f"Request failed with status {ex.error.code().name}")

301

for error in ex.failure.errors:

302

print(f"Error: {error.message}")

303

return None

304

305

# Example usage

306

headlines = [

307

"High Quality Products",

308

"Best Deals Online",

309

"Free Shipping Available",

310

"Shop Now and Save",

311

"Premium Quality Guaranteed"

312

]

313

314

descriptions = [

315

"Discover amazing deals on high-quality products with fast, free shipping.",

316

"Shop our wide selection of premium products at unbeatable prices."

317

]

318

319

final_urls = ["https://www.example.com"]

320

321

create_responsive_search_ad(client, customer_id, ad_group_resource_name, headlines, descriptions, final_urls)

322

```

323

324

### Expanded Text Ad

325

326

```python

327

def create_expanded_text_ad(client, customer_id, ad_group_resource_name, headline1, headline2, description, final_url):

328

"""Create an expanded text ad (legacy ad format)."""

329

330

ad_group_ad_service = client.get_service("AdGroupAdService")

331

332

operation = client.get_type("AdGroupAdOperation")

333

ad_group_ad = operation.create

334

ad_group_ad.ad_group = ad_group_resource_name

335

ad_group_ad.status = client.enums.AdGroupAdStatusEnum.ENABLED

336

337

# Configure expanded text ad

338

ad = ad_group_ad.ad

339

ad.type_ = client.enums.AdTypeEnum.EXPANDED_TEXT_AD

340

ad.final_urls.append(final_url)

341

342

ad.expanded_text_ad.headline_part1 = headline1

343

ad.expanded_text_ad.headline_part2 = headline2

344

ad.expanded_text_ad.description = description

345

ad.expanded_text_ad.path1 = "products"

346

ad.expanded_text_ad.path2 = "sale"

347

348

response = ad_group_ad_service.mutate_ad_group_ads(

349

customer_id=customer_id,

350

operations=[operation]

351

)

352

353

return response.results[0].resource_name

354

```

355

356

### Display Image Ad

357

358

```python

359

def create_display_image_ad(client, customer_id, ad_group_resource_name, image_asset_resource_name, final_url):

360

"""Create a display image ad using an existing image asset."""

361

362

ad_group_ad_service = client.get_service("AdGroupAdService")

363

364

operation = client.get_type("AdGroupAdOperation")

365

ad_group_ad = operation.create

366

ad_group_ad.ad_group = ad_group_resource_name

367

ad_group_ad.status = client.enums.AdGroupAdStatusEnum.ENABLED

368

369

# Configure image ad

370

ad = ad_group_ad.ad

371

ad.type_ = client.enums.AdTypeEnum.IMAGE_AD

372

ad.final_urls.append(final_url)

373

374

ad.image_ad.image_asset = image_asset_resource_name

375

ad.image_ad.name = "Display Image Ad"

376

377

response = ad_group_ad_service.mutate_ad_group_ads(

378

customer_id=customer_id,

379

operations=[operation]

380

)

381

382

return response.results[0].resource_name

383

```

384

385

## Keyword Management Examples

386

387

### Add Keywords to Ad Group

388

389

```python

390

def add_keywords_to_ad_group(client, customer_id, ad_group_resource_name, keywords_data):

391

"""Add keywords to an ad group with different match types and bids."""

392

393

ad_group_criterion_service = client.get_service("AdGroupCriterionService")

394

395

operations = []

396

397

for keyword_data in keywords_data:

398

operation = client.get_type("AdGroupCriterionOperation")

399

criterion = operation.create

400

criterion.ad_group = ad_group_resource_name

401

criterion.status = client.enums.AdGroupCriterionStatusEnum.ENABLED

402

criterion.type_ = client.enums.CriterionTypeEnum.KEYWORD

403

404

# Set keyword details

405

criterion.keyword.text = keyword_data['text']

406

criterion.keyword.match_type = keyword_data['match_type']

407

408

# Set keyword bid if provided

409

if 'cpc_bid_micros' in keyword_data:

410

criterion.cpc_bid_micros = keyword_data['cpc_bid_micros']

411

412

# Set final URL override if provided

413

if 'final_url' in keyword_data:

414

criterion.final_urls.append(keyword_data['final_url'])

415

416

operations.append(operation)

417

418

try:

419

response = ad_group_criterion_service.mutate_ad_group_criteria(

420

customer_id=customer_id,

421

operations=operations

422

)

423

424

print(f"Added {len(response.results)} keywords")

425

return [result.resource_name for result in response.results]

426

427

except GoogleAdsException as ex:

428

print(f"Request failed with status {ex.error.code().name}")

429

for error in ex.failure.errors:

430

print(f"Error: {error.message}")

431

return []

432

433

# Example usage

434

keywords_data = [

435

{

436

'text': 'running shoes',

437

'match_type': client.enums.KeywordMatchTypeEnum.EXACT,

438

'cpc_bid_micros': 2000000, # $2.00

439

'final_url': 'https://www.example.com/running-shoes'

440

},

441

{

442

'text': 'athletic footwear',

443

'match_type': client.enums.KeywordMatchTypeEnum.PHRASE,

444

'cpc_bid_micros': 1500000 # $1.50

445

},

446

{

447

'text': 'sports shoes',

448

'match_type': client.enums.KeywordMatchTypeEnum.BROAD,

449

'cpc_bid_micros': 1000000 # $1.00

450

}

451

]

452

453

add_keywords_to_ad_group(client, customer_id, ad_group_resource_name, keywords_data)

454

```

455

456

### Add Negative Keywords

457

458

```python

459

def add_negative_keywords(client, customer_id, ad_group_resource_name, negative_keywords):

460

"""Add negative keywords to an ad group."""

461

462

ad_group_criterion_service = client.get_service("AdGroupCriterionService")

463

464

operations = []

465

466

for keyword_text in negative_keywords:

467

operation = client.get_type("AdGroupCriterionOperation")

468

criterion = operation.create

469

criterion.ad_group = ad_group_resource_name

470

criterion.negative = True # Mark as negative

471

criterion.type_ = client.enums.CriterionTypeEnum.KEYWORD

472

473

criterion.keyword.text = keyword_text

474

criterion.keyword.match_type = client.enums.KeywordMatchTypeEnum.BROAD

475

476

operations.append(operation)

477

478

response = ad_group_criterion_service.mutate_ad_group_criteria(

479

customer_id=customer_id,

480

operations=operations

481

)

482

483

return response.results

484

```

485

486

## Ad Group Targeting Examples

487

488

### Audience Targeting

489

490

```python

491

def add_audience_targeting(client, customer_id, ad_group_resource_name, audience_resource_names):

492

"""Add audience targeting to an ad group."""

493

494

ad_group_criterion_service = client.get_service("AdGroupCriterionService")

495

496

operations = []

497

498

for audience_resource_name in audience_resource_names:

499

operation = client.get_type("AdGroupCriterionOperation")

500

criterion = operation.create

501

criterion.ad_group = ad_group_resource_name

502

criterion.status = client.enums.AdGroupCriterionStatusEnum.ENABLED

503

criterion.type_ = client.enums.CriterionTypeEnum.USER_LIST

504

505

criterion.user_list.user_list = audience_resource_name

506

507

operations.append(operation)

508

509

response = ad_group_criterion_service.mutate_ad_group_criteria(

510

customer_id=customer_id,

511

operations=operations

512

)

513

514

return response.results

515

```

516

517

### Demographics Targeting

518

519

```python

520

def add_demographics_targeting(client, customer_id, ad_group_resource_name):

521

"""Add demographic targeting to an ad group."""

522

523

ad_group_criterion_service = client.get_service("AdGroupCriterionService")

524

525

operations = []

526

527

# Add age range targeting

528

age_operation = client.get_type("AdGroupCriterionOperation")

529

age_criterion = age_operation.create

530

age_criterion.ad_group = ad_group_resource_name

531

age_criterion.status = client.enums.AdGroupCriterionStatusEnum.ENABLED

532

age_criterion.type_ = client.enums.CriterionTypeEnum.AGE_RANGE

533

age_criterion.age_range.type_ = client.enums.AgeRangeTypeEnum.AGE_RANGE_25_34

534

age_criterion.bid_modifier = 1.2 # +20% bid adjustment

535

operations.append(age_operation)

536

537

# Add gender targeting

538

gender_operation = client.get_type("AdGroupCriterionOperation")

539

gender_criterion = gender_operation.create

540

gender_criterion.ad_group = ad_group_resource_name

541

gender_criterion.status = client.enums.AdGroupCriterionStatusEnum.ENABLED

542

gender_criterion.type_ = client.enums.CriterionTypeEnum.GENDER

543

gender_criterion.gender.type_ = client.enums.GenderTypeEnum.FEMALE

544

operations.append(gender_operation)

545

546

response = ad_group_criterion_service.mutate_ad_group_criteria(

547

customer_id=customer_id,

548

operations=operations

549

)

550

551

return response.results

552

```

553

554

## Types

555

556

```python { .api }

557

# Core ad group types

558

class AdGroup:

559

resource_name: str

560

id: Optional[int]

561

name: Optional[str]

562

status: AdGroupStatusEnum.AdGroupStatus

563

type_: AdGroupTypeEnum.AdGroupType

564

ad_rotation_mode: AdGroupAdRotationModeEnum.AdGroupAdRotationMode

565

tracking_url_template: Optional[str]

566

url_custom_parameters: List[CustomParameter]

567

campaign: Optional[str]

568

cpc_bid_micros: Optional[int]

569

effective_cpc_bid_micros: Optional[int]

570

cpm_bid_micros: Optional[int]

571

target_cpa_micros: Optional[int]

572

cpv_bid_micros: Optional[int]

573

target_cpm_micros: Optional[int]

574

target_roas: Optional[float]

575

percent_cpc_bid_micros: Optional[int]

576

explorer_auto_optimizer_setting: ExplorerAutoOptimizerSetting

577

display_custom_bid_dimension: TargetingDimensionEnum.TargetingDimension

578

final_url_suffix: Optional[str]

579

targeting_setting: TargetingSetting

580

audience_setting: AudienceSetting

581

effective_target_cpa_micros: Optional[int]

582

effective_target_roas: Optional[float]

583

labels: List[str]

584

excluded_parent_asset_field_types: List[AssetFieldTypeEnum.AssetFieldType]

585

excluded_parent_asset_set_types: List[AssetSetTypeEnum.AssetSetType]

586

587

class AdGroupAd:

588

resource_name: str

589

status: AdGroupAdStatusEnum.AdGroupAdStatus

590

ad_group: Optional[str]

591

ad: Ad

592

policy_summary: PolicySummary

593

ad_strength: AdStrengthEnum.AdStrength

594

action_items: List[str]

595

labels: List[str]

596

597

class Ad:

598

resource_name: str

599

id: Optional[int]

600

final_urls: List[str]

601

final_app_urls: List[FinalAppUrl]

602

final_mobile_urls: List[str]

603

tracking_url_template: Optional[str]

604

final_url_suffix: Optional[str]

605

url_custom_parameters: List[CustomParameter]

606

display_url: Optional[str]

607

type_: AdTypeEnum.AdType

608

added_by_google_ads: Optional[bool]

609

device_preference: DeviceEnum.Device

610

url_collections: List[UrlCollection]

611

name: Optional[str]

612

system_managed_resource_source: SystemManagedResourceSourceEnum.SystemManagedResourceSource

613

614

# Ad types (one of the following)

615

text_ad: TextAdInfo

616

expanded_text_ad: ExpandedTextAdInfo

617

call_ad: CallAdInfo

618

expanded_dynamic_search_ad: ExpandedDynamicSearchAdInfo

619

hotel_ad: HotelAdInfo

620

shopping_smart_ad: ShoppingSmartAdInfo

621

shopping_product_ad: ShoppingProductAdInfo

622

image_ad: ImageAdInfo

623

video_ad: VideoAdInfo

624

responsive_search_ad: ResponsiveSearchAdInfo

625

legacy_responsive_display_ad: LegacyResponsiveDisplayAdInfo

626

app_ad: AppAdInfo

627

legacy_app_install_ad: LegacyAppInstallAdInfo

628

responsive_display_ad: ResponsiveDisplayAdInfo

629

local_ad: LocalAdInfo

630

display_upload_ad: DisplayUploadAdInfo

631

app_engagement_ad: AppEngagementAdInfo

632

shopping_comparison_listing_ad: ShoppingComparisonListingAdInfo

633

video_responsive_ad: VideoResponsiveAdInfo

634

video_bumper_ad: VideoBumperAdInfo

635

video_non_skippable_in_stream_ad: VideoNonSkippableInStreamAdInfo

636

video_true_view_in_stream_ad: VideoTrueViewInStreamAdInfo

637

video_true_view_discovery_ad: VideoTrueViewDiscoveryAdInfo

638

video_outstream_ad: VideoOutstreamAdInfo

639

video_true_view_for_action_ad: VideoTrueViewForActionAdInfo

640

smart_campaign_ad: SmartCampaignAdInfo

641

call_only_ad: CallOnlyAdInfo

642

discovery_multi_asset_ad: DiscoveryMultiAssetAdInfo

643

discovery_carousel_ad: DiscoveryCarouselAdInfo

644

travel_ad: TravelAdInfo

645

discovery_video_responsive_ad: DiscoveryVideoResponsiveAdInfo

646

647

class AdGroupCriterion:

648

resource_name: str

649

criterion_id: Optional[int]

650

status: AdGroupCriterionStatusEnum.AdGroupCriterionStatus

651

quality_info: QualityInfo

652

ad_group: Optional[str]

653

type_: CriterionTypeEnum.CriterionType

654

negative: Optional[bool]

655

system_serving_status: CriterionSystemServingStatusEnum.CriterionSystemServingStatus

656

approval_status: AdGroupCriterionApprovalStatusEnum.AdGroupCriterionApprovalStatus

657

disapproval_reasons: List[str]

658

labels: List[str]

659

bid_modifier: Optional[float]

660

cpc_bid_micros: Optional[int]

661

cpm_bid_micros: Optional[int]

662

cpv_bid_micros: Optional[int]

663

percent_cpc_bid_micros: Optional[int]

664

effective_cpc_bid_micros: Optional[int]

665

effective_cpm_bid_micros: Optional[int]

666

effective_cpv_bid_micros: Optional[int]

667

effective_percent_cpc_bid_micros: Optional[int]

668

effective_cpc_bid_source: BiddingSourceEnum.BiddingSource

669

effective_cpm_bid_source: BiddingSourceEnum.BiddingSource

670

effective_cpv_bid_source: BiddingSourceEnum.BiddingSource

671

effective_percent_cpc_bid_source: BiddingSourceEnum.BiddingSource

672

final_urls: List[str]

673

final_mobile_urls: List[str]

674

final_url_suffix: Optional[str]

675

tracking_url_template: Optional[str]

676

url_custom_parameters: List[CustomParameter]

677

position_estimates: KeywordPositionEstimates

678

679

# Criterion types (same as CampaignCriterion)

680

keyword: KeywordInfo

681

placement: PlacementInfo

682

mobile_app_category: MobileAppCategoryInfo

683

mobile_application: MobileApplicationInfo

684

location: LocationInfo

685

device: DeviceInfo

686

ad_schedule: AdScheduleInfo

687

age_range: AgeRangeInfo

688

gender: GenderInfo

689

income_range: IncomeRangeInfo

690

parental_status: ParentalStatusInfo

691

user_list: UserListInfo

692

youtube_video: YouTubeVideoInfo

693

youtube_channel: YouTubeChannelInfo

694

topic: TopicInfo

695

user_interest: UserInterestInfo

696

webpage: WebpageInfo

697

app_payment_model: AppPaymentModelInfo

698

custom_affinity: CustomAffinityInfo

699

custom_intent: CustomIntentInfo

700

custom_audience: CustomAudienceInfo

701

combined_audience: CombinedAudienceInfo

702

listing_group: ListingGroupInfo

703

704

# Specific ad type info classes

705

class ResponsiveSearchAdInfo:

706

headlines: List[AdTextAsset]

707

descriptions: List[AdTextAsset]

708

path1: Optional[str]

709

path2: Optional[str]

710

711

class ExpandedTextAdInfo:

712

headline_part1: Optional[str]

713

headline_part2: Optional[str]

714

headline_part3: Optional[str]

715

description: Optional[str]

716

description2: Optional[str]

717

path1: Optional[str]

718

path2: Optional[str]

719

720

class ImageAdInfo:

721

pixel_width: Optional[int]

722

pixel_height: Optional[int]

723

image_url: Optional[str]

724

preview_pixel_width: Optional[int]

725

preview_pixel_height: Optional[int]

726

preview_image_url: Optional[str]

727

mime_type: MimeTypeEnum.MimeType

728

name: Optional[str]

729

image_asset: Optional[str]

730

731

class AdTextAsset:

732

text: Optional[str]

733

pinned_field: ServedAssetFieldTypeEnum.ServedAssetFieldType

734

asset_performance_label: AssetPerformanceLabelEnum.AssetPerformanceLabel

735

736

# Operation types

737

class AdGroupOperation:

738

update_mask: FieldMask

739

create: AdGroup

740

update: AdGroup

741

remove: str

742

743

class AdGroupAdOperation:

744

update_mask: FieldMask

745

create: AdGroupAd

746

update: AdGroupAd

747

remove: str

748

749

class AdGroupCriterionOperation:

750

update_mask: FieldMask

751

create: AdGroupCriterion

752

update: AdGroupCriterion

753

remove: str

754

755

class AdGroupBidModifierOperation:

756

update_mask: FieldMask

757

create: AdGroupBidModifier

758

update: AdGroupBidModifier

759

remove: str

760

761

# Response types

762

class MutateAdGroupsResponse:

763

partial_failure_error: Status

764

results: List[MutateAdGroupResult]

765

766

class MutateAdGroupResult:

767

resource_name: str

768

ad_group: AdGroup

769

770

class MutateAdGroupAdsResponse:

771

partial_failure_error: Status

772

results: List[MutateAdGroupAdResult]

773

774

class MutateAdGroupAdResult:

775

resource_name: str

776

ad_group_ad: AdGroupAd

777

778

class MutateAdGroupCriteriaResponse:

779

partial_failure_error: Status

780

results: List[MutateAdGroupCriterionResult]

781

782

class MutateAdGroupCriterionResult:

783

resource_name: str

784

ad_group_criterion: AdGroupCriterion

785

```