Let your team or community decide what matters most with GravityBoard Voting! Users upvote and downvote board cards to prioritize feature requests, surface winning ideas, or run polls. Set a vote budget per user, restrict voting to specific lanes, and display voting inside GravityView layouts. This release also improves REST API error handling and conditional logic, fixes a regression affecting admin board access, and adds an admin-bypass permission filter.
🚀 Added
- Card voting: Upvote and downvote buttons on every card let users signal what matters most. Each click adds +1 or -1 to a user's weight on that card, so supporters can stack multiple votes behind the ideas they care about. Optional per-user vote budgets (daily, weekly, monthly, yearly, or all-time) limit how many votes each user has.
- Lane-scoped voting: Enable voting only in the lanes where it makes sense, such as "Ideas" or "Under Review" but not "Done." Cards in restricted lanes show a disabled widget so the vote count remains visible.
- Upvote-only mode: Hide the downvote button entirely for boards where downvoting doesn't belong, such as feature requests or idea boards. Users get a dedicated remove-upvote button to walk their vote back toward zero.
- Voting permissions: New "Who Can Vote on Cards" and "Who Can See Who Voted" settings open voting to a broad audience while keeping voter identities visible only to admins or editors.
- Vote weight and budget indicators: Each card shows a weight badge when a user has stacked multiple votes (up or down), and the vote widget displays how many votes remain in the user's budget so they can pace their support.
- Voters list: Optionally see who voted on a card, with a "(You)" badge next to the current user.
- GravityView integration: Display and collect votes inside GravityView layouts:
- "Entry Voting" field renders the interactive vote widget in any layout;
- "Votes Count" field shows a read-only count, sortable in Table layouts;
- "Voted By" Advanced Filter targets entries the logged-in user has voted on, for Views like "My Voted Ideas";
- Default View sort by Votes Count, ascending or descending;
- Vote counts and remaining budget stay in sync across multiple vote widgets on the same page.
- Notification merge tags: Use
{gravityboard_votes:count|average|total|up|down} and {gravityboard_voters:emails} to include vote data and voter email addresses in any Gravity Forms notification. Email every voter when a card moves lanes, surface popularity metrics to subscribers, or build admin digests.
✨ Improved
- Shows an error message when the REST API fails to load board data, instead of a silent blank board.
- Enhanced conditional logic:
- Empty field values are no longer treated as today's date when using
is on, is not on, is before, or is after filters;
- Filters on deleted or missing forms (e.g. when viewing feed settings for a removed form) no longer trigger errors;
- Admin-only filters (those suffixed
:disabled_admin) no longer error out when applied to multi-value fields.
🐛 Fixed
- Administrators losing access to boards on sites that rely on the
gform_full_access capability.
💻 Developer Updates
- Added
gk/gravityboard/permissions/admin-has-full-access filter to control whether administrators bypass all board permission checks. Read the documentation.