@metarouter/ajs-starter-kit 1.0.143 → 1.0.145

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 (131) hide show
  1. package/.dist/actioniq/kit.etag.json +1 -1
  2. package/.dist/actioniq/metadata.json +4 -0
  3. package/.dist/actioniq/playbook.etag.json +1 -1
  4. package/.dist/actioniq/playbook.json +2 -1
  5. package/.dist/adjust/kit.etag.json +1 -1
  6. package/.dist/adjust/metadata.json +4 -0
  7. package/.dist/adjust/playbook.etag.json +1 -1
  8. package/.dist/adjust/playbook.json +2 -1
  9. package/.dist/adobe-bdia/connection.etag.json +1 -0
  10. package/.dist/adobe-bdia/connection.json +42 -0
  11. package/.dist/adobe-bdia/kit.etag.json +1 -0
  12. package/.dist/adobe-bdia/metadata.json +25 -0
  13. package/.dist/adobe-bdia/playbook.etag.json +1 -0
  14. package/.dist/adobe-bdia/playbook.json +251 -0
  15. package/.dist/amazon-data-firehose/kit.etag.json +1 -1
  16. package/.dist/amazon-data-firehose/metadata.json +4 -0
  17. package/.dist/amazon-data-firehose/playbook.etag.json +1 -1
  18. package/.dist/amazon-data-firehose/playbook.json +3 -2
  19. package/.dist/amazon-kinesis/kit.etag.json +1 -1
  20. package/.dist/amazon-kinesis/metadata.json +4 -0
  21. package/.dist/amazon-kinesis/playbook.etag.json +1 -1
  22. package/.dist/amazon-kinesis/playbook.json +3 -2
  23. package/.dist/amplitude/kit.etag.json +1 -1
  24. package/.dist/amplitude/metadata.json +4 -0
  25. package/.dist/amplitude/playbook.etag.json +1 -1
  26. package/.dist/amplitude/playbook.json +9 -1
  27. package/.dist/blob/connection.etag.json +1 -1
  28. package/.dist/blob/connection.json +2 -1
  29. package/.dist/blob/kit.etag.json +1 -1
  30. package/.dist/blob/metadata.json +8 -0
  31. package/.dist/blob/playbook.etag.json +1 -1
  32. package/.dist/blob/playbook.json +3 -2
  33. package/.dist/blueshift/kit.etag.json +1 -1
  34. package/.dist/blueshift/metadata.json +4 -0
  35. package/.dist/blueshift/playbook.etag.json +1 -1
  36. package/.dist/blueshift/playbook.json +3 -1
  37. package/.dist/braze/kit.etag.json +1 -1
  38. package/.dist/braze/metadata.json +4 -0
  39. package/.dist/braze/playbook.etag.json +1 -1
  40. package/.dist/braze/playbook.json +2 -1
  41. package/.dist/build-your-own/kit.etag.json +1 -1
  42. package/.dist/build-your-own/metadata.json +4 -0
  43. package/.dist/build-your-own/playbook.etag.json +1 -1
  44. package/.dist/build-your-own/playbook.json +3 -2
  45. package/.dist/clinch/kit.etag.json +1 -1
  46. package/.dist/clinch/metadata.json +4 -0
  47. package/.dist/clinch/playbook.etag.json +1 -1
  48. package/.dist/clinch/playbook.json +3 -2
  49. package/.dist/connection-schemas.json +32 -0
  50. package/.dist/criteo/kit.etag.json +1 -1
  51. package/.dist/gcs/kit.etag.json +1 -1
  52. package/.dist/gcs/metadata.json +4 -0
  53. package/.dist/gcs/playbook.etag.json +1 -1
  54. package/.dist/gcs/playbook.json +3 -2
  55. package/.dist/google-ads/kit.etag.json +1 -1
  56. package/.dist/google-ads/metadata.json +4 -0
  57. package/.dist/google-ads/playbook.etag.json +1 -1
  58. package/.dist/google-ads/playbook.json +2 -1
  59. package/.dist/google-ads-audience/kit.etag.json +1 -1
  60. package/.dist/google-ads-audience/metadata.json +4 -0
  61. package/.dist/google-ads-audience/playbook.etag.json +1 -1
  62. package/.dist/google-ads-audience/playbook.json +3 -1
  63. package/.dist/google-analytics/kit.etag.json +1 -1
  64. package/.dist/google-analytics/metadata.json +4 -0
  65. package/.dist/google-analytics/playbook.etag.json +1 -1
  66. package/.dist/google-analytics/playbook.json +5 -1
  67. package/.dist/google-analytics-4-collect/kit.etag.json +1 -1
  68. package/.dist/google-analytics-4-collect/metadata.json +4 -0
  69. package/.dist/google-analytics-4-collect/playbook.etag.json +1 -1
  70. package/.dist/google-analytics-4-collect/playbook.json +10 -3
  71. package/.dist/google-cm360/kit.etag.json +1 -1
  72. package/.dist/google-cm360/metadata.json +4 -0
  73. package/.dist/google-cm360/playbook.etag.json +1 -1
  74. package/.dist/google-cm360/playbook.json +2 -1
  75. package/.dist/google-pubsub/kit.etag.json +1 -1
  76. package/.dist/google-pubsub/metadata.json +4 -0
  77. package/.dist/google-pubsub/playbook.etag.json +1 -1
  78. package/.dist/google-pubsub/playbook.json +3 -2
  79. package/.dist/impact-radius/kit.etag.json +1 -1
  80. package/.dist/impact-radius/metadata.json +4 -0
  81. package/.dist/impact-radius/playbook.etag.json +1 -1
  82. package/.dist/impact-radius/playbook.json +2 -1
  83. package/.dist/kafka/kit.etag.json +1 -1
  84. package/.dist/kafka/metadata.json +4 -0
  85. package/.dist/kafka/playbook.etag.json +1 -1
  86. package/.dist/kafka/playbook.json +3 -2
  87. package/.dist/nextdoor-capi/kit.etag.json +1 -1
  88. package/.dist/nextdoor-capi/metadata.json +4 -0
  89. package/.dist/nextdoor-capi/playbook.etag.json +1 -1
  90. package/.dist/nextdoor-capi/playbook.json +150 -10
  91. package/.dist/perion/kit.etag.json +1 -1
  92. package/.dist/perion/metadata.json +4 -0
  93. package/.dist/perion/playbook.etag.json +1 -1
  94. package/.dist/perion/playbook.json +4 -1
  95. package/.dist/pinterest/kit.etag.json +1 -1
  96. package/.dist/pinterest/metadata.json +4 -0
  97. package/.dist/pinterest/playbook.etag.json +1 -1
  98. package/.dist/pinterest/playbook.json +6 -1
  99. package/.dist/podscribe/kit.etag.json +1 -1
  100. package/.dist/podscribe/metadata.json +4 -0
  101. package/.dist/podscribe/playbook.etag.json +1 -1
  102. package/.dist/podscribe/playbook.json +4 -3
  103. package/.dist/reddit-ads/connection.etag.json +1 -1
  104. package/.dist/reddit-ads/connection.json +10 -38
  105. package/.dist/reddit-ads/kit.etag.json +1 -1
  106. package/.dist/reddit-ads/metadata.json +5 -1
  107. package/.dist/reddit-ads/playbook.etag.json +1 -1
  108. package/.dist/reddit-ads/playbook.json +57 -41
  109. package/.dist/roomvo/kit.etag.json +1 -1
  110. package/.dist/roomvo/metadata.json +4 -0
  111. package/.dist/roomvo/playbook.etag.json +1 -1
  112. package/.dist/roomvo/playbook.json +2 -1
  113. package/.dist/s3/kit.etag.json +1 -1
  114. package/.dist/s3/metadata.json +4 -0
  115. package/.dist/s3/playbook.etag.json +1 -1
  116. package/.dist/s3/playbook.json +3 -2
  117. package/.dist/snapchat/kit.etag.json +1 -1
  118. package/.dist/snapchat/metadata.json +4 -0
  119. package/.dist/snapchat/playbook.etag.json +1 -1
  120. package/.dist/snapchat/playbook.json +2 -1
  121. package/.dist/snowflake/kit.etag.json +1 -1
  122. package/.dist/snowflake/metadata.json +4 -0
  123. package/.dist/snowflake/playbook.etag.json +1 -1
  124. package/.dist/snowflake/playbook.json +3 -2
  125. package/.dist/ttd-conversions/kit.etag.json +1 -1
  126. package/.dist/ttd-conversions/metadata.json +4 -0
  127. package/.dist/ttd-conversions/playbook.etag.json +1 -1
  128. package/.dist/ttd-conversions/playbook.json +3 -2
  129. package/README.md +63 -40
  130. package/index.js +10 -0
  131. package/package.json +1 -1
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "1.1.0",
2
+ "version": "1.1.1",
3
3
  "global": {
4
4
  "enrichments": [
5
5
  {
@@ -72,6 +72,7 @@
72
72
  "expressions": [
73
73
  {
74
74
  "lang": "lua",
75
+ "name": "Event Properties",
75
76
  "body": "return input.properties"
76
77
  }
77
78
  ]
@@ -459,6 +460,7 @@
459
460
  "expressions": [
460
461
  {
461
462
  "lang": "lua",
463
+ "name": "Event Properties",
462
464
  "body": "return input.properties"
463
465
  }
464
466
  ]
@@ -1 +1 @@
1
- "c65c0077694c72663b1cb91f99f1d4f8 -"
1
+ "584349760b9e93c73110248076b63596 -"
@@ -32,6 +32,10 @@
32
32
  {
33
33
  "date": "2023-12-13T00:00:00.000Z",
34
34
  "note": "Marked as stable version: 1.0.0"
35
+ },
36
+ {
37
+ "date": "2025-10-15T00:00:00.000Z",
38
+ "note": "Version: 1.0.1\nAdded friendly names to expressions"
35
39
  }
36
40
  ]
37
41
  }
@@ -1 +1 @@
1
- "8f0ef47905c0347b83f339f898733d31 -"
1
+ "877c3fc7f934e18a43de828222435adb -"
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "1.0.0",
2
+ "version": "1.0.1",
3
3
  "global": {},
4
4
  "eventSpecific": {
5
5
  "identify": {
@@ -257,6 +257,7 @@
257
257
  "expressions": [
258
258
  {
259
259
  "lang": "lua",
260
+ "name": "Complete Order Summary",
260
261
  "body": "local currency = UPPER(input.properties.currency)\nlocal products = MAP(\n input.properties.products,\n function (p)\n return {\n external_id=input.userId,\n product_id=p.product_id,\n currency=currency,\n price=TO_FLOAT(p.price),\n quantity=TO_FLOAT(p.quantity) or 1,\n time = TO_DATE_TIME(input.timestamp, {outputFormat = \"2006-01-02T15:04:05Z\"}),\n properties = {\n name = p.name,\n category = p.category,\n sku = p.sku,\n image_url = p.image_url,\n url = p.url,\n }\n }\n end\n )\n\nreturn {\n attributes = {{\n external_id = input.userId,\n }},\n events = {{\n external_id = input.userId,\n name = 'order_completed',\n time = TO_DATE_TIME(input.timestamp, {outputFormat = \"2006-01-02T15:04:05Z\"}),\n properties = {\n checkout_id = input.properties.checkout_id,\n revenue = input.properties.revenue,\n total = input.properties.total,\n coupon = input.properties.coupon,\n shipping = input.properties.shipping,\n affiliation = input.properties.affiliation,\n discount = input.properties.discount,\n currency = currency,\n tax = input.properties.tax,\n order_id = input.properties.order_id,\n }\n }},\n purchases = products,\n}"
261
262
  }
262
263
  ]
@@ -1 +1 @@
1
- "8697cf95b801eb1aec212760633e7f1e -"
1
+ "347f3dc898ea89bdf57aae2071d2345e -"
@@ -20,6 +20,10 @@
20
20
  {
21
21
  "date": "2024-08-07T00:00:00.000Z",
22
22
  "note": "Version: 1.0.0\nStable release"
23
+ },
24
+ {
25
+ "date": "2025-10-15T00:00:00.000Z",
26
+ "note": "Version: 1.0.1\nAdded friendly names to expressions"
23
27
  }
24
28
  ]
25
29
  }
@@ -1 +1 @@
1
- "87aa95cef564d0391fac99f42cd4ad55 -"
1
+ "17e07cbd48d74443a47c41766180389f -"
@@ -1,10 +1,11 @@
1
1
  {
2
- "version": "1.0.0",
2
+ "version": "1.0.1",
3
3
  "global": {
4
4
  "expressions": [
5
5
  {
6
6
  "body": "return input",
7
- "lang": "lua"
7
+ "lang": "lua",
8
+ "name": "Full Payload"
8
9
  }
9
10
  ]
10
11
  }
@@ -1 +1 @@
1
- "f5423f309838006437c96d9d5cd87981 -"
1
+ "48bab887cfe7645e26abf0aa0d0b0e23 -"
@@ -36,6 +36,10 @@
36
36
  {
37
37
  "date": "2025-07-30T00:00:00.000Z",
38
38
  "note": "Version: 1.3.0\nReplaced context.traits with traits."
39
+ },
40
+ {
41
+ "date": "2025-10-15T00:00:00.000Z",
42
+ "note": "Version: 1.3.1\nAdded friendly names to expressions"
39
43
  }
40
44
  ]
41
45
  }
