@pipedream/google_ads 0.8.0 → 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (52) hide show
  1. package/README.md +4 -4
  2. package/actions/add-contact-to-list-by-email/add-contact-to-list-by-email.mjs +2 -1
  3. package/actions/common/bidding.mjs +196 -0
  4. package/actions/common/conversion-upload.mjs +131 -0
  5. package/actions/common/props.mjs +1 -1
  6. package/actions/create-ad-group-report/create-ad-group-report.mjs +2 -2
  7. package/actions/create-ad-report/create-ad-report.mjs +2 -2
  8. package/actions/create-campaign-report/create-campaign-report.mjs +2 -2
  9. package/actions/create-customer-list/common-constants.mjs +10 -10
  10. package/actions/create-customer-list/create-customer-list.mjs +3 -3
  11. package/actions/create-customer-report/create-customer-report.mjs +2 -2
  12. package/actions/create-or-remove-campaign-criteria/create-or-remove-campaign-criteria.mjs +2 -2
  13. package/actions/create-or-remove-campaign-shared-set/create-or-remove-campaign-shared-set.mjs +2 -2
  14. package/actions/create-or-remove-shared-criteria/create-or-remove-shared-criteria.mjs +2 -2
  15. package/actions/create-or-update-ad-group/create-or-update-ad-group.mjs +2 -2
  16. package/actions/create-or-update-ad-group-ad/create-or-update-ad-group-ad.mjs +2 -2
  17. package/actions/create-or-update-bidding-strategy/create-or-update-bidding-strategy.mjs +7 -2
  18. package/actions/create-or-update-campaign/create-or-update-campaign.mjs +71 -14
  19. package/actions/create-or-update-campaign-budget/create-or-update-campaign-budget.mjs +2 -2
  20. package/actions/create-or-update-keywords/create-or-update-keywords.mjs +2 -2
  21. package/actions/create-or-update-shared-sets/create-or-update-shared-sets.mjs +2 -2
  22. package/actions/create-report/create-report.mjs +5 -7
  23. package/actions/create-responsive-search-ad/create-responsive-search-ad.mjs +2 -1
  24. package/actions/generate-keyword-ideas/generate-keyword-ideas.mjs +3 -3
  25. package/actions/get-keyword-quality-scores/get-keyword-quality-scores.mjs +3 -2
  26. package/actions/list-account-id-options/list-account-id-options.mjs +1 -1
  27. package/actions/list-ad-group-ads/list-ad-group-ads.mjs +2 -2
  28. package/actions/list-ad-group-criteria/list-ad-group-criteria.mjs +2 -2
  29. package/actions/list-ad-groups/list-ad-groups.mjs +2 -2
  30. package/actions/list-bidding-strategies/list-bidding-strategies.mjs +2 -2
  31. package/actions/list-campaign-budgets/list-campaign-budgets.mjs +2 -2
  32. package/actions/list-campaign-criteria/list-campaign-criteria.mjs +2 -2
  33. package/actions/list-campaign-shared-sets/list-campaign-shared-sets.mjs +2 -2
  34. package/actions/list-campaigns/list-campaigns.mjs +2 -2
  35. package/actions/list-customer-clients/list-customer-clients.mjs +2 -2
  36. package/actions/list-keywords/list-keywords.mjs +2 -2
  37. package/actions/list-shared-criteria/list-shared-criteria.mjs +2 -2
  38. package/actions/list-shared-sets/list-shared-sets.mjs +2 -2
  39. package/actions/send-offline-conversion/send-offline-conversion.mjs +4 -4
  40. package/actions/update-campaign-ai-max-settings/update-campaign-ai-max-settings.mjs +2 -1
  41. package/actions/upload-call-conversion/upload-call-conversion.mjs +65 -0
  42. package/actions/upload-click-conversion/upload-click-conversion.mjs +121 -0
  43. package/common/common-report.mjs +5 -7
  44. package/common/constants.mjs +108 -8
  45. package/common/resources/ad.mjs +25 -70
  46. package/common/resources/adGroup.mjs +2 -3
  47. package/common/resources/campaign.mjs +7 -10
  48. package/common/resources/customer.mjs +3 -4
  49. package/google_ads.app.mjs +79 -29
  50. package/package.json +1 -1
  51. package/sources/new-campaign-created/new-campaign-created.mjs +3 -3
  52. package/sources/new-lead-form-entry/new-lead-form-entry.mjs +3 -3
