CYBERSYGNembed

Distribute through any site.

Drop a script tag.
Any button becomes a signing launcher.

Agencies, freelancer portfolios, contract-template marketplaces, CRMs. The signing flow opens in a modal over your own page, from any site, and the document it opens is served from cybersygn.io. Zero dependencies, attribution-tracked, ESIGN-compliant.

Setup.

Two lines of HTML.

<script src="https://cybersygn.io/embed.js" defer></script>

<button data-cybersygn-sign="https://cybersygn.io/preview/?doc=DOC_ID&t=TOKEN"
        data-cybersygn-source="agency-portal">
  Sign this NDA
</button>
        

That's the whole integration. Click the button, the CyberSygn signing flow opens in a modal iframe over your page, the signer completes, the iframe closes, and your page fires a cybersygn:complete CustomEvent so you can update your UI.

The URL has to be on cybersygn.io. Use the signing_url that POST /api/v1/documents returns, as above, or a PDF we already host such as a template from /templates-pdf/. A PDF served from your own domain does not work today: the signing page fetches the file from cybersygn.io, and our own connect-src 'self' policy blocks that request before it leaves the browser. A proxy endpoint that would fetch it server-side is not built yet, so upload the document through the API and embed the signing link it hands back.

Live demo.

Click and try it.

This opens the same flow your visitors would see, over your page, not over ours. It loads a real consulting agreement, so you get to watch the detector find its fields.

Data attributes.

All optional except the URL.

  • data-cybersygn-sign, required. A signing_url from the API, or a PDF URL on cybersygn.io. Customer-hosted PDF URLs are blocked by our CSP and do not work today.
  • data-cybersygn-source, optional. Attribution tag. Default: location.hostname.
  • data-cybersygn-email, optional. Pre-fills signer email.
  • data-cybersygn-name, optional. Pre-fills signer name.

Programmatic API.

For framework code.

window.CyberSygn.open(pdfUrl, {
  source: 'react-app',
  signerEmail: 'jane@firm.com',
  signerName: 'Jane Smith',
});

window.addEventListener('cybersygn:complete', function (e) {
  // e.detail = { type: 'cybersygn:complete', docId, signerEmail }
  router.push('/thanks');
});