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

audience-management.mddocs/

0

# Audience Management

1

2

Comprehensive audience and user list management including custom audience creation, user list management, audience insights, and advanced audience targeting capabilities. The Google Ads API provides extensive audience management features for remarketing, lookalike audiences, and behavioral targeting.

3

4

## Capabilities

5

6

### User List Operations

7

8

User list management operations for creating and managing remarketing lists, customer match lists, and other audience segments for targeted advertising.

9

10

```python { .api }

11

def mutate_user_lists(

12

self,

13

request: Optional[MutateUserListsRequest] = None,

14

customer_id: Optional[str] = None,

15

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

16

partial_failure: bool = False,

17

validate_only: bool = False,

18

response_content_type: Optional[ResponseContentTypeEnum.ResponseContentType] = None

19

) -> MutateUserListsResponse:

20

"""

21

Create, update, or remove user lists.

22

23

Args:

24

request: The request object containing all parameters

25

customer_id: Required customer ID for the account

26

operations: List of user list 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

MutateUserListsResponse with operation results

33

"""

34

35

def get_user_list(

36

self,

37

request: Optional[GetUserListRequest] = None,

38

resource_name: Optional[str] = None

39

) -> UserList:

40

"""

41

Retrieve a user list by resource name.

42

43

Args:

44

request: The request object

45

resource_name: User list resource name (customers/{customer_id}/userLists/{user_list_id})

46

47

Returns:

48

UserList resource object

49

"""

50

```

51

52

### Custom Audience Operations

53

54

Custom audience management for creating and managing interest-based and intent-based custom audiences for broader targeting beyond existing customer data.

55

56

```python { .api }

57

def mutate_custom_audiences(

58

self,

59

request: Optional[MutateCustomAudiencesRequest] = None,

60

customer_id: Optional[str] = None,

61

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

62

validate_only: bool = False

63

) -> MutateCustomAudiencesResponse:

64

"""

65

Create, update, or remove custom audiences.

66

67

Args:

68

request: The request object

69

customer_id: Required customer ID

70

operations: List of custom audience operations

71

validate_only: Validate without executing

72

73

Returns:

74

MutateCustomAudiencesResponse with results

75

"""

76

77

def get_custom_audience(

78

self,

79

request: Optional[GetCustomAudienceRequest] = None,

80

resource_name: Optional[str] = None

81

) -> CustomAudience:

82

"""

83

Retrieve a custom audience by resource name.

84

85

Args:

86

request: The request object

87

resource_name: Custom audience resource name

88

89

Returns:

90

CustomAudience resource object

91

"""

92

```

93

94

### Audience Insights Operations

95

96

Audience insights and analytics operations for understanding audience characteristics, interests, and behaviors to inform targeting strategies.

97

98

```python { .api }

99

def generate_insights_finder_report(

100

self,

101

request: Optional[GenerateInsightsFinderReportRequest] = None,

102

customer_id: Optional[str] = None,

103

baseline_audience: Optional[BasicInsightsAudience] = None,

104

specific_audience: Optional[BasicInsightsAudience] = None

105

) -> GenerateInsightsFinderReportResponse:

106

"""

107

Generate audience insights report comparing audiences.

108

109

Args:

110

request: The request object

111

customer_id: Required customer ID

112

baseline_audience: Baseline audience for comparison

113

specific_audience: Specific audience to analyze

114

115

Returns:

116

Audience insights data and recommendations

117

"""

118

119

def generate_audience_composition_insights(

120

self,

121

request: Optional[GenerateAudienceCompositionInsightsRequest] = None,

122

customer_id: Optional[str] = None,

123

audience: Optional[InsightsAudience] = None,

124

dimensions: Optional[Sequence[AudienceInsightsDimensionEnum.AudienceInsightsDimension]] = None

125

) -> GenerateAudienceCompositionInsightsResponse:

126

"""

127

Generate audience composition insights for demographic analysis.

128

129

Args:

130

request: The request object

131

customer_id: Required customer ID

132

audience: Audience to analyze

133

dimensions: Dimensions for analysis (age, gender, etc.)

134

135

Returns:

136

Demographic composition insights

137

"""

138

139

def list_insights_eligible_dates(

140

self,

141

request: Optional[ListInsightsEligibleDatesRequest] = None

142

) -> ListInsightsEligibleDatesResponse:

143

"""

144

List available dates for audience insights analysis.

145

146

Args:

147

request: The request object

148

149

Returns:

150

Available date ranges for insights

151

"""

152

```

