Skip to content

Carrier data, delivered like it’s 2026.

Emerald Relay is the open network that moves policy, document and commission data from carriers to every agency system — in seconds, not overnight.

RWL RenewalPA-1002934Relay MutualPersonal autoSandbox data

Renewal for Avery Testwell, effective Nov 1, 2026. Premium up $214.00; a second vehicle was added.

What changed from the prior term
FieldPrior termThis term
Term premium$1,272.00$1,486.00
Collision deductible, vehicle 1$500$1,000
Vehicles12

Delivery

  • Agency system webhookDelivered and accepted by the agency system
  • Partner pull feedAvailable at seq 18233
  • AL3 mailboxQueued for the next hourly batch

How it works

A carrier sends data once. Relay checks it, turns it into one readable policy object, and routes it by agency code to every system that agency has authorized.

  1. 1Carriers sendAPI, the AL3 file they already export, or an upload.
  2. 2Relay validates, normalizes and routesOne policy object, routed by agency code.
  3. 3Agency systems receiveSigned webhooks, a pull feed, or an AL3 mailbox.

Carriers & MGAs

  • Send the files you already make — we do the rest
  • Live with pilot agencies this week
  • One connection to every AMS
See the carrier path

Agencies

  • See every transaction in plain English
  • Know the moment a carrier goes quiet
  • Free for agencies, always
See what agencies get

Software partners

  • Plaid-style Link in an afternoon
  • Webhooks, pull feed, and AL3 — your choice
  • Every partner gets the same API — including our own
Read the partner docs

Two calls on each side

Carriers push transactions with one authenticated request. Partners receive a signed, thin webhook and fetch the full object over the API, so personal data stays out of webhook logs.

Carrier: push a renewal

curl https://sandbox.emeraldrelay.com/v1/ingest/transactions \
  -H "Authorization: Bearer rk_test_…" \
  -H "Idempotency-Key: renewal-PA-1002934-2026" \
  -H "Content-Type: application/json" \
  -d '{
    "transactions": [{
      "carrier": { "name": "Relay Mutual", "naic": "99901" },
      "agency_code": { "code": "TEST-0001" },
      "transaction": { "type": "RWL", "processed_date": "2026-10-20",
                       "effective_date": "2026-11-01" },
      "policy": { "number": "PA-1002934", "lob": "AUTOP",
                  "term": { "effective": "2026-11-01", "expiration": "2027-05-01" },
                  "premium": { "written": "1486.00", "change": "214.00" } },
      "insureds": [{ "name": { "full": "Avery Testwell" } }]
    }]
  }'

Partner: handle the webhook

import { Relay, verifyWebhook } from "@emerald-relay/node";

const relay = new Relay({ clientId: process.env.RELAY_CLIENT_ID, secret: process.env.RELAY_SECRET });

export async function POST(req: Request) {
  // Verify the raw body; re-serialized JSON won't match the signature.
  const event = verifyWebhook(await req.text(), req.headers, process.env.RELAY_WEBHOOK_SECRET!);
  const accessToken = await tokenForInstall(event.install_id);

  if (event.type === "policy.transaction.created") {
    // Thin event: fetch the full policy object over the API.
    const txn = await relay.policyTransactions.get(accessToken, event.data.id);
    await upsertPolicy(txn);
    await relay.events.ack(accessToken, event.id, { result: "APPLIED" });
  }
  return new Response(null, { status: 204 });
}

Security we can state plainly

Insurance data includes people's personal information. These are the controls in place today.

  • Encryption in transit (TLS) and at rest, with a separate data key per organization
  • Field-level encryption for sensitive fields such as dates of birth and license numbers
  • Two-factor authentication required for owners and admins
  • An audit log of every sign-in, key change and data access by staff
  • Automated tests that check one tenant can never read another tenant's data
  • SOC 2: not certified yet. Our current status is on the security page.

Sandbox keys the moment you sign up.