Embed signing inside your product — in an afternoon.
One script tag mounts the VG·Sign signer in an iframe inside your product — themed by your workspace brand, with signed and declined events delivered to your page over postMessage.
Three lines of HTML.
Renders a sealed signing experience inside any container — your dashboard, your customer portal, your white-labelled invoice page.
<script src="https://vg-sign.com/embed.js"></script> <div id="vg-sign" data-token="SIGNING_TOKEN" data-theme="auto"></div> <script> VGSign.mount({ onSigned: e => toast(`✓ Signed: ${e.token}`), onDeclined: e => reroute("/agreements/inbox"), }); </script>
Acme · Customer portalYour app
Drop-in
One script tag, one div. No build pipeline, no React peer dep.
Branded
Inherits your workspace logo and brand colour — set once in settings.
Sandboxed
Renders in an iframe; talks back over postMessage only. Your DOM stays untouched.
Allowlisted
Framing is denied by default — only origins we add to your allowlist can embed.
Branded from your workspace.
The embedded signer inherits your workspace branding — logo and brand colour — set once under Settings → Branding. No separate theme file to maintain; what your senders see is what your embedded customers see. By default the embedded signer follows the viewer’s system light/dark preference.
Access & origins.
01
Signing token
Your backend creates an envelope through the API and receives a per-recipient signing token. Pass it as data-token — the widget loads that recipient’s signer.
02
Origin allowlist
Your site’s origin must be on the workspace frame-ancestors allowlist. Request it from us when you go live; until then, framing is denied.
03
Events
The iframe posts { source: "vg-sign", type, token } on signed / declined. mount() surfaces them as onSigned / onDeclined.