§ Embed widget

Embed signing inside your product — in an afternoon.

A drop-in iframe widget with a typed REST API, signed webhooks, and full white-label theming. The same surfaces we use to power VG·Sign — exposed for yours.

v3.4.2 · OpenAPI · TypeScript SDK

Three lines of HTML.

Renders a sealed signing experience inside any container — your dashboard, your customer portal, your white-labelled invoice page.

your-app.html⎘ Copy
<script src="https://cdn.vg-sign.com/embed.v3.js"></script>

<div id="vg-sign" data-envelope="env_8f4a2c1e9b3d"
     data-key="pk_live_8c2…" data-theme="auto"></div>

<script>
  VGSign.mount({
    onSigned: event => toast(`✓ Sealed: ${event.envelopeId}`),
    onDeclined: event => reroute("/agreements/inbox"),
  });
</script>
Acme · Customer portalYour app
VG · Sign
Awaiting signature
Master Services Agreement
12 pages · expires May 4 · 3 signers
Drop-in
One script tag, one div. No build pipeline, no React peer dep.
Themable
14 CSS custom props. Match your brand without forking.
Sandboxed
Postmessage-only. Your DOM stays untouched.
Resilient
Falls back to a hosted page on CSP failure.

White-label theming.

Fourteen CSS custom properties — set them, save them on a workspace, ship them. The “powered by” mark is opt-out on Enterprise plans.

theme.json⎘ Copy
{
  "--vg-bg": "#0A1A2E",        // background
  "--vg-bg-1": "#0E2238",     // surface
  "--vg-ink": "#FFFFFF",
  "--vg-accent": "#7BB3FF",   // your brand
  "--vg-accent-ink": "#0A1A2E",
  "--vg-radius": "4px",
  "--vg-font-display": "Inter Tight, sans-serif",
  "--vg-font-script": "Caveat, cursive",
  "--vg-logo-url": "https://acme.co/logo-white.svg",
  "--vg-poweredby": "hidden"      // enterprise only
}

Auth & rotation.

01
Publishable keys
Prefixed pk_live_ / pk_test_. Embed in front-end, scoped to widget mount only.
02
Secret keys
Prefixed sk_live_. Server-side only. Auto-redacted in logs and webhook UIs.
03
Rotation
One key generates two — old and new — both live for a 7-day overlap. Webhooks announce key.rotated.