=== Pollify - Feedback Polls, Anonymous Polls, Up/down Voting, NPS Surveys, Export data ===
Contributors: sabbir1991, wprigel
Tags: poll plugin, poll, poll maker, vote, survey
Requires at least: 6.0
Tested up to: 6.9.1
Requires PHP: 8.0
Stable tag: 1.0.14
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Poll creator lets you create a poll website in WordPress Gutenberg with advanced polling/voting features to engage your audience like never before

== Description ==

**Pollify** lets you create a poll website in WordPress with awesome polling/online voting capabilities and unlock a series of advanced features to engage your audience like never before.

Using the Pollify poll maker plugin, you can easily integrate polls and surveys directly into your Gutenberg editor, **no shortcode required**.

There’s **no capping with the free version**, you can get unlimited votes. Create **dynamic polls** by allowing your users to select from single or multiple options. Also, customize every detail of your online poll including title, description, and vote button text.

- [Pollify Poll Creator Features at a glance](https://wprigel.com/pollify/)
- [Pollify Documentation](https://wprigel.com/docs/pollify/)
- [Pollify Pro Pricing](https://wprigel.com/pollify-pricing/)

Pollify is the ultimate WordPress poll creator plugin **100% powered by Gutenberg editor**. Add as many polls/surveys as you need, and customize your polls just as you want. **Set a specific timeline** for your polls, schedule a poll for holidays or when you’re on a vacation; it’s all up to you!

Design the appearance of your polls/online surveys effortlessly using the Sidebar Settings. From color schemes to button alignment, the Pollify poll creator puts the power of customization in your hands. Whether you’re a beginner or a WordPress expert, you can seamlessly blend your polls with your website's aesthetics.

**You can add a poll or survey anywhere in the posts, pages, or any custom post type that supports Gutenberg and the site editor with just a click; no short code is required.**

You have full control of your polling ecosystem with Pollify's user-friendly Admin Dashboard.

**Track poll performance, count votes, view real-time survey results**, and dive deep into user engagement metrics with our comprehensive analytics tools. This WP poll maker plugin provides everything you need to make data-driven decisions, from poll lists to IP details.

[wpRigel](https://wprigel.com) provides everything you need to make data-driven decisions, from poll lists to IP details.

Elevate your polling experience with an array of [Pollify premium features](https://wprigel.com/pollify-pricing/). Compare options with VS Type polls, gather user data with custom forms, and add personalized options for enhanced user interaction.

Visualize data effortlessly with Results Charts, export insights to CSV(upcoming) for in-depth analysis, and engage users with text-based results and vote reasoning options. Plus, ensure user privacy with **Anonymous Polls** and empower multilingual audiences with **Multilingual Polls**.

With the [Pollify](https://wprigel.com/pollify/) WordPress poll plugin, the possibilities are endless. It is the ultimate polling plugin for creating, managing, and analyzing polls on your WordPress website.

=== Features-wise Detailed Overview of Pollify Poll Creator Plugin ===

**The Gutenberg Editor**
The Pollify plugin provides a block in the Gutenberg editor named “Poll” to create polls and get your audience’s opinion.

**Multivote Functionality**
Activate in the Choosing type, allowing respondents to select multiple answers within a specified limit.

**Scheduled Polls**
Plan polls in advance with end dates, streamlining event management and data collection.

**Single Vote Limitation**
Prevent multiple votes from the same user, ensuring accurate results through various detection methods.

**Front-end Results Display**
Customize result pages with sorting options, avatars, and individualized messages for enhanced engagement.

**Chart Visualization**
Visualize results with bar charts with all vote details.

**Anonymous Polls**
Ensure participant privacy by collecting minimal data, compliant with GDPR

**Email Notifications**
Receive alerts for each vote submitted, ensuring timely updates without constant dashboard checks. (Upcoming in pro)

**Logged in user Limitation**
Limit polling access so that only logged-in users can participate, ensuring poll integrity. This feature is configurable within the block settings, allowing you to require login before a user is able to vote on a poll.

**User Role Limitation**
Specify user roles eligible to participate, ensuring targeted engagement. (Upcoming in pro)

**Redirection Options**
Redirect voters post-poll, enhancing engagement and driving traffic based on their responses.(Upcoming in Pro)

**Google Recaptcha integration**
Safeguard poll privacy with Google Recaptcha-protected access, ideal for confidential or targeted surveys. (Upcoming in Pro)

**Mailchimp Integration**
Seamlessly collect user emails for community building and email marketing efforts. (Upcoming in Pro)

=== Poll Types with Pollify: ===
**Pollify allows 7 types of polls (including but not limited to)-**

* **Choosing**: Add multiple options for users to choose from, with the option to allow custom entries
* **Up and Down vote**: Enable users to vote using like/dislike or emojis, providing quick feedback on products or content. (Pro)
* **Kudos**: feature allows users to give quick, positive feedback — such as clapping or applause — without needing to write anything (Pro)
* **Engagement**: Boost interaction by seamlessly gathering user feedback directly from your website’s frontend (Pro)
* **NPS**: Allow users to select answers within a 1-10 range. (Pro)
* **Rating**: Create rating forms, utilizing stars or emojis, to gauge user opinions on products or topics. (Upcoming in pro)
* **VS**: Facilitate competition between two options, such as products or individuals, with stylish versus voting formats. (Upcoming in pro)

=== Pollify Poll Maker Plugin Free Features at a Glance: ===

1. Gutenberg Block - Poll
    - Ability to create polls within the Gutenberg editor.
    - Options to add title, description, and poll options.
    - Customization of the vote button text.
    - Allow Multivote permits users to cast multiple votes in the poll, if applicable to the context.
    - Text Instead of Results to display text instead of numerical results for confidentiality or anonymity.
    - Custom Form Fields enable customization of form fields to collect specific information from users.
    - Vote Reason Option provides the ability for users to provide reasons for their vote, enhancing feedback. ( Upcoming free )
    - Anonymous Poll allows users to participate in polls anonymously, preserving privacy.
    - Multilingual support

2.  Poll Status, Poll Styles, and Toolbar Customization
    - General Settings:
        - Poll status (displayed or not or scheduled ).
        - Confirmation message options: View message with custom text or View result.
        - Response settings: Single or multiple submissions per user or per computer.
    - Styles:
        - Customization of text and background colors for Poll form.
        - Padding, margin, border, and border-radius adjustments.
        - Submit button color settings (background, text, hover background, hover text).
        - Button width and alignment settings.
        - Closing banner color settings ( background and text color)
    - Toolbar Settings:
        - Alignment options: None, Wide width, Full width, Align center.

3. Different Poll Options
    - Single checkbox for single poll option selection.
    - Multiple checkboxes for multiple poll option selection.

4. User-Friendly Admin Dashboard (Pollify)
   - Poll Lists:
        - View all polls with details like title, type, source/reference, status, total responses, and creation date.
        - Filtering, sorting, and searching functionality.
        - Reset poll results option.
        - Remove vote using IP address.
    - Poll Overview Page:
        - At-a-glance overview of poll results.
        - Popular location analysis with map display.
        - IP overview with latest IP details and vote counts.
        - Recent votes display and detailed analysis.
    - Votes Page:
        - View all votes or quiz responses related to individual polls.
        - Data analysis using a votes list table.
    - IP Details Page:
        - Display all IP addresses with total vote counts and locations.

=== Pollify Poll Maker Plugin Premium Features at a Glance: ===
- Kudos Polls allow users to give quick, positive feedback — such as clapping or applause — without needing to write anything.
- Up and Down Vote Polls enable users to vote using like/dislike or emojis, providing quick feedback on products or content.
- NPS Polls allow users to select answers within a 1-10 range, ideal for gauging customer satisfaction or loyalty.
- User Information Form that incorporates a form to gather user details alongside poll participation.
- Voted User Location displays the geographical location of users who have voted in the poll.
- Results with Charts presents poll results graphically, offering visual insights for easier interpretation
- IP blocker allows blocking votes from specific IP addresses, preventing spam or unwanted participation.
- IP and user wise vote restriction prevents multiple votes from the same IP address or user, ensuring fair polling.
- Engagement Block: Collect user feedback directly from the frontend using a dedicated block.
- Export poll results in multiple formats, including CSV, PDF, DOCX, and Excel
- Logged-in Restriction feature allows you to restrict poll voting to only logged-in users, with customizable messages and login prompts.
- VS Type of Poll (Versus) enables the creation of polls comparing options side by side (Upcoming in pro)
- Import/Export Polls help in Importing and exporting poll configurations for easy sharing or backup. (Upcoming in pro)
- Send mail to a user (integrated with email services ) (Upcoming in pro).
- Vote by user and role (Upcoming in pro).
- Email campaign using email services. (Upcoming in pro).

=== Acknowledgements ===
This plugin utilizes the **ipinfo** service to provide geolocation functionality. This third-party service helps us determine the geographic location of users based on their IP addresses.

Additionally, our plugin uses Google Charts (https://www.gstatic.com/charts/loader.js) for charting and data visualization. For more information on Google Charts' terms of use and privacy policies, please visit Google Charts [Terms of Service](https://developers.google.com/chart/terms) and Google [Privacy Policy](https://developers.google.com/chart/interactive/docs/security_privacy).

= Author =
Created by [Sabbir Ahmed](https://profiles.wordpress.org/sabbir1991)

= Contributing =
Bug reports, feature requests, and pull requests are welcome on [GitHub](https://github.com/WPRigel/pollify)

* **Issues** — open a GitHub issue for bugs or feature requests
* **Pull requests** — fork the repo, branch off `develop`, and submit a PR against `develop`

== Installation ==
How to Install the Pollify Plugin:
- Go to your WordPress admin dashboard and click on → **Add New Plugins**
- Write Pollify on the search box and click on Install and then **Activate** Button
- Add a new post from Post→ Add New Post or Page → **Add New Page**
- You’re done. Now search **Poll** block from the block list or click the “/” button and type **Poll** to create and customize a poll for your posts.
- Publish and enjoy!!


== Frequently Asked Questions ==

= How can I add a Poll in my site? =
First, you need to install the Pollify plugin. Now go to any post or page you want to add your poll to. Search for the “poll” block and create a poll for it. That’s it.
= Are there any limitations in asking questions for polls or getting votes? =
No. There are no limitations in the way of making questions for the poll. You can make a Poll yourself and add as many questions as you want. Also, there’s no limit with Pollify to generate votes from users.
= How to upgrade to the Poll PRO version? =
All you need to do is to click on the Upgrade button from your admin panel. It will redirect you to our [official website](https://wprigel.com/pollify-pricing/). Choose your plan and download and upload the pro version. No worries, you will not lose your previous data. Knock our support team for further help.
= Is there any way we can check the user's IP address after the vote? =
Yes, we can check users by IP address from the admin dashboard.
= How to check the results in Poll? =
After the installation of the Pollify poll plugin, go to your dashboard and discover a new tab named “Pollify”. Click on it and check all you need. It’s your dedicated dashboard to manage all old/new polls and survey results.
= Is there any documentation or user guide for this poll plugin? =
Sure, there is! Check out our [official documentation](https://wprigel.com/docs/pollify/) to find all the features/functionalities the plugin includes. You are welcome to contact us via the Free Support Forum in case of having any questions/queries.

== Screenshots ==
1. Poll Block
2. General settings
3. Style settings
4. Frontend Result view
5. All poll lists
6. Single poll details
7. Vote details
8. IP details

== Changelog ==

v1.0.14 -> June 13, 2026
--------------------------------------------
- [Fix] Vote lock name now fits MySQL's 64-character GET_LOCK limit — race protection was silently skipped before
- [Fix] Voting no longer fails on SQLite-based environments (WP Playground)
- [Fix] Multi-option votes wrapped in database transaction — prevents partial inserts on failure
- [Fix] Schedule end-date check no longer triggers PHP 8.1 deprecation warning
- [Fix] Poll closed status check no longer causes undefined array index notice
- [Improvement] Staled nonce recovery — cached pages refresh nonce and retry vote automatically
- [Improvement] Per-IP rate limiting on vote endpoint (30 requests/minute)
- [Improvement] Geo IP lookups cached via transients — eliminates blocking HTTP call on repeat votes
- [Improvement] Real visitor IP detected behind Cloudflare (CF-Connecting-IP)
- [New] `uninstall.php` added with opt-in data cleanup on plugin removal
- [New] `pollify_enable_geo_lookup` filter to disable geo lookups
- [New] `pollify_trust_proxy_headers` filter for reverse proxy environments

v1.0.13 -> May 11, 2026
--------------------------------------------
- [Refactor] Removed Singleton pattern from FeedbackFactory for correct per-call instantiation
- [Refactor] Moved block.json parsing outside loop in Blocks class for better performance
- [Improvement] Primed WordPress user object cache before vote list rendering to eliminate N+1 queries
- [Improvement] Admin list table now correctly identifies primary column for responsive behaviour
- [Improvement] Responsive layout for poll details page — meta-cards stack to single column on tablet and mobile
- [Improvement] Mobile responsive fixes for admin pages — header, navigation tabs, vote rows, and location data all stack correctly below 1024px
- [Improvement] Minor style tweaks across admin UI for better spacing and readability on smaller screens
- [Fix] FeedbackManager now correctly detects update failure vs unchanged data
- [Fix] FeedbackManager no longer treats polls with zero options as a deletion error
- [Fix] wp_safe_redirect calls now followed by exit to prevent continued execution
- [Fix] wp_localize_script now targets the correct enqueued script handle

v1.0.12 -> February 14, 2026
--------------------------------------------
- [New] Introduced user logged in restriction features for all types of poll
- [Fix] Few security issues for submitting the vote.
- [Fix] Fixed minor issues for coding standard

v1.0.11 -> November 27, 2025
--------------------------------------------
- [New] Introduced anonymous voting to enhance personal data privacy in compliance with GDPR guidelines.
- [New] Added trash poll option when removing poll blocks from editor
- [Fix] Fix get_result undefined issues once poll is deleted from editor
- [Fix] Added few aria-label for accesibility on poll rednering

v1.0.10 -> November 15, 2025
--------------------------------------------
- [Fix] Fixed number format issues for other countries
- [Fix] Added custom svg icon support for rendering on backend poll
- [Fix] Fix some typo on class defination
- [Fix] Fixed vote location flag icon style issue.

v1.0.9 -> September 15, 2025
--------------------------------------------
- [New] Added individual vote response delete option.
- [New] Added a new button for viewing the poll on the frontend from all sub menu items.
- [New] Changed ip lookup service for better accuracy.
- [Fix] Fixed vote location flag icon style issue.

v1.0.8 -> August 21, 2025
--------------------------------------------
- [New] Added block deleting support from the pollify menu, which also delete the poll block from the editor.
- [New] Added all type poll filtering suppports in the pollify menu.
- [Fix] Innerblock filtering issues that causes the block is not saving properly and throwing Invalid poll error.
- [Fix] Fixed some text formatting issues.
- [Fix] Removed unused file that generated through npm run build.
- [Fix] Fixed block deleteing logic that causes the block is not deleting properly in few cases like InnerBlocks.
- [Fix] Removed auto opt-in from freemius.

v1.0.7 -> July 26, 2025
--------------------------------------------
- [Fix] List polls query issues Fixed
- [Fix] Updated readme

v1.0.6 -> July 14, 2025
--------------------------------------------
- [New] Added feemius sdk
- [New] Added few filters and actions for extending the features
- [Tweak] Update few codebase for better performance
- [Tweak] Added sql filter for chagning the quires
- [Fix] Fixed a warning that comes for empty poll on list
- [Fix] Fixed is already voted function issues which fails to determine the user status
- [Fix] Fixed feedback count query

v1.0.5 -> June 12, 2025
--------------------------------------------
- [New] Added vote remove option using IP address.
- [New] Added new notice and design for any kind of operation.
- [Tweak] Added few filters for overriding the IP navigation.
- [Tweak] Added few actions for extending the core.
- [Tweak] Added dynamic filter in the vote class for overriding the votes results.

v1.0.4 -> April 14, 2025
--------------------------------------------
- [Tweak] Refactor the entore codebase.
- [Tweak] Updated the model for Poll using new class FeedbackManager and feedback.
- [Tweak] Added few filters for extending the core.
- [Tweak] Updated the poll list icons.
- [fix] Translation loading issues.
- [fix] Updated domain path for translation on plugin header.

v1.0.3 -> December 25, 2024
--------------------------------------------
- [feat] Added view result message text customization option on block settings.
- [feat] Added user per response chceckout when user can vote multiple times depending on the poll settings.
- [fix] Fixed delete block issue when some delete the block from editor.
- [fix] Fixed some typo.
- [fix] Fixed a warning that comes for empty poll on list
- [Fix] Fixed is already voted function issues which fails to determine the user status
- [Fix] Fixed feedback count query

v1.0.2 -> September 30, 2024
--------------------------------------------
- [feat] Added inline list style variation for poll block.
- [feat] Added plugin helper links on plugin page.
- [fix] Fixed undefined warnings for block deleting.
- [fix] Changed readme content.

v1.0.1 -> Jul 7, 2024
--------------------------------------------
- [fix] Fixed plugin name issues.
- [fix] Fixed readme issues.

v1.0.0 -> June 29, 2024
--------------------------------------------
- [feat] Initial version released


== Upgrade Notice ==

= 1.0.13 =
Refactoring and bug fixes. No database changes required.
