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.
This is the self-serve demo for Guided Flows, for when customers find you. Sending prepared documents to people you already know? Try the Document Automation demo →
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 your separate form, e-signature, and automation tools.
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, an alias for clarity
Identical behavior to button mode. It's 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, since 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.
Make it yours by changing a few words
The snippet has four plain-text settings. To change one, just edit the text between the quotation marks. No coding, nothing to install.
A finished snippet, all four settings filled in
<script
src="https://docotto.com/embed.js"
data-flow="spring-cleanup-quote"
data-mode="button"
data-button-text="Get my free quote"
data-color="#1B64F2"
async></script>You rarely need to type any of this. The Share panelinside the builder generates the finished snippet with your form's settings already filled in. Copy, paste, done.
Which form it shows
data-flowRequiredPoints the widget at one of your published forms. Every published form has a short name at the end of its web address: in forms.docotto.com/spring-cleanup-quote, the short name is spring-cleanup-quote. Copy yours from the builder’s Settings panel, where it’s labeled “URL slug.”
If you skip it: Required. Without it the widget doesn’t know which form to open.
How it appears on your page
data-modeFour choices: inline shows the form right on the page, button adds a button that opens it, modal opens a centered popup, and slide-over slides a panel in from the right. The live demos above show each one in action.
If you skip it: Leave it out and you get a button.
The words on the button
data-button-text“Get my free quote,” “Check my date,” “Book now,” whatever fits your page. Only applies when there’s a button to click, so it’s ignored in inline mode.
If you skip it: Leave it out and the button says “Get started.”
The button’s color
data-colorMatch the button to your brand. Use a hex color code: the 6-character code like #1B64F2 you can copy from your brand kit, your website builder’s color picker, or any free online color picker.
If you skip it: Leave it out (or mistype the code) and the button stays a safe dark navy.
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, so 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.
Try our generous free tier. No credit card required.