@segment/action-destinations 3.290.0-staging-da759ff07 → 3.290.0-staging-7f497815f

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 (90) hide show
  1. package/dist/destinations/blackbaud-raisers-edge-nxt/utils/index.d.ts +1 -1
  2. package/dist/destinations/customerio/test-helper.d.ts +1 -1
  3. package/dist/destinations/customerio/utils.d.ts +1 -1
  4. package/dist/destinations/engage/utils/track.d.ts +10 -10
  5. package/dist/destinations/google-enhanced-conversions/functions.d.ts +23 -3
  6. package/dist/destinations/google-enhanced-conversions/functions.js +310 -3
  7. package/dist/destinations/google-enhanced-conversions/functions.js.map +1 -1
  8. package/dist/destinations/google-enhanced-conversions/generated-types.d.ts +4 -0
  9. package/dist/destinations/google-enhanced-conversions/index.d.ts +8 -2
  10. package/dist/destinations/google-enhanced-conversions/index.js +52 -1
  11. package/dist/destinations/google-enhanced-conversions/index.js.map +1 -1
  12. package/dist/destinations/google-enhanced-conversions/types.d.ts +51 -0
  13. package/dist/destinations/google-enhanced-conversions/userList/index.js +15 -6
  14. package/dist/destinations/google-enhanced-conversions/userList/index.js.map +1 -1
  15. package/package.json +3 -3
  16. package/dist/destinations/amazon-ads/generated-types.d.ts +0 -3
  17. package/dist/destinations/amazon-ads/generated-types.js +0 -3
  18. package/dist/destinations/amazon-ads/generated-types.js.map +0 -1
  19. package/dist/destinations/amazon-ads/index.d.ts +0 -4
  20. package/dist/destinations/amazon-ads/index.js +0 -87
  21. package/dist/destinations/amazon-ads/index.js.map +0 -1
  22. package/dist/destinations/amazon-ads/syncAudiences/generated-types.d.ts +0 -2
  23. package/dist/destinations/amazon-ads/syncAudiences/generated-types.js +0 -3
  24. package/dist/destinations/amazon-ads/syncAudiences/generated-types.js.map +0 -1
  25. package/dist/destinations/amazon-ads/syncAudiences/index.d.ts +0 -5
  26. package/dist/destinations/amazon-ads/syncAudiences/index.js +0 -15
  27. package/dist/destinations/amazon-ads/syncAudiences/index.js.map +0 -1
  28. package/dist/destinations/amazon-ads/types.d.ts +0 -22
  29. package/dist/destinations/amazon-ads/types.js +0 -11
  30. package/dist/destinations/amazon-ads/types.js.map +0 -1
  31. package/dist/destinations/amazon-ads/utils.d.ts +0 -25
  32. package/dist/destinations/amazon-ads/utils.js +0 -8
  33. package/dist/destinations/amazon-ads/utils.js.map +0 -1
  34. package/dist/destinations/contentstack/constants.d.ts +0 -3
  35. package/dist/destinations/contentstack/constants.js +0 -7
  36. package/dist/destinations/contentstack/constants.js.map +0 -1
  37. package/dist/destinations/dynamic-yield-audiences/syncAudience/types.d.ts +0 -22
  38. package/dist/destinations/dynamic-yield-audiences/syncAudience/types.js +0 -3
  39. package/dist/destinations/dynamic-yield-audiences/syncAudience/types.js.map +0 -1
  40. package/dist/destinations/dynamic-yield-audiences/types.d.ts +0 -8
  41. package/dist/destinations/dynamic-yield-audiences/types.js +0 -12
  42. package/dist/destinations/dynamic-yield-audiences/types.js.map +0 -1
  43. package/dist/destinations/engage/sendgrid/Profile.d.ts +0 -6
  44. package/dist/destinations/engage/sendgrid/Profile.js +0 -3
  45. package/dist/destinations/engage/sendgrid/Profile.js.map +0 -1
  46. package/dist/destinations/engage/sendgrid/previewApiLookup/api-lookups.d.ts +0 -21
  47. package/dist/destinations/engage/sendgrid/previewApiLookup/api-lookups.js +0 -174
  48. package/dist/destinations/engage/sendgrid/previewApiLookup/api-lookups.js.map +0 -1
  49. package/dist/destinations/klaviyo/orderCompleted/formatters.d.ts +0 -26
  50. package/dist/destinations/klaviyo/orderCompleted/formatters.js +0 -62
  51. package/dist/destinations/klaviyo/orderCompleted/formatters.js.map +0 -1
  52. package/dist/destinations/klaviyo/orderCompleted/types.d.ts +0 -2
  53. package/dist/destinations/klaviyo/orderCompleted/types.js +0 -3
  54. package/dist/destinations/klaviyo/orderCompleted/types.js.map +0 -1
  55. package/dist/destinations/responsys/asyncMergePetRecords/generated-types.d.ts +0 -14
  56. package/dist/destinations/responsys/asyncMergePetRecords/generated-types.js +0 -3
  57. package/dist/destinations/responsys/asyncMergePetRecords/generated-types.js.map +0 -1
  58. package/dist/destinations/responsys/asyncMergePetRecords/index.d.ts +0 -5
  59. package/dist/destinations/responsys/asyncMergePetRecords/index.js +0 -113
  60. package/dist/destinations/responsys/asyncMergePetRecords/index.js.map +0 -1
  61. package/dist/destinations/responsys/asyncMergeProfileListMembers/generated-types.d.ts +0 -20
  62. package/dist/destinations/responsys/asyncMergeProfileListMembers/generated-types.js +0 -3
  63. package/dist/destinations/responsys/asyncMergeProfileListMembers/generated-types.js.map +0 -1
  64. package/dist/destinations/responsys/asyncMergeProfileListMembers/index.d.ts +0 -5
  65. package/dist/destinations/responsys/asyncMergeProfileListMembers/index.js +0 -174
  66. package/dist/destinations/responsys/asyncMergeProfileListMembers/index.js.map +0 -1
  67. package/dist/destinations/responsys/rsp-operations.d.ts +0 -14
  68. package/dist/destinations/responsys/rsp-operations.js +0 -33
  69. package/dist/destinations/responsys/rsp-operations.js.map +0 -1
  70. package/dist/destinations/responsys/rsp-properties.d.ts +0 -4
  71. package/dist/destinations/responsys/rsp-properties.js +0 -27
  72. package/dist/destinations/responsys/rsp-properties.js.map +0 -1
  73. package/dist/destinations/snap-conversions-api/_tests_/capiV2tests.d.ts +0 -1
  74. package/dist/destinations/snap-conversions-api/_tests_/capiV2tests.js +0 -381
  75. package/dist/destinations/snap-conversions-api/_tests_/capiV2tests.js.map +0 -1
  76. package/dist/destinations/snap-conversions-api/_tests_/capiV3tests.d.ts +0 -1
  77. package/dist/destinations/snap-conversions-api/_tests_/capiV3tests.js +0 -581
  78. package/dist/destinations/snap-conversions-api/_tests_/capiV3tests.js.map +0 -1
  79. package/dist/destinations/snap-conversions-api/reportConversionEvent/snap-capi-v2.d.ts +0 -4
  80. package/dist/destinations/snap-conversions-api/reportConversionEvent/snap-capi-v2.js +0 -97
  81. package/dist/destinations/snap-conversions-api/reportConversionEvent/snap-capi-v2.js.map +0 -1
  82. package/dist/destinations/snap-conversions-api/snap-capi-properties.d.ts +0 -30
  83. package/dist/destinations/snap-conversions-api/snap-capi-properties.js +0 -316
  84. package/dist/destinations/snap-conversions-api/snap-capi-properties.js.map +0 -1
  85. package/dist/destinations/tiktok-conversions/reportWebEvent/formatter.d.ts +0 -3
  86. package/dist/destinations/tiktok-conversions/reportWebEvent/formatter.js +0 -34
  87. package/dist/destinations/tiktok-conversions/reportWebEvent/formatter.js.map +0 -1
  88. package/dist/destinations/tiktok-offline-conversions/reportOfflineEvent/formatter.d.ts +0 -3
  89. package/dist/destinations/tiktok-offline-conversions/reportOfflineEvent/formatter.js +0 -43
  90. package/dist/destinations/tiktok-offline-conversions/reportOfflineEvent/formatter.js.map +0 -1
