Embeddable widgets, hardened for the open internet
One script tag.
A backend that survives
the internet.
Create a widget, hand out a single embed snippet, and safely accept submissions from any website you don't control. Every request is validated, rate-limited, spam-filtered, and geo-enriched before it ever reaches your dashboard.
No credit card, ever. Runs entirely on your machine.
How it works
From config to captured lead — six steps
Create & configure
Design your widget through the authenticated API — fields, button text, display rules.
Submission protected
Every payload is validated at the boundary, rate-limited per IP, and checked against a honeypot spam control.
Get the embed snippet
One <script> tag is generated per widget — everything it needs flows from that single line.
Geo-enriched, safely
IP-to-location runs through a provider fallback chain — if both are down, the submission still succeeds.
Paste it anywhere
Drop it into any site you don't control. Config loads cached and CORS-safe, and the widget renders in place.
Live in your dashboard
Stored, linked to the right tenant, and shown instantly with stats and geo breakdowns.
Built for untrusted traffic
The public internet is the input. Every layer assumes that.
Widget Management API
Authenticated, tenant-isolated CRUD for creating and configuring signup forms, CTAs, and popovers.
Embed Snippet Generation
One <script> tag per widget wires up config fetch, rendering, and submission handling automatically.
Cached Widget Delivery
Versioned JS bundles and short-lived config caching, served with the same discipline as a real CDN.
Public Submission Endpoint
Cross-origin requests handled correctly — CORS, preflight, and boundary validation on every field.
Abuse Protection
Per-IP and per-widget rate limiting, plus honeypot spam detection, stop floods before they land.
Geo Enrichment Fallback
IP-to-location lookups try Provider A, then Provider B — and never block a submission if both are down.
Safe Side Effects
Confirmation emails and webhooks fire after storage. A failure there can never break the main path.
Owner Dashboard & Analytics
Submission counts over time, per-widget stats, and geo breakdowns for every widget owner.