@@ -0,0 +1,121 @@
1
+ import { ConfigurationError } from "@pipedream/platform";
2
+ import { CONVERSION_ENVIRONMENTS } from "../../common/constants.mjs";
3
+ import {
4
+ buildBaseConversion, commonProps, DOC_LINK, uploadConversion,
5
+ } from "../common/conversion-upload.mjs";
6
+
7
+ const CLICK_DOC_LINK = `${DOC_LINK}/UploadClickConversions?transport=rest`;
8
+
9
+ export default {
10
+ key: "google_ads-upload-click-conversion",
11
+ name: "Upload Click Conversion",
12
+ description: `Uploads an offline conversion attributed to an ad click. [See the documentation](${CLICK_DOC_LINK})`,
13
+ version: "0.0.1",
14
+ type: "action",
15
+ annotations: {
16
+ destructiveHint: false,
17
+ openWorldHint: true,
18
+ readOnlyHint: false,
19
+ },
20
+ props: {
21
+ ...commonProps,
22
+ gclid: {
23
+ type: "string",
24
+ label: "GCLID",
25
+ description: "The Google click ID from the ad click that led to this conversion. Provide this, **GBRAID**, or **WBRAID**.",
26
+ optional: true,
27
+ },
28
+ gbraid: {
29
+ type: "string",
30
+ label: "GBRAID",
31
+ description: "The click identifier for iOS app-to-web conversions. Provide this, **GCLID**, or **WBRAID**.",
32
+ optional: true,
33
+ },
34
+ wbraid: {
35
+ type: "string",
36
+ label: "WBRAID",
37
+ description: "The click identifier for iOS web-to-web conversions. Provide this, **GCLID**, or **GBRAID**.",
38
+ optional: true,
39
+ },
40
+ orderId: {
41
+ type: "string",
42
+ label: "Order ID",
43
+ description: "Transaction ID for this conversion. An order ID can only be used once per conversion action.",
44
+ optional: true,
45
+ },
46
+ conversionEnvironment: {
47
+ type: "string",
48
+ label: "Conversion Environment",
49
+ description: "Where the conversion was recorded.",
50
+ options: CONVERSION_ENVIRONMENTS,
51
+ optional: true,
52
+ },
53
+ },
54
+ async run({ $ }) {
55
+ const {
56
+ googleAds,
57
+ accountId,
58
+ customerClientId,
59
+ gclid,
60
+ gbraid,
61
+ wbraid,
62
+ orderId,
63
+ conversionEnvironment,
64
+ validateOnly,
65
+ } = this;
66
+
67
+ // Google rejects two identifiers with `GBRAID_WBRAID_BOTH_SET`.
68
+ const identifiers = [
69
+ gclid,
70
+ gbraid,
71
+ wbraid,
72
+ ].filter(Boolean);
73
+ if (!identifiers.length) {
74
+ throw new ConfigurationError(
75
+ "One of **GCLID**, **GBRAID**, or **WBRAID** is required to attribute a click conversion.",
76
+ );
77
+ }
78
+ if (identifiers.length > 1) {
79
+ throw new ConfigurationError(
80
+ "Set only one of **GCLID**, **GBRAID**, or **WBRAID** - each click has a single identifier.",
81
+ );
82
+ }
83
+
84
+ const conversion = {
85
+ ...buildBaseConversion(this),
86
+ ...(gclid && {
87
+ gclid,
88
+ }),
89
+ ...(gbraid && {
90
+ gbraid,
91
+ }),
92
+ ...(wbraid && {
93
+ wbraid,
94
+ }),
95
+ ...(orderId && {
96
+ orderId,
97
+ }),
98
+ ...(conversionEnvironment && {
99
+ conversionEnvironment,
100
+ }),
101
+ };
102
+
103
+ const response = await uploadConversion({
104
+ $,
105
+ googleAds,
106
+ method: "uploadClickConversions",
107
+ accountId,
108
+ customerClientId,
109
+ conversion,
110
+ validateOnly,
111
+ });
112
+
113
+ $.export(
114
+ "$summary",
115
+ validateOnly
116
+ ? "Click conversion payload validated successfully (not recorded)."
117
+ : "Successfully uploaded click conversion.",
118
+ );
119
+ return response;
120
+ },
121
+ };
@@ -17,7 +17,7 @@ export function createReportComponent(resource) {
17
17
  docsAlert: {
18
18
  type: "alert",
19
19
  alertType: "info",
20
- content: `[See the documentation](https://developers.google.com/google-ads/api/fields/v21/${value}) for more information on available fields, segments and metrics.`,
20
+ content: `[See the documentation](https://developers.google.com/google-ads/api/fields/v25/${value}) for more information on available fields, segments and metrics.`,
21
21
  },
22
22
  objectFilter: {
23
23
  propDefinition: [
@@ -56,14 +56,14 @@ export function createReportComponent(resource) {
56
56
  fields: {
57
57
  type: "string[]",
58
58
  label: `${label} Fields`,
59
- description: `Select the ${label} fields to include in the report`,
59
+ description: `Array of ${label} field names to include in the report, e.g. \`["status"]\`. The \`${value}.\` prefix is added automatically. [See the field reference](https://developers.google.com/google-ads/api/fields/v25/${value})`,
60
60
  options: resource.fields,
61
61
  optional: true,
62
62
  },
63
63
  segments: {
64
64
  type: "string[]",
65
65
  label: "Segments",
66
- description: "Select any segments to include in the report. See the documentation [here](https://developers.google.com/google-ads/api/reference/rpc/v21/Segments)",
66
+ description: "Array of segment names to break the report down by, e.g. `[\"date\"]`. The `segments.` prefix is added automatically. [See the documentation](https://developers.google.com/google-ads/api/reference/rpc/v25/Segments)",
67
67
  options: resource.segments,
68
68
  default: [
69
69
  "segments.date",
@@ -73,7 +73,7 @@ export function createReportComponent(resource) {
73
73
  metrics: {
74
74
  type: "string[]",
75
75
  label: "Metrics",
76
- description: "Select any metrics to include in the report. See the documentation [here](https://developers.google.com/google-ads/api/reference/rpc/v21/Metrics)",
76
+ description: "Array of metric names to include in the report, e.g. `[\"clicks\"]`. The `metrics.` prefix is added automatically. [See the documentation](https://developers.google.com/google-ads/api/reference/rpc/v25/Metrics)",
77
77
  options: resource.metrics,
78
78
  optional: true,
79
79
  },
@@ -174,9 +174,7 @@ export function createReportComponent(resource) {
174
174
  $,
175
175
  accountId: this.accountId,
176
176
  customerClientId: this.customerClientId,
177
- data: {
178
- query,
179
- },
177
+ query,
180
178
  })) ?? [];
181
179
 
182
180
  const { length } = results;
@@ -1,3 +1,22 @@
1
+ export const API_VERSION = "v25";
2
+
3
+ // Conversion payload fields the upload actions set and validate themselves. Includes the
4
+ // click and call identifiers: injecting those here would bypass the exactly-one-identifier
5
+ // check, which runs against the props before the payload is assembled.
6
+ export const RESERVED_CONVERSION_FIELDS = [
7
+ "callStartDateTime",
8
+ "callerId",
9
+ "conversionAction",
10
+ "conversionDateTime",
11
+ "conversionEnvironment",
12
+ "conversionValue",
13
+ "currencyCode",
14
+ "gbraid",
15
+ "gclid",
16
+ "orderId",
17
+ "wbraid",
18
+ ];
19
+
1
20
  export const SHARED_SET_TYPES = [
2
21
  {
3
22
  label: "Negative Keywords",
@@ -82,10 +101,6 @@ export const ADVERTISING_CHANNEL_TYPES = [
82
101
  label: "Local Services",
83
102
  value: "LOCAL_SERVICES",
84
103
  },
85
- {
86
- label: "Discovery",
87
- value: "DISCOVERY",
88
- },
89
104
  {
90
105
  label: "Travel",
91
106
  value: "TRAVEL",
@@ -154,10 +169,6 @@ export const AD_GROUP_TYPES = [
154
169
  label: "Video Non-Skippable In-Stream",
155
170
  value: "VIDEO_NON_SKIPPABLE_IN_STREAM",
156
171
  },
157
- {
158
- label: "Video Outstream",
159
- value: "VIDEO_OUTSTREAM",
160
- },
161
172
  {
162
173
  label: "Search Dynamic Ads",
163
174
  value: "SEARCH_DYNAMIC_ADS",
@@ -186,6 +197,10 @@ export const AD_GROUP_TYPES = [
186
197
  label: "Travel Ads",
187
198
  value: "TRAVEL_ADS",
188
199
  },
200
+ {
201
+ label: "YouTube Audio",
202
+ value: "YOUTUBE_AUDIO",
203
+ },
189
204
  ];
190
205
 
191
206
  export const AD_ROTATION_MODES = [
@@ -232,6 +247,8 @@ export const ASSET_AUTOMATION_STATUSES = [
232
247
  },
233
248
  ];
234
249
 
250
+ // `PERCENT_CPC` is deliberately absent: v25 exposes no `bidding_strategy.percent_cpc`
251
+ // scheme, so a portfolio strategy cannot be created with that type.
235
252
  export const PORTFOLIO_BIDDING_STRATEGY_TYPES = [
236
253
  {
237
254
  label: "Target CPA",
@@ -261,12 +278,95 @@ export const PORTFOLIO_BIDDING_STRATEGY_TYPES = [
261
278
  label: "Enhanced CPC",
262
279
  value: "ENHANCED_CPC",
263
280
  },
281
+ ];
282
+
283
+ export const CAMPAIGN_BIDDING_STRATEGY_TYPES = [
284
+ {
285
+ label: "Manual CPC",
286
+ value: "MANUAL_CPC",
287
+ },
288
+ {
289
+ label: "Manual CPM",
290
+ value: "MANUAL_CPM",
291
+ },
292
+ {
293
+ label: "Target CPA",
294
+ value: "TARGET_CPA",
295
+ },
296
+ {
297
+ label: "Target ROAS",
298
+ value: "TARGET_ROAS",
299
+ },
300
+ {
301
+ label: "Target Spend",
302
+ value: "TARGET_SPEND",
303
+ },
304
+ {
305
+ label: "Maximize Conversions",
306
+ value: "MAXIMIZE_CONVERSIONS",
307
+ },
308
+ {
309
+ label: "Maximize Conversion Value",
310
+ value: "MAXIMIZE_CONVERSION_VALUE",
311
+ },
312
+ {
313
+ label: "Target Impression Share",
314
+ value: "TARGET_IMPRESSION_SHARE",
315
+ },
264
316
  {
265
317
  label: "Percent CPC",
266
318
  value: "PERCENT_CPC",
267
319
  },
268
320
  ];
269
321
 
322
+ export const TARGET_IMPRESSION_SHARE_LOCATIONS = [
323
+ {
324
+ label: "Anywhere on page",
325
+ value: "ANYWHERE_ON_PAGE",
326
+ },
327
+ {
328
+ label: "Top of page",
329
+ value: "TOP_OF_PAGE",
330
+ },
331
+ {
332
+ label: "Absolute top of page",
333
+ value: "ABSOLUTE_TOP_OF_PAGE",
334
+ },
335
+ ];
336
+
337
+ export const UPLOAD_CONVERSION_TYPES = [
338
+ {
339
+ label: "Click conversion (attributed to an ad click via GCLID)",
340
+ value: "CLICK",
341
+ },
342
+ {
343
+ label: "Call conversion (attributed to a phone call)",
344
+ value: "CALL",
345
+ },
346
+ ];
347
+
348
+ export const CONVERSION_ENVIRONMENTS = [
349
+ {
350
+ label: "Web",
351
+ value: "WEB",
352
+ },
353
+ {
354
+ label: "App",
355
+ value: "APP",
356
+ },
357
+ ];
358
+
359
+ export const EU_POLITICAL_ADVERTISING_STATUSES = [
360
+ {
361
+ label: "Does not contain EU political advertising",
362
+ value: "DOES_NOT_CONTAIN_EU_POLITICAL_ADVERTISING",
363
+ },
364
+ {
365
+ label: "Contains EU political advertising",
366
+ value: "CONTAINS_EU_POLITICAL_ADVERTISING",
367
+ },
368
+ ];
369
+
270
370
  export const CORE_DATE_SEGMENTS = [
271
371
  "segments.date",
272
372
  "segments.week",
@@ -6,84 +6,50 @@ const fields = [
6
6
  "ad.app_ad.descriptions",
7
7
  "ad.app_ad.headlines",
8
8
  "ad.app_ad.html5_media_bundles",
9
- "ad.app_ad.html5_media_bundles.asset",
10
9
  "ad.app_ad.images",
11
- "ad.app_ad.images.asset",
12
10
  "ad.app_ad.mandatory_ad_text",
13
11
  "ad.app_ad.youtube_videos",
14
- "ad.app_ad.youtube_videos.asset",
15
12
  "ad.app_engagement_ad.descriptions",
16
13
  "ad.app_engagement_ad.headlines",
17
14
  "ad.app_engagement_ad.images",
18
- "ad.app_engagement_ad.images.asset",
19
15
  "ad.app_engagement_ad.videos",
20
- "ad.app_engagement_ad.videos.asset",
21
16
  "ad.app_pre_registration_ad.descriptions",
22
17
  "ad.app_pre_registration_ad.headlines",
23
18
  "ad.app_pre_registration_ad.images",
24
- "ad.app_pre_registration_ad.images.asset",
25
19
  "ad.app_pre_registration_ad.youtube_videos",
26
- "ad.app_pre_registration_ad.youtube_videos.asset",
27
- "ad.call_ad.business_name",
28
- "ad.call_ad.call_tracked",
29
- "ad.call_ad.conversion_action",
30
- "ad.call_ad.conversion_reporting_state",
31
- "ad.call_ad.country_code",
32
- "ad.call_ad.description1",
33
- "ad.call_ad.description2",
34
- "ad.call_ad.disable_call_conversion",
35
- "ad.call_ad.headline1",
36
- "ad.call_ad.headline2",
37
- "ad.call_ad.path1",
38
- "ad.call_ad.path2",
39
- "ad.call_ad.phone_number",
40
- "ad.call_ad.phone_number_verification_url",
20
+ "ad.demand_gen_carousel_ad.business_name",
21
+ "ad.demand_gen_carousel_ad.call_to_action_text",
22
+ "ad.demand_gen_carousel_ad.carousel_cards",
23
+ "ad.demand_gen_carousel_ad.description",
24
+ "ad.demand_gen_carousel_ad.headline",
25
+ "ad.demand_gen_carousel_ad.logo_image",
26
+ "ad.demand_gen_multi_asset_ad.business_name",
27
+ "ad.demand_gen_multi_asset_ad.call_to_action_text",
28
+ "ad.demand_gen_multi_asset_ad.descriptions",
29
+ "ad.demand_gen_multi_asset_ad.headlines",
30
+ "ad.demand_gen_multi_asset_ad.logo_images",
31
+ "ad.demand_gen_multi_asset_ad.marketing_images",
32
+ "ad.demand_gen_multi_asset_ad.portrait_marketing_images",
33
+ "ad.demand_gen_multi_asset_ad.square_marketing_images",
41
34
  "ad.demand_gen_product_ad.breadcrumb1",
42
35
  "ad.demand_gen_product_ad.breadcrumb2",
43
36
  "ad.demand_gen_product_ad.business_name",
44
37
  "ad.demand_gen_product_ad.call_to_action",
45
- "ad.demand_gen_product_ad.call_to_action.asset",
46
38
  "ad.demand_gen_product_ad.description",
47
39
  "ad.demand_gen_product_ad.headline",
48
40
  "ad.demand_gen_product_ad.logo_image",
49
- "ad.demand_gen_product_ad.logo_image.asset",
41
+ "ad.demand_gen_video_responsive_ad.breadcrumb1",
42
+ "ad.demand_gen_video_responsive_ad.breadcrumb2",
43
+ "ad.demand_gen_video_responsive_ad.business_name",
44
+ "ad.demand_gen_video_responsive_ad.call_to_actions",
45
+ "ad.demand_gen_video_responsive_ad.descriptions",
46
+ "ad.demand_gen_video_responsive_ad.headlines",
47
+ "ad.demand_gen_video_responsive_ad.logo_images",
48
+ "ad.demand_gen_video_responsive_ad.long_headlines",
49
+ "ad.demand_gen_video_responsive_ad.videos",
50
50
  "ad.device_preference",
51
- "ad.discovery_carousel_ad.business_name",
52
- "ad.discovery_carousel_ad.call_to_action_text",
53
- "ad.discovery_carousel_ad.carousel_cards",
54
- "ad.discovery_carousel_ad.carousel_cards.asset",
55
- "ad.discovery_carousel_ad.description",
56
- "ad.discovery_carousel_ad.headline",
57
- "ad.discovery_carousel_ad.logo_image",
58
- "ad.discovery_carousel_ad.logo_image.asset",
59
- "ad.discovery_multi_asset_ad.business_name",
60
- "ad.discovery_multi_asset_ad.call_to_action_text",
61
- "ad.discovery_multi_asset_ad.descriptions",
62
- "ad.discovery_multi_asset_ad.headlines",
63
- "ad.discovery_multi_asset_ad.lead_form_only",
64
- "ad.discovery_multi_asset_ad.logo_images",
65
- "ad.discovery_multi_asset_ad.logo_images.asset",
66
- "ad.discovery_multi_asset_ad.marketing_images",
67
- "ad.discovery_multi_asset_ad.marketing_images.asset",
68
- "ad.discovery_multi_asset_ad.portrait_marketing_images",
69
- "ad.discovery_multi_asset_ad.portrait_marketing_images.asset",
70
- "ad.discovery_multi_asset_ad.square_marketing_images",
71
- "ad.discovery_multi_asset_ad.square_marketing_images.asset",
72
- "ad.discovery_video_responsive_ad.breadcrumb1",
73
- "ad.discovery_video_responsive_ad.breadcrumb2",
74
- "ad.discovery_video_responsive_ad.business_name",
75
- "ad.discovery_video_responsive_ad.call_to_actions",
76
- "ad.discovery_video_responsive_ad.call_to_actions.asset",
77
- "ad.discovery_video_responsive_ad.descriptions",
78
- "ad.discovery_video_responsive_ad.headlines",
79
- "ad.discovery_video_responsive_ad.logo_images",
80
- "ad.discovery_video_responsive_ad.logo_images.asset",
81
- "ad.discovery_video_responsive_ad.long_headlines",
82
- "ad.discovery_video_responsive_ad.videos",
83
- "ad.discovery_video_responsive_ad.videos.asset",
84
51
  "ad.display_upload_ad.display_upload_product_type",
85
52
  "ad.display_upload_ad.media_bundle",
86
- "ad.display_upload_ad.media_bundle.asset",
87
53
  "ad.display_url",
88
54
  "ad.expanded_dynamic_search_ad.description",
89
55
  "ad.expanded_dynamic_search_ad.description2",
@@ -129,13 +95,10 @@ const fields = [
129
95
  "ad.local_ad.descriptions",
130
96
  "ad.local_ad.headlines",
131
97
  "ad.local_ad.logo_images",
132
- "ad.local_ad.logo_images.asset",
133
98
  "ad.local_ad.marketing_images",
134
- "ad.local_ad.marketing_images.asset",
135
99
  "ad.local_ad.path1",
136
100
  "ad.local_ad.path2",
137
101
  "ad.local_ad.videos",
138
- "ad.local_ad.videos.asset",
139
102
  "ad.name",
140
103
  "ad.resource_name",
141
104
  "ad.responsive_display_ad.accent_color",
@@ -148,19 +111,14 @@ const fields = [
148
111
  "ad.responsive_display_ad.format_setting",
149
112
  "ad.responsive_display_ad.headlines",
150
113
  "ad.responsive_display_ad.logo_images",
151
- "ad.responsive_display_ad.logo_images.asset",
152
114
  "ad.responsive_display_ad.long_headline",
153
115
  "ad.responsive_display_ad.main_color",
154
116
  "ad.responsive_display_ad.marketing_images",
155
- "ad.responsive_display_ad.marketing_images.asset",
156
117
  "ad.responsive_display_ad.price_prefix",
157
118
  "ad.responsive_display_ad.promo_text",
158
119
  "ad.responsive_display_ad.square_logo_images",
159
- "ad.responsive_display_ad.square_logo_images.asset",
160
120
  "ad.responsive_display_ad.square_marketing_images",
161
- "ad.responsive_display_ad.square_marketing_images.asset",
162
121
  "ad.responsive_display_ad.youtube_videos",
163
- "ad.responsive_display_ad.youtube_videos.asset",
164
122
  "ad.responsive_search_ad.descriptions",
165
123
  "ad.responsive_search_ad.headlines",
166
124
  "ad.responsive_search_ad.path1",
@@ -199,12 +157,10 @@ const fields = [
199
157
  "ad.video_responsive_ad.breadcrumb2",
200
158
  "ad.video_responsive_ad.call_to_actions",
201
159
  "ad.video_responsive_ad.companion_banners",
202
- "ad.video_responsive_ad.companion_banners.asset",
203
160
  "ad.video_responsive_ad.descriptions",
204
161
  "ad.video_responsive_ad.headlines",
205
162
  "ad.video_responsive_ad.long_headlines",
206
163
  "ad.video_responsive_ad.videos",
207
- "ad.video_responsive_ad.videos.asset",
208
164
  "ad_group",
209
165
  "ad_strength",
210
166
  "labels",
@@ -257,7 +213,6 @@ const metrics = [
257
213
  "average_cpc",
258
214
  "average_cpe",
259
215
  "average_cpm",
260
- "average_cpv",
261
216
  "average_order_value_micros",
262
217
  "average_page_views",
263
218
  "average_time_on_site",
@@ -312,8 +267,8 @@ const metrics = [
312
267
  "video_quartile_p25_rate",
313
268
  "video_quartile_p50_rate",
314
269
  "video_quartile_p75_rate",
315
- "video_view_rate",
316
- "video_views",
270
+ "video_trueview_view_rate",
271
+ "video_trueview_views",
317
272
  "view_through_conversions",
318
273
  ].map((f) => getOption(f, "metrics"));
319
274
 
@@ -82,7 +82,6 @@ const metrics = [
82
82
  "average_cpc",
83
83
  "average_cpe",
84
84
  "average_cpm",
85
- "average_cpv",
86
85
  "average_order_value_micros",
87
86
  "average_page_views",
88
87
  "average_time_on_site",
@@ -152,8 +151,8 @@ const metrics = [
152
151
  "video_quartile_p25_rate",
153
152
  "video_quartile_p50_rate",
154
153
  "video_quartile_p75_rate",
155
- "video_view_rate",
156
- "video_views",
154
+ "video_trueview_view_rate",
155
+ "video_trueview_views",
157
156
  "view_through_conversions",
158
157
  ].map((f) => getOption(f, "metrics"));
159
158
 
@@ -17,12 +17,12 @@ const fields = [
17
17
  "campaign_budget",
18
18
  "campaign_group",
19
19
  "commission.commission_rate_micros",
20
- "discovery_campaign_settings.upgraded_targeting",
20
+ "contains_eu_political_advertising",
21
+ "demand_gen_campaign_settings.upgraded_targeting",
21
22
  "dynamic_search_ads_setting.domain_name",
22
- "dynamic_search_ads_setting.feeds",
23
23
  "dynamic_search_ads_setting.language_code",
24
24
  "dynamic_search_ads_setting.use_supplied_urls_only",
25
- "end_date",
25
+ "end_date_time",
26
26
  "excluded_parent_asset_field_types",
27
27
  "excluded_parent_asset_set_types",
28
28
  "experiment_type",
@@ -71,7 +71,7 @@ const fields = [
71
71
  "shopping_setting.feed_label",
72
72
  "shopping_setting.merchant_id",
73
73
  "shopping_setting.use_vehicle_inventory",
74
- "start_date",
74
+ "start_date_time",
75
75
  "status",
76
76
  "target_cpa.cpc_bid_ceiling_micros",
77
77
  "target_cpa.cpc_bid_floor_micros",
@@ -91,10 +91,8 @@ const fields = [
91
91
  "tracking_url_template",
92
92
  "travel_campaign_settings.travel_account_id",
93
93
  "url_custom_parameters",
94
- "url_expansion_opt_out",
95
94
  "vanity_pharma.vanity_pharma_display_url_mode",
96
95
  "vanity_pharma.vanity_pharma_text",
97
- "video_brand_safety_suitability",
98
96
  ].map((f) => getOption(f, "campaign"));
99
97
 
100
98
  const segments = [
@@ -121,7 +119,7 @@ const segments = [
121
119
  "sk_ad_network_ad_event_type",
122
120
  "sk_ad_network_attribution_credit",
123
121
  "sk_ad_network_coarse_conversion_value",
124
- "sk_ad_network_conversion_value",
122
+ "sk_ad_network_fine_conversion_value",
125
123
  "sk_ad_network_postback_sequence_index",
126
124
  "sk_ad_network_source_app.sk_ad_network_source_app_id",
127
125
  "sk_ad_network_source_domain",
@@ -170,7 +168,6 @@ const metrics = [
170
168
  "average_cpc",
171
169
  "average_cpe",
172
170
  "average_cpm",
173
- "average_cpv",
174
171
  "average_impression_frequency_per_user",
175
172
  "average_order_value_micros",
176
173
  "average_page_views",
@@ -260,8 +257,8 @@ const metrics = [
260
257
  "video_quartile_p25_rate",
261
258
  "video_quartile_p50_rate",
262
259
  "video_quartile_p75_rate",
263
- "video_view_rate",
264
- "video_views",
260
+ "video_trueview_view_rate",
261
+ "video_trueview_views",
265
262
  "view_through_conversions",
266
263
  "view_through_conversions_from_location_asset_click_to_call",
267
264
  "view_through_conversions_from_location_asset_directions",
@@ -56,7 +56,7 @@ const segments = [
56
56
  "sk_ad_network_ad_event_type",
57
57
  "sk_ad_network_attribution_credit",
58
58
  "sk_ad_network_coarse_conversion_value",
59
- "sk_ad_network_conversion_value",
59
+ "sk_ad_network_fine_conversion_value",
60
60
  "sk_ad_network_postback_sequence_index",
61
61
  "sk_ad_network_source_app.sk_ad_network_source_app_id",
62
62
  "sk_ad_network_source_domain",
@@ -98,7 +98,6 @@ const metrics = [
98
98
  "average_cpc",
99
99
  "average_cpe",
100
100
  "average_cpm",
101
- "average_cpv",
102
101
  "average_order_value_micros",
103
102
  "clicks",
104
103
  "content_budget_lost_impression_share",
@@ -152,8 +151,8 @@ const metrics = [
152
151
  "value_per_all_conversions_by_conversion_date",
153
152
  "value_per_conversion",
154
153
  "value_per_conversions_by_conversion_date",
155
- "video_view_rate",
156
- "video_views",
154
+ "video_trueview_view_rate",
155
+ "video_trueview_views",
157
156
  "view_through_conversions",
158
157
  "view_through_conversions_from_location_asset_click_to_call",
159
158
  "view_through_conversions_from_location_asset_directions",