|
1
|
--- |
|
2
|
title: "ProcureNet Wallet Confidence Score (WCS) Explained" |
|
3
|
sidebarTitle: "WCS" |
|
4
|
description: "Learn how ProcureNet scores buyer identity signals to determine session mode, transport, and checkout experience at orchestration time." |
|
5
|
--- |
|
6
|
|
|
7
|
The Wallet Confidence Score (WCS) is ProcureNet's buyer identity scoring engine. Every time a session is created, the WCS engine evaluates the signals you supply — such as a customer ID, email address, phone number, or device fingerprint — assigns weighted point values to each, and produces a numeric score. That score determines which orchestration mode the session enters and which real-time transport protocol is used to deliver events. The higher the score, the more ProcureNet knows about the buyer, and the more streamlined the checkout experience becomes. |
|
8
|
|
|
9
|
## Scoring Signals |
|
10
|
|
|
11
|
Each signal you pass in the `hints` object of `POST /api/v7/orchestrate` contributes a fixed number of points toward the total WCS. Signals are additive — providing more signals always raises the score. |
|
12
|
|
|
13
|
<ParamField body="customerId" type="string"> |
|
14
|
**100 points** — The strongest possible signal. A recognized customer ID confirms a returning buyer with a known purchase history. Supplying this alone is enough to enter resolved mode. |
|
15
|
</ParamField> |
|
16
|
|
|
17
|
<ParamField body="email" type="string"> |
|
18
|
**40 points** — A verified email address. Combined with a customer ID, this raises the score to 140 and reinforces identity confidence. |
|
19
|
</ParamField> |
|
20
|
|
|
21
|
<ParamField body="phone" type="string"> |
|
22
|
**40 points** — A verified phone number. Carries the same weight as email and can substitute for it when email is unavailable. |
|
23
|
</ParamField> |
|
24
|
|
|
25
|
<ParamField body="deviceId" type="string"> |
|
26
|
**20 points** — A device fingerprint or persistent device identifier. Useful for recognizing repeat sessions from the same hardware even without account credentials. |
|
27
|
</ParamField> |
|
28
|
|
|
29
|
The maximum possible score is **200 points**, achieved by supplying all four signals. |
|
30
|
|
|
31
|
## Score Thresholds and Routing |
|
32
|
|
|
33
|
ProcureNet maps WCS ranges to orchestration modes and transport protocols. The assignment happens at session creation and is immutable for the lifetime of that session. |
|
34
|
|
|
35
|
| Score Range | Mode | Transport | Prefill Available | |
|
36
|
|---|---|---|---| |
|
37
|
| ≥ 100 | `resolved` | Server-Sent Events (SSE) | Yes | |
|
38
|
| 40 – 99 | `partial` | WebSocket | No | |
|
39
|
| < 40 | `anonymous` | WebSocket | No | |
|
40
|
|
|
41
|
See [Orchestration Modes](/concepts/orchestration-modes) for a full breakdown of what each mode enables. |
|
42
|
|
|
43
|
## TypeScript Example |
|
44
|
|
|
45
|
The `WCSEngine.calculate()` method is called automatically during orchestration, but you can also invoke it directly in your integration code to predict routing before making the API call. |
|
46
|
|
|
47
|
```typescript |
|
48
|
import { WCSEngine } from './scoring/WCSEngine'; |
|
49
|
|
|
50
|
const result = WCSEngine.calculate({ |
|
51
|
customerId: 'cust_123', |
|
52
|
email: 'user@example.com', |
|
53
|
phone: null, |
|
54
|
deviceId: 'dev_456', |
|
55
|
}); |
|
56
|
|
|
57
|
// result.score → 160 |
|
58
|
// result.mode → 'resolved' |
|
59
|
// result.transport → 'sse' |
|
60
|
``` |
|
61
|
|
|
62
|
In this example, `customerId` contributes 100 pts, `email` adds 40 pts, and `deviceId` adds 20 pts, producing a total of 160 — well above the resolved threshold. |
|
63
|
|
|
64
|
<Note> |
|
65
|
You never need to call `WCSEngine.calculate()` yourself in production. ProcureNet computes the WCS automatically when you call `POST /api/v7/orchestrate`. Pass your buyer signals in the `hints` object of the request body, and the response will include `wcs_score`, `mode`, and `transport`. |
|
66
|
</Note> |
|
67
|
|
|
68
|
<Tip> |
|
69
|
Supplying a `customerId` alone guarantees resolved mode. At 100 points, it clears the threshold on its own — no additional signals required. |
|
70
|
</Tip> |