@@ -9,7 +9,7 @@ export declare const dateStringToFuzzyDate: (dateString: string | number) => fal
9
9
  y: string;
10
10
  };
11
11
  export declare const augmentFieldsWithConstituentFields: (fields: Record<string, InputField>) => Record<string, InputField>;
12
- export declare const splitConstituentPayload: (payload: CreateOrUpdateIndividualConstituentPayload) => (Partial<Phone> | Partial<Constituent> | Partial<Address> | Partial<OnlinePresence>)[];
12
+ export declare const splitConstituentPayload: (payload: CreateOrUpdateIndividualConstituentPayload) => (Partial<Constituent> | Partial<Address> | Partial<OnlinePresence> | Partial<Phone>)[];
13
13
  export declare const buildConstituentPayloadFromPayload: (payload: StringIndexedObject) => Partial<CreateOrUpdateIndividualConstituentPayload>;
14
14
  export declare const buildGiftDataFromPayload: (constituentId: string, payload: CreateGiftPayload) => Partial<Gift>;
15
15
  export declare const buildConstituentActionDataFromPayload: (constituentId: string, payload: CreateConstituentAction) => Partial<ConstituentAction>;
@@ -2,5 +2,5 @@
2
2
  import nock from 'nock';
3
3
  import { AccountRegion } from './utils';
4
4
  export declare const nockTrackInternalEndpoint: (region: AccountRegion) => nock.Scope;
5
- export declare function getDefaultMappings(action: string): import("lodash").Dictionary<import("@segment/actions-core/destination-kittypes").FieldValue | undefined>;
5
+ export declare function getDefaultMappings(action: string): import("lodash").Dictionary<import("@segment/actions-core/src/destination-kit/types").FieldValue | undefined>;
6
6
  export declare function testRunner(fn: Function): void;