@@ -1 +1 @@
1
- "761839ff7e5b9147e6e4653c6ad98149 -"
1
+ "bc899e0f816673823236a533451397a3 -"
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "1.3.0",
2
+ "version": "1.3.1",
3
3
  "params": [
4
4
  {
5
5
  "name": "CLIENT_ID",
@@ -89,7 +89,8 @@
89
89
  "expressions": [
90
90
  {
91
91
  "body": "return input.context.providers.clinch or {}",
92
- "lang": "lua"
92
+ "lang": "lua",
93
+ "name": "Clinch Click and Cookie ID"
93
94
  }
94
95
  ]
95
96
  },
@@ -1,6 +1,35 @@
1
1
  {
2
2
  "type": "object",
3
3
  "properties": {
4
+ "adobeBdia": {
5
+ "type": "object",
6
+ "properties": {
7
+ "clientId": {
8
+ "type": "string"
9
+ },
10
+ "clientSecret": {
11
+ "type": "string"
12
+ },
13
+ "columnNames": {
14
+ "type": "string"
15
+ },
16
+ "eventEndpoint": {
17
+ "type": "string"
18
+ },
19
+ "tokenScopes": {
20
+ "type": "string"
21
+ },
22
+ "tokenUrl": {
23
+ "type": "string"
24
+ }
25
+ },
26
+ "required": [
27
+ "clientId",
28
+ "clientSecret",
29
+ "tokenScopes"
30
+ ],
31
+ "additionalProperties": false
32
+ },
4
33
  "amazonDataFirehose": {
5
34
  "type": "object",
6
35
  "properties": {
@@ -76,6 +105,9 @@
76
105
  },
77
106
  "sasToken": {
78
107
  "type": "string"
108
+ },
109
+ "useManagedIdentity": {
110
+ "type": "boolean"
79
111
  }
80
112
  },
81
113
  "required": [
@@ -1 +1 @@
1
- "9344e2d29b0f13927afcc78d682114be -"
1
+ "ad96076b9deb0da2936adc0fb4dffee9 -"
@@ -1 +1 @@
1
- "e6b9d2b120a688e41d2fe6f130128894 -"
1
+ "aba9533defe19a6feea2a6f14d9b15ab -"
@@ -28,6 +28,10 @@
28
28
  {
29
29
  "date": "2024-02-13T00:00:00.000Z",
30
30
  "note": "Removed Identity"
31
+ },
32
+ {
33
+ "date": "2025-10-15T00:00:00.000Z",
34
+ "note": "Version: 0.2.1\nAdded friendly names to expressions"
31
35
  }
32
36
  ]
33
37
  }
@@ -1 +1 @@
1
- "2f96353725e4cd845fe0ae3025f691ae -"
1
+ "687cc206e8f52d2bfc94657d957db708 -"
@@ -1,10 +1,11 @@
1
1
  {
2
- "version": "0.2.0",
2
+ "version": "0.2.1",
3
3
  "global": {
4
4
  "expressions": [
5
5
  {
6
6
  "body": "return input",
7
- "lang": "lua"
7
+ "lang": "lua",
8
+ "name": "Full Payload"
8
9
  }
9
10
  ]
10
11
  }
@@ -1 +1 @@
1
- "e9999a25738864bdc52897c992623d65 -"
1
+ "c625bbb5aaa6e15791c55a7ef4affa95 -"
@@ -44,6 +44,10 @@
44
44
  {
45
45
  "date": "2024-10-23T00:00:00.000Z",
46
46
  "note": "Version: 1.3.0\nAdded header `Accept-Encoding: application/json`"
47
+ },
48
+ {
49
+ "date": "2025-10-15T00:00:00.000Z",
50
+ "note": "Version: 1.3.1\nAdded friendly names to expressions"
47
51
  }
48
52
  ]
49
53
  }
@@ -1 +1 @@
1
- "9002c5ef875604a1a9af605d5aa0f81c -"
1
+ "b002eb5bfd4ab0a8e0807c1c840f6538 -"
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "1.3.0",
2
+ "version": "1.3.1",
3
3
  "params": [
4
4
  {
5
5
  "name": "CUSTOMER_ID",
@@ -22,6 +22,7 @@
22
22
  "expressions": [
23
23
  {
24
24
  "lang": "lua",
25
+ "name": "Click IDs",
25
26
  "body": "local click_ids = {}\nif input.context.providers.googleGtag.data.wbraid then\n click_ids.wbraid = SPLIT(input.context.providers.googleGtag.data.wbraid,\".\",3)[3]\nelseif input.context.providers.googleGtag.data.gbraid then\n click_ids.gbraid = SPLIT(input.context.providers.googleGtag.data.gbraid,\".\",3)[3]\nend\nreturn click_ids"
26
27
  }
27
28
  ],
@@ -1 +1 @@
1
- "0c72af25ddbb6118dd62b99db2a83ad9 -"
1
+ "af605cb5321b0179c8ba786736a6b4bd -"
@@ -20,6 +20,10 @@
20
20
  {
21
21
  "date": "2024-06-26T00:00:00.000Z",
22
22
  "note": "Renaming to Google AJSID Segments"
23
+ },
24
+ {
25
+ "date": "2025-10-15T00:00:00.000Z",
26
+ "note": "Version: 0.1.1\nAdded friendly names to expressions"
23
27
  }
24
28
  ]
25
29
  }
@@ -1 +1 @@
1
- "b50a7f40db43c66953cc042623bbead0 -"
1
+ "2f9857bf90f6a9032f5d3367a5a1860d -"
@@ -1,9 +1,10 @@
1
1
  {
2
- "version": "0.1.0",
2
+ "version": "0.1.1",
3
3
  "global": {
4
4
  "expressions": [
5
5
  {
6
6
  "lang": "lua",
7
+ "name": "User Identifiers and Consent",
7
8
  "body": "local data = {\n userIdentifiers = {\n {\n thirdPartyUserId = input.anonymousId\n }\n },\n consent = {\n adUserData = \"GRANTED\",\n adPersonalization = \"GRANTED\"\n }\n}\nreturn data"
8
9
  }
9
10
  ]
@@ -13,6 +14,7 @@
13
14
  "expressions": [
14
15
  {
15
16
  "lang": "lua",
17
+ "name": "Complete Order Summary",
16
18
  "body": "local DEFAULT_COUNTRY_CODE = \"US\"\nlocal DEFAULT_CURRENCY_CODE = \"USD\"\nlocal DEFAULT_LANGUAGE_CODE = \"en\"\nif input.properties.products == nil then\n return\nend\nif input.properties.products[1] == nil then\n return\nend\nlocal currencyCode = DEFAULT_CURRENCY_CODE\nif input.properties.currency ~= nil then\n currencyCode = input.properties.currency\nend\n-- Code formats https://developers.google.com/google-ads/api/data/codes-formats#country-codes\nfunction splitLocale(inputText)\n if inputText == nil then\n return DEFAULT_LANGUAGE_CODE, DEFAULT_COUNTRY_CODE\n end\n local parts = {}\n for part in string.gmatch(inputText, \"([^%-]+)\") do\n table.insert(parts, part)\n end\n -- Assign language and country with defaults\n local language = parts[1] or DEFAULT_LANGUAGE_CODE\n local country = parts[2] or DEFAULT_COUNTRY_CODE\n return language, country\nend\nlocal languageCode, countryCode = splitLocale(input.context.locale)\nlocal data = {\n transactionAttribute = {\n transactionDateTime = TO_DATE_TIME(input.timestamp, {outputFormat = \"2006-01-02 15:04:05\"}),\n transactionAmountMicros = input.properties.total * 1000000,\n currencyCode = currencyCode,\n orderId = tostring(input.properties.order_id),\n itemAttribute = {\n itemId = input.properties.products[1].product_id,\n countryCode = countryCode,\n languageCode = languageCode,\n quantity = input.properties.products[1].quantity\n }\n }\n}\nreturn data"
17
19
  }
18
20
  ]
@@ -1 +1 @@
1
- "690010f1a6eb663c398e5fe8ecef4503 -"
1
+ "ff9ae2e6ea75b1881443d7b9e4c056bf -"
@@ -32,6 +32,10 @@
32
32
  {
33
33
  "date": "2024-10-09T00:00:00.000Z",
34
34
  "note": "Deprecating kit"
35
+ },
36
+ {
37
+ "date": "2025-10-15T00:00:00.000Z",
38
+ "note": "Version: 1.0.1\nAdded friendly names to expressions"
35
39
  }
36
40
  ]
37
41
  }
@@ -1 +1 @@
1
- "e427e689a1d76efc0839059f60808c7c -"
1
+ "e6e7ca005bfb8a571e39bb9748fd3d33 -"
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "1.0.0",
2
+ "version": "1.0.1",
3
3
  "params": [
4
4
  {
5
5
  "name": "TRACKING_ID",
@@ -66,6 +66,7 @@
66
66
  "expressions": [
67
67
  {
68
68
  "lang": "lua",
69
+ "name": "Event Category, Action and Host",
69
70
  "body": "local host = input.context.page.url:match('^%w+://([^/]+)')\nlocal event_category = null\nlocal event_action = null\n\nif input.type == \"track\" then\n event_category = \"track\"\n event_action = input.event\nend\n\nreturn {\n ec = event_category,\n ea = event_action,\n dh = host,\n z = math.random(100000000, 999999999)\n}"
70
71
  }
71
72
  ]
@@ -103,6 +104,7 @@
103
104
  "expressions": [
104
105
  {
105
106
  "lang": "lua",
107
+ "name": "Product Properties",
106
108
  "body": "local keyMappings = {\n product_id = 'id',\n name = 'nm',\n category = 'ca',\n brand = 'br',\n price = 'pr',\n quantity = 'qt'\n}\nlocal results = {}\nfor inputIndex, product in pairs(input.properties.products) do\n for inputKey, productVal in pairs(product) do\n local outputKey = keyMappings[inputKey]\n if outputKey then\n local outputIndex = inputIndex\n local resultKey = 'pr' .. outputIndex .. outputKey\n if inputKey == \"price\" then\n results[resultKey] = TO_FLOAT(productVal)\n elseif inputKey == \"quantity\" then\n results[resultKey] = TO_TRUNCATED_INT(productVal)\n else\n results[resultKey] = productVal\n end\n end\n end\nend\nreturn results"
107
109
  }
108
110
  ]
@@ -215,6 +217,7 @@
215
217
  "expressions": [
216
218
  {
217
219
  "lang": "lua",
220
+ "name": "Product Properties",
218
221
  "body": "local keyMappings = {\n product_id = 'id',\n name = 'nm',\n category = 'ca',\n brand = 'br',\n price = 'pr',\n quantity = 'qt'\n}\nlocal results = {}\nfor inputIndex, product in pairs(input.properties.products) do\n for inputKey, productVal in pairs(product) do\n local outputKey = keyMappings[inputKey]\n if outputKey then\n local outputIndex = inputIndex\n local resultKey = 'pr' .. outputIndex .. outputKey\n if inputKey == \"price\" then\n results[resultKey] = TO_FLOAT(productVal)\n elseif inputKey == \"quantity\" then\n results[resultKey] = TO_TRUNCATED_INT(productVal)\n else\n results[resultKey] = productVal\n end\n end\n end\nend\nreturn results"
219
222
  }
220
223
  ]
@@ -280,6 +283,7 @@
280
283
  "expressions": [
281
284
  {
282
285
  "lang": "lua",
286
+ "name": "Product Properties",
283
287
  "body": "local keyMappings = {\n product_id = 'id',\n name = 'nm',\n category = 'ca',\n brand = 'br',\n price = 'pr',\n quantity = 'qt'\n}\nlocal results = {}\nfor inputIndex, product in pairs(input.properties.products) do\n for inputKey, productVal in pairs(product) do\n local outputKey = keyMappings[inputKey]\n if outputKey then\n local outputIndex = inputIndex\n local resultKey = 'pr' .. outputIndex .. outputKey\n if inputKey == \"price\" then\n results[resultKey] = TO_FLOAT(productVal)\n elseif inputKey == \"quantity\" then\n results[resultKey] = TO_TRUNCATED_INT(productVal)\n else\n results[resultKey] = productVal\n end\n end\n end\nend\nreturn results"
284
288
  }
285
289
  ]
@@ -1 +1 @@
1
- "aa90783b39a41fa9ef6fe3dcf1bd321d -"
1
+ "0a9370414fd96ea1c46f24f11caf3a25 -"
@@ -32,6 +32,10 @@
32
32
  {
33
33
  "date": "2025-08-20T00:00:00.000Z",
34
34
  "note": "Version: 1.0.0\nStable Release"
35
+ },
36
+ {
37
+ "date": "2025-10-15T00:00:00.000Z",
38
+ "note": "Version: 1.0.1\nAdded friendly names to expressions"
35
39
  }
36
40
  ]
37
41
  }
@@ -1 +1 @@
1
- "458d3b63fe9d8a1892df9decafb0e539 -"
1
+ "4ef315aa0477c7adb62b0a427fee6656 -"
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "1.0.0",
2
+ "version": "1.0.1",
3
3
  "global": {
4
4
  "mappings": [
5
5
  {
@@ -112,8 +112,9 @@
112
112
  ],
113
113
  "expressions": [
114
114
  {
115
- "body": "local up = {}\nup.metarouter_anonymousid = input.anonymousId\n\nlocal output = {} for key, value in pairs(up) do output[\"up.\" .. key] = value\nend\nreturn output",
116
- "lang": "lua"
115
+ "lang": "lua",
116
+ "name": "User Properties",
117
+ "body": "local up = {}\nup.metarouter_anonymousid = input.anonymousId\n\nlocal output = {} for key, value in pairs(up) do output[\"up.\" .. key] = value\nend\nreturn output"
117
118
  }
118
119
  ]
119
120
  },
@@ -187,6 +188,7 @@
187
188
  "expressions": [
188
189
  {
189
190
  "lang": "lua",
191
+ "name": "Product Properties",
190
192
  "body": "local items = {}\nif (input.properties.products) then\n for inputIndex, product in pairs(input.properties.products) do\n local index = 'pr' .. inputIndex\n product_details = {}\n if (product.product_id or product.sku) then table.insert(product_details, 'id' .. (product.product_id or product.sku)) end\n if product.name then table.insert(product_details, 'nm' .. product.name) end\n if product.affiliation then table.insert(product_details, 'af' .. product.affiliation) end\n if product.coupon then table.insert(product_details, 'cp' .. product.coupon) end\n if product.discount then table.insert(product_details, 'ds' .. product.discount) end\n if product.position then table.insert(product_details, 'lp' .. product.position) end\n if product.brand then table.insert(product_details, 'br' .. product.brand) end\n if product.category then table.insert(product_details, 'ca' .. product.category) end\n if product.variant then table.insert(product_details, 'va' .. product.variant) end\n if product.price then table.insert(product_details, 'pr' .. product.price) end\n if product.quantity then table.insert(product_details, 'qt' .. product.quantity) end\n items[index] = JOIN(product_details, '~')\n end\nend\nreturn items"
191
193
  }
192
194
  ]
@@ -427,6 +429,7 @@
427
429
  "expressions": [
428
430
  {
429
431
  "lang": "lua",
432
+ "name": "Product Properties",
430
433
  "body": "local items = {}\nif (input.properties.products) then\n for inputIndex, product in pairs(input.properties.products) do\n local index = 'pr' .. inputIndex\n product_details = {}\n if (product.product_id or product.sku) then table.insert(product_details, 'id' .. (product.product_id or product.sku)) end\n if product.name then table.insert(product_details, 'nm' .. product.name) end\n if product.affiliation then table.insert(product_details, 'af' .. product.affiliation) end\n if product.coupon then table.insert(product_details, 'cp' .. product.coupon) end\n if product.discount then table.insert(product_details, 'ds' .. product.discount) end\n if product.position then table.insert(product_details, 'lp' .. product.position) end\n if product.brand then table.insert(product_details, 'br' .. product.brand) end\n if product.category then table.insert(product_details, 'ca' .. product.category) end\n if product.variant then table.insert(product_details, 'va' .. product.variant) end\n if product.price then table.insert(product_details, 'pr' .. product.price) end\n if product.quantity then table.insert(product_details, 'qt' .. product.quantity) end\n items[index] = JOIN(product_details, '~')\n end\nend\nreturn items"
431
434
  }
432
435
  ]
@@ -481,6 +484,7 @@
481
484
  "expressions": [
482
485
  {
483
486
  "lang": "lua",
487
+ "name": "Product Properties",
484
488
  "body": "local items = {}\nif (input.properties.products) then\n for inputIndex, product in pairs(input.properties.products) do\n local index = 'pr' .. inputIndex\n product_details = {}\n if (product.product_id or product.sku) then table.insert(product_details, 'id' .. (product.product_id or product.sku)) end\n if product.name then table.insert(product_details, 'nm' .. product.name) end\n if product.affiliation then table.insert(product_details, 'af' .. product.affiliation) end\n if product.coupon then table.insert(product_details, 'cp' .. product.coupon) end\n if product.discount then table.insert(product_details, 'ds' .. product.discount) end\n if product.position then table.insert(product_details, 'lp' .. product.position) end\n if product.brand then table.insert(product_details, 'br' .. product.brand) end\n if product.category then table.insert(product_details, 'ca' .. product.category) end\n if product.variant then table.insert(product_details, 'va' .. product.variant) end\n if product.price then table.insert(product_details, 'pr' .. product.price) end\n if product.quantity then table.insert(product_details, 'qt' .. product.quantity) end\n items[index] = JOIN(product_details, '~')\n end\nend\nreturn items"
485
489
  }
486
490
  ]
@@ -527,6 +531,7 @@
527
531
  "expressions": [
528
532
  {
529
533
  "lang": "lua",
534
+ "name": "Product Properties",
530
535
  "body": "local items = {}\nif (input.properties.products) then\n for inputIndex, product in pairs(input.properties.products) do\n local index = 'pr' .. inputIndex\n product_details = {}\n if (product.product_id or product.sku) then table.insert(product_details, 'id' .. (product.product_id or product.sku)) end\n if product.name then table.insert(product_details, 'nm' .. product.name) end\n if product.affiliation then table.insert(product_details, 'af' .. product.affiliation) end\n if product.coupon then table.insert(product_details, 'cp' .. product.coupon) end\n if product.discount then table.insert(product_details, 'ds' .. product.discount) end\n if product.position then table.insert(product_details, 'lp' .. product.position) end\n if product.brand then table.insert(product_details, 'br' .. product.brand) end\n if product.category then table.insert(product_details, 'ca' .. product.category) end\n if product.variant then table.insert(product_details, 'va' .. product.variant) end\n if product.price then table.insert(product_details, 'pr' .. product.price) end\n if product.quantity then table.insert(product_details, 'qt' .. product.quantity) end\n items[index] = JOIN(product_details, '~')\n end\nend\nreturn items"
531
536
  }
532
537
  ]
@@ -585,6 +590,7 @@
585
590
  "expressions": [
586
591
  {
587
592
  "lang": "lua",
593
+ "name": "Product Properties",
588
594
  "body": "local items = {}\nif (input.properties.products) then\n for inputIndex, product in pairs(input.properties.products) do\n local index = 'pr' .. inputIndex\n product_details = {}\n if (product.product_id or product.sku) then table.insert(product_details, 'id' .. (product.product_id or product.sku)) end\n if product.name then table.insert(product_details, 'nm' .. product.name) end\n if product.affiliation then table.insert(product_details, 'af' .. product.affiliation) end\n if product.coupon then table.insert(product_details, 'cp' .. product.coupon) end\n if product.discount then table.insert(product_details, 'ds' .. product.discount) end\n if product.position then table.insert(product_details, 'lp' .. product.position) end\n if product.brand then table.insert(product_details, 'br' .. product.brand) end\n if product.category then table.insert(product_details, 'ca' .. product.category) end\n if product.variant then table.insert(product_details, 'va' .. product.variant) end\n if product.price then table.insert(product_details, 'pr' .. product.price) end\n if product.quantity then table.insert(product_details, 'qt' .. product.quantity) end\n items[index] = JOIN(product_details, '~')\n end\nend\nreturn items"
589
595
  }
590
596
  ]
@@ -639,6 +645,7 @@
639
645
  "expressions": [
640
646
  {
641
647
  "lang": "lua",
648
+ "name": "Product Properties",
642
649
  "body": "local items = {}\nif (input.properties.products) then\n for inputIndex, product in pairs(input.properties.products) do\n local index = 'pr' .. inputIndex\n product_details = {}\n if (product.product_id or product.sku) then table.insert(product_details, 'id' .. (product.product_id or product.sku)) end\n if product.name then table.insert(product_details, 'nm' .. product.name) end\n if product.affiliation then table.insert(product_details, 'af' .. product.affiliation) end\n if product.coupon then table.insert(product_details, 'cp' .. product.coupon) end\n if product.discount then table.insert(product_details, 'ds' .. product.discount) end\n if product.position then table.insert(product_details, 'lp' .. product.position) end\n if product.brand then table.insert(product_details, 'br' .. product.brand) end\n if product.category then table.insert(product_details, 'ca' .. product.category) end\n if product.variant then table.insert(product_details, 'va' .. product.variant) end\n if product.price then table.insert(product_details, 'pr' .. product.price) end\n if product.quantity then table.insert(product_details, 'qt' .. product.quantity) end\n items[index] = JOIN(product_details, '~')\n end\nend\nreturn items"
643
650
  }
644
651
  ]
@@ -1 +1 @@
1
- "4b9b752f7ca56db2d972b44b3a69699d -"
1
+ "18289868c72f542397fa4a95554a1105 -"
@@ -44,6 +44,10 @@
44
44
  {
45
45
  "date": "2025-08-20T00:00:00.000Z",
46
46
  "note": "Version: 1.0.0\nStable Release"
47
+ },
48
+ {
49
+ "date": "2025-10-15T00:00:00.000Z",
50
+ "note": "Version: 1.0.1\nAdded friendly names to expressions"
47
51
  }
48
52
  ]
49
53
  }