153

154

### Remarketing Action Operations

155

156

Remarketing action management for defining conversion events and user interactions that trigger remarketing list membership.

157

158

```python { .api }

159

def mutate_remarketing_actions(

160

self,

161

request: Optional[MutateRemarketingActionsRequest] = None,

162

customer_id: Optional[str] = None,

163

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

164

partial_failure: bool = False,

165

validate_only: bool = False

166

) -> MutateRemarketingActionsResponse:

167

"""

168

Create, update, or remove remarketing actions.

169

170

Args:

171

request: The request object

172

customer_id: Required customer ID

173

operations: List of remarketing action operations

174

partial_failure: Continue on individual failures

175

validate_only: Validate without executing

176

177

Returns:

178

MutateRemarketingActionsResponse with results

179

"""

180

181

def get_remarketing_action(

182

self,

183

request: Optional[GetRemarketingActionRequest] = None,

184

resource_name: Optional[str] = None

185

) -> RemarketingAction:

186

"""

187

Retrieve a remarketing action by resource name.

188

189

Args:

190

request: The request object

191

resource_name: Remarketing action resource name

192

193

Returns:

194

RemarketingAction resource object

195

"""

196

```

197

198

## User List Creation Examples

199

200

### Website Remarketing List

201

202

```python

203

from google.ads.googleads.client import GoogleAdsClient

204

from google.ads.googleads.errors import GoogleAdsException

205

206

def create_remarketing_list(client, customer_id, list_name, rule_items):

207

"""Create a remarketing list based on website visits."""

208

209

user_list_service = client.get_service("UserListService")

210

211

# Create user list operation

212

operation = client.get_type("UserListOperation")

213

user_list = operation.create

214

user_list.name = list_name

215

user_list.description = f"Website visitors for {list_name}"

216

user_list.membership_status = client.enums.UserListMembershipStatusEnum.OPEN

217

user_list.membership_life_span = 30 # 30 days

218

219

# Configure rule-based user list

220

rule_based_user_list = user_list.rule_based_user_list

221

rule_based_user_list.prepopulation_status = client.enums.UserListPrepopulationStatusEnum.REQUESTED

222

223

# Create flexible rule user list

224

flexible_rule_user_list = rule_based_user_list.flexible_rule_user_list

225

flexible_rule_user_list.inclusive_rule_operator = client.enums.UserListFlexibleRuleOperatorEnum.AND

226

227

# Add rule groups

228

rule_group = client.get_type("FlexibleRuleOperandInfo")

229

rule_group.rule.rule_type = client.enums.UserListRuleTypeEnum.URL

230

231

# Add rule items (URL conditions)

232

for rule_item_data in rule_items:

233

rule_item = client.get_type("UserListRuleItemInfo")

234

rule_item.name = rule_item_data['name']

235

rule_item.string_rule_item.operator = rule_item_data['operator']

236

rule_item.string_rule_item.value = rule_item_data['value']

237

238

rule_group.rule.rule_item_groups.append(

239

client.get_type("UserListRuleItemGroupInfo", rule_items=[rule_item])

240

)

241

242

flexible_rule_user_list.inclusive_operands.append(rule_group)

243

244

try:

245

response = user_list_service.mutate_user_lists(

246

customer_id=customer_id,

247

operations=[operation]

248

)

249

250

user_list_resource_name = response.results[0].resource_name

251

print(f"Created remarketing list: {user_list_resource_name}")

252

return user_list_resource_name

253

254

except GoogleAdsException as ex:

255

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

256

for error in ex.failure.errors:

257

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

258

return None

259

260

# Example usage - visitors to specific product pages

261

rule_items = [

262

{

263

'name': 'url',

264

'operator': client.enums.UserListStringRuleItemOperatorEnum.CONTAINS,

265

'value': '/products/'

266

}

267

]

268

269

remarketing_list = create_remarketing_list(

270

client,

271

customer_id,

272

"Product Page Visitors",

273

rule_items

274

)

275

```

