@getuserfeedback/adapters 0.4.3 → 0.4.4

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.
@@ -1 +1 @@
1
- {"version":3,"file":"template-generation.d.ts","sourceRoot":"","sources":["../../src/gtm/template-generation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"template-generation.d.ts","sourceRoot":"","sources":["../../src/gtm/template-generation.ts"],"names":[],"mappings":"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"}
@@ -26,18 +26,48 @@ const AUTOMATIC_CONSENT_MODE_CONDITION = [
26
26
  type: "EQUALS",
27
27
  },
28
28
  ];
29
- const IDENTIFY_SIMPLE_MODE_CONDITION = [
29
+ const IDENTIFY_ADVANCED_MODE_CONDITION = [
30
30
  {
31
31
  paramName: "identifyMode",
32
- paramValue: "simple",
32
+ paramValue: "advanced",
33
33
  type: "EQUALS",
34
34
  },
35
35
  ];
36
- const IDENTIFY_ADVANCED_MODE_CONDITION = [
36
+ const INTELLIGENT_IDENTIFY_USER_ID_KEYS = [
37
+ "userId",
38
+ "user.userId",
39
+ "user.id",
40
+ "traits.userId",
41
+ "traits.id",
42
+ "context.userId",
43
+ "context.user.id",
44
+ ];
45
+ const INTELLIGENT_IDENTIFY_EMAIL_KEYS = [
46
+ "email",
47
+ "user.email",
48
+ "traits.email",
49
+ "context.email",
50
+ "context.user.email",
51
+ ];
52
+ const INTELLIGENT_IDENTIFY_PHONE_KEYS = [
53
+ "phone",
54
+ "user.phone",
55
+ "traits.phone",
56
+ "context.phone",
57
+ "context.user.phone",
58
+ ];
59
+ const ADVANCED_PRIMARY_IDENTITY_SELECT_ITEMS = [
37
60
  {
38
- paramName: "identifyMode",
39
- paramValue: "advanced",
40
- type: "EQUALS",
61
+ displayValue: "User ID",
62
+ value: "userId",
63
+ },
64
+ {
65
+ displayValue: "Phone",
66
+ value: "phone",
67
+ },
68
+ {
69
+ displayValue: "Email",
70
+ value: "email",
41
71
  },
42
72
  ];
43
73
  const buildAutomaticDefaultScopeMappings = () => DEFAULT_GTM_SCOPE_MAPPINGS.filter((mapping) => isHostConfigurableGtmScope(mapping.scope)).map((mapping) => ({
@@ -278,59 +308,51 @@ export function buildGtmTemplateParameters(_options) {
278
308
  {
279
309
  type: "GROUP",
280
310
  name: "identifyGroup",
281
- displayName: "Identify Settings",
311
+ displayName: "User Identity",
282
312
  groupStyle: "ZIPPY_CLOSED",
283
313
  subParams: [
284
314
  {
285
315
  type: "RADIO",
286
316
  name: "identifyMode",
287
- displayName: "Identify Mode",
317
+ displayName: "Identification mode",
288
318
  simpleValueType: true,
289
- defaultValue: "disabled",
319
+ defaultValue: "intelligent",
290
320
  radioItems: [
321
+ {
322
+ value: "intelligent",
323
+ displayValue: "Intelligent",
324
+ help: "Automatically read common data layer keys for user ID, email, and phone. User ID is sent as `identify(userId)` and email or phone stay as raw traits.",
325
+ },
291
326
  {
292
327
  value: "disabled",
293
328
  displayValue: "Disabled",
294
329
  help: "Do not send identify data from this GTM tag.",
295
330
  },
296
- {
297
- value: "simple",
298
- displayValue: "Simple",
299
- help: "Send a stable user ID and common traits like email or phone from GTM variables.",
300
- },
301
331
  {
302
332
  value: "advanced",
303
333
  displayValue: "Advanced",
304
- help: "Map any traits you want from GTM variables, including email, phone, name, or plan.",
334
+ help: "Choose how GTM encodes the primary identity and add any extra traits you want to send from GTM variables.",
305
335
  },
306
336
  ],
307
337
  },
308
338
  {
309
- type: "TEXT",
310
- name: "identifyUserId",
311
- displayName: "User ID",
312
- simpleValueType: true,
313
- help: "Use a GTM variable that resolves to the signed-in user's stable ID. If GTM is loaded through Segment, this is often a data layer variable for `userId`.",
314
- enablingConditions: [
315
- ...IDENTIFY_SIMPLE_MODE_CONDITION,
316
- ...IDENTIFY_ADVANCED_MODE_CONDITION,
317
- ],
318
- },
319
- {
320
- type: "TEXT",
321
- name: "identifyEmail",
322
- displayName: "Email",
339
+ type: "SELECT",
340
+ name: "identifyPrimaryIdentityType",
341
+ displayName: "Primary identity",
323
342
  simpleValueType: true,
324
- help: "Optional. Sends `email` as an identify trait when available.",
325
- enablingConditions: [...IDENTIFY_SIMPLE_MODE_CONDITION],
343
+ macrosInSelect: false,
344
+ defaultValue: "userId",
345
+ selectItems: [...ADVANCED_PRIMARY_IDENTITY_SELECT_ITEMS],
346
+ help: "Choose whether GTM should encode the primary identity as `identify(userId)` or as a raw identity trait like `email` or `phone`.",
347
+ enablingConditions: [...IDENTIFY_ADVANCED_MODE_CONDITION],
326
348
  },
327
349
  {
328
350
  type: "TEXT",
329
- name: "identifyPhone",
330
- displayName: "Phone",
351
+ name: "identifyPrimaryIdentityValue",
352
+ displayName: "Primary identity value",
331
353
  simpleValueType: true,
332
- help: "Optional. Sends `phone` as an identify trait when available.",
333
- enablingConditions: [...IDENTIFY_SIMPLE_MODE_CONDITION],
354
+ help: "Use a GTM variable that resolves to the selected primary identity value.",
355
+ enablingConditions: [...IDENTIFY_ADVANCED_MODE_CONDITION],
334
356
  },
335
357
  {
336
358
  type: "SIMPLE_TABLE",
@@ -367,6 +389,7 @@ const queryPermission = require("queryPermission");
367
389
  const createQueue = require("createQueue");
368
390
  const isConsentGranted = require("isConsentGranted");
369
391
  const encodeUriComponent = require("encodeUriComponent");
392
+ const copyFromDataLayer = require("copyFromDataLayer");
370
393
 
371
394
  const loaderScriptBaseUrl = ${JSON.stringify(loaderScriptBaseUrl)};
372
395
  const gtmConsentTypes = ${JSON.stringify(GTM_CONSENT_TYPES)};
@@ -375,6 +398,9 @@ const defaultScopeMappings = ${JSON.stringify(defaultTemplateScopeMappings)};
375
398
  const hostConfigurableScopes = ${JSON.stringify(defaultTemplateScopeMappings.map((row) => row.scope))};
376
399
  const defaultAutoDetectColorSchemeAttrs = ${JSON.stringify(DEFAULT_AUTO_DETECT_COLOR_SCHEME_ATTRS)};
377
400
  const queueKey = ${JSON.stringify(GTM_QUEUE_KEY)};
401
+ const intelligentIdentifyUserIdKeys = ${JSON.stringify(INTELLIGENT_IDENTIFY_USER_ID_KEYS)};
402
+ const intelligentIdentifyEmailKeys = ${JSON.stringify(INTELLIGENT_IDENTIFY_EMAIL_KEYS)};
403
+ const intelligentIdentifyPhoneKeys = ${JSON.stringify(INTELLIGENT_IDENTIFY_PHONE_KEYS)};
378
404
 
379
405
  const trimString = function(value) {
380
406
  return typeof value === "string" ? value.trim() : "";
@@ -441,6 +467,15 @@ const normalizeTraitValue = function(value) {
441
467
  return value;
442
468
  };
443
469
 
470
+ const normalizeUserIdValue = function(value) {
471
+ if (typeof value !== "string") {
472
+ return undefined;
473
+ }
474
+
475
+ const trimmedValue = value.trim();
476
+ return trimmedValue ? trimmedValue : undefined;
477
+ };
478
+
444
479
  const addTrait = function(result, name, value) {
445
480
  const traitName = trimString(name);
446
481
  const traitValue = normalizeTraitValue(value);
@@ -450,10 +485,27 @@ const addTrait = function(result, name, value) {
450
485
  result[traitName] = traitValue;
451
486
  };
452
487
 
453
- const getSimpleIdentifyTraits = function(templateData) {
488
+ const getIntelligentIdentifyValue = function(keys) {
489
+ for (let index = 0; index < keys.length; index += 1) {
490
+ const key = keys[index];
491
+ if (!queryPermission("read_data_layer", key)) {
492
+ continue;
493
+ }
494
+
495
+ const value = copyFromDataLayer(key);
496
+ const normalizedValue = normalizeTraitValue(value);
497
+ if (normalizedValue !== undefined) {
498
+ return normalizedValue;
499
+ }
500
+ }
501
+
502
+ return undefined;
503
+ };
504
+
505
+ const getIntelligentIdentifyTraits = function() {
454
506
  const traits = {};
455
- addTrait(traits, "email", templateData.identifyEmail);
456
- addTrait(traits, "phone", templateData.identifyPhone);
507
+ addTrait(traits, "email", getIntelligentIdentifyValue(intelligentIdentifyEmailKeys));
508
+ addTrait(traits, "phone", getIntelligentIdentifyValue(intelligentIdentifyPhoneKeys));
457
509
  return traits;
458
510
  };
459
511
 
@@ -479,19 +531,7 @@ const hasOwnKeys = function(value) {
479
531
  return false;
480
532
  };
481
533
 
482
- const getIdentifyCommand = function(templateData) {
483
- if (
484
- templateData.identifyMode !== "simple" &&
485
- templateData.identifyMode !== "advanced"
486
- ) {
487
- return undefined;
488
- }
489
-
490
- const userId = trimString(templateData.identifyUserId);
491
- const traits =
492
- templateData.identifyMode === "advanced"
493
- ? getAdvancedIdentifyTraits(templateData)
494
- : getSimpleIdentifyTraits(templateData);
534
+ const getIdentifyCommandFromUserIdAndTraits = function(userId, traits) {
495
535
  const hasTraits = hasOwnKeys(traits);
496
536
 
497
537
  if (userId && hasTraits) {
@@ -516,6 +556,51 @@ const getIdentifyCommand = function(templateData) {
516
556
  return undefined;
517
557
  };
518
558
 
559
+ const getIntelligentIdentifyCommand = function() {
560
+ const userId = normalizeUserIdValue(
561
+ getIntelligentIdentifyValue(intelligentIdentifyUserIdKeys),
562
+ );
563
+ const traits = getIntelligentIdentifyTraits();
564
+ return getIdentifyCommandFromUserIdAndTraits(userId, traits);
565
+ };
566
+
567
+ const getAdvancedIdentifyCommand = function(templateData) {
568
+ const traits = getAdvancedIdentifyTraits(templateData);
569
+ const primaryIdentityType = trimString(templateData.identifyPrimaryIdentityType);
570
+ const primaryIdentityValue = normalizeTraitValue(
571
+ templateData.identifyPrimaryIdentityValue,
572
+ );
573
+
574
+ if (primaryIdentityType === "userId") {
575
+ const userId = normalizeUserIdValue(primaryIdentityValue);
576
+ return getIdentifyCommandFromUserIdAndTraits(userId, traits);
577
+ }
578
+
579
+ if (
580
+ primaryIdentityType === "email" ||
581
+ primaryIdentityType === "phone"
582
+ ) {
583
+ addTrait(traits, primaryIdentityType, primaryIdentityValue);
584
+ }
585
+
586
+ return hasOwnKeys(traits)
587
+ ? {
588
+ kind: "identify",
589
+ traits: traits,
590
+ }
591
+ : undefined;
592
+ };
593
+
594
+ const getIdentifyCommand = function(templateData) {
595
+ if (templateData.identifyMode === "intelligent") {
596
+ return getIntelligentIdentifyCommand();
597
+ }
598
+ if (templateData.identifyMode === "advanced") {
599
+ return getAdvancedIdentifyCommand(templateData);
600
+ }
601
+ return undefined;
602
+ };
603
+
519
604
  const getThemeInput = function(templateData) {
520
605
  if (templateData.themeMode === "variable") {
521
606
  return templateData.themeModeVariable;
@@ -752,6 +837,16 @@ export function buildGtmPermissions(input) {
752
837
  ]))),
753
838
  },
754
839
  ]),
840
+ buildPermission("read_data_layer", [
841
+ {
842
+ key: "keyPatterns",
843
+ value: listValue([
844
+ ...INTELLIGENT_IDENTIFY_USER_ID_KEYS,
845
+ ...INTELLIGENT_IDENTIFY_EMAIL_KEYS,
846
+ ...INTELLIGENT_IDENTIFY_PHONE_KEYS,
847
+ ].map((key) => stringValue(key))),
848
+ },
849
+ ]),
755
850
  ];
756
851
  }
757
852
  export function buildGtmTemplateInfo(input) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@getuserfeedback/adapters",
3
- "version": "0.4.3",
3
+ "version": "0.4.4",
4
4
  "description": "getuserfeedback integration adapters",
5
5
  "keywords": [
6
6
  "getuserfeedback",