@@ -1,6 +1,6 @@
1
1
  export declare const trackApiEndpoint: ({ accountRegion }: {
2
2
  accountRegion?: string | undefined;
3
- }) => "https://track.customer.io" | "https://track-eu.customer.io";
3
+ }) => "https://track-eu.customer.io" | "https://track.customer.io";
4
4
  export declare enum AccountRegion {
5
5
  US = "US \uD83C\uDDFA\uD83C\uDDF8",
6
6
  EU = "EU \uD83C\uDDEA\uD83C\uDDFA"
@@ -1,12 +1,12 @@
1
1
  import { ContextFromDecorator } from './operationTracking';
2
2
  export declare const track: ((decoratorArgs?: ({
3
+ shouldStats?: ((args: import("./operationTracking").OperationStatsEventArgs) => boolean | void) | undefined;
4
+ } & {
3
5
  onError?: ((ctx: import("./operationTracking").OperationErrorHandlerContext<import("./operationTracking").TryCatchFinallyContext<(this: any, ...args: any[]) => any>>) => void) | undefined;
4
6
  } & {
5
7
  onTry?: ((ctx: import("./operationTracking").TryCatchFinallyContext<(this: any, ...args: any[]) => any>) => void) | undefined;
6
8
  onFinally?: ((ctx: import("./operationTracking").TryCatchFinallyContext<(this: any, ...args: any[]) => any>) => void) | undefined;
7
9
  } & import("./operationTracking").OperationLoggerDecoratorArgs & {
8
- shouldStats?: ((args: import("./operationTracking").OperationStatsEventArgs) => boolean | void) | undefined;
9
- } & {
10
10
  wrapIntegrationError?: ((ctx: import("./operationTracking").TryCatchFinallyContext<(this: any, ...args: any[]) => any>) => import("@segment/actions-core/*").IntegrationError | [message: string, code: string, status: number]) | undefined;
11
11
  }) | undefined) => import("./operationTracking").GenericMethodDecorator<(this: any, ...args: any[]) => any>) & {
12
12
  getCurrentOperation(classInstance: any): (import("./operationTracking").TryCatchFinallyContext<(this: any, ...args: any[]) => any> & {
@@ -15,6 +15,14 @@ export declare const track: ((decoratorArgs?: ({
15
15
  }) | undefined;
16
16
  } & {
17
17
  _contextType: import("./operationTracking").TryCatchFinallyContext<(this: any, ...args: any[]) => any> & {
18
+ tags: string[];
19
+ sharedContext: {
20
+ tags: string[];
21
+ };
22
+ decoratorArgs?: {
23
+ shouldStats?: ((args: import("./operationTracking").OperationStatsEventArgs) => boolean | void) | undefined;
24
+ } | undefined;
25
+ } & {
18
26
  decoratorArgs?: {
19
27
  onError?: ((ctx: import("./operationTracking").OperationErrorHandlerContext<import("./operationTracking").TryCatchFinallyContext<(this: any, ...args: any[]) => any>>) => void) | undefined;
20
28
  } | undefined;
@@ -35,14 +43,6 @@ export declare const track: ((decoratorArgs?: ({
35
43
  logMetadata?: Record<string, unknown> | undefined;
36
44
  decoratorArgs?: import("./operationTracking").OperationLoggerDecoratorArgs | undefined;
37
45
  sharedContext: import("./operationTracking").OperationLoggerSharedContext;
38
- } & {
39
- tags: string[];
40
- sharedContext: {
41
- tags: string[];
42
- };
43
- decoratorArgs?: {
44
- shouldStats?: ((args: import("./operationTracking").OperationStatsEventArgs) => boolean | void) | undefined;
45
- } | undefined;
46
46
  } & {
47
47
  decoratorArgs?: {
48
48
  wrapIntegrationError?: ((ctx: import("./operationTracking").TryCatchFinallyContext<(this: any, ...args: any[]) => any>) => import("@segment/actions-core/*").IntegrationError | [message: string, code: string, status: number]) | undefined;
@@ -1,11 +1,13 @@
1
- import { ConversionCustomVariable, PartialErrorResponse, QueryResponse, CustomVariableInterface } from './types';
1
+ import { ConversionCustomVariable, PartialErrorResponse, QueryResponse, CustomVariableInterface, CreateAudienceInput } from './types';
2
2
  import { ModifiedResponse, RequestClient, DynamicFieldResponse } from '@segment/actions-core';
3
3
  import { StatsContext } from '@segment/actions-core/destination-kit';
4
4
  import { Features } from '@segment/actions-core/mapping-kit';
5
5
  import { HTTPError } from '@segment/actions-core';
6
- export declare const API_VERSION = "v15";
7
- export declare const CANARY_API_VERSION = "v15";
6
+ import type { Payload as UserListPayload } from './userList/generated-types';
7
+ export declare const API_VERSION = "v16";
8
+ export declare const CANARY_API_VERSION = "v16";
8
9
  export declare const FLAGON_NAME = "google-enhanced-canary-version";
10
+ export declare function sha256SmartHashFunction(value: string): string;
9
11
  export declare class GoogleAdsError extends HTTPError {
10
12
  response: Response & {
11
13
  status: string;
@@ -22,3 +24,21 @@ export declare function convertTimestamp(timestamp: string | undefined): string
22
24
  export declare function getApiVersion(features?: Features, statsContext?: StatsContext): string;
23
25
  export declare const isHashedInformation: (information: string) => boolean;
24
26
  export declare const commonHashedEmailValidation: (email: string) => string;
27
+ export declare function getListIds(request: RequestClient, settings: CreateAudienceInput['settings'], auth?: any): Promise<{
28
+ choices: {
29
+ value: string;
30
+ label: string;
31
+ }[];
32
+ nextPage?: undefined;
33
+ error?: undefined;
34
+ } | {
35
+ choices: never[];
36
+ nextPage: string;
37
+ error: {
38
+ message: string;
39
+ code: string;
40
+ };
41
+ }>;
42
+ export declare function createGoogleAudience(request: RequestClient, input: CreateAudienceInput, auth: CreateAudienceInput['settings']['oauth'], statsContext?: StatsContext): Promise<string>;
43
+ export declare function getGoogleAudience(request: RequestClient, settings: CreateAudienceInput['settings'], externalId: string, auth: CreateAudienceInput['settings']['oauth'], statsContext?: StatsContext): Promise<any>;
44
+ export declare const handleUpdate: (request: RequestClient, settings: CreateAudienceInput['settings'], audienceSettings: CreateAudienceInput['audienceSettings'], payloads: UserListPayload[], hookOutputs: string, syncMode?: string | undefined, statsContext?: StatsContext | undefined) => Promise<unknown>;
@@ -1,13 +1,41 @@
1
1
  "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
11
+ }) : function(o, v) {
12
+ o["default"] = v;
13
+ });
14
+ var __importStar = (this && this.__importStar) || function (mod) {
15
+ if (mod && mod.__esModule) return mod;
16
+ var result = {};
17
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
+ __setModuleDefault(result, mod);
19
+ return result;
20
+ };
2
21
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.commonHashedEmailValidation = exports.isHashedInformation = exports.getApiVersion = exports.convertTimestamp = exports.handleGoogleErrors = exports.getConversionActionDynamicData = exports.getConversionActionId = exports.getCustomVariables = exports.hash = exports.formatCustomVariables = exports.GoogleAdsError = exports.FLAGON_NAME = exports.CANARY_API_VERSION = exports.API_VERSION = void 0;
22
+ exports.handleUpdate = exports.getGoogleAudience = exports.createGoogleAudience = exports.getListIds = exports.commonHashedEmailValidation = exports.isHashedInformation = exports.getApiVersion = exports.convertTimestamp = exports.handleGoogleErrors = exports.getConversionActionDynamicData = exports.getConversionActionId = exports.getCustomVariables = exports.hash = exports.formatCustomVariables = exports.GoogleAdsError = exports.sha256SmartHashFunction = exports.FLAGON_NAME = exports.CANARY_API_VERSION = exports.API_VERSION = void 0;
4
23
  const crypto_1 = require("crypto");
5
24
  const actions_core_1 = require("@segment/actions-core");
6
25
  const formats_1 = require("ajv-formats/dist/formats");
7
26
  const actions_core_2 = require("@segment/actions-core");
8
- exports.API_VERSION = 'v15';
9
- exports.CANARY_API_VERSION = 'v15';
27
+ exports.API_VERSION = 'v16';
28
+ exports.CANARY_API_VERSION = 'v16';
10
29
  exports.FLAGON_NAME = 'google-enhanced-canary-version';
30
+ const crypto = __importStar(require("crypto"));
31
+ const sha256HashedRegex = /^[a-f0-9]{64}$/i;
32
+ function sha256SmartHashFunction(value) {
33
+ if (sha256HashedRegex.test(value)) {
34
+ return value;
35
+ }
36
+ return crypto.createHash('sha256').update(value).digest('hex');
37
+ }
38
+ exports.sha256SmartHashFunction = sha256SmartHashFunction;
11
39
  class GoogleAdsError extends actions_core_2.HTTPError {
12
40
  }
13
41
  exports.GoogleAdsError = GoogleAdsError;
@@ -123,4 +151,283 @@ const commonHashedEmailValidation = (email) => {
123
151
  return String(exports.hash(email));
124
152
  };
125
153
  exports.commonHashedEmailValidation = commonHashedEmailValidation;
154
+ async function getListIds(request, settings, auth) {
155
+ const json = {
156
+ query: `SELECT user_list.id, user_list.name FROM user_list`
157
+ };
158
+ try {
159
+ const response = await request(`https://googleads.googleapis.com/${exports.API_VERSION}/customers/${settings.customerId}/googleAds:search`, {
160
+ method: 'post',
161
+ headers: {
162
+ 'developer-token': `${process.env.ADWORDS_DEVELOPER_TOKEN}`,
163
+ authorization: `Bearer ${auth?.accessToken}`
164
+ },
165
+ json
166
+ });
167
+ const choices = response.data.results.map((input) => {
168
+ return { value: input.userList.id, label: input.userList.name };
169
+ });
170
+ return {
171
+ choices
172
+ };
173
+ }
174
+ catch (err) {
175
+ return {
176
+ choices: [],
177
+ nextPage: '',
178
+ error: {
179
+ message: err.response?.statusText ?? 'Unknown error',
180
+ code: err.response?.status + '' ?? '500'
181
+ }
182
+ };
183
+ }
184
+ }
185
+ exports.getListIds = getListIds;
186
+ async function createGoogleAudience(request, input, auth, statsContext) {
187
+ if (input.audienceSettings.external_id_type === 'MOBILE_ADVERTISING_ID' && !input.audienceSettings.app_id) {
188
+ throw new actions_core_1.PayloadValidationError('App ID is required when external ID type is mobile advertising ID.');
189
+ }
190
+ if (!auth?.refresh_token ||
191
+ !process.env.GOOGLE_ENHANCED_CONVERSIONS_CLIENT_ID ||
192
+ !process.env.GOOGLE_ENHANCED_CONVERSIONS_CLIENT_SECRET) {
193
+ throw new actions_core_1.PayloadValidationError('Oauth credentials missing.');
194
+ }
195
+ const res = await request('https://www.googleapis.com/oauth2/v4/token', {
196
+ method: 'POST',
197
+ body: new URLSearchParams({
198
+ refresh_token: auth.refresh_token,
199
+ client_id: process.env.GOOGLE_ENHANCED_CONVERSIONS_CLIENT_ID,
200
+ client_secret: process.env.GOOGLE_ENHANCED_CONVERSIONS_CLIENT_SECRET,
201
+ grant_type: 'refresh_token'
202
+ })
203
+ });
204
+ const accessToken = res.data.access_token;
205
+ const statsClient = statsContext?.statsClient;
206
+ const statsTags = statsContext?.tags;
207
+ const json = {
208
+ operations: [
209
+ {
210
+ create: {
211
+ crmBasedUserList: {
212
+ uploadKeyType: input.audienceSettings.external_id_type,
213
+ appId: input.audienceSettings.app_id
214
+ },
215
+ membershipLifeSpan: '10000',
216
+ name: `${input.audienceName}`
217
+ }
218
+ }
219
+ ]
220
+ };
221
+ const response = await request(`https://googleads.googleapis.com/${exports.API_VERSION}/customers/${input.settings.customerId}/userLists:mutate`, {
222
+ method: 'post',
223
+ headers: {
224
+ 'developer-token': `${process.env.ADWORDS_DEVELOPER_TOKEN}`,
225
+ authorization: `Bearer ${accessToken}`
226
+ },
227
+ json
228
+ });
229
+ const name = response.data.results[0].resourceName;
230
+ if (!name) {
231
+ statsClient?.incr('createAudience.error', 1, statsTags);
232
+ throw new actions_core_1.IntegrationError('Failed to receive a created customer list id.', 'INVALID_RESPONSE', 400);
233
+ }
234
+ statsClient?.incr('createAudience.success', 1, statsTags);
235
+ return name.split('/')[3];
236
+ }
237
+ exports.createGoogleAudience = createGoogleAudience;
238
+ async function getGoogleAudience(request, settings, externalId, auth, statsContext) {
239
+ if (!auth?.refresh_token ||
240
+ !process.env.GOOGLE_ENHANCED_CONVERSIONS_CLIENT_ID ||
241
+ !process.env.GOOGLE_ENHANCED_CONVERSIONS_CLIENT_SECRET) {
242
+ throw new actions_core_1.PayloadValidationError('Oauth credentials missing.');
243
+ }
244
+ const res = await request('https://www.googleapis.com/oauth2/v4/token', {
245
+ method: 'POST',
246
+ body: new URLSearchParams({
247
+ refresh_token: auth.refresh_token,
248
+ client_id: process.env.GOOGLE_ENHANCED_CONVERSIONS_CLIENT_ID,
249
+ client_secret: process.env.GOOGLE_ENHANCED_CONVERSIONS_CLIENT_SECRET,
250
+ grant_type: 'refresh_token'
251
+ })
252
+ });
253
+ const accessToken = res.data.access_token;
254
+ const statsClient = statsContext?.statsClient;
255
+ const statsTags = statsContext?.tags;
256
+ const json = {
257
+ query: `SELECT user_list.id, user_list.name FROM user_list where user_list.id = '${externalId}'`
258
+ };
259
+ const response = await request(`https://googleads.googleapis.com/${exports.API_VERSION}/customers/${settings.customerId}/googleAds:search`, {
260
+ method: 'post',
261
+ headers: {
262
+ 'developer-token': `${process.env.ADWORDS_DEVELOPER_TOKEN}`,
263
+ authorization: `Bearer ${accessToken}`
264
+ },
265
+ json
266
+ });
267
+ const id = response.data.results[0].userList.id;
268
+ if (!id) {
269
+ statsClient?.incr('getAudience.error', 1, statsTags);
270
+ throw new actions_core_1.IntegrationError('Failed to receive a customer list.', 'INVALID_RESPONSE', 400);
271
+ }
272
+ statsClient?.incr('getAudience.success', 1, statsTags);
273
+ return id;
274
+ }
275
+ exports.getGoogleAudience = getGoogleAudience;
276
+ const formatEmail = (email, hash_data) => {
277
+ if (!hash_data) {
278
+ return email;
279
+ }
280
+ const googleDomain = new RegExp('^(gmail|googlemail).s*', 'g');
281
+ let normalizedEmail = email.toLowerCase().trim();
282
+ const emailParts = normalizedEmail.split('@');
283
+ if (emailParts.length > 1 && emailParts[1].match(googleDomain)) {
284
+ emailParts[0] = emailParts[0].replace('.', '');
285
+ normalizedEmail = `${emailParts[0]}@${emailParts[1]}`;
286
+ }
287
+ return sha256SmartHashFunction(normalizedEmail);
288
+ };
289
+ function formatToE164(phoneNumber, defaultCountryCode) {
290
+ const numericPhoneNumber = phoneNumber.replace(/\D/g, '');
291
+ let formattedPhoneNumber = numericPhoneNumber;
292
+ if (!numericPhoneNumber.startsWith(defaultCountryCode)) {
293
+ formattedPhoneNumber = defaultCountryCode + numericPhoneNumber;
294
+ }
295
+ if (!formattedPhoneNumber.startsWith('+')) {
296
+ formattedPhoneNumber = '+' + formattedPhoneNumber;
297
+ }
298
+ return formattedPhoneNumber;
299
+ }
300
+ const formatPhone = (phone, hash_data) => {
301
+ if (!hash_data) {
302
+ return phone;
303
+ }
304
+ const formattedPhone = formatToE164(phone, '1');
305
+ return sha256SmartHashFunction(formattedPhone);
306
+ };
307
+ const extractUserIdentifiers = (payloads, audienceSettings, syncMode) => {
308
+ const removeUserIdentifiers = [];
309
+ const addUserIdentifiers = [];
310
+ const identifierFunctions = {
311
+ MOBILE_ADVERTISING_ID: (payload) => ({
312
+ mobileId: payload.mobile_advertising_id?.trim()
313
+ }),
314
+ CRM_ID: (payload) => ({
315
+ thirdPartyUserId: payload.crm_id?.trim()
316
+ }),
317
+ CONTACT_INFO: (payload) => {
318
+ const identifiers = [];
319
+ if (payload.email) {
320
+ identifiers.push({
321
+ hashedEmail: formatEmail(payload.email)
322
+ });
323
+ }
324
+ if (payload.phone) {
325
+ identifiers.push({
326
+ hashedPhoneNumber: formatPhone(payload.phone)
327
+ });
328
+ }
329
+ if (payload.first_name || payload.last_name || payload.country_code || payload.postal_code) {
330
+ identifiers.push({
331
+ addressInfo: {
332
+ hashedFirstName: sha256SmartHashFunction(payload.first_name ?? ''),
333
+ hashedLastName: sha256SmartHashFunction(payload.last_name ?? ''),
334
+ countryCode: payload.country_code ?? '',
335
+ postalCode: payload.postal_code ?? ''
336
+ }
337
+ });
338
+ }
339
+ return identifiers;
340
+ }
341
+ };
342
+ for (const payload of payloads) {
343
+ if (payload.event_name == 'Audience Entered' || syncMode == 'add') {
344
+ addUserIdentifiers.push(identifierFunctions[audienceSettings.external_id_type](payload));
345
+ }
346
+ else if (payload.event_name == 'Audience Exited' || syncMode == 'delete') {
347
+ removeUserIdentifiers.push(identifierFunctions[audienceSettings.external_id_type](payload));
348
+ }
349
+ }
350
+ return [addUserIdentifiers, removeUserIdentifiers];
351
+ };
352
+ const createOfflineUserJob = async (request, payload, settings, hookListId, statsContext) => {
353
+ const url = `https://googleads.googleapis.com/${exports.API_VERSION}/customers/${settings.customerId}/offlineUserDataJobs:create`;
354
+ let external_audience_id = payload.external_audience_id;
355
+ if (hookListId) {
356
+ external_audience_id = hookListId;
357
+ }
358
+ const json = {
359
+ job: {
360
+ type: 'CUSTOMER_MATCH_USER_LIST',
361
+ customerMatchUserListMetadata: {
362
+ userList: `customers/${settings.customerId}/userLists/${external_audience_id}`
363
+ }
364
+ }
365
+ };
366
+ try {
367
+ const response = await request(url, {
368
+ method: 'post',
369
+ headers: {
370
+ 'developer-token': `${process.env.ADWORDS_DEVELOPER_TOKEN}`
371
+ },
372
+ json
373
+ });
374
+ return response.data.resourceName;
375
+ }
376
+ catch (error) {
377
+ statsContext?.statsClient?.incr('error.createJob', 1, statsContext?.tags);
378
+ console.log(error);
379
+ throw new actions_core_1.IntegrationError(error.response?.statusText, 'INVALID_RESPONSE', error.response?.status);
380
+ }
381
+ };
382
+ const addOperations = async (request, userIdentifiers, resourceName, statsContext) => {
383
+ const url = `https://googleads.googleapis.com/${exports.API_VERSION}/${resourceName}:addOperations`;
384
+ const json = {
385
+ operations: userIdentifiers,
386
+ enable_warnings: true
387
+ };
388
+ try {
389
+ const response = await request(url, {
390
+ method: 'post',
391
+ headers: {
392
+ 'developer-token': `${process.env.ADWORDS_DEVELOPER_TOKEN}`
393
+ },
394
+ json
395
+ });
396
+ return response.data;
397
+ }
398
+ catch (error) {
399
+ statsContext?.statsClient?.incr('error.addOperations', 1, statsContext?.tags);
400
+ throw new actions_core_1.IntegrationError(error.response?.statusText, 'INVALID_RESPONSE', error.response?.status);
401
+ }
402
+ };
403
+ const runOfflineUserJob = async (request, resourceName, statsContext) => {
404
+ const url = `https://googleads.googleapis.com/${exports.API_VERSION}/${resourceName}:run`;
405
+ try {
406
+ const response = await request(url, {
407
+ method: 'post',
408
+ headers: {
409
+ 'developer-token': `${process.env.ADWORDS_DEVELOPER_TOKEN}`
410
+ }
411
+ });
412
+ return response.data;
413
+ }
414
+ catch (error) {
415
+ statsContext?.statsClient?.incr('error.runJob', 1, statsContext?.tags);
416
+ throw new actions_core_1.IntegrationError(error.response?.statusText, 'INVALID_RESPONSE', error.response?.status);
417
+ }
418
+ };
419
+ const handleUpdate = async (request, settings, audienceSettings, payloads, hookOutputs, syncMode, statsContext) => {
420
+ const [adduserIdentifiers, removeUserIdentifiers] = extractUserIdentifiers(payloads, audienceSettings, syncMode);
421
+ const resourceName = await createOfflineUserJob(request, payloads[0], settings, hookOutputs, statsContext);
422
+ if (adduserIdentifiers.length > 0) {
423
+ await addOperations(request, [{ create: { userIdentifiers: adduserIdentifiers } }], resourceName, statsContext);
424
+ }
425
+ if (removeUserIdentifiers.length > 0) {
426
+ await addOperations(request, [{ remove: { userIdentifiers: removeUserIdentifiers } }], resourceName, statsContext);
427
+ }
428
+ const executedJob = await runOfflineUserJob(request, resourceName, statsContext);
429
+ statsContext?.statsClient?.incr('success.offlineUpdateAudience', 1, statsContext?.tags);
430
+ return executedJob;
431
+ };
432
+ exports.handleUpdate = handleUpdate;
126
433
  //# sourceMappingURL=functions.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"functions.js","sourceRoot":"","sources":["../../../src/destinations/google-enhanced-conversions/functions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"functions.js","sourceRoot":"","sources":["../../../src/destinations/google-enhanced-conversions/functions.ts"],"names":[],"mappings":"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"}
@@ -2,3 +2,7 @@ export interface Settings {
2
2
  conversionTrackingId?: string;
3
3
  customerId?: string;
4
4
  }
5
+ export interface AudienceSettings {
6
+ external_id_type: string;
7
+ app_id?: string;
8
+ }
@@ -1,4 +1,10 @@
1
- import { DestinationDefinition } from '@segment/actions-core';
1
+ import { AudienceDestinationDefinition } from '@segment/actions-core';
2
2
  import type { Settings } from './generated-types';
3
- declare const destination: DestinationDefinition<Settings>;
3
+ export interface RefreshTokenResponse {
4
+ access_token: string;
5
+ scope: string;
6
+ expires_in: number;
7
+ token_type: string;
8
+ }
9
+ declare const destination: AudienceDestinationDefinition<Settings>;
4
10
  export default destination;
@@ -7,6 +7,8 @@ const postConversion_1 = __importDefault(require("./postConversion"));
7
7
  const uploadCallConversion_1 = __importDefault(require("./uploadCallConversion"));
8
8
  const uploadClickConversion_1 = __importDefault(require("./uploadClickConversion"));
9
9
  const uploadConversionAdjustment_1 = __importDefault(require("./uploadConversionAdjustment"));
10
+ const functions_1 = require("./functions");
11
+ const userList_1 = __importDefault(require("./userList"));
10
12
  const destination = {
11
13
  name: 'Google Ads Conversions',
12
14
  slug: 'actions-google-enhanced-conversions',
@@ -48,11 +50,60 @@ const destination = {
48
50
  }
49
51
  };
50
52
  },
53
+ audienceFields: {
54
+ external_id_type: {
55
+ type: 'string',
56
+ label: 'External ID Type',
57
+ description: 'Customer match upload key types.',
58
+ required: true,
59
+ choices: [
60
+ { label: 'CONTACT INFO', value: 'CONTACT_INFO' },
61
+ { label: 'CRM ID', value: 'CRM_ID' },
62
+ { label: 'MOBILE ADVERTISING ID', value: 'MOBILE_ADVERTISING_ID' }
63
+ ]
64
+ },
65
+ app_id: {
66
+ label: 'App ID',
67
+ description: 'A string that uniquely identifies a mobile application from which the data was collected. Required if external ID type is mobile advertising ID',
68
+ type: 'string',
69
+ depends_on: {
70
+ match: 'all',
71
+ conditions: [
72
+ {
73
+ fieldKey: 'external_id_type',
74
+ operator: 'is',
75
+ value: 'MOBILE_ADVERTISING_ID'
76
+ }
77
+ ]
78
+ }
79
+ }
80
+ },
81
+ audienceConfig: {
82
+ mode: {
83
+ type: 'synced',
84
+ full_audience_sync: false
85
+ },
86
+ async createAudience(request, createAudienceInput) {
87
+ const auth = createAudienceInput.settings.oauth;
88
+ const userListId = await functions_1.createGoogleAudience(request, createAudienceInput, auth, createAudienceInput.statsContext);
89
+ return {
90
+ externalId: userListId
91
+ };
92
+ },
93
+ async getAudience(request, getAudienceInput) {
94
+ const auth = getAudienceInput.settings.oauth;
95
+ const userListId = await functions_1.getGoogleAudience(request, getAudienceInput.settings, getAudienceInput.externalId, auth, getAudienceInput.statsContext);
96
+ return {
97
+ externalId: userListId
98
+ };
99
+ }
100
+ },
51
101
  actions: {
52
102
  postConversion: postConversion_1.default,
53
103
  uploadClickConversion: uploadClickConversion_1.default,
54
104
  uploadCallConversion: uploadCallConversion_1.default,
55
- uploadConversionAdjustment: uploadConversionAdjustment_1.default
105
+ uploadConversionAdjustment: uploadConversionAdjustment_1.default,
106
+ userList: userList_1.default
56
107
  }
57
108
  };
58
109
  exports.default = destination;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/destinations/google-enhanced-conversions/index.ts"],"names":[],"mappings":";;;;;AAEA,sEAA6C;AAC7C,kFAAyD;AACzD,oFAA2D;AAC3D,8FAAqE;AAerE,MAAM,WAAW,GAAoC;IAGnD,IAAI,EAAE,wBAAwB;IAC9B,IAAI,EAAE,qCAAqC;IAC3C,IAAI,EAAE,OAAO;IACb,cAAc,EAAE;QACd,MAAM,EAAE,QAAQ;QAChB,MAAM,EAAE;YACN,oBAAoB,EAAE;gBACpB,KAAK,EAAE,eAAe;gBACtB,WAAW,EACT,qbAAqb;gBACvb,IAAI,EAAE,QAAQ;aACf;YACD,UAAU,EAAE;gBACV,KAAK,EAAE,aAAa;gBACpB,WAAW,EACT,oKAAoK;gBACtK,IAAI,EAAE,QAAQ;aACf;SACF;QACD,kBAAkB,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE;YAQrC,OAAO,IAAI,CAAA;QACb,CAAC;QACD,kBAAkB,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE;YAC9C,MAAM,GAAG,GAAG,MAAM,OAAO,CAAuB,4CAA4C,EAAE;gBAC5F,MAAM,EAAE,MAAM;gBACd,IAAI,EAAE,IAAI,eAAe,CAAC;oBACxB,aAAa,EAAE,IAAI,CAAC,YAAY;oBAChC,SAAS,EAAE,IAAI,CAAC,QAAQ;oBACxB,aAAa,EAAE,IAAI,CAAC,YAAY;oBAChC,UAAU,EAAE,eAAe;iBAC5B,CAAC;aACH,CAAC,CAAA;YAEF,OAAO,EAAE,WAAW,EAAE,GAAG,CAAC,IAAI,CAAC,YAAY,EAAE,CAAA;QAC/C,CAAC;KACF;IACD,aAAa,CAAC,EAAE,IAAI,EAAE;QACpB,OAAO;YACL,OAAO,EAAE;gBACP,aAAa,EAAE,UAAU,IAAI,EAAE,WAAW,EAAE;aAC7C;SACF,CAAA;IACH,CAAC;IACD,OAAO,EAAE;QACP,cAAc,EAAd,wBAAc;QACd,qBAAqB,EAArB,+BAAqB;QACrB,oBAAoB,EAApB,8BAAoB;QACpB,0BAA0B,EAA1B,oCAA0B;KAC3B;CACF,CAAA;AAED,kBAAe,WAAW,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/destinations/google-enhanced-conversions/index.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import type { StatsContext } from '@segment/actions-core';
1
2
  export interface CartItemInterface {
2
3
  productId?: string;
3
4
  quantity?: number;
@@ -104,3 +105,53 @@ export interface PartialErrorResponse {
104
105
  };
105
106
  results: {}[];
106
107
  }
108
+ export interface UserList {
109
+ userList: {
110
+ resourceName: string;
111
+ id: string;
112
+ name: string;
113
+ };
114
+ }
115
+ export interface UserListResponse {
116
+ results: Array<UserList>;
117
+ fieldMask: string;
118
+ }
119
+ export interface CreateAudienceInput {
120
+ audienceName: string;
121
+ settings: {
122
+ customerId?: string;
123
+ conversionTrackingId?: string;
124
+ oauth?: {
125
+ refresh_token?: string;
126
+ };
127
+ };
128
+ audienceSettings: {
129
+ external_id_type: string;
130
+ app_id?: string;
131
+ };
132
+ statsContext?: StatsContext;
133
+ }
134
+ export interface GetAudienceInput {
135
+ externalId: string;
136
+ settings: {
137
+ customerId?: string;
138
+ conversionTrackingId?: string;
139
+ oauth?: {
140
+ refresh_token?: string;
141
+ };
142
+ };
143
+ audienceSettings: {
144
+ external_id_type: string;
145
+ app_id?: string;
146
+ };
147
+ statsContext?: StatsContext;
148
+ }
149
+ export interface CreateGoogleAudienceResponse {
150
+ resourceName?: string;
151
+ results: Array<{
152
+ resourceName: string;
153
+ }>;
154
+ }
155
+ export interface AudienceSettings {
156
+ external_id_type: string;
157
+ }