Recorder — fullpage and iframe
When the host page cannot mount anything of its own — a third-party checkout page, an email client, a partner site you do not control — the Recorder ships a standalone fullpage page you embed in an iframe. It carries no dependency on the host page beyond the iframe itself.
Prerequisites
A public API key and the fullpage page URL, both provided with your Livstick access — see API keys and scopes.
Embed the fullpage page in an iframe
Its public URL is not published here — it is provided with your Livstick access. The allow attribute is mandatory: without allow="camera; microphone", the browser denies the iframe access to the camera and microphone, and the recording flow fails silently — no error surfaces to the host page.
<iframe
src="{WIDGET_FULLPAGE_URL}"
allow="camera; microphone"
style="width: 100%; height: 100%; border: 0;"
></iframe>
Inject the configuration server-side
The fullpage page reads its configuration from a <template id="livstick-widget-v2-config"> element, as a JSON object under a widgetProps key holding the same props the React component and Custom Element accept. When you render that template server-side, encode every opening angle bracket in the JSON as \u003c instead of <. Skip this and a configuration value containing </template> — a message body, a name — closes the template tag early and breaks the page.
<template id="livstick-widget-v2-config">{"widgetProps":{"uid":"code","domain":"example.com","apiKey":"{PUBLIC_API_KEY}","overrides":{"version":2}}}</template>
<!-- server-rendered: any "<" inside the JSON values above must be written as \u003c -->
Localize through the URL
The fullpage page only reads its lang query parameter from the URL, and only accepts values shaped like a language code — anything else is ignored. No other URL parameter reaches the widget: the API, the domain, the public key, and edit or reply capabilities all come exclusively from the server-injected configuration in the previous step. That is a security guarantee, not a limitation — a host page can freely pass a URL along (a shared link, a redirect target) without it ever being able to redirect the widget to a different API, domain, or key.
<iframe
src="{WIDGET_FULLPAGE_URL}?lang=fr"
allow="camera; microphone"
></iframe>
Handle the return
The fullpage page does not send its livstick:recorded event, or any other signal, back to the host page across the iframe boundary — it stays internal to the iframe’s own document. To know when a message has been captured, poll the container you created for this recording from your own backend.
curl https://client-api.v5.livstick.com/api/v3/containers/{crid} \
-H "Authorization: Bearer {ACCESS_TOKEN}"
Next steps
The configuration object accepted by widgetProps is the same one documented for the other mounting options — see the full reference of what it can carry.