Snapshots
Snapshots capture assessment progress so visitors can save, share, and resume their work. When someone completes an assessment on your site, they can share a link with colleagues or return later to pick up where they left off.
Why snapshots matter
Snapshots enable three key scenarios:
| Scenario | Description | Business value |
|---|---|---|
| Save and resume | Visitor starts assessment, leaves, returns later | Higher completion rates |
| Share with team | Visitor sends link to colleague or decision-maker | Expands reach within accounts |
| Handoff to Deep Fathom | Assessment correlation reaches the controlled sales continuation | Seamless, privacy-safe lead conversion |
How snapshots work
When a visitor interacts with the configurator, the hosted app keeps its working state locally and can persist a full snapshot to a partner-selected service.
Service-based snapshots
Assessment state is stored on a backend service, referenced by ID:
https://yoursite.com/assessment?df_snapshot=snap_abc123
Pros: Clean URLs, full data preserved, supports large assessments Cons: Requires snapshot service endpoint
Configuring snapshots
URL snapshots (default)
URL snapshots work automatically. No configuration needed.
To allow company names in URL snapshots (disabled by default for privacy):
<div
data-deep-fathom-onramp
data-partner-id="your-partner-id"
data-allow-url-pii="true"
></div>
Only enable data-allow-url-pii for internal or demo contexts. Shareable URLs with company names may expose sensitive information.
Service-based snapshots
Point to your snapshot service endpoint:
<div
data-deep-fathom-onramp
data-partner-id="your-partner-id"
data-snapshot-endpoint="https://api.deepfathom.ai/snapshots"
></div>
When configured, the SDK will:
- Save: POST snapshot data to the endpoint when visitors share or complete
- Load: GET snapshot data when visitors return via a snapshot URL
Snapshot service API
If you're implementing your own snapshot service, here's the expected contract:
Save a snapshot
POST /snapshots
Content-Type: application/json
{
"sessionId": "abc123",
"state": { ... },
"summary": { ... },
"attribution": { ... },
"timestamp": "2025-01-23T14:30:00Z"
}
Response:
{
"snapshotId": "snap_abc123"
}
Or:
{
"id": "snap_abc123"
}
Load a snapshot
GET /snapshots/snap_abc123
Response:
{
"snapshot": {
"sessionId": "abc123",
"state": { ... },
"summary": { ... },
"attribution": { ... },
"timestamp": "2025-01-23T14:30:00Z"
}
}
Or the snapshot object directly:
{
"sessionId": "abc123",
"state": { ... },
...
}
Controlled sales continuation
Onramp never accepts a partner-configured handoff URL. After the permanent POST /api/deal ingress accepts an idempotent deal, Wheelhouse returns the controlled Platform Commercial continuation:
https://go.deepfathom.ai/contact-sales
?service=platform_commercial
&acquisition_ref=aq_0123456789abcdefghijklmn
The continuation has only the selected service and an opaque acquisition reference matching ^aq_[A-Za-z0-9_-]{24,96}$. Lead PII, assessment answers, partner/referral attribution, session IDs, and snapshot pointers remain in the accepted request body or partner-owned event payloads; none are added to the URL. continueUrl is included in onComplete and onDealRegistered, and Onramp renders the same server-selected link visibly if a popup is blocked.
Loading priority
When a visitor arrives at a page with the configurator, snapshots are loaded in this order:
- Query parameter (
?df_snapshot=...) — Highest priority - Local storage — Previous session on same device
- Fresh start — No snapshot found
This means shared links (with query params) always take precedence over local state.
Privacy considerations
Default behavior
- Share and continuation URLs: Never include lead PII or assessment answers.
- Service snapshots: Full data is preserved (your service controls access).
- Existing
allowUrlPiiconfiguration is accepted for deployed embeds but cannot opt into URL-carried PII or assessment answers.
Data included in snapshots
| Data type | Share/continuation URL | Service snapshot |
|---|---|---|
| Assessment responses | Never | Yes |
| Company name and contact info | Never | Yes |
| Attribution and session ID | Never | Yes |
| Snapshot pointer | Opaque df_snapshot only | Yes |
Troubleshooting
Snapshots not saving
- Check endpoint URL — Verify
data-snapshot-endpointis correct and accessible - Check CORS — Your snapshot service must allow requests from the configurator origin
- Check response format — Service must return
{ snapshotId: "..." }or{ id: "..." }
Snapshots not loading
- Check URL format — Parameter should be
?df_snapshot=ID; URL hash state is not emitted by the hosted partner flow. - Check service availability — GET request must return the snapshot data
- Check data freshness — Very old snapshots may reference outdated assessment structure
No state in a share URL
- This is intentional: share URLs do not carry assessment answers.
- Enable a snapshot service to share an opaque
df_snapshotpointer.
Next steps
- Events reference — Capture snapshot events in your application
- Embedding guide — Configure snapshot endpoints