276

277

### Customer Match List (Email)

278

279

```python

280

def create_customer_match_email_list(client, customer_id, list_name, emails):

281

"""Create a customer match list using email addresses."""

282

283

user_list_service = client.get_service("UserListService")

284

offline_user_data_job_service = client.get_service("OfflineUserDataJobService")

285

286

# Create customer match user list

287

operation = client.get_type("UserListOperation")

288

user_list = operation.create

289

user_list.name = list_name

290

user_list.description = f"Customer match list: {list_name}"

291

user_list.membership_status = client.enums.UserListMembershipStatusEnum.OPEN

292

user_list.membership_life_span = 10000 # Maximum lifespan

293

294

# Configure customer match user list

295

crm_based_user_list = user_list.crm_based_user_list

296

crm_based_user_list.upload_key_type = client.enums.CustomerMatchUploadKeyTypeEnum.CONTACT_INFO

297

crm_based_user_list.data_source_type = client.enums.UserListCrmDataSourceTypeEnum.FIRST_PARTY

298

299

# Create the user list first

300

response = user_list_service.mutate_user_lists(

301

customer_id=customer_id,

302

operations=[operation]

303

)

304

305

user_list_resource_name = response.results[0].resource_name

306

307

# Create offline user data job to upload emails

308

job_operation = client.get_type("OfflineUserDataJobOperation")

309

job = job_operation.create

310

job.type_ = client.enums.OfflineUserDataJobTypeEnum.CUSTOMER_MATCH_USER_LIST

311

job.customer_match_user_list_metadata.user_list = user_list_resource_name

312

313

job_response = offline_user_data_job_service.create_offline_user_data_job(

314

customer_id=customer_id,

315

job=job

316

)

317

318

job_resource_name = job_response.resource_name

319

320

# Add email operations

321

operations = []

322

for email in emails:

323

user_data_operation = client.get_type("OfflineUserDataJobOperation")

324

user_data = user_data_operation.create

325

user_data.user_identifiers.append(

326

client.get_type("UserIdentifier",

327

hashed_email=hashlib.sha256(email.lower().encode()).hexdigest())

328

)

329

operations.append(user_data_operation)

330

331

# Add operations to job

332

offline_user_data_job_service.add_offline_user_data_job_operations(

333

resource_name=job_resource_name,

334

operations=operations

335

)

336

337

# Run the job

338

offline_user_data_job_service.run_offline_user_data_job(

339

resource_name=job_resource_name

340

)

341

342

return user_list_resource_name

343

344

# Example usage

345

import hashlib

346

347

customer_emails = [

348

"customer1@example.com",

349

"customer2@example.com",

350

"customer3@example.com"

351

]

352

353

customer_match_list = create_customer_match_email_list(

354

client,

355

customer_id,

356

"VIP Customers",

357

customer_emails

358

)

359

```

360

361

### Similar Audiences (Lookalike)

362

363

```python

364

def create_similar_user_list(client, customer_id, list_name, seed_user_list_resource_name):

365

"""Create a similar audiences (lookalike) list based on a seed list."""

366

367

user_list_service = client.get_service("UserListService")

368

369

operation = client.get_type("UserListOperation")

370

user_list = operation.create

371

user_list.name = list_name

372

user_list.description = f"Similar audience based on {seed_user_list_resource_name}"

373

user_list.membership_status = client.enums.UserListMembershipStatusEnum.OPEN

374

user_list.membership_life_span = 30

375

376

# Configure similar user list

377

similar_user_list = user_list.similar_user_list

378

similar_user_list.seed_user_list = seed_user_list_resource_name

379

380

response = user_list_service.mutate_user_lists(

381

customer_id=customer_id,

382

operations=[operation]

383

)

384

385

return response.results[0].resource_name

386

```

