<script> tag. Choose from ten display modes — floating button, popup, drawer, fullscreen, and more — and configure how and when it appears.
Go to Share → Embed to configure and copy the code. Embedding requires the Pro plan.
Quick start
Paste this into your HTML<head> or before </body>, replacing the config values with your own:
Display modes
| Mode | Description | Best for |
|---|---|---|
button | Floating action button that opens the form | Always-available feedback |
popup | Modal dialog with overlay | Quick feedback prompts |
modal | Enhanced dialog with more layout options | Important surveys |
embedded | Seamlessly placed inside a page section | Content feedback |
inline | Direct embedding within article content | Article feedback |
fullscreen | Full viewport takeover | Onboarding, deep surveys |
drawer | Slides in from a screen edge | Mobile-friendly panels |
sidebar | Full-height side panel | Navigation, detailed forms |
slide-over | Professional side panel overlay | Enterprise applications |
toast | Lightweight notification-style widget | Quick ratings, alerts |
Trigger types
The trigger controls when the widget appears.| Trigger | Opens when |
|---|---|
manual | You call window.Feedal.open() from your own code |
auto | Page loads (with optional delay in seconds) |
time | Visitor has been on the page for N seconds |
scroll | Visitor has scrolled N% down the page |
exit-intent | Visitor moves cursor toward the browser chrome (desktop) |
element-visible | A specific CSS selector comes into the viewport |
session-duration | Visitor has been on the site (across pages) for N seconds |
idle | Visitor has been inactive for N seconds |
Configuration reference
All configuration keys that differ from their defaults are included in the generated snippet. The full list:| Key | Default | Description |
|---|---|---|
formId | — | Required. Your form’s ID |
mode | — | Required. Display mode (see above) |
trigger | — | Required. Trigger type (see above) |
theme | light | light or dark |
animation | fade | fade · slide · scale · bounce · flip · elastic · none |
position | center | Widget position on screen (e.g. bottom-right, center) |
width | 400px | Widget width |
height | 600px | Widget height |
overlay | false | Show a dimmed overlay behind the widget |
showCloseButton | true | Show an × close button |
closeOnOverlayClick | false | Close when clicking outside the widget |
responsive | true | Adapt layout for small screens |
triggerDelay | 1 | Seconds to wait before auto/time trigger fires |
triggerThreshold | 50 | Scroll percentage or visibility percentage for scroll/element-visible triggers |
triggerElement | — | CSS selector for element-visible trigger |
triggerCooldown | 5 | Minutes before the widget can appear again (after close) |
draggable | false | Allow respondents to drag the widget |
blurBackground | false | Blur the page behind the overlay |
autoClose | true | Auto-close the widget 3 seconds after submission |
ariaLabel | Feedback Form | ARIA label for accessibility |
focusTrap | true | Trap keyboard focus inside the widget when open |
React / Next.js
Use the embed script inside auseEffect in a client component:
Programmatic control
Once the script has loaded you can control the widget from your own JavaScript:Next steps
Email embed
Get a ready-to-use email template for your campaigns.
Public link
Share the direct URL instead of an embed.