Reusable polls and voting for Statamic: answers from any collection or plain text, one vote per visitor, static-cache safe.

0.1.2

November 6th, 2026

Fixed

  • Cloudflare Turnstile now works as documented: polls.js loads Cloudflare's script (or waits for the site's own copy) and renders the widget in each open poll. Before, nothing loaded the script, so with both keys set every vote was turned away. After a failed vote the widget is reset, so the visitor can try again; a vote sent before the check finishes asks the visitor to wait, and if the script or the widget fails the visitor is told so and it is retried.
  • A vote sent without JavaScript now shows its outcome ("Thanks for voting!") when the visitor comes back to the page, through the new polls:outcome tag inside {{ nocache }}. Left out with full static caching, where voting needs JavaScript.

Changed

  • The Turnstile placeholder in the default view is now <div data-poll-turnstile data-sitekey="…">, and the error element carries data-poll-error-verifying and data-poll-error-unverified. Published views with the old .cf-turnstile placeholder keep working; without the new attributes they show the generic error message.

Added

  • README: setting up Turnstile, what it sends to Cloudflare, a privacy section and control panel screenshots.