<iframe>.
Two prerequisites
Framing is off until you turn it on for a specific origin, so a leaked session URL cannot be embedded anywhere you did not intend.-
Register the origin. In your partner dashboard, under Branding, add
each site that will frame a page to your allowed origins - the exact https
origin, for example
https://app.yourbrand.com(no path, no trailing slash). Up to five. -
Mint the session for that origin. Pass
embed_originwhen you create the session, matching one of your registered origins:The same field works onPOST /companies/{id}/signing-sessions. The returnedurlis authorized to be framed on that one origin and nowhere else. Omitembed_originand the page refuses to be framed at all.
The embed SDK
Your partner dashboard, under Branding, gives you a ready-made script tag that loads the SDK. Copy it into your page once, then mount a session into a container:ClemtaHosted.mount(options)
mount returns a handle:
session.close()removes the frame and detaches its listener. Call it fromonComplete, or when you tear down your own view.session.elementis the<iframe>node, if you need to style it.
Completion and redirects
A framed page cannot navigate your top window, so a signingredirect_url rides
the completion signal instead. Provide onComplete and you are in control - read
redirectUrl and navigate yourself, or just close the frame. Omit onComplete
and, when a redirect_url was set, the SDK navigates the top window there for
you.
Without the SDK
The SDK is optional. Put the sessionurl in an <iframe> yourself and the page
still works - it verifies, server-side, that the framing site is the origin the
session was minted for. Doing it by hand means you own the frame sizing and the
postMessage listener the SDK would otherwise handle for you.