One script tag. Forms anywhere.
Embed any guided flow with a single line of HTML. Inline, button, modal, or slide-over. Auto-resizing, fully branded, works on every major website builder.
From intake to signed deal, all in one tool
Every submission lands in our kanban pipeline, ready to triage, assign, and advance through your stages. Collect payment at any step through your Stripe account. When you're ready to close, auto-generate an e-signature contract pre-filled from the flow's own answers. One subscription replaces Typeform + DocuSign + Zapier.
Paste our snippets anywhere
Drop a single <script> tag onto your page. It loads our widget, renders the form, handles resizing, and submits answers back to your DocOtto dashboard. Same widget, four ways to surface it. Pick the one that fits where the form lives in your funnel.
Inline
Renders directly in the page
The flow appears where you place the script tag, taking up the available width and auto-resizing as the user navigates. Best for dedicated landing pages and "Get a quote" sections.
<div id="docotto-flow"></div>
<script
src="https://docotto.com/embed.js"
data-flow="embed-demo"
data-mode="inline"
async></script>Sample is inert
Click Paste HTML in Sample on the left to activate this demo.
Button
Branded button opens a modal on click
A styled button renders where you place the script tag. Clicking it opens the flow in a centered modal overlay. Best for CTAs that don't need to occupy permanent page real estate.
<script
src="https://docotto.com/embed.js"
data-flow="embed-demo"
data-mode="button"
data-button-text="Get started"
data-color="#1B64F2"
async></script>Sample is inert
Click Paste HTML in Sample on the left to activate this demo.
Modal
Same as button — alias for clarity
Identical behavior to button mode — kept as a separate value because some users find "modal" more intuitive in their snippet config. Pick whichever name fits your team's vocabulary.
<script
src="https://docotto.com/embed.js"
data-flow="embed-demo"
data-mode="modal"
data-button-text="Open form"
data-color="#0f172a"
async></script>Sample is inert
Click Paste HTML in Sample on the left to activate this demo.
Slide-over
Drawer slides in from the right edge
A button opens a right-edge drawer that slides over the page content. Less interruptive than a modal — visitors can still see the page they were on. Great for persistent capture without blocking content.
<script
src="https://docotto.com/embed.js"
data-flow="embed-demo"
data-mode="slide-over"
data-button-text="Contact us"
data-color="#1B64F2"
async></script>Sample is inert
Click Paste HTML in Sample on the left to activate this demo.
Configurable via data attributes
The widget reads its config from data-* attributes on the script tag — no JavaScript API to learn.
| Attribute | Type | Default | Description |
|---|---|---|---|
data-flowRequired | string | — | The slug of the published flow to embed. Found in the builder's Settings panel under "URL slug." |
data-mode | "inline" | "button" | "modal" | "slide-over" | button | Which display mode to use. See the mode reference above for behavior. |
data-button-text | string | "Get started" | Label for the trigger button. Ignored in inline mode. |
data-color | string (hex color) | "#0f172a" | Primary color for the trigger button background. Hex format only — anything else falls back to the default for safety. |
Step-by-step for every major builder
Each platform exposes raw-HTML insertion in a slightly different place. The in-app Share panel auto-generates the exact snippet for each — these are the platforms supported today.
Squarespace
Personal plan and upInsert via Code Block
Wix
All plansInsert via Embed HTML element
Webflow
Up to 50K charactersInsert via Embed element
WordPress
Gutenberg or ClassicInsert via Custom HTML block
Showit
Hard refresh after publishInsert via Custom HTML element
Notion
Public pages onlyInsert via /embed command
Don't see your platform? If it accepts raw HTML, the snippet works. The in-app Share panel handles platform-specific quirks.
Sandboxed by default
The embed runs in an isolated iframe — your site and the form never share JavaScript, cookies, or DOM access.
How is my data protected?+
Content Security Policy (CSP) requirements+
Third-party cookies+
postMessage protocol+
Common issues
The iframe shows a 404 or blank page+
The iframe stays at 800px even when content is smaller+
Outcome redirects (Stripe Checkout, custom thank-you pages)+
Modal opens but is too small / cropped+
Multiple embeds on the same page conflict+
Ready to embed your first flow?
Build a guided flow in the editor, click Share, and copy the snippet. Live on your site in under 5 minutes.
14-day free trial. Cancel anytime.