387

388

## Custom Audience Examples

389

390

### Interest-Based Custom Audience

391

392

```python

393

def create_interest_custom_audience(client, customer_id, audience_name, interests, urls=None):

394

"""Create a custom audience based on interests and URLs."""

395

396

custom_audience_service = client.get_service("CustomAudienceService")

397

398

operation = client.get_type("CustomAudienceOperation")

399

custom_audience = operation.create

400

custom_audience.name = audience_name

401

custom_audience.type_ = client.enums.CustomAudienceTypeEnum.INTEREST

402

custom_audience.description = f"Interest-based audience: {audience_name}"

403

custom_audience.status = client.enums.CustomAudienceStatusEnum.ENABLED

404

405

# Add interest members

406

for interest in interests:

407

member = client.get_type("CustomAudienceMember")

408

member.member_type = client.enums.CustomAudienceMemberTypeEnum.KEYWORD

409

member.keyword = interest

410

custom_audience.members.append(member)

411

412

# Add URL members if provided

413

if urls:

414

for url in urls:

415

member = client.get_type("CustomAudienceMember")

416

member.member_type = client.enums.CustomAudienceMemberTypeEnum.URL

417

member.url = url

418

custom_audience.members.append(member)

419

420

try:

421

response = custom_audience_service.mutate_custom_audiences(

422

customer_id=customer_id,

423

operations=[operation]

424

)

425

426

return response.results[0].resource_name

427

428

except GoogleAdsException as ex:

429

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

430

for error in ex.failure.errors:

431

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

432

return None

433

434

# Example usage

435

interests = [

436

"outdoor sports",

437

"hiking equipment",

438

"camping gear",

439

"adventure travel"

440

]

441

442

urls = [

443

"https://www.outdoor-gear.com",

444

"https://www.hiking-equipment.com"

445

]

446

447

custom_audience = create_interest_custom_audience(

448

client,

449

customer_id,

450

"Outdoor Enthusiasts",

451

interests,

452

urls

453

)

454

```

455

456

### Purchase Intent Custom Audience

457

458

```python

459

def create_purchase_intent_audience(client, customer_id, audience_name, intent_keywords, apps=None):

460

"""Create a purchase intent custom audience."""

461

462

custom_audience_service = client.get_service("CustomAudienceService")

463

464

operation = client.get_type("CustomAudienceOperation")

465

custom_audience = operation.create

466

custom_audience.name = audience_name

467

custom_audience.type_ = client.enums.CustomAudienceTypeEnum.PURCHASE_INTENT

468

custom_audience.description = f"Purchase intent audience: {audience_name}"

469

custom_audience.status = client.enums.CustomAudienceStatusEnum.ENABLED

470

471

# Add intent keywords

472

for keyword in intent_keywords:

473

member = client.get_type("CustomAudienceMember")

474

member.member_type = client.enums.CustomAudienceMemberTypeEnum.KEYWORD

475

member.keyword = keyword

476

custom_audience.members.append(member)

477

478

# Add app members if provided

479

if apps:

480

for app in apps:

481

member = client.get_type("CustomAudienceMember")

482

member.member_type = client.enums.CustomAudienceMemberTypeEnum.APP

483

member.app = app

484

custom_audience.members.append(member)

485

486

response = custom_audience_service.mutate_custom_audiences(

487

customer_id=customer_id,

488

operations=[operation]

489

)

490

491

return response.results[0].resource_name

492

```

493

494

## Audience Targeting Examples

495

496

### Apply Audience to Campaign

497

498

