Skip to main content

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:

ScenarioDescriptionBusiness value
Save and resumeVisitor starts assessment, leaves, returns laterHigher completion rates
Share with teamVisitor sends link to colleague or decision-makerExpands reach within accounts
Handoff to Deep FathomAssessment correlation reaches the controlled sales continuationSeamless, 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>
caution

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:

  1. Save: POST snapshot data to the endpoint when visitors share or complete
  2. 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:

  1. Query parameter (?df_snapshot=...) — Highest priority
  2. Local storage — Previous session on same device
  3. 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 allowUrlPii configuration is accepted for deployed embeds but cannot opt into URL-carried PII or assessment answers.

Data included in snapshots

Data typeShare/continuation URLService snapshot
Assessment responsesNeverYes
Company name and contact infoNeverYes
Attribution and session IDNeverYes
Snapshot pointerOpaque df_snapshot onlyYes

Troubleshooting

Snapshots not saving

  1. Check endpoint URL — Verify data-snapshot-endpoint is correct and accessible
  2. Check CORS — Your snapshot service must allow requests from the configurator origin
  3. Check response format — Service must return { snapshotId: "..." } or { id: "..." }

Snapshots not loading

  1. Check URL format — Parameter should be ?df_snapshot=ID; URL hash state is not emitted by the hosted partner flow.
  2. Check service availability — GET request must return the snapshot data
  3. 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_snapshot pointer.

Next steps