Documentation Index
Fetch the complete documentation index at: https://developer.prove.com/llms.txt
Use this file to discover all available pages before exploring further.
Receive Prove Manage webhooks
Use this guide to register an HTTPS endpoint in the Prove Portal, verify each delivery with the signed JWT inX-Prove-Authorization, and process phone-change notifications from the JSON body.
Webhook events are available in the US only.
Prerequisites
- Public HTTPS URL — Prove must be able to
POSTto your endpoint from the internet. Configure the URL in the Prove Portal. - Portal access — Sign-in to the Prove Portal with permission to create or open an Identity Manager project.
- JWT verification — Your service can validate HS256 JWTs using the shared secret from the Portal (before you accept webhook JSON).
- Delivery expectations — Prove emits events as changes are detected; delivery is best-effort and queued retries for failed delivery are not provided—design your endpoint to respond quickly and return a 2xx status when you accept a delivery.
- No retroactive history — Events that occurred before you saved the webhook configuration are not sent later.
- Per-identity stream — After certain outcomes (disconnect, moved out of coverage, or some phone number change situations), Prove may send no further notifications for that identity until you re-verify and re-enroll an updated number if the customer supplies one.
Register the endpoint in the Portal
Sign in to the Prove Portal
Open the Prove Portal and authenticate.
Create or open an Identity Manager project
Go to Projects. Create a project (Create Project) and choose Prove Identity Manager, or open an existing Identity Manager project.
Open webhook settings
In the project, open the Configure tab and locate Sandbox webhook settings (or the environment you are integrating).
Paste your webhook URL and save
Enter your HTTPS listener URL in the webhook field, then use Save and Test Webhook so Prove persists the configuration and issues a test
POST to your endpoint.Verify the JWT on every delivery
For each request, treat the body as untrusted until the JWT checks pass.
- Read
Authorizationfrom theX-Prove-Authorizationheader (Bearer <jwt>). - Verify the JWT with HS256 and the shared secret from the Portal.
- Validate standard time claims (
iat,nbf,exp), allowing about ±60 seconds clock skew. Reject tokens pastexp(Prove uses about 5 minutes of validity from issuance). - Confirm
issequals the literal stringProve Identity. - Replay protection — Reject any
jtiyou have already accepted within your replay window (each delivery uses a new UUIDjti). - Integrity — Compute SHA-256 over the raw request body bytes (before JSON parsing). Compare a constant-time hex string equality against the
body_hashclaim inside the JWT payload. If it fails, reject the request.
X-Correlation-ID on each attempt—log it for support and tracing.Example decoded payload (middle segment of the JWT):Example JWT payload
Parse and handle the JSON body
After JWT and
body_hash succeed, parse the JSON. Expect a top-level notifications array (Prove may send up to 100 objects per call; batches can be smaller).Handle each element using the fields below. Optional keys such as newCarrier or newLineType appear only for some event types.| Field | Use |
|---|---|
eventId | Store for idempotency and support references. |
event | Human-readable description. |
eventType | Branch logic. Values include PHONE_NUMBER_CHANGE, DISCONNECT, PORT, LINE_TYPE_CHANGE, MOVED_OUT_OF_COVERAGE. |
eventTimestamp | ISO 8601 time from Prove. |
clientCustomerId | Your customer key, if supplied on enrollment. |
proveId | Prove identifier for the enrolled identity. |
Example payload
Confirm the integration
- Trigger Save and Test Webhook and confirm your handler receives a test request, returns 2xx, and passes JWT +
body_hashchecks. - Force an invalid signature or body tamper in a dev environment and confirm your service rejects the call.
- In Sandbox, exercise at least one real notification path you plan to support and confirm your persistence and idempotency logic behave as expected.