@@ -1 +1 @@
1
- "1af8157897d64028e56269c723066d1b -"
1
+ "aa2588fbed93eccc97d982aa1e7f8463 -"
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "1.0.0",
2
+ "version": "1.0.1",
3
3
  "params": [
4
4
  {
5
5
  "name": "CONFIG_ID",
@@ -62,6 +62,7 @@
62
62
  "expressions": [
63
63
  {
64
64
  "lang": "lua",
65
+ "name": "Click, Mobile Device and Match ID(s)",
65
66
  "body": "local gclid = SPLIT(input.context.providers.googleGtag.data.gclid, \".\", 3)[3];\nlocal dclid = SPLIT(input.context.providers.googleGtag.data.dclid, \".\", 3)[3];\nlocal mobileDeviceId = input.context.device.advertisingId;\nlocal matchId = input.anonymousId;\nreturn (gclid and { gclid = gclid }) or (dclid and { dclid = dclid}) or (mobileDeviceId and { mobileDeviceId = mobileDeviceId}) or (matchId and { matchId = matchId })"
66
67
  }
67
68
  ]
@@ -1 +1 @@
1
- "2d796f89ad012cdf589c210d573c3ac3 -"
1
+ "5fb55bf9e3c33ddb16bf5a8a71b56218 -"
@@ -28,6 +28,10 @@
28
28
  {
29
29
  "date": "2024-02-13T00:00:00.000Z",
30
30
  "note": "Removed Identity"
31
+ },
32
+ {
33
+ "date": "2025-10-15T00:00:00.000Z",
34
+ "note": "Version: 1.1.1\nAdded friendly names to expressions"
31
35
  }
32
36
  ]
33
37
  }
