Embed a complete flight-quote form — searchable airports, smart calendar, per-country phone validation — on any page. It lives in an isolated iframe, so nothing clashes with your site and no API keys are ever exposed.
Access is by request. The widget is enabled per domain — contact the developer to have your site approved before embedding. Pasting the snippet on a domain that hasn't been whitelisted won't load the form.
Drop one <div> where the form should appear, and load the script once anywhere on the page. That's the whole integration.
index.html
<!-- 1. Where the form should appear --><divdata-quote-widgetdata-project="your-project"data-info-text="Business class — up to 70% off"data-color="#ff5a1f"></div><!-- 2. Once, anywhere on the page --><scriptsrc="https://flightquote.travel-insides.com/widget/quote.js"defer></script>
The form submits to our backend on the same origin as the script — your API key stays server-side and is never shipped to the browser. You paste the two lines above once your domain has been approved — contact the developer to get set up.
Configuration
Set it all on the div
Everything is configured with data-* attributes — no build step, no JavaScript. Change them, copy the snippet, paste. The preview below is live — resize it to any device.
Attribute
Type
Default
Description
data-project
string
default
Project key sent with every lead, so you can route or segment leads by source.
data-info-text
string
—
A free-text note (the “info box”) attached to the lead — e.g. the campaign or offer the form was shown with.
data-color
hex color
#ff5a1f
Accent color for the buttons, focus rings and selected dates. One value recolors the whole form.
data-button-text
string
Get a Free Quote
Label for the form’s submit button. Leave it off to keep the default “Get a Free Quote”.
data-currency
ISO code
USD
Currency code sent in the lead payload’s currency field. Leave it off to default to USD.
data-session-id
string
null
An optional session id passed straight through into the lead’s sessionId — use it to tie the lead back to your own analytics or session.
data-origin-url
url
this page’s URL
The URL recorded with the lead. Captured from the host page automatically — set this only if you want to override it.
origin_url is automatic. The URL the lead was submitted from is captured from the host page for you — no setup needed. Set data-origin-url only if you want a custom value.
your snippet
1040px
live preview
Embed guides
Works on every platform
The widget is plain HTML + one script, so it drops into any site builder or framework. Here are the exact steps for the common ones.
🟣
Webflow
Drag an Embed element where you want the form.
Paste the <div data-quote-widget …> into it.
Open Project Settings → Custom Code → Footer Code and paste the <script> line.
Publish. The form appears and auto-resizes.
Tip: you can also put both lines inside one Embed element.
🔵
WordPress
Edit the page and add a Custom HTML block.
Paste both lines (the div and the script).
Update / publish the page.
Classic editor: use the Text tab, or a “Custom HTML” widget.
⬛
Squarespace
Add a Code block where the form should sit.
Paste the div, then the script line.
Save. (Code blocks need a paid plan.)
🟢
Shopify
In the theme editor add a Custom Liquid section.
Paste both lines into it.
Save and publish the theme.
⚛️
React / Next.js
Render the <div data-quote-widget …> in your component.
Load the script with next/script (or a useEffect).
The loader re-scans on load, so the div just needs to exist when the script runs.
📄
Plain HTML
Paste the div where the form goes.
Paste the script before </body>.
No dependencies, no build — it just works.
How it works
Isolated, secure, self-sizing
1
Renders in an iframe
The loader injects an iframe pointing at our /embed page. Your CSS and JS can’t leak in, and the form’s styles can’t leak out — zero conflicts.
2
Posts same-origin
On submit the form POSTs to our backend, which validates the lead and forwards it to the real quote API server-side. The auth key never reaches the browser.
3
Auto-resizes & notifies
The iframe measures itself and reports its height to your page, so there’s never an inner scrollbar. On success it posts a form_submitted message you can hook.
Hook the submit event (optional)
on your page
// The widget posts analytics events to the host page.window.addEventListener('message', function (e) {
if (!e.data) returnif (e.data.type === 'form_loaded') {
// the form is ready — fire a pageview / impression if you like
}
if (e.data.type === 'form_submitted') {
// e.data.id = saved lead id, e.data.partner_id = your partner tagwindow.location.href = '/thank-you'// e.g. redirect, or fire a conversion
}
})
On submit the widget shows a brief “Thank you” and returns to the form after a few seconds. It also posts form_submitted, so you can redirect or fire a conversion on your page if you prefer.
The lead
What your backend receives
Every submission posts a single JSON object: the visitor’s contact details plus the structured quote request. flight legs, cabin and trip type are built from the form; project, info_text and origin_url come from the embed.