Signlift

Intégration iframe

Embarquez le flow de signature dans votre app via une iframe sécurisée.

Signlift expose une iframe /sign/:token que vous pouvez intégrer directement dans votre interface. Le signataire ne quitte jamais votre app.

Whitelist du domaine

Avant tout, ajoutez votre domaine (https://app.yourcompany.com) dans Paramètres → Domaines autorisés. Signlift positionne dynamiquement le header CSP frame-ancestors par organisation : seuls vos domaines whitelistés peuvent embed l'iframe.

Récupération de l'URL de signature

Après avoir créé une signature_request côté serveur, chaque signataire reçoit un sign_url directement utilisable comme src d'iframe. Pas besoin d'extraire le token, ni de reconstruire l'URL.

const res = await fetch('https://api.signlift.io/api/v1/signature_requests', {
  method: 'POST',
  headers: { 'X-Api-Key': process.env.SIGNLIFT_API_KEY, 'Content-Type': 'application/json' },
  body: JSON.stringify({ /* … */ }),
})
const { signers } = await res.json()
const signUrl = signers[0].sign_url
// → https://app.signlift.io/sign/eyJhbGciOiJIUzI1NiJ9...

Transmettez ce signUrl au client (via un endpoint de votre app, un cookie HttpOnly, ou directement dans la page rendue serveur) et utilisez-le tel quel.

Intégration de l'iframe

<iframe
  src="https://app.signlift.io/sign/eyJhbGciOiJIUzI1NiJ9..."
  width="100%"
  height="800"
  sandbox="allow-scripts allow-same-origin allow-forms"
  title="Signature électronique Signlift"
></iframe>

En React :

<iframe
  src={signUrl}
  width="100%"
  height="800"
  sandbox="allow-scripts allow-same-origin allow-forms"
  title="Signature électronique Signlift"
/>

postMessage events

L'iframe envoie des postMessage à votre window parent, tous signés HMAC-SHA256 avec le webhook_secret de votre external application.

EventQuand
signlift:signature:readyIframe prête, signataire authentifié.
signlift:signature:scrolledSignataire a lu tout le document.
signlift:signature:otp_sentOTP envoyé par email/SMS.
signlift:signature:completedSignature finalisée.
signlift:signature:errorErreur (token expiré, OTP invalide, etc.).
window.addEventListener('message', (event) => {
  if (event.origin !== 'https://app.signlift.io') return
  const { event: type, payload, signature } = event.data

  // Vérifier la signature côté serveur via /api/v1/webhooks/verify, ou
  // recevoir la confirmation finale via webhook HTTP serveur-à-serveur.

  if (type === 'signlift:signature:completed') {
    showSuccessScreen()
  }
})

Pitfalls courants

  • sandbox attribute : allow-same-origin et allow-scripts sont nécessaires.
  • Third-party cookies : Signlift n'utilise pas de cookies tiers (JWT en URL), donc Safari ITP / Chrome 3PCD ne posent pas de problème.
  • Mobile : l'iframe est responsive, mais l'expérience est meilleure si vous lui donnez au moins 100vh sur mobile.

On this page