Embed widget
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.
v1 · REST · OpenAPI at /api/v1/openapi.json
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>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 on Pro, Team or Enterprise, set once under Settings, Brand. 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.
12 pages · expires May 4 · 3 signers
Access & origins.
Signing token
Your backend creates an envelope through the API and receives a per-recipient signing token. Pass it as data-token and the widget loads that recipient’s signer.
Origin allowlist
Your site’s origin must be on our embed allowlist for your domain, a single list we set up for you rather than a setting inside each workspace. Request it from us when you go live; until then, framing is denied.
Events
The iframe posts { source: "vg-sign", type, token } on signed / declined. mount() surfaces them as onSigned / onDeclined.
Send your first envelope free.
Start on Free and upgrade to Pro when you need more.