@@ -1 +1 @@
1
- "d9c038d6e831c71a2b4bac5dcbf4b42e -"
1
+ "a8e5b6c4c203e643153c45b1aa153444 -"
@@ -1,10 +1,11 @@
1
1
  {
2
- "version": "1.1.0",
2
+ "version": "1.1.1",
3
3
  "global": {
4
4
  "expressions": [
5
5
  {
6
6
  "body": "return input",
7
- "lang": "lua"
7
+ "lang": "lua",
8
+ "name": "Full Payload"
8
9
  }
9
10
  ]
10
11
  }
@@ -1 +1 @@
1
- "6cba21e40972d2c5cc964de276cee204 -"
1
+ "e046f17bb1ca8cb18838d0de22d01ab1 -"
@@ -40,6 +40,10 @@
40
40
  {
41
41
  "date": "2024-10-23T00:00:00.000Z",
42
42
  "note": "Version: 1.2.0\nAdded header `Accept-Encoding: application/json`"
43
+ },
44
+ {
45
+ "date": "2025-10-15T00:00:00.000Z",
46
+ "note": "Version: 1.2.1\nAdded friendly names to expressions"
43
47
  }
44
48
  ]
45
49
  }
@@ -1 +1 @@
1
- "e7efa6005b6845e3755179f608a424a7 -"
1
+ "28f25b611308103167d43d881005cdab -"
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "1.2.0",
2
+ "version": "1.2.1",
3
3
  "params": [
4
4
  {
5
5
  "name": "CAMPAIGN_ID",
@@ -146,6 +146,7 @@
146
146
  "expressions": [
147
147
  {
148
148
  "lang": "lua",
149
+ "name": "Product Properties",
149
150
  "body": "local keyMappings = {\n category = 'ItemCategory',\n sku = 'ItemSku',\n price = 'ItemPrice',\n quantity = 'ItemQuantity',\n name = 'ItemName',\n}\nlocal results = {}\nfor inputIndex, product in pairs(input.properties.products) do\n for inputKey, productVal in pairs(product) do\n local outputKey = keyMappings[inputKey]\n if outputKey then\n local outputIndex = inputIndex\n local resultKey = outputKey .. outputIndex\n results[resultKey] = productVal\n end\n end\nend\nreturn results"
150
151
  }
151
152
  ]
@@ -1 +1 @@
1
- "314e59c17dd877c5e315db57293a4b3d -"
1
+ "02b87039bc679fdef4abfd40411a0b29 -"
@@ -40,6 +40,10 @@
40
40
  {
41
41
  "date": "2024-02-13T00:00:00.000Z",
42
42
  "note": "Removed Identity"
43
+ },
44
+ {
45
+ "date": "2025-10-15T00:00:00.000Z",
46
+ "note": "Version: 1.1.1\nAdded friendly names to expressions"
43
47
  }
44
48
  ]
45
49
  }