```python

499

def add_audience_to_campaign(client, customer_id, campaign_resource_name, audience_resource_name, bid_modifier=None):

500

"""Add audience targeting to a campaign."""

501

502

campaign_criterion_service = client.get_service("CampaignCriterionService")

503

504

operation = client.get_type("CampaignCriterionOperation")

505

criterion = operation.create

506

criterion.campaign = campaign_resource_name

507

criterion.status = client.enums.CampaignCriterionStatusEnum.ENABLED

508

509

# Determine audience type and set accordingly

510

if "userLists" in audience_resource_name:

511

criterion.type_ = client.enums.CriterionTypeEnum.USER_LIST

512

criterion.user_list.user_list = audience_resource_name

513

elif "customAudiences" in audience_resource_name:

514

criterion.type_ = client.enums.CriterionTypeEnum.CUSTOM_AUDIENCE

515

criterion.custom_audience.custom_audience = audience_resource_name

516

517

# Set bid modifier if provided

518

if bid_modifier:

519

criterion.bid_modifier = bid_modifier

520

521

response = campaign_criterion_service.mutate_campaign_criteria(

522

customer_id=customer_id,

523

operations=[operation]

524

)

525

526

return response.results[0].resource_name

527

```

528

529

### Audience Exclusions

530

531

```python

532

def exclude_audience_from_campaign(client, customer_id, campaign_resource_name, audience_resource_name):

533

"""Add audience exclusion to a campaign."""

534

535

campaign_criterion_service = client.get_service("CampaignCriterionService")

536

537

operation = client.get_type("CampaignCriterionOperation")

538

criterion = operation.create

539

criterion.campaign = campaign_resource_name

540

criterion.negative = True # Mark as exclusion

541

542

if "userLists" in audience_resource_name:

543

criterion.type_ = client.enums.CriterionTypeEnum.USER_LIST

544

criterion.user_list.user_list = audience_resource_name

545

elif "customAudiences" in audience_resource_name:

546

criterion.type_ = client.enums.CriterionTypeEnum.CUSTOM_AUDIENCE

547

criterion.custom_audience.custom_audience = audience_resource_name

548

549

response = campaign_criterion_service.mutate_campaign_criteria(

550

customer_id=customer_id,

551

operations=[operation]

552

)

553

554

return response.results[0].resource_name

555

```

556

557

## Audience Insights Examples

558

559

### Generate Audience Composition Report

560

561

```python

562

def get_audience_demographics(client, customer_id, user_list_resource_name):

563

"""Generate demographic insights for an audience."""

564

565

audience_insights_service = client.get_service("AudienceInsightsService")

566

567

# Create insights audience from user list

568

insights_audience = client.get_type("InsightsAudience")

569

insights_audience.country_location.append(

570

client.get_type("LocationInfo", geo_target_constant="geoTargetConstants/2840") # US

571

)

572

insights_audience.user_lists.append(user_list_resource_name)

573

574

# Request demographic dimensions

575

dimensions = [

576

client.enums.AudienceInsightsDimensionEnum.AGE_RANGE,

577

client.enums.AudienceInsightsDimensionEnum.GENDER,

578

client.enums.AudienceInsightsDimensionEnum.INCOME_RANGE,

579

client.enums.AudienceInsightsDimensionEnum.PARENTAL_STATUS

580

]

581

582

request = client.get_type("GenerateAudienceCompositionInsightsRequest")

583

request.customer_id = customer_id

584

request.audience = insights_audience

585

request.dimensions = dimensions

586

587

try:

588

response = audience_insights_service.generate_audience_composition_insights(

589

request=request

590

)

591

592

insights_data = []

593

for section in response.sections:

594

section_data = {

595

'dimension': section.dimension.name,

596

'breakdown': []

597

}

598

599

for attribute in section.breakdown:

600

attribute_data = {

601

'attribute': attribute.attribute_metadata.dimension_value.display_name,

602

'coverage_percentage': attribute.coverage_percentage,

603

'index': attribute.index,

604

'score': attribute.score

605

}

606

section_data['breakdown'].append(attribute_data)

607

608

insights_data.append(section_data)

609

610

return insights_data

611

612

except GoogleAdsException as ex:

613

print(f"Insights request failed: {ex.error.code().name}")

614

for error in ex.failure.errors:

615

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

616

return []

617

```

