WebBlocks Polls
Create multilingual single-choice or multiple-choice polls, place them on your site with the native Poll block, and inspect aggregate results. The documented release is Polls 0.1.4.
Requirements and installation
Use PHP 8.3 or later and WebBlocks CMS ^1.92.1. Download the compatible ZIP from
the Polls catalog page. Install it under
System → Plugins, enable it, and check that plugin database setup completed
successfully. Open Polls and select the site that will own the poll.
Create a poll
Choose Add poll and enter an internal name and a stable handle, such as
next-workshop. Blocks save this handle, so avoid changing it after placing the
poll. Enter the question and at least two non-empty choices. A poll supports up
to twenty choice rows.
Select Single choice when each voter should choose one option, or Multiple choice when more than one selection is allowed. Maintain the question, optional description and choice labels for each language you publish. The plugin supplies administration and voting interface translations for the six CMS languages; your poll's question and choices are your own content.
For example, a workshop poll could ask “Which workshop should we run next?” with Photography, Ceramics and Illustration as its choices. Save it as Draft while reviewing the wording and translations.
Publish and place the Poll block
The poll has three states: Draft, Published and Closed. Optional Starts at and Ends at values limit its voting period. Publish the poll when it is ready and check its schedule before inviting voters.
In the page builder, add the plugin's native Poll block and select the poll
for that site. The block type handle is webblocks-polls::poll; API-authored
blocks store the stable poll handle in plugin_settings.poll. Preview the page,
confirm the correct question and choices, then follow the normal page publication
workflow. Publishing a poll does not publish the page containing its block.
Choose when results appear
Set Show results according to the experience you want:
- Always (
always): show aggregate results in place of the voting form. - After voting (
after_vote): show results after the visitor votes. - After closing (
after_close): show results when the poll is not open. - Never (
never): do not show results publicly.
These settings control public result visibility. Authorized operators can still inspect results and export aggregate CSV data. View polls, Manage polls and Export poll results are separate plugin permissions.
In 0.1.4, After closing uses the poll's current open/closed calculation. It can also display results for a draft or a poll whose start time is still in the future. Keep a draft off published pages, and use After voting or Never when preparing a scheduled poll whose results must stay hidden before opening.
Voting and privacy
Voting uses CSRF protection, route rate limits and a pseudonymous HMAC voter fingerprint. The plugin does not store raw visitor IP addresses. Duplicate-vote protection is a practical deterrent; changing sessions or networks may allow another vote. Use a different verification process when a poll requires one verified vote per person.
Internal API
The enabled plugin contributes its routes to CMS discovery and OpenAPI:
GET /webadmin/api/pollsandGET /webadmin/api/polls/{poll}requirepolls.read.POST /webadmin/api/pollsandPATCH /webadmin/api/polls/{poll}requirepolls.write.GET /webadmin/api/polls/{poll}/resultsrequirespolls.read.
Supply the authorized site context and locale with the question and translated choice labels. Use discovery for the installed payload contract. Management APIs require token authentication and do not replace the public CSRF-protected voting flow.
Troubleshooting and related guides
If the block does not show the expected poll, check its selected handle, owning site, plugin activation, publication state and schedule. If results are hidden, check Show results before changing the poll. If saving fails, verify that at least two choices have labels and that the end time follows the start time.
Return to the plugin overview, inspect the catalog release, or use the Internal Content API reference.