Demo · For platforms

Embed Velora invisibly. Stay in your product.

Watch a ben-admin platform pipe enrollment events from their event bus into Velora — the customer never knows EDI exists. They just see 'sent · accepted · active'.

01 · Webhook contract

Webhook us when an enrollment finalizes.

Your platform writes the enrollment to your DB. You fire a webhook to Velora with the canonical record shape. Velora becomes a webhook subscriber on your event bus — same shape you'd send to your analytics pipeline or your CRM.

Your webhook payload to Velora
# Your platform fires this on enrollment.finalized

POST https://velora-edi.vercel.app/api/v1/webhooks/inbound
X-Velora-Tenant-Id: tnt_3f2a91c8
X-Velora-Signature: sha256=4a7c...
Content-Type: application/json

{
  "event": "enrollment.finalized",
  "event_id": "evt_8f4a2b1c",
  "timestamp": "2026-05-01T18:23:14Z",
  "data": {
    "member_id": "acme-emp-7741",
    "employer_id": "acme-corp-001",
    "effective_date": "2026-06-01",
    "plans": [...]
  }
}

# Velora response
HTTP/1.1 202 Accepted
X-Velora-Job-Id: job_2c9e4f8a

What just happened

Your platform fired a standard webhook. Velora HMAC-verifies the signature, queues an EDI generation job, returns a job ID. The whole exchange takes ~40ms — fits inside your existing event-bus reliability envelope.

02 · Multi-tenant isolation

Per-tenant routing, per-tenant audit log.

Each of your customers (employers, agencies, TPAs) gets a Velora tenant. Their data never crosses into another tenant — row-level security enforced at the DB. Per-tenant API keys, per-tenant rate limits, per-tenant Sentry projects, per-tenant impersonation gating with 15-minute countdown.

Tenant isolation matrix
# /platform/tenants — your customer roster on Velora

TENANT ID           EMPLOYER             CARRIERS  STATUS
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
tnt_3f2a91c8       Acme Corp             4         active
tnt_8b1d44e2       Pinnacle Health       7         active
tnt_a92c0f17       Riverstone TPA        12        active
tnt_1e8f3a44       Mercy Network         3         onboarding
tnt_5c7b29d1       Northstar Benefits    9         active

# Cross-tenant query attempt...

$ SELECT * FROM enrollments
  WHERE member_id = 'acme-emp-7741'
  -- ran with tenant context: tnt_8b1d44e2 (Pinnacle)

0 rows  # RLS blocked — Acme's data is invisible to Pinnacle's session

What just happened

Postgres row-level security rejected the cross-tenant query at the DB layer — not at the application layer. Even if your platform had a bug that mis-routed a query, the DB would refuse to return rows from another tenant.

03 · Acks back to your bus

We webhook the acks back to your event bus.

Carrier sends a 999 acknowledgment. Velora parses it, normalizes it, fires a webhook back to your platform. Your bus picks it up like any other event. Your customer-facing UI surfaces it as 'sent · accepted · active' — no EDI vocabulary leaks into your product.

Velora webhook to your platform
# Velora fires this back when ack arrives

POST https://your-platform.com/webhooks/velora
X-Velora-Signature: sha256=8e3d...
Content-Type: application/json

{
  "event": "transmission.acknowledged",
  "event_id": "evt_4c91f2a8",
  "job_id": "job_2c9e4f8a",
  "member_id": "acme-emp-7741",
  "carrier": "AETNA",
  "status": "accepted",
  "normalized": "active",
  "raw_999": "ISA*00*...",
  "ai_explanation": null
}

# Your customer UI

Maria Chen · Aetna HSA-PPO 2K
● active · effective 2026-06-01

What just happened

A 30-segment X12 999 acknowledgment landed on Velora's SFTP endpoint, got parsed, got normalized to a single `status: accepted`, and got webhooked to your platform. Your customer's UI updated from 'pending' to 'active'. They never see EDI.

04 · Embed AI + voice

Surface Velora’s AI inside your product.

Embed the voice widget with your tenant's API key. Customer asks 'why did this enrollment fail?' inside your UI — agent reads the rejection, explains it, offers to retry. The widget is unbranded by default; per-tenant persona configuration lets you brand it as your own.

Embedded widget code
# In your customer-facing app

import { VeloraVoiceWidget } from '@velora/voice-widget';

export default function EnrollmentDetailPage({ tenantId, memberId }) {
  return (
    <
      <YourEnrollmentDetail memberId={memberId} />

      <VeloraVoiceWidget
        publicKey={process.env.NEXT_PUBLIC_VELORA_VOICE_KEY}
        tenantId={tenantId}
        context={{ memberId, page: 'enrollment-detail' }}
        persona={'your-product-name'}
      />
    <
  );
}

# Customer presses the voice button...

YOU    Why is Maria's vision coverage still pending?

AGENT  VSP's 999 ack came back partial — they need a vision benefit
        group code that wasn't in the original record. Velora flagged
        it for review. Want me to ask the employer's admin to provide it?

What just happened

Three lines of JSX added a voice agent to your enrollment-detail page. The agent has tenant context, page context, and your product persona. Every question the customer asks is logged against your tenant audit — same trail as the API.

That’s the demo. Ready to try it?

Self-serve signup, or talk to us about your specific timeline and integration shape.