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
Copy file name to clipboardExpand all lines: src/pages/docs/release-notes/upcoming-releases.md
+6Lines changed: 6 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -27,3 +27,9 @@ Partners can now identify at-risk customers and high-growth opportunities using
27
27
| No changes needed for existing fields |`productRecommendations` and `overlayRecommendations` are unchanged. Existing integrations continue to work without modification. |
28
28
29
29
For more information, see [Propensity Intelligence](../recommendations/index.md#propensity-intelligence).
30
+
31
+
### Testing Propensity Signals in sandbox
32
+
33
+
A set of 13 predefined test seeds is configured in the Sandbox so you can exercise every combination of rating level and empty-array behavior during integration testing. Each seed returns a fixed response.
34
+
35
+
For more information, see [Testing Propensity Signals in sandbox](../../sandbox/sandbox-portal/recommendations/index.md#testing-propensity-signals-in-sandbox).
Copy file name to clipboardExpand all lines: src/pages/sandbox/sandbox-portal/recommendations/index.md
+33-39Lines changed: 33 additions & 39 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -22,40 +22,34 @@ Specific, hardcoded recommendations have been configured to facilitate integrati
22
22
23
23
## Testing Propensity Signals in Sandbox
24
24
25
-
In addition to product recommendations, the Sandbox returns agent-driven propensity signals under the `propensity` object for the [Fetch Recommendations API](../../../docs/recommendations/apis.md#fetch-recommendations). Request them using the `signals` parameter (`"signals": ["churn", "seatExpansion"]`); when omitted, all available signals are returned.
25
+
In addition to product recommendations, the Sandbox returns agent-driven propensity signals under the `propensity` object for the [Fetch Recommendations API](../../../docs/recommendations/apis.md#fetch-recommendations). You can request these signals using the `includePropensity: true` request parameter.
26
26
27
27
Each signal type (`churn`, `seatExpansion`) is returned as an array of prediction objects. Every prediction shares a common shape — `category`, `probability`, `refreshDate`, `reasons`, and `additionalDetails`. The `category` field indicates the scope of the prediction; the Sandbox seeds currently use `"allOfferings"`.
28
28
29
-
A set of 13 predefined test seeds is configured in the Sandbox so you can exercise every combination of rating level and empty-array behavior during integration testing. Each seed returns a fixed response, so results are deterministic and repeatable.
29
+
**Note:**
30
30
31
-
### How probabilities are mapped
32
-
33
-
Each model produces a percentile score (0–100) that is mapped to a `HIGH` / `MEDIUM` / `LOW` rating using the following thresholds:
34
-
35
-
| Signal | HIGH | MEDIUM | LOW |
36
-
|---|---|---|---|
37
-
| churn | ≥ 95.0 | ≥ 91.0 | < 91.0 |
38
-
| seatExpansion | ≥ 91.0 | ≥ 81.0 | < 81.0 |
39
-
40
-
**Note:** The churn model is bimodal — only scores ≥ 91 qualify as `MEDIUM` or above. The `refreshDate` is the score date normalized to start-of-day UTC (for example, `2026-05-14` becomes `2026-05-14T00:00:00Z`). Seeds use `score_date = 2026-05-14` throughout.
31
+
- A set of 13 predefined test seeds is configured in the Sandbox so you can exercise every combination of rating level and empty-array behavior during integration testing. Each seed returns a fixed response, so results are deterministic and repeatable.
32
+
- Each customer is assigned one of the seeded responses randomly for testing. Once assigned, the seeded response does not change.
41
33
42
34
### Available test seeds
43
35
36
+
Each model produces a percentile score (0–100) that is mapped to a `HIGH` / `MEDIUM` / `LOW` rating
37
+
44
38
| Index | Scenario | Churn | Seat Expansion |
45
39
|---|---|---|---|
46
-
|0| Both HIGH |**HIGH**|**HIGH**|
47
-
|1| Churn HIGH + Expansion LOW |**HIGH**| LOW |
48
-
|2| Churn LOW + Expansion HIGH | LOW |**HIGH**|
49
-
|3| Both MEDIUM |**MEDIUM**|**MEDIUM**|
50
-
|4| Both LOW | LOW | LOW |
51
-
|5| Churn only HIGH |**HIGH**| — (empty array) |
52
-
|6| Expansion only HIGH | — (empty array) |**HIGH**|
53
-
|7| Churn MEDIUM + Expansion HIGH |**MEDIUM**|**HIGH**|
54
-
|8| Churn HIGH + Expansion MEDIUM |**HIGH**|**MEDIUM**|
55
-
|9| Both HIGH, large enterprise |**HIGH**|**HIGH**|
56
-
|10| Churn only MEDIUM |**MEDIUM**| — (empty array) |
57
-
|11| Expansion only LOW | — (empty array) | LOW |
58
-
|12| Both HIGH, Acrobat + CC activity |**HIGH**|**HIGH**|
40
+
|1| Both HIGH |**HIGH**|**HIGH**|
41
+
|2| Churn HIGH + Expansion LOW |**HIGH**| LOW |
42
+
|3| Churn LOW + Expansion HIGH | LOW |**HIGH**|
43
+
|4| Both MEDIUM |**MEDIUM**|**MEDIUM**|
44
+
|5| Both LOW | LOW | LOW |
45
+
|6| Churn only HIGH |**HIGH**| — (empty array) |
46
+
|7| Expansion only HIGH | — (empty array) |**HIGH**|
47
+
|8| Churn MEDIUM + Expansion HIGH |**MEDIUM**|**HIGH**|
48
+
|9| Churn HIGH + Expansion MEDIUM |**HIGH**|**MEDIUM**|
49
+
|10| Both HIGH, large enterprise |**HIGH**|**HIGH**|
50
+
|11| Churn only MEDIUM |**MEDIUM**| — (empty array) |
51
+
|12| Expansion only LOW | — (empty array) | LOW |
52
+
|13| Both HIGH, Acrobat + CC activity |**HIGH**|**HIGH**|
59
53
60
54
### Empty and unavailable signals
61
55
@@ -65,13 +59,13 @@ Each model produces a percentile score (0–100) that is mapped to a `HIGH` / `M
65
59
| No seat expansion data for the customer |`"seatExpansion": []`|
66
60
| Neither signal available |`"propensity": { "churn": [], "seatExpansion": [] }`|
67
61
68
-
**Note:**`predictedAddonSize`(inside `additionalDetails` on a `seatExpansion`prediction) is only serialized when a prediction is available. When no prediction exists, the key is omitted from `additionalDetails` entirely — treat a missing key as "no prediction available."
62
+
**Note:**`predictedAddonSize` inside `additionalDetails` on a `seatExpansion`predictio is serializedonly when a prediction is available. When no prediction exists, the key is omitted entirely from `additionalDetails`. Treat a missing key as "no prediction available."
69
63
70
64
### Seed-by-seed API output
71
65
72
66
The following examples show the `propensity` node of the response for each seed.
0 commit comments