618

619

### Audience Finder Report

620

621

```python

622

def find_similar_audiences(client, customer_id, baseline_audience_resource_name):

623

"""Find audiences similar to a baseline audience."""

624

625

audience_insights_service = client.get_service("AudienceInsightsService")

626

627

# Create baseline audience

628

baseline_audience = client.get_type("BasicInsightsAudience")

629

baseline_audience.country_location.append(

630

client.get_type("LocationInfo", geo_target_constant="geoTargetConstants/2840")

631

)

632

baseline_audience.user_list = baseline_audience_resource_name

633

634

request = client.get_type("GenerateInsightsFinderReportRequest")

635

request.customer_id = customer_id

636

request.baseline_audience = baseline_audience

637

638

response = audience_insights_service.generate_insights_finder_report(

639

request=request

640

)

641

642

similar_audiences = []

643

for audience_insights in response.audience_insights:

644

audience_data = {

645

'audience_definition': audience_insights.audience_definition,

646

'targetable_audience_size': audience_insights.targetable_audience_size,

647

'coverage_percentage': audience_insights.coverage_percentage,

648

'index': audience_insights.index,

649

'score': audience_insights.score

650

}

651

similar_audiences.append(audience_data)

652

653

return similar_audiences

654

```

655

656

## Types

657

658

