Description
A voting system for buildings with residents — a management company, a leaseholder association, a block of flats — where each ballot should come from a real apartment and the result needs to be recorded properly.
Create a poll in the admin, drop it on any page or post, and the plugin takes care of the rest: it opens and closes to your schedule, tallies the ballots the moment it closes, publishes the result on the page, and emails you a spreadsheet and a PDF of the results.
What it does
- Any number of options per poll, and optionally let residents choose more than one.
- Name and apartment number are required. Residents pick their apartment from a dropdown built from your register, so nothing outside it can be submitted.
- One vote per apartment, or several — your choice, per poll.
- Scheduled opening and closing times. The form is locked before, and gone after.
- Automatic results. A background job tallies the poll as it closes and publishes it.
- Excel workbook and PDF report, generated automatically and emailed. The workbook carries every ballot and the full text of every comment on its own sheets.
- An archive of past polls you can show or hide, one click per poll.
- Elementor widget plus shortcodes, so it drops into any page builder.
Fits your theme
The voting block reads the background colour, text colour and brand colour of the theme it lands on and mixes every panel tint from those, so it looks at home on a light, cream, grey or dark site without being configured. The brand colour comes from the colour your theme paints a link, with the theme.json palette as a fallback — and a palette entry has to look like an accent to be used, so themes that name their darkest neutral “primary” do not leave the block accented in near-black. You can override the accent, force light or dark, and switch the button style if you would rather be specific.
No dependencies
The PDF writer and the Excel writer are built into the plugin. There is no Composer, no external library, no third-party service, no API key, and nothing is loaded from another server. It does not call home.
Privacy
Ballots are stored in your own database and contain a name, an apartment number and optionally an email address. Nothing is sent anywhere except the results email, to addresses you set. Voter IP addresses are hashed, never stored in the clear. Generated reports live in a protected folder with unguessable filenames and are served only to logged-in administrators.
For a secret ballot, turn off “Voting record in the reports” — the totals stay exact, and comments in the PDF lose their attribution.
Deleting the plugin keeps everything by default, so a reinstall resumes where you left off. If you would rather the data went with it, tick “Removing all data when the plugin is deleted” under Settings, and deleting the plugin erases both tables and every generated report.
Screenshots







Installation
- Upload the plugin through Plugins Add New Upload Plugin, or install it from the plugin directory.
- Activate it. A ZestyLife Resident Voting item appears in the admin menu.
- Go to ZestyLife Resident Voting Settings and fill in the apartment register, for example
1-31. - Go to ZestyLife Resident Voting Add new poll, build your poll, and publish it.
- Put it on a page with the ZestyLife Resident Voting Elementor widget, or the
[zestylife_voting]shortcode.
The plugin reads your site title, administrator email and domain on activation, so most settings are filled in for you.
FAQ
-
Do residents need a WordPress account?
-
No. They fill in the ballot on the page. Name and apartment number are required, and the apartment must be on the register you set.
-
How do you stop somebody voting twice?
-
Each poll can be set to accept one ballot per apartment, enforced in the database rather than the browser. The apartment field is a fixed dropdown, so nothing outside your register can be submitted, and matching ignores case, spaces and prefixes so “Flat 12b” and “12B” count as the same apartment.
This suits a building where residents are broadly trusted and the register is known. It deters casual double-voting rather than defeating a determined attacker. For a legally binding vote, you would want each resident to log in with an account.
-
What happens exactly when a poll closes?
-
When a poll passes its closing time it is tallied, the result is saved and published, and the Excel workbook and PDF are generated and emailed.
WordPress’s scheduler only fires when somebody visits the site, so on a quiet night a poll may be tallied a few minutes after its official closing time. No ballots can be cast in that window, so the result is unaffected. For exact timing, ask your host to set up a real cron job.
-
Can I hide an old poll?
-
Yes. Each poll has a Visible / Hidden switch in the list. Hidden polls disappear from the public archive while all the ballots, results and reports stay available to you.
-
Which shortcodes are there?
-
[zestylife_voting] for the full page,
[zestylife_vote id="12"]for one poll,[zestylife_vote_results id="12"]for results only, and[zestylife_vote_archive limit="10"]for past polls. -
Is there a quicker way to publish a poll?
-
Yes. Save the poll, then use the “Create new post” button beside the shortcode in the editor sidebar. It opens a new post in a new tab with the shortcode already copied, ready to paste — the poll stays open behind it.
-
Does it work without Elementor?
-
Yes. The shortcodes work in the block editor or any page builder. The Elementor widget is a convenience, not a requirement.
-
What happens to my data if I delete the plugin?
-
Nothing, unless you ask for it to go. Polls, ballots and report files are left in place, so reinstalling picks up where you left off. If you would rather everything went with the plugin, tick Removing all data when the plugin is deleted under ZestyLife Resident Voting Settings Deleting the plugin. That removes both database tables — including every voter name, apartment number, email address and comment — these settings, and every PDF, Excel and CSV report. Deactivating never deletes anything; only deleting the plugin does.
-
Will it match my theme?
-
It reads your theme’s colours at runtime and builds its own palette from them. If you would rather be explicit, ZestyLife Resident Voting Settings Appearance lets you pin the accent colour, force light or dark, and choose the button style.
Reviews
There are no reviews for this plugin.
Contributors & Developers
“ZestyLife Resident Voting” is open source software. The following people have contributed to this plugin.
ContributorsTranslate “ZestyLife Resident Voting” into your language.
Interested in development?
Browse the code, check out the SVN repository, or subscribe to the development log by RSS.
Changelog
1.0.0
- First public release.
