Feedback widget

A feedback form collects an anonymous rating - and an optional comment - from any visitor. It has no email or message field and needs no verification. The easiest way to collect votes is the hosted widget: a self-contained script with no dependencies.

Embed the widget

<div data-sendform-feedback="https://sendform.net/!a8Kz3mXq12"
     data-mode="yesno"></div>
<script src="https://sendform.net/widget.js" async></script>

The script styles itself under a namespaced .sf-fb class so it will not clash with your page, and it can be loaded once for any number of widgets.

Attribute Values Meaning
data-sendform-feedback endpoint URL Required. The feedback form's public submit URL.
data-mode yesno (default), stars Thumbs up/down, or a 1-5 star row.
data-question any text Overrides the default prompt ("Was this page helpful?" / "How would you rate this page?").

The widget captures the current page URL automatically, fetches an antibot token before submitting, and remembers a vote per endpoint and page so a reload cannot re-submit.

Posting a vote yourself

The widget is optional - the endpoint takes a plain POST:

curl -d "rating=1" -d "comment=Very clear" \
     -d "page=https://example.com/docs" \
     https://sendform.net/!a8Kz3mXq12
Field Required Notes
rating yes yesno forms take 1/0 (also yes/no, true/false, up/down); stars forms take 1-5.
comment no Up to 2000 characters.
page no Up to 500 characters. Used to group votes and to rate-limit.

Feedback endpoints always answer with JSON, whatever the Accept header says. An invalid rating comes back as {"error": "invalid_rating"}.

Rate limiting and quotas

One vote per form, page and IP address per 12 hours. A repeat inside that window is answered {"success": true, "duplicate": true} and is not stored, so the widget still shows its thank-you.

Votes count against the account's monthly submission quota exactly like contact-form submissions. Feedback forms are a paid feature: if the owner's plan stops including them, votes are answered with {"success": true, "not_collected": true} and quietly discarded rather than shown as broken to visitors.

Notifications and webhooks

Votes reach the same delivery pipeline as submissions. By default only votes that carry a comment are pushed to the form's webhooks, so a busy page does not flood a chat channel; turn that off on the form to send every vote. The rating label, comment and page ride along as labelled fields - see Webhooks.