You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
- Extend attribution to Cart in addition to Checkout (following discount pattern)
- Add minProperties: 1 on dedup_keys to prevent empty objects
- Constrain custom values to string/number/boolean with maxProperties: 20
- Strengthen platform field from SHOULD to MUST match agent profile URL
- Add Privacy Note section to docs
|`dedup_keys`| object | No | Deduplication keys for reconciling with the merchant's server-side reporting |
84
90
|`utm`| object | No | Standard UTM parameters for web analytics compatibility |
85
-
|`custom`| object | No | Platform-specific key-value pairs routed by the merchant based on the `platform` field|
91
+
|`custom`| object | No | Platform-specific key-value pairs routed by the merchant based on the `platform` field. Values MUST be string, number, or boolean. Maximum 20 properties.|
86
92
87
93
### Deduplication Keys
88
94
89
95
The `dedup_keys` object prevents double-counting when both the referring
90
-
platform and the merchant report the same transaction independently:
96
+
platform and the merchant report the same transaction independently. If
"description": "Extends Checkout with attribution support, enabling referring platforms to pass attribution data and deduplication keys through agentic checkout flows.",
6
+
"description": "Extends Cart and Checkout with attribution support, enabling referring platforms to pass attribution data and deduplication keys through agentic checkout flows.",
7
7
"$defs": {
8
8
"attribution_payload": {
9
9
"type": "object",
10
10
"required": ["platform"],
11
11
"properties": {
12
12
"platform": {
13
13
"$ref": "types/reverse_domain_name.json",
14
-
"description": "Referring platform identifier (reverse domain naming). SHOULD correspond to the domain of the platform's UCP-Agent profile URL.",
14
+
"description": "Referring platform identifier (reverse domain naming). MUST correspond to the domain of the platform's UCP-Agent profile URL.",
"description": "Deduplication keys for reconciling this event with the merchant's own server-side reporting. Without these, the same transaction may be counted twice in analytics and reporting platforms.",
20
+
"minProperties": 1,
20
21
"properties": {
21
22
"event_id": { "type": "string", "description": "Shared dedup key. The merchant includes this same event_id when reporting the event via their server-side integration (e.g., CAPI, Enhanced Conversions, Events API) to prevent double-counting." },
"description": "Platform-specific key-value pairs not covered by the structured fields above. Merchants pass these through to their analytics integrations based on the platform field.",
40
-
"additionalProperties": true
41
+
"additionalProperties": {
42
+
"type": ["string", "number", "boolean"]
43
+
},
44
+
"maxProperties": 20
41
45
}
42
46
}
43
47
},
48
+
"dev.ucp.shopping.cart": {
49
+
"title": "Cart with Attribution",
50
+
"description": "Cart extended with referral attribution.",
51
+
"allOf": [
52
+
{
53
+
"$ref": "cart.json"
54
+
},
55
+
{
56
+
"type": "object",
57
+
"properties": {
58
+
"attribution": {
59
+
"$ref": "#/$defs/attribution_payload",
60
+
"description": "Referral attribution data from the platform that drove the cart.",
61
+
"ucp_request": {
62
+
"create": "optional",
63
+
"update": "optional"
64
+
}
65
+
}
66
+
}
67
+
}
68
+
]
69
+
},
44
70
"dev.ucp.shopping.checkout": {
45
71
"title": "Checkout with Attribution",
46
72
"description": "Checkout extended with referral attribution.",
0 commit comments