Skip to main content
The Feedal embed script lets you add a form to any website with a single <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:
The embed configurator in the dashboard generates this snippet for you — just copy and paste.

Display modes


Trigger types

The trigger controls when the widget appears.

Configuration reference

All configuration keys that differ from their defaults are included in the generated snippet. The full list:

Submission persistence

By default the widget remembers users who have already submitted your form and won’t show it to them again for 30 days. This works entirely client-side — no extra network requests.

How it works

  1. When the form is submitted, the widget writes a record to localStorage (or sessionStorage / a cookie, depending on storageType). The record contains the form’s session key and two timestamps:
    • cached_until — 24 hours from submission. Within this window the widget skips opening immediately, with zero network cost.
    • expires_atsubmissionExpiry days from submission. After this the form shows again as if it were a fresh visit.
  2. After the 24-hour cache window expires (but before submissionExpiry), the widget silently creates a hidden iframe to re-check the session key. If the key still matches, the 24-hour window is extended. If the key has changed (because a form manager reset it), the cache is cleared and the form shows again.

Forcing all users to see the form again

If you’ve changed your form content and want all prior visitors to see it again regardless of their remembered submission, go to Settings → Submission Persistence and click Reset key. All embed widgets will detect the new key on their next visit and show the form.
Session key reset requires the Pro plan.

Disabling persistence

Pass rememberSubmission: false to always show the form, regardless of prior submissions:

Callbacks

React to widget events from your own JavaScript:

React / Next.js

Use the embed script inside a useEffect 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.