@metarouter/ajs-starter-kit 1.0.177 → 1.0.178
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.
- package/.dist/google-agent-search/connection.etag.json +1 -0
- package/.dist/google-agent-search/connection.json +75 -0
- package/.dist/google-agent-search/kit.etag.json +1 -0
- package/.dist/google-agent-search/metadata.json +21 -0
- package/.dist/google-agent-search/playbook.etag.json +1 -0
- package/.dist/google-agent-search/playbook.json +143 -0
- package/.dist/google-dm-audiences/connection.etag.json +1 -0
- package/.dist/google-dm-audiences/connection.json +77 -0
- package/.dist/google-dm-audiences/kit.etag.json +1 -0
- package/.dist/google-dm-audiences/metadata.json +21 -0
- package/.dist/google-dm-audiences/playbook.etag.json +1 -0
- package/.dist/google-dm-audiences/playbook.json +127 -0
- package/.dist/yahoo-conversions-api/kit.etag.json +1 -1
- package/.dist/yahoo-conversions-api/metadata.json +5 -1
- package/.dist/yahoo-conversions-api/playbook.etag.json +1 -1
- package/.dist/yahoo-conversions-api/playbook.json +9 -1
- package/README.md +7 -2
- package/index.js +24 -2
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"a757d6e0a9ca764abf154aa49b60ba34 -"
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
{
|
|
2
|
+
"params": [
|
|
3
|
+
{
|
|
4
|
+
"name": "PROJECT_NUMBER",
|
|
5
|
+
"exampleValue": "my-project-number"
|
|
6
|
+
},
|
|
7
|
+
{
|
|
8
|
+
"name": "LOCATION",
|
|
9
|
+
"defaultValue": "global"
|
|
10
|
+
},
|
|
11
|
+
{
|
|
12
|
+
"name": "COLLECTION_ID",
|
|
13
|
+
"defaultValue": "my-collection-id"
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
"name": "DATA_STORE_ID",
|
|
17
|
+
"exampleValue": "my-data-store-id"
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
"name": "SERVICE_ACCOUNT_EMAIL",
|
|
21
|
+
"exampleValue": "my-service-account-email"
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
"name": "PRIVATE_KEY",
|
|
25
|
+
"exampleValue": "my-private-key"
|
|
26
|
+
}
|
|
27
|
+
],
|
|
28
|
+
"default": {
|
|
29
|
+
"endpoint": "https://discoveryengine.googleapis.com/v1/projects/$$PROJECT_NUMBER$$/locations/$$LOCATION$$/collections/$$COLLECTION_ID$$/dataStores/$$DATA_STORE_ID$$/userEvents:write",
|
|
30
|
+
"method": "POST",
|
|
31
|
+
"headers": [
|
|
32
|
+
{
|
|
33
|
+
"key": "Accept-Encoding",
|
|
34
|
+
"value": "application/json"
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
"key": "Content-Type",
|
|
38
|
+
"value": "application/json"
|
|
39
|
+
}
|
|
40
|
+
],
|
|
41
|
+
"oauth2Auth": {
|
|
42
|
+
"request": {
|
|
43
|
+
"url": "https://oauth2.googleapis.com/token",
|
|
44
|
+
"contentType": "application/x-www-form-urlencoded",
|
|
45
|
+
"method": "POST",
|
|
46
|
+
"body": [
|
|
47
|
+
{
|
|
48
|
+
"key": "grant_type",
|
|
49
|
+
"value": "urn:ietf:params:oauth:grant-type:jwt-bearer"
|
|
50
|
+
}
|
|
51
|
+
]
|
|
52
|
+
},
|
|
53
|
+
"responseAccessTokenKey": "access_token",
|
|
54
|
+
"jwt": {
|
|
55
|
+
"claims": [
|
|
56
|
+
{
|
|
57
|
+
"key": "aud",
|
|
58
|
+
"value": "https://oauth2.googleapis.com/token"
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
"key": "scope",
|
|
62
|
+
"value": "https://www.googleapis.com/auth/discoveryengine.readwrite"
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
"key": "iss",
|
|
66
|
+
"value": "$$SERVICE_ACCOUNT_EMAIL$$"
|
|
67
|
+
}
|
|
68
|
+
],
|
|
69
|
+
"signingMethod": "SIGNING_METHOD_RS256",
|
|
70
|
+
"rsaPemKey": "$$PRIVATE_KEY$$",
|
|
71
|
+
"requestKey": "assertion"
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"245901342e78b9c79d93f208175ad35d -"
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
{
|
|
2
|
+
"isDraft": false,
|
|
3
|
+
"isDeprecated": false,
|
|
4
|
+
"isBeta": true,
|
|
5
|
+
"friendlyName": "Agent Search",
|
|
6
|
+
"description": "Server-side delivery of user events to Google Agent Search to power AI search ranking and recommendations.",
|
|
7
|
+
"logo": "https://cdn.metarouter.io/google-agent-search.png",
|
|
8
|
+
"color": "#4285F4",
|
|
9
|
+
"eventSource": {
|
|
10
|
+
"isAndroidApp": false,
|
|
11
|
+
"isIosApp": false,
|
|
12
|
+
"isWebApp": true
|
|
13
|
+
},
|
|
14
|
+
"inputSchema": "analytics_js",
|
|
15
|
+
"releaseNotes": [
|
|
16
|
+
{
|
|
17
|
+
"date": "2026-07-22T00:00:00.000Z",
|
|
18
|
+
"note": "Version: 0.1.0\nBeta Version\nAgent Search initial release"
|
|
19
|
+
}
|
|
20
|
+
]
|
|
21
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"9101ebd2e9ebf91d135760e3752cde12 -"
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": "0.1.0",
|
|
3
|
+
"global": {
|
|
4
|
+
"mappings": [
|
|
5
|
+
{
|
|
6
|
+
"inputKey": "anonymousId",
|
|
7
|
+
"outputKey": "userPseudoId"
|
|
8
|
+
},
|
|
9
|
+
{
|
|
10
|
+
"inputKey": "timestamp",
|
|
11
|
+
"outputKey": "eventTime"
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
"inputKey": "context.userAgent",
|
|
15
|
+
"outputKey": "userInfo.userAgent"
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
"inputKey": "context.page.url",
|
|
19
|
+
"outputKey": "pageInfo.uri"
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
"inputKey": "context.page.referrer",
|
|
23
|
+
"outputKey": "pageInfo.referrerUri"
|
|
24
|
+
}
|
|
25
|
+
]
|
|
26
|
+
},
|
|
27
|
+
"default": {
|
|
28
|
+
"filters": [
|
|
29
|
+
{
|
|
30
|
+
"byEventNames": {
|
|
31
|
+
"action": "allow",
|
|
32
|
+
"events": [
|
|
33
|
+
""
|
|
34
|
+
]
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
]
|
|
38
|
+
},
|
|
39
|
+
"eventSpecific": {
|
|
40
|
+
"products_searched": {
|
|
41
|
+
"enrichments": [
|
|
42
|
+
{
|
|
43
|
+
"staticString": "search",
|
|
44
|
+
"outputKey": "eventType"
|
|
45
|
+
}
|
|
46
|
+
],
|
|
47
|
+
"mappings": [
|
|
48
|
+
{
|
|
49
|
+
"inputKey": "properties.query",
|
|
50
|
+
"outputKey": "searchInfo.searchQuery"
|
|
51
|
+
}
|
|
52
|
+
]
|
|
53
|
+
},
|
|
54
|
+
"product_list_viewed": {
|
|
55
|
+
"enrichments": [
|
|
56
|
+
{
|
|
57
|
+
"staticString": "view-item-list",
|
|
58
|
+
"outputKey": "eventType"
|
|
59
|
+
}
|
|
60
|
+
],
|
|
61
|
+
"mappings": [
|
|
62
|
+
{
|
|
63
|
+
"inputKey": "input",
|
|
64
|
+
"outputKey": "documents",
|
|
65
|
+
"transforms": [
|
|
66
|
+
{
|
|
67
|
+
"expression": {
|
|
68
|
+
"lang": "lua",
|
|
69
|
+
"body": "return MAP(input.properties.products, function(p)\n return { id = p.product_id }\nend)"
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
]
|
|
73
|
+
}
|
|
74
|
+
]
|
|
75
|
+
},
|
|
76
|
+
"product_viewed": {
|
|
77
|
+
"enrichments": [
|
|
78
|
+
{
|
|
79
|
+
"staticString": "view-item",
|
|
80
|
+
"outputKey": "eventType"
|
|
81
|
+
}
|
|
82
|
+
],
|
|
83
|
+
"mappings": [
|
|
84
|
+
{
|
|
85
|
+
"inputKey": "input",
|
|
86
|
+
"outputKey": "documents",
|
|
87
|
+
"transforms": [
|
|
88
|
+
{
|
|
89
|
+
"expression": {
|
|
90
|
+
"lang": "lua",
|
|
91
|
+
"body": "return {{ id = input.properties.product_id }}"
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
]
|
|
95
|
+
}
|
|
96
|
+
]
|
|
97
|
+
},
|
|
98
|
+
"page": {
|
|
99
|
+
"filters": [
|
|
100
|
+
{
|
|
101
|
+
"byConditions": {
|
|
102
|
+
"action": "allow",
|
|
103
|
+
"when": {
|
|
104
|
+
"matchesAny": {
|
|
105
|
+
"conditions": [
|
|
106
|
+
{
|
|
107
|
+
"stringEqual": {
|
|
108
|
+
"inputPath": "context.page.path",
|
|
109
|
+
"value": "/"
|
|
110
|
+
}
|
|
111
|
+
},
|
|
112
|
+
{
|
|
113
|
+
"inputPathExists": {
|
|
114
|
+
"inputPath": "properties.category"
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
]
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
],
|
|
123
|
+
"mappings": [
|
|
124
|
+
{
|
|
125
|
+
"inputKey": "input",
|
|
126
|
+
"outputKey": "eventType",
|
|
127
|
+
"transforms": [
|
|
128
|
+
{
|
|
129
|
+
"expression": {
|
|
130
|
+
"lang": "lua",
|
|
131
|
+
"body": "local p = input.properties or {}\nif p.category and p.category ~= \"\" then\n return \"view-category-page\"\nend\nreturn \"view-home-page\""
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
]
|
|
135
|
+
},
|
|
136
|
+
{
|
|
137
|
+
"inputKey": "properties.category",
|
|
138
|
+
"outputKey": "pageInfo.pageCategory"
|
|
139
|
+
}
|
|
140
|
+
]
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"32f144a3ea8a6b57a4625ac956a7b162 -"
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
{
|
|
2
|
+
"params": [
|
|
3
|
+
{
|
|
4
|
+
"name": "API_VERSION",
|
|
5
|
+
"defaultValue": "v1"
|
|
6
|
+
},
|
|
7
|
+
{
|
|
8
|
+
"name": "SERVICE_ACCOUNT_EMAIL",
|
|
9
|
+
"exampleValue": "my-service-account-email"
|
|
10
|
+
},
|
|
11
|
+
{
|
|
12
|
+
"name": "PRIVATE_KEY",
|
|
13
|
+
"exampleValue": "my-private-key"
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
"name": "OPERATION_TYPE",
|
|
17
|
+
"exampleValue": "my-operation-type",
|
|
18
|
+
"defaultValue": "ingest"
|
|
19
|
+
}
|
|
20
|
+
],
|
|
21
|
+
"default": {
|
|
22
|
+
"endpoint": "https://datamanager.googleapis.com/$$API_VERSION$$/audienceMembers:$$OPERATION_TYPE$$",
|
|
23
|
+
"batchSize": 500,
|
|
24
|
+
"method": "POST",
|
|
25
|
+
"headers": [
|
|
26
|
+
{
|
|
27
|
+
"key": "Content-Type",
|
|
28
|
+
"value": "application/json"
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
"key": "Accept",
|
|
32
|
+
"value": "application/json"
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
"key": "Accept-Encoding",
|
|
36
|
+
"value": "identity"
|
|
37
|
+
}
|
|
38
|
+
],
|
|
39
|
+
"oauth2Auth": {
|
|
40
|
+
"request": {
|
|
41
|
+
"url": "https://oauth2.googleapis.com/token",
|
|
42
|
+
"contentType": "application/x-www-form-urlencoded",
|
|
43
|
+
"method": "POST",
|
|
44
|
+
"body": [
|
|
45
|
+
{
|
|
46
|
+
"key": "grant_type",
|
|
47
|
+
"value": "urn:ietf:params:oauth:grant-type:jwt-bearer"
|
|
48
|
+
}
|
|
49
|
+
]
|
|
50
|
+
},
|
|
51
|
+
"responseAccessTokenKey": "access_token",
|
|
52
|
+
"jwt": {
|
|
53
|
+
"claims": [
|
|
54
|
+
{
|
|
55
|
+
"key": "aud",
|
|
56
|
+
"value": "https://oauth2.googleapis.com/token"
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
"key": "scope",
|
|
60
|
+
"value": "https://www.googleapis.com/auth/datamanager"
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
"key": "iss",
|
|
64
|
+
"value": "$$SERVICE_ACCOUNT_EMAIL$$"
|
|
65
|
+
}
|
|
66
|
+
],
|
|
67
|
+
"signingMethod": "SIGNING_METHOD_RS256",
|
|
68
|
+
"rsaPemKey": "$$PRIVATE_KEY$$",
|
|
69
|
+
"requestKey": "assertion"
|
|
70
|
+
}
|
|
71
|
+
},
|
|
72
|
+
"transform": {
|
|
73
|
+
"lang": "lua",
|
|
74
|
+
"body": "local members = {}\nlocal destinations = {}\nlocal seen = {}\nfor _, item in ipairs(batch) do\n local member = item.audienceMembers\n local references = {}\n for _, d in ipairs(item.destinations or {}) do\n local acc = d.operatingAccount or {}\n local key = d.reference or ((acc.accountType or \"\") .. \"|\" .. (acc.accountId or \"\") .. \"|\" .. (d.productDestinationId or \"\"))\n if not seen[key] then\n seen[key] = true\n table.insert(destinations, d)\n end\n if d.reference then\n table.insert(references, d.reference)\n end\n end\n if member then\n if #references > 0 then\n member.destinationReferences = references\n end\n table.insert(members, member)\n end\nend\nrequest.body = {\n destinations = destinations,\n audienceMembers = members,\n consent = batch[1].consent,\n encoding = batch[1].encoding,\n termsOfService = batch[1].termsOfService,\n validateOnly = batch[1].validateOnly,\n}\nreturn request"
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"a220c8a6cd7d685860c7a73c4ae661c6 -"
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
{
|
|
2
|
+
"isDraft": false,
|
|
3
|
+
"isDeprecated": false,
|
|
4
|
+
"isBeta": true,
|
|
5
|
+
"friendlyName": "Google Data Manager – Audiences",
|
|
6
|
+
"description": "Server-side audience membership delivery to Google Ads Customer Match via the Data Manager API.",
|
|
7
|
+
"logo": "https://cdn.metarouter.io/google-dm-audiences.png",
|
|
8
|
+
"color": "#4285F4",
|
|
9
|
+
"eventSource": {
|
|
10
|
+
"isAndroidApp": true,
|
|
11
|
+
"isIosApp": true,
|
|
12
|
+
"isWebApp": true
|
|
13
|
+
},
|
|
14
|
+
"inputSchema": "analytics_js",
|
|
15
|
+
"releaseNotes": [
|
|
16
|
+
{
|
|
17
|
+
"date": "2026-07-22T21:00:00.000Z",
|
|
18
|
+
"note": "Version: 0.1.0\nBeta Version\nGoogle Data Manager – Audiences initial release"
|
|
19
|
+
}
|
|
20
|
+
]
|
|
21
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"0bf8bbf6393c68b68bdcca79adc0504c -"
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": "0.1.0",
|
|
3
|
+
"params": [
|
|
4
|
+
{
|
|
5
|
+
"name": "OPERATION_TYPE",
|
|
6
|
+
"exampleValue": "my-operation-type"
|
|
7
|
+
}
|
|
8
|
+
],
|
|
9
|
+
"global": {
|
|
10
|
+
"filters": [
|
|
11
|
+
{
|
|
12
|
+
"byConditions": {
|
|
13
|
+
"action": "allow",
|
|
14
|
+
"when": {
|
|
15
|
+
"matchesAny": {
|
|
16
|
+
"conditions": [
|
|
17
|
+
{
|
|
18
|
+
"inputPathExists": {
|
|
19
|
+
"inputPath": "traits.email"
|
|
20
|
+
}
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
"inputPathExists": {
|
|
24
|
+
"inputPath": "traits.phone"
|
|
25
|
+
}
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
"inputPathExists": {
|
|
29
|
+
"inputPath": "userId"
|
|
30
|
+
}
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
"inputPathExists": {
|
|
34
|
+
"inputPath": "context.device.advertisingId"
|
|
35
|
+
}
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
"inputPathExists": {
|
|
39
|
+
"inputPath": "context.ip"
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
]
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
],
|
|
48
|
+
"enrichments": [
|
|
49
|
+
{
|
|
50
|
+
"outputKey": "encoding",
|
|
51
|
+
"staticString": "HEX"
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
"outputKey": "validateOnly",
|
|
55
|
+
"staticBool": false
|
|
56
|
+
}
|
|
57
|
+
],
|
|
58
|
+
"mappings": [
|
|
59
|
+
{
|
|
60
|
+
"inputKey": "input",
|
|
61
|
+
"outputKey": "destinations",
|
|
62
|
+
"transforms": [
|
|
63
|
+
{
|
|
64
|
+
"expression": {
|
|
65
|
+
"lang": "lua",
|
|
66
|
+
"name": "destinations",
|
|
67
|
+
"body": "local function destination(reference, accountType, accountId, productDestinationId)\n return { reference = reference, operatingAccount = { accountType = accountType, accountId = accountId }, productDestinationId = productDestinationId }\nend\nlocal t = input.traits or {}\nlocal a = t.address\n\n-- PICK ONE: keep the block for your data type, delete the other two.\n-- Then delete the matching mappings below and the matching global.filters conditions.\n\nif t.email or t.phone or (t.firstName and t.lastName and a and a.country and a.postalCode) or input.context.ip then\n return {\n destination(\"ads_contact\", \"GOOGLE_ADS\", \"ADD_GOOGLE_ADS_ACCOUNT_ID_HERE\", \"ADD_CONTACT_LIST_ID_HERE\"),\n destination(\"dv_contact\", \"DISPLAY_VIDEO_ADVERTISER\", \"ADD_DISPLAY_VIDEO_ADVERTISER_ID_HERE\", \"ADD_CONTACT_LIST_ID_HERE\"),\n }\nend\n\nif input.context.device and input.context.device.advertisingId then\n return {\n destination(\"ads_mobile\", \"GOOGLE_ADS\", \"ADD_GOOGLE_ADS_ACCOUNT_ID_HERE\", \"ADD_MOBILE_LIST_ID_HERE\"),\n destination(\"dv_mobile\", \"DISPLAY_VIDEO_ADVERTISER\", \"ADD_DISPLAY_VIDEO_ADVERTISER_ID_HERE\", \"ADD_MOBILE_LIST_ID_HERE\"),\n }\nend\n\nif input.userId then\n return {\n destination(\"ads_userid\", \"GOOGLE_ADS\", \"ADD_GOOGLE_ADS_ACCOUNT_ID_HERE\", \"ADD_USERID_LIST_ID_HERE\"),\n destination(\"dv_userid\", \"DISPLAY_VIDEO_ADVERTISER\", \"ADD_DISPLAY_VIDEO_ADVERTISER_ID_HERE\", \"ADD_USERID_LIST_ID_HERE\"),\n }\nend"
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
]
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
"inputKey": "input",
|
|
74
|
+
"outputKey": "audienceMembers.compositeData",
|
|
75
|
+
"transforms": [
|
|
76
|
+
{
|
|
77
|
+
"expression": {
|
|
78
|
+
"lang": "lua",
|
|
79
|
+
"name": "compositeData",
|
|
80
|
+
"body": "local userIdentifiers = {}\nlocal t = input.traits or {}\nif t.email then\n local email = LOWER(TRIM(t.email))\n local parts = SPLIT(email, \"@\")\n if parts[2] == \"gmail.com\" or parts[2] == \"googlemail.com\" then\n email = parts[1]:gsub(\"%.\", \"\"):gsub(\"%+.*\", \"\") .. \"@\" .. parts[2]\n end\n table.insert(userIdentifiers, { emailAddress = TO_SHA256_HASH(email) })\nend\nif t.phone then\n local phone = TRIM(t.phone)\n local normalized_phone = phone:gsub(\"[^%d+]\", \"\"):gsub(\"^00\", \"+\"):gsub(\"^(%d)\", \"+1%1\")\n table.insert(userIdentifiers, {\n phoneNumber = TO_SHA256_HASH(normalized_phone)\n })\nend\nif t.firstName and t.lastName and t.address and t.address.country and t.address.postalCode then\n local a = t.address\n table.insert(userIdentifiers, {\n address = {\n givenName = TO_SHA256_HASH(LOWER(TRIM(t.firstName))),\n familyName = TO_SHA256_HASH(LOWER(TRIM(t.lastName))),\n postalCode = a.postalCode,\n regionCode = TO_ISO_COUNTRY(a.country),\n }\n })\nend\n\nlocal hasIp = input.context.ip\nif #userIdentifiers == 0 and not hasIp then\n return nil\nend\n\nlocal composite = {}\nif #userIdentifiers > 0 then\n composite.userData = { userIdentifiers = userIdentifiers }\nend\nif hasIp then\n composite.ipData = { { ipAddress = input.context.ip, observeStartTime = input.timestamp } }\nend\nreturn composite"
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
]
|
|
84
|
+
},
|
|
85
|
+
{
|
|
86
|
+
"inputKey": "input",
|
|
87
|
+
"outputKey": "audienceMembers.mobileData.mobileIds",
|
|
88
|
+
"transforms": [
|
|
89
|
+
{
|
|
90
|
+
"expression": {
|
|
91
|
+
"lang": "lua",
|
|
92
|
+
"body": "if input.context.device and input.context.device.advertisingId then\n return { input.context.device.advertisingId }\nend"
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
]
|
|
96
|
+
},
|
|
97
|
+
{
|
|
98
|
+
"inputKey": "userId",
|
|
99
|
+
"outputKey": "audienceMembers.userIdData.userId"
|
|
100
|
+
},
|
|
101
|
+
{
|
|
102
|
+
"inputKey": "input",
|
|
103
|
+
"outputKey": "consent",
|
|
104
|
+
"transforms": [
|
|
105
|
+
{
|
|
106
|
+
"expression": {
|
|
107
|
+
"lang": "lua",
|
|
108
|
+
"body": "if \"$$OPERATION_TYPE$$\" == \"ingest\" then\n return {\n adUserData = \"CONSENT_GRANTED\",\n adPersonalization = \"CONSENT_GRANTED\",\n }\nend"
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
]
|
|
112
|
+
},
|
|
113
|
+
{
|
|
114
|
+
"inputKey": "input",
|
|
115
|
+
"outputKey": "termsOfService.customerMatchTermsOfServiceStatus",
|
|
116
|
+
"transforms": [
|
|
117
|
+
{
|
|
118
|
+
"expression": {
|
|
119
|
+
"lang": "lua",
|
|
120
|
+
"body": "if \"$$OPERATION_TYPE$$\" == \"ingest\" then\n return \"ACCEPTED\"\nend"
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
]
|
|
124
|
+
}
|
|
125
|
+
]
|
|
126
|
+
}
|
|
127
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"
|
|
1
|
+
"85cc29d030eb6e62931b5a7de4d9772b -"
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"isDraft": false,
|
|
3
3
|
"isDeprecated": false,
|
|
4
4
|
"isBeta": true,
|
|
5
|
-
"friendlyName": "Yahoo
|
|
5
|
+
"friendlyName": "Yahoo CAPI",
|
|
6
6
|
"description": "Yahoo Conversion API allows advertisers to send conversion events server-to-server to Yahoo DSP, enabling accurate tracking of user actions like purchases or signups.",
|
|
7
7
|
"logo": "https://cdn.metarouter.io/yahoo-conversions-api.png",
|
|
8
8
|
"color": "#6001D2",
|
|
@@ -20,6 +20,10 @@
|
|
|
20
20
|
{
|
|
21
21
|
"date": "2026-06-24T21:00:00.000Z",
|
|
22
22
|
"note": "Version: 0.2.0\nUpdate userData.ip_address field in lua."
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
"date": "2026-07-22T21:00:00.000Z",
|
|
26
|
+
"note": "Version: 0.3.0\nAdd page event, update friendlyName."
|
|
23
27
|
}
|
|
24
28
|
]
|
|
25
29
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"
|
|
1
|
+
"32d2848b7e2fd995247cb0957add5de3 -"
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "0.
|
|
2
|
+
"version": "0.3.0",
|
|
3
3
|
"default": {
|
|
4
4
|
"filters": [
|
|
5
5
|
{
|
|
@@ -137,6 +137,14 @@
|
|
|
137
137
|
]
|
|
138
138
|
},
|
|
139
139
|
"eventSpecific": {
|
|
140
|
+
"page": {
|
|
141
|
+
"mappings": [
|
|
142
|
+
{
|
|
143
|
+
"inputKey": "properties.url",
|
|
144
|
+
"outputKey": "actionSourceUrl"
|
|
145
|
+
}
|
|
146
|
+
]
|
|
147
|
+
},
|
|
140
148
|
"product_list_viewed": {
|
|
141
149
|
"mappings": [
|
|
142
150
|
{
|
package/README.md
CHANGED
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
# MetaRouter Starter Kits
|
|
2
2
|
|
|
3
3
|
### 2026-07
|
|
4
|
+
- Agent Search (New)
|
|
5
|
+
- Google Data Manager – Audiences (New)
|
|
4
6
|
- Matomo (New)
|
|
5
7
|
- Meta CAPI
|
|
6
8
|
- OpenAI CAPI
|
|
9
|
+
- Yahoo CAPI
|
|
7
10
|
|
|
8
11
|
| Kit Name | Initial Release Date | Stable Release Date | Latest Release Date | Current Version | Latest Note |
|
|
9
12
|
|----------|----------------------|---------------------|---------------------|-----------------|-------------|
|
|
@@ -13,6 +16,7 @@
|
|
|
13
16
|
| Adobe Analytics | 2025-10-08 | 2026-01-07 | 2026-01-07 | Version: 1.0.0 | Stable Release |
|
|
14
17
|
| Adobe Experience Platform | 2023-03-21 | 2025-08-20 | 2025-11-19 | Version: 1.1.0 | Added ECID support Updated identityMap mappings |
|
|
15
18
|
| Adobe ID | 2023-03-07 | N/A | 2024-10-23 | Version: 0.2.0 | Added header `Accept-Encoding: application/json` |
|
|
19
|
+
| Agent Search (New) | 2026-07-22 | N/A | 2026-07-22 | Version: 0.1.0 | Beta Version Agent Search initial release |
|
|
16
20
|
| Amazon DSP - Events | 2025-12-03 | 2026-02-18 | 2026-02-18 | Version: 1.0.0 | Stable Release |
|
|
17
21
|
| Amazon DSP CAPI | 2025-05-21 | 2025-08-13 | 2026-02-04 | Version: 1.1.0 | Deprecated |
|
|
18
22
|
| Amazon Data Firehose | 2025-02-05 | 2025-04-02 | 2025-10-15 | Version: 1.0.1 | Added friendly names to expressions |
|
|
@@ -47,6 +51,7 @@
|
|
|
47
51
|
| Google Analytics 4 (Collect) | 2024-04-24 | 2025-08-20 | 2026-06-10 | Version: 1.1.0 | Added support for reading gclid, dclid, clientID, sessionID and sessionCount from the googleAnalytics4 child sync provider with fallback to the googleGtag provider |
|
|
48
52
|
| Google BigQuery | 2021-06-24 | 2023-12-13 | 2025-01-16 | Version: 1.1.0 | Adding support for table overrides |
|
|
49
53
|
| Google Cloud Storage | 2021-06-24 | 2026-03-18 | 2026-03-18 | Version: 1.0.0 | Stable Release |
|
|
54
|
+
| Google Data Manager – Audiences (New) | 2026-07-22 | N/A | 2026-07-22 | Version: 0.1.0 | Beta Version Google Data Manager – Audiences initial release |
|
|
50
55
|
| Google Pub/Sub | 2021-06-24 | 2023-12-13 | 2025-10-15 | Version: 1.1.1 | Added friendly names to expressions |
|
|
51
56
|
| Heap | 2024-03-26 | N/A | 2026-06-10 | Version: 0.3.0 | EU endpoint support Removed unused parameter |
|
|
52
57
|
| Hightouch | 2026-01-14 | 2026-04-08 | 2026-04-08 | Version: 1.0.0 | Stable Release |
|
|
@@ -86,8 +91,8 @@
|
|
|
86
91
|
| RTB House | 2024-11-20 | N/A | 2025-12-03 | Version: 0.4.0 | Updated endpoint to be a parameter |
|
|
87
92
|
| Rakuten Conversions | 2025-07-30 | 2025-09-24 | 2025-09-24 | Version: 1.0.0 | Stable Release |
|
|
88
93
|
| Reddit Ads | 2023-09-12 | 2026-01-07 | 2026-01-07 | Version: 2.0.0 | Stable Release of Reddit CAPI V3 |
|
|
89
|
-
| Ringier Axel Springer Poland | 2025-06-25 | 2026-01-21 | 2026-05-20 | Version: 1.1.0 | Added ord to the playbook |
|
|
90
94
|
| Ringier Axel Springer Poland | 2025-03-05 | 2025-04-09 | 2026-01-21 | Version: 1.4.0 | Deprecating in favor of the released RASP SDK Kit |
|
|
95
|
+
| Ringier Axel Springer Poland | 2025-06-25 | 2026-01-21 | 2026-05-20 | Version: 1.1.0 | Added ord to the playbook |
|
|
91
96
|
| Roku | 2023-04-27 | N/A | 2025-07-30 | Version: 1.2.0 | Replaced context.traits with traits. |
|
|
92
97
|
| Roomvo | 2021-08-10 | N/A | 2026-03-25 | Version: 0.2.2 | Converted some fields to camelCase for schema validation |
|
|
93
98
|
| Salesforce CDP | 2022-05-31 | N/A | 2025-07-30 | Version: 1.2.0 | Replaced originalTimestamp with timestamp |
|
|
@@ -109,7 +114,7 @@
|
|
|
109
114
|
| Wirtualna Polska | 2026-03-11 | 2026-04-22 | 2026-06-03 | Version: 1.1.0 | Added content_name parameter for ViewContent events. New product_list_viewed, page, and screen mappings |
|
|
110
115
|
| X Ads - Web Conversions | 2024-09-04 | 2024-09-25 | 2026-03-25 | Version: 1.1.1 | Converted some fields to camelCase for schema validation |
|
|
111
116
|
| Xandr | 2021-07-13 | N/A | 2024-10-23 | Version: 1.1.0 | Added header `Accept-Encoding: application/json` |
|
|
112
|
-
| Yahoo
|
|
117
|
+
| Yahoo CAPI | 2026-05-27 | N/A | 2026-07-22 | Version: 0.3.0 | Add page event, update friendlyName. |
|
|
113
118
|
| Yahoo Enhanced Attribution | 2023-03-07 | N/A | 2025-04-09 | Version: 0.4.0 | Deprecated |
|
|
114
119
|
| Yahoo Pixel API | 2023-03-07 | 2023-12-13 | 2025-04-09 | Version: 1.3.0 | Friendly name updated |
|
|
115
120
|
| Zeotap | 2024-02-21 | 2025-08-20 | 2025-08-20 | Version: 1.0.0 | Stable Release |
|
package/index.js
CHANGED
|
@@ -297,6 +297,12 @@ exports['google-ads'] = {
|
|
|
297
297
|
metadata: require('./.dist/google-ads/metadata.json')
|
|
298
298
|
}
|
|
299
299
|
|
|
300
|
+
exports['google-agent-search'] = {
|
|
301
|
+
endpointSchema: require('./.dist/google-agent-search/connection.json'),
|
|
302
|
+
playbook: require('./.dist/google-agent-search/playbook.json'),
|
|
303
|
+
metadata: require('./.dist/google-agent-search/metadata.json')
|
|
304
|
+
}
|
|
305
|
+
|
|
300
306
|
exports['google-analytics'] = {
|
|
301
307
|
endpointSchema: require('./.dist/google-analytics/connection.json'),
|
|
302
308
|
playbook: require('./.dist/google-analytics/playbook.json'),
|
|
@@ -315,6 +321,12 @@ exports['google-analytics-4-collect'] = {
|
|
|
315
321
|
metadata: require('./.dist/google-analytics-4-collect/metadata.json')
|
|
316
322
|
}
|
|
317
323
|
|
|
324
|
+
exports['google-dm-audiences'] = {
|
|
325
|
+
endpointSchema: require('./.dist/google-dm-audiences/connection.json'),
|
|
326
|
+
playbook: require('./.dist/google-dm-audiences/playbook.json'),
|
|
327
|
+
metadata: require('./.dist/google-dm-audiences/metadata.json')
|
|
328
|
+
}
|
|
329
|
+
|
|
318
330
|
exports['google-firebase'] = {
|
|
319
331
|
endpointSchema: require('./.dist/google-firebase/connection.json'),
|
|
320
332
|
playbook: require('./.dist/google-firebase/playbook.json'),
|
|
@@ -875,12 +887,12 @@ exports.etags = {
|
|
|
875
887
|
'engage-front': {
|
|
876
888
|
endpointSchema: require('./.dist/engage-front/connection.etag.json'),
|
|
877
889
|
playbook: require('./.dist/engage-front/playbook.etag.json'),
|
|
878
|
-
|
|
890
|
+
kit: require('./.dist/engage-front/kit.etag.json')
|
|
879
891
|
},
|
|
880
892
|
'eulerian': {
|
|
881
893
|
endpointSchema: require('./.dist/eulerian/connection.etag.json'),
|
|
882
894
|
playbook: require('./.dist/eulerian/playbook.etag.json'),
|
|
883
|
-
|
|
895
|
+
kit: require('./.dist/eulerian/kit.etag.json')
|
|
884
896
|
},
|
|
885
897
|
'facebook-pixel': {
|
|
886
898
|
endpointSchema: require('./.dist/facebook-pixel/connection.etag.json'),
|
|
@@ -897,6 +909,11 @@ exports.etags = {
|
|
|
897
909
|
playbook: require('./.dist/google-ads/playbook.etag.json'),
|
|
898
910
|
kit: require('./.dist/google-ads/kit.etag.json')
|
|
899
911
|
},
|
|
912
|
+
'google-agent-search': {
|
|
913
|
+
endpointSchema: require('./.dist/google-agent-search/connection.etag.json'),
|
|
914
|
+
playbook: require('./.dist/google-agent-search/playbook.etag.json'),
|
|
915
|
+
kit: require('./.dist/google-agent-search/kit.etag.json')
|
|
916
|
+
},
|
|
900
917
|
'google-analytics': {
|
|
901
918
|
endpointSchema: require('./.dist/google-analytics/connection.etag.json'),
|
|
902
919
|
playbook: require('./.dist/google-analytics/playbook.etag.json'),
|
|
@@ -912,6 +929,11 @@ exports.etags = {
|
|
|
912
929
|
playbook: require('./.dist/google-analytics-4-collect/playbook.etag.json'),
|
|
913
930
|
kit: require('./.dist/google-analytics-4-collect/kit.etag.json')
|
|
914
931
|
},
|
|
932
|
+
'google-dm-audiences': {
|
|
933
|
+
endpointSchema: require('./.dist/google-dm-audiences/connection.etag.json'),
|
|
934
|
+
playbook: require('./.dist/google-dm-audiences/playbook.etag.json'),
|
|
935
|
+
kit: require('./.dist/google-dm-audiences/kit.etag.json')
|
|
936
|
+
},
|
|
915
937
|
'google-firebase': {
|
|
916
938
|
playbook: require('./.dist/google-firebase/playbook.etag.json'),
|
|
917
939
|
kit: require('./.dist/google-firebase/kit.etag.json')
|