```python { .api }

659

# User list types

660

class UserList:

661

resource_name: str

662

id: Optional[int]

663

read_only: Optional[bool]

664

name: Optional[str]

665

description: Optional[str]

666

membership_status: UserListMembershipStatusEnum.UserListMembershipStatus

667

integration_code: Optional[str]

668

membership_life_span: Optional[int]

669

size_for_display: Optional[int]

670

size_range_for_display: UserListSizeRangeEnum.UserListSizeRange

671

size_for_search: Optional[int]

672

size_range_for_search: UserListSizeRangeEnum.UserListSizeRange

673

type_: UserListTypeEnum.UserListType

674

closing_reason: UserListClosingReasonEnum.UserListClosingReason

675

access_reason: AccessReasonEnum.AccessReason

676

account_user_list_status: UserListAccessStatusEnum.UserListAccessStatus

677

eligible_for_search: Optional[bool]

678

eligible_for_display: Optional[bool]

679

match_rate_percentage: Optional[int]

680

681

# User list types (one of the following)

682

crm_based_user_list: CrmBasedUserListInfo

683

similar_user_list: SimilarUserListInfo

684

rule_based_user_list: RuleBasedUserListInfo

685

logical_user_list: LogicalUserListInfo

686

basic_user_list: BasicUserListInfo

687

lookalike_user_list: LookalikeUserListInfo

688

689

class CrmBasedUserListInfo:

690

app_id: Optional[str]

691

upload_key_type: CustomerMatchUploadKeyTypeEnum.CustomerMatchUploadKeyType

692

data_source_type: UserListCrmDataSourceTypeEnum.UserListCrmDataSourceType

693

694

class RuleBasedUserListInfo:

695

prepopulation_status: UserListPrepopulationStatusEnum.UserListPrepopulationStatus

696

flexible_rule_user_list: FlexibleRuleUserListInfo

697

698

class FlexibleRuleUserListInfo:

699

inclusive_rule_operator: UserListFlexibleRuleOperatorEnum.UserListFlexibleRuleOperator

700

inclusive_operands: List[FlexibleRuleOperandInfo]

701

exclusive_operands: List[FlexibleRuleOperandInfo]

702

703

class FlexibleRuleOperandInfo:

704

rule: UserListRuleInfo

705

lookaback_window_days: Optional[int]

706

707

class UserListRuleInfo:

708

rule_type: UserListRuleTypeEnum.UserListRuleType

709

rule_item_groups: List[UserListRuleItemGroupInfo]

710

711

class UserListRuleItemGroupInfo:

712

rule_items: List[UserListRuleItemInfo]

713

714

class UserListRuleItemInfo:

715

name: Optional[str]

716

number_rule_item: UserListNumberRuleItemInfo

717

string_rule_item: UserListStringRuleItemInfo

718

date_rule_item: UserListDateRuleItemInfo

719

720

class SimilarUserListInfo:

721

seed_user_list: Optional[str]

722

723

# Custom audience types

724

class CustomAudience:

725

resource_name: str

726

id: Optional[int]

727

status: CustomAudienceStatusEnum.CustomAudienceStatus

728

name: Optional[str]

729

type_: CustomAudienceTypeEnum.CustomAudienceType

730

description: Optional[str]

731

members: List[CustomAudienceMember]

732

733

class CustomAudienceMember:

734

member_type: CustomAudienceMemberTypeEnum.CustomAudienceMemberType

735

keyword: Optional[str]

736

url: Optional[str]

737

place_category: Optional[int]

738

app: Optional[str]

739

740

# Remarketing action types

741

class RemarketingAction:

742

resource_name: str

743

id: Optional[int]

744

name: Optional[str]

745

tag_snippets: List[TagSnippet]

746

747

class TagSnippet:

748

type_: TrackingCodeTypeEnum.TrackingCodeType

749

page_format: TrackingCodePageFormatEnum.TrackingCodePageFormat

750

global_site_tag: Optional[str]

751

event_snippet: Optional[str]

752

753

# Audience insights types

754

class InsightsAudience:

755

country_location: List[LocationInfo]

756

sub_country_location: List[LocationInfo]

757

gender: List[GenderInfo]

758

age_ranges: List[AgeRangeInfo]

759

user_interests: List[UserInterestInfo]

760

user_lists: List[str]

761

custom_audiences: List[str]

762

763

class BasicInsightsAudience:

764

country_location: List[LocationInfo]

765

sub_country_location: List[LocationInfo]

766

gender: List[GenderInfo]

767

age_ranges: List[AgeRangeInfo]

768

user_interests: List[UserInterestInfo]

769

user_list: Optional[str]

770

custom_audience: Optional[str]

771

772

class AudienceCompositionSection:

773

dimension: AudienceInsightsDimensionEnum.AudienceInsightsDimension

774

breakdown: List[AudienceCompositionBreakdown]

775

776

class AudienceCompositionBreakdown:

777

attribute_metadata: AudienceCompositionAttribute

778

coverage_percentage: float

779

index: float

780

score: float

781

782

class AudienceCompositionAttribute:

783

attribute_value: AttributeValue

784

display_name: str

785

display_info: str

786

787

# Operation types

788

class UserListOperation:

789

update_mask: FieldMask

790

create: UserList

791

update: UserList

792

remove: str

793

794

class CustomAudienceOperation:

795

update_mask: FieldMask

796

create: CustomAudience

797

update: CustomAudience

798

remove: str

799

800

class RemarketingActionOperation:

801

update_mask: FieldMask

802

create: RemarketingAction

803

update: RemarketingAction

804

remove: str

805

806

# Response types

807

class MutateUserListsResponse:

808

partial_failure_error: Status

809

results: List[MutateUserListResult]

810

811

class MutateUserListResult:

812

resource_name: str

813

user_list: UserList

814

815

class MutateCustomAudiencesResponse:

816

results: List[MutateCustomAudienceResult]

817

818

class MutateCustomAudienceResult:

819

resource_name: str

820

custom_audience: CustomAudience

821

822

class GenerateAudienceCompositionInsightsResponse:

823

sections: List[AudienceCompositionSection]

824

825

class GenerateInsightsFinderReportResponse:

826

audience_insights: List[AudienceInsights]

827

828

class AudienceInsights:

829

audience_definition: InsightsAudience

830

targetable_audience_size: int

831

coverage_percentage: float

832

index: float

833

score: float

834

```