Verdocs ships native web components with React bindings, not an iframe. The signing ceremony renders inside your component tree, inherits your styles, and reports every event to your code. Web components, not iframes: override any control, style with standard CSS.
Drop the component in, pass an envelope id, and subscribe to events. Templates, field placement, and the audit trail come from the same platform your backend talks to.
// Install the React bindings for the Verdocs web SDK
// npm i @verdocs/web-sdk-react
import { VerdocsSign } from '@verdocs/web-sdk-react'
export function SigningStep({ envelopeId }: { envelopeId: string }) {
// The signing ceremony renders inline, in your DOM, in your styles.
// No iframe, no redirect, no vendor branding.
return <VerdocsSign envelopeId={envelopeId} onEnvelopeUpdated={(e) => console.log(e)} />
}Create an envelope from a template, render signing inside your app, and let the webhook tell you the moment it completes.
// 1. Create an envelope from your template
const envelope = await verdocs.envelopes.create({
template_id: 'engagement-letter',
recipients: [{ role: 'signer', email: client.email }],
fields: { client_name: client.name }, // pre-filled, still editable
})
// 2. Render signing inside your app
<VerdocsSign envelopeId={envelope.id} theme={yourBrand} />
// 3. Know the moment it completes
app.post('/webhooks/verdocs', ({ body }) => {
if (body.event === 'envelope.completed') fulfill(body.envelope_id)
})