Skip to main content
The Bolto integration keeps the employer in Bolto through plan discovery, then opens a secure, preloaded Prescience workspace when they choose to continue. Bolto remains the source of truth for payroll demographics. The iframe is a read-only conversion experience, not a second census editor.

Employer experience

  1. Bolto creates the employer group and syncs the census from Check.
  2. Later, when the employer opens the Prescience offer in Bolto, Bolto’s frontend asks Bolto’s backend for an embed session.
  3. Bolto’s backend creates the short-lived session with Prescience and returns the response’s url to Bolto’s frontend.
  4. Bolto renders that URL as the iframe src. The iframe shows animated, company-specific modeling while Prescience compares the group against current local market plans.
  5. The iframe reveals Prescience Diamond with modeled employer cost, annual savings, benefits, network, and the comparison benchmark.
  6. The employer clicks Start employer setup, verifies a work email with a six-digit code, and clicks Open my workspace.
  7. Prescience creates hosted onboarding and opens a one-use authenticated handoff in a new tab. The employer’s company and census are already loaded.
The email must match the benefits contact on the group or use the group’s company domain. The handoff token expires after five minutes and works once.

1. Create the group and census

Use the normal group and census sync endpoints. Include dependents when Check has them. Those submitted households will drive the model. If Bolto does not yet have dependent elections, Prescience uses a stable, normalized small-group household mix and discloses that assumption in the quote. Final pricing, eligibility, and plan documents are confirmed during underwriting and onboarding.
Those are the only account-creation inputs Bolto needs: employer name, company domain, contact name, and work email. Do not collect a prior PEPM, address, title, or external employer ID for this step. Then replace the census with PUT /groups/{groupId}/census. A successful census sync starts the market comparison. Bolto does not need to orchestrate a separate sweep call. The census response contains only census acceptance counts and row errors. It does not contain an iframe URL and it does not open an iframe. Store the returned groupId; Bolto uses it later when an employer opens the offer.

2. Mint the iframe URL from Bolto’s backend

Response (201)
Sessions expire after 30 minutes. Create a fresh session whenever the employer opens or reloads the Prescience offer. Do not persist the iframe URL. Prescience returns the URL to Bolto’s backend. Bolto does not return that URL back to Prescience. Its backend should pass url and expiresAt to its own frontend, which renders the URL. The raw token does not need to be returned as a separate browser field because it is already contained in url.
Never put PRESCIENCE_API_KEY in browser code. Only the short-lived URL returned by POST /embed-sessions may enter the browser.

3. Render it in Bolto

The browser should ask Bolto’s own backend for the session URL, then set it as the iframe src.
Bolto backend
Bolto frontend
Recommended container behavior:
  • Use the full content width and at least 900px of height on desktop.
  • Give the iframe a dedicated route or full-width drawer, not a small modal.
  • On mobile, use the full viewport width and allow vertical scrolling.
  • If the session expires, request a new session from Bolto’s backend and replace src.
  • Do not overlay Bolto controls on the iframe’s call-to-action or email fields.
Do not create the embed session inside the census-sync handler. Census sync and employer entry are separate operations. An embed session can be created while modeling is still running; the iframe will show live progress and reveal the plan when it is ready.

What the iframe calls

These endpoints use the embed token internally. Bolto does not need to call them itself. The iframe polls only while a market sweep is active. It shows a recoverable error instead of spinning forever if the sweep or estimate fails.

Framing allowlist

Send Prescience every origin that will frame the integration, including exact staging, preview, and production origins. Prescience ops saves these on the Bolto partner record. An origin includes the scheme and hostname, for example:
The iframe document sends a browser-enforced Content-Security-Policy frame-ancestors directive. An unlisted origin is rejected before any employer data renders. https://internal.getprescience.com is separately allowed for Prescience’s own QA page.

Bolto acceptance test

Run this sequence with a sandbox key and a synthetic employer of at least 10 employees:
1

Authenticate and create the employer

Call GET /ping, create a test group with a valid benefits contact, then PUT /census. Confirm every accepted employee is returned by GET /census.
2

Open the offer from Bolto

Mint an embed session on Bolto’s server and open it from the exact staging origin that will ship. Confirm the API key never appears in browser source, network requests, logs, or the iframe URL.
3

Watch the model complete

Confirm the loading experience names the company, shows employee and location counts, animates real progress, and transitions to the plan without a manual refresh. Confirm failures produce retry and support actions.
4

Validate the offer

Confirm the modeled monthly cost, covered lives, benchmark, savings, network, and benefits match the quote response. Confirm the preliminary underwriting disclaimer is visible. Reload and confirm the model remains stable for the same stored census and market-rate snapshot.
5

Test the employer handoff

Click Start employer setup. Confirm a personal-domain email is rejected. Use the group contact or another address on the company domain, enter the six-digit code, and click Open my workspace. Confirm a new tab opens directly to the employer workspace with the correct company and census.
6

Test expiration and replay protection

Try the handoff URL a second time and confirm it no longer creates a session. Let an embed session expire, then confirm Bolto can mint and load a replacement.
7

Verify reconciliation and webhooks

Confirm enrollment.created is received and signature verification passes. Then read GET /groups/{groupId}/account and GET /groups/{groupId}/members to confirm the same employer and roster are visible to Bolto.

Go-live checklist

  • Prescience has Bolto’s staging and production iframe origins.
  • Bolto has separate sandbox and production secrets.
  • Bolto completed the acceptance test above with synthetic data.
  • Bolto registered and tested its webhook endpoint.
  • Prescience enabled live mode after compliance approval.
  • Bolto swaps only the secret at launch. The endpoint and payload shapes stay the same.