Title: ZestyLife Resident Voting
Author: ming86
Published: <strong>September 3, 2026</strong>
Last modified: September 4, 2026

---

Search plugins

![](https://ps.w.org/zestylife-resident-voting/assets/banner-772x250.png?rev=3680276)

![](https://ps.w.org/zestylife-resident-voting/assets/icon-256x256.png?rev=3680276)

# ZestyLife Resident Voting

 By [ming86](https://profiles.wordpress.org/ming86/)

[Download](https://downloads.wordpress.org/plugin/zestylife-resident-voting.1.0.0.zip)

 * [Details](https://wordpress.org/plugins/zestylife-resident-voting/#description)
 * [Reviews](https://wordpress.org/plugins/zestylife-resident-voting/#reviews)
 *  [Installation](https://wordpress.org/plugins/zestylife-resident-voting/#installation)
 * [Development](https://wordpress.org/plugins/zestylife-resident-voting/#developers)

 [Support](https://wordpress.org/support/plugin/zestylife-resident-voting/)

## 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

[⌊The settings screen — property name, apartment register and default report recipients.⌉⌊
The settings screen — property name, apartment register and default report recipients
.⌉[

The settings screen — property name, apartment register and default report recipients.

[⌊Appearance, automatic closing and data-deletion options in Settings.⌉⌊Appearance,
automatic closing and data-deletion options in Settings.⌉[

Appearance, automatic closing and data-deletion options in Settings.

[⌊Building a poll in the admin — question, options, schedule and who can vote.⌉⌊
Building a poll in the admin — question, options, schedule and who can vote.⌉[

Building a poll in the admin — question, options, schedule and who can vote.

[⌊Generating the PDF and Excel reports, and the shortcode to embed a poll.⌉⌊Generating
the PDF and Excel reports, and the shortcode to embed a poll.⌉[

Generating the PDF and Excel reports, and the shortcode to embed a poll.

[⌊A poll on the front end, with the ballot form and the apartment dropdown.⌉⌊A poll
on the front end, with the ballot form and the apartment dropdown.⌉[

A poll on the front end, with the ballot form and the apartment dropdown.

[⌊Confirmation after a resident submits their vote.⌉⌊Confirmation after a resident
submits their vote.⌉[

Confirmation after a resident submits their vote.

[⌊The admin poll list — every poll, its status, dates and ballot count.⌉⌊The admin
poll list — every poll, its status, dates and ballot count.⌉[

The admin poll list — every poll, its status, dates and ballot count.

## Installation

 1. Upload the plugin through **Plugins  Add New  Upload Plugin**, or install it from
    the plugin directory.
 2. Activate it. A **ZestyLife Resident Voting** item appears in the admin menu.
 3. Go to **ZestyLife Resident Voting  Settings** and fill in the apartment register,
    for example `1-31`.
 4. Go to **ZestyLife Resident Voting  Add new poll**, build your poll, and publish
    it.
 5. 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.

Contributors

 *   [ ming86 ](https://profiles.wordpress.org/ming86/)

[Translate “ZestyLife Resident Voting” into your language.](https://translate.wordpress.org/projects/wp-plugins/zestylife-resident-voting)

### Interested in development?

[Browse the code](https://plugins.trac.wordpress.org/browser/zestylife-resident-voting/),
check out the [SVN repository](https://plugins.svn.wordpress.org/zestylife-resident-voting/),
or subscribe to the [development log](https://plugins.trac.wordpress.org/log/zestylife-resident-voting/)
by [RSS](https://plugins.trac.wordpress.org/log/zestylife-resident-voting/?limit=100&mode=stop_on_copy&format=rss).

## Changelog

#### 1.0.0

 * First public release.

## Meta

 *  Version **1.0.0**
 *  Last updated **6 hours ago**
 *  Active installations **Fewer than 10**
 *  WordPress version ** 6.2 or higher **
 *  Tested up to **7.1**
 *  PHP version ** 7.0 or higher **
 * Tags
 * [apartment](https://wordpress.org/plugins/tags/apartment/)[poll](https://wordpress.org/plugins/tags/poll/)
   [survey](https://wordpress.org/plugins/tags/survey/)[voting](https://wordpress.org/plugins/tags/voting/)
 *  [Advanced View](https://wordpress.org/plugins/zestylife-resident-voting/advanced/)

## Ratings

No reviews have been submitted yet.

[Your review](https://wordpress.org/support/plugin/zestylife-resident-voting/reviews/#new-post)

[See all reviews](https://wordpress.org/support/plugin/zestylife-resident-voting/reviews/)

## Contributors

 *   [ ming86 ](https://profiles.wordpress.org/ming86/)

## Support

Got something to say? Need help?

 [View support forum](https://wordpress.org/support/plugin/zestylife-resident-voting/)

## Donate

Would you like to support the advancement of this plugin?

 [ Donate to this plugin ](https://buymeacoffee.com/ming86)