@@ -1 +1 @@
1
- "d9c038d6e831c71a2b4bac5dcbf4b42e -"
1
+ "a8e5b6c4c203e643153c45b1aa153444 -"
@@ -1,10 +1,11 @@
1
1
  {
2
- "version": "1.1.0",
2
+ "version": "1.1.1",
3
3
  "global": {
4
4
  "expressions": [
5
5
  {
6
6
  "body": "return input",
7
- "lang": "lua"
7
+ "lang": "lua",
8
+ "name": "Full Payload"
8
9
  }
9
10
  ]
10
11
  }
@@ -1 +1 @@
1
- "b54219c39d94c21216908b769c63e5ef -"
1
+ "ba93e3cf060b82b2db4031038aeac0f7 -"
@@ -32,6 +32,10 @@
32
32
  {
33
33
  "date": "2025-07-30T00:00:00.000Z",
34
34
  "note": "Version: 1.3.0\nReplaced context.traits with traits."
35
+ },
36
+ {
37
+ "date": "2025-10-08T00:00:00.000Z",
38
+ "note": "Version: 1.4.0\nExtended Nextdoor CAPI events."
35
39
  }
36
40
  ]
37
41
  }
@@ -1 +1 @@
1
- "1dcade80f36aa93364878be1d75ada87 -"
1
+ "1dff88cd95ce3e89488ab5a6207fe997 -"