
內容簡介
KindlyVote 將任何 WordPress 網站轉變為完整的投票與選舉平台,適用於選美比賽、頒獎典禮、才藝競賽及各類選舉,支持免費與付費投票模式,並確保每一票在付款確認後才會被計算。
【主要功能】
• 支援免費與付費投票模式
• 支援 Paystack 和 Flutterwave 付款閘道
• 無限創建投票活動,具時間限制
• 參賽者資料顯示,包括照片與社交連結
• 防止垃圾投票的 IP 限制與 CAPTCHA 驗證
• 實時顯示投票結果與排名
外掛標籤
開發者團隊
原文外掛簡介
KindlyVote turns any WordPress site into a complete voting and elections platform. Run beauty
pageants, award shows, talent contests, and school, church, or association elections — as free
polls, or as paid contests where every vote is only counted after the payment gateway confirms it.
Built for African organizers, KindlyVote supports Paystack and Flutterwave out of the box,
works in local currencies (NGN, GHS, ZAR, KES, RWF, XOF), and records paid votes only after a
signature-verified webhook — so a vote is never counted before the money is confirmed.
Use cases
Beauty pageants and modeling contests
Award shows and “of the year” competitions
Talent shows and fan voting
School and student-union elections
Church, NGO, and association elections
Any contest that sells votes, or any free poll
Create your event
Unlimited voting events, each with its own start and end window (timezone-aware)
Paid or free mode per event, with a simple price-per-vote for paid contests
Organize contestants into categories or positions, each with its own ready-to-copy shortcode
Contestant profiles
Featured photo, bio, brand or business name, and a contest number
A drag-to-reorder photo gallery, with thumbnails that swap the main image
Social links (Instagram, Facebook, X, TikTok, website) and a video URL
Free voting
One vote per email — per contestant, per category, per event, or unlimited
Optional CAPTCHA — Cloudflare Turnstile or Google reCAPTCHA
Per-IP rate limiting to curb spam
Restrict voting to specific email domains (e.g. only @company.com) for internal elections
Paid voting
Paystack and Flutterwave, with webhook plus server-side verification
The amount is always set on the server — the browser can never change the price
Idempotent recording — a webhook and a browser callback can both fire without double-counting
Display and results
[kvote_contest] — a responsive grid of contestants with vote buttons
[kvote_leaderboard] — a ranked standings board with vote bars
A mobile-friendly vote popup, and a Primary colour setting to match your site
Administration and audit
A paginated Voting Logs screen — filter by status, voter email, and date range for a full audit trail
Add or set a contestant’s vote count manually, recorded as an auditable adjustment
A dashboard with live totals, revenue, and top contestants
KindlyVote is built on modern, secure, object-oriented foundations and is designed to scale to
large events. For live real-time results, advanced analytics, and fully hosted elections, see
KindlyVote Cloud at https://kindlyvote.com.
External services
This plugin relies on third-party payment and bot-protection services. None of them are contacted
until you enable and configure that specific service in the plugin settings. If you run only free
events with no CAPTCHA, the plugin makes no external connections.
Paystack (payment gateway)
What it is and why: a payment gateway used to collect votes as payments on paid events.
What is sent and when: when a voter chooses to pay, the plugin loads Paystack’s checkout script
from js.paystack.co and sends the transaction details (amount, currency, a unique reference, and
the voter’s email) to api.paystack.co to create and then verify the payment. Verification also
happens server-to-server against api.paystack.co, and Paystack confirms payments back to your
site via a signed webhook.
Conditions: only on paid votes, and only if you have entered your Paystack API keys.
Terms of service: https://paystack.com/terms
Privacy policy: https://paystack.com/privacy/merchant
Flutterwave (payment gateway)
What it is and why: a payment gateway used to collect votes as payments on paid events.
What is sent and when: when a voter chooses to pay, the plugin loads Flutterwave’s checkout script
from checkout.flutterwave.com and sends the transaction details (amount, currency, a unique
reference, and the voter’s email) to Flutterwave. Verification happens server-to-server against
api.flutterwave.com, and Flutterwave confirms payments back to your site via a signed webhook.
Conditions: only on paid votes, and only if you have entered your Flutterwave API keys and selected
Flutterwave as a gateway.
Terms of service: https://flutterwave.com/terms
Privacy policy: https://flutterwave.com/privacy-policy
Cloudflare Turnstile (optional CAPTCHA)
What it is and why: a bot-protection challenge on the free vote form, used only if you enable
Turnstile as your CAPTCHA provider.
What is sent and when: when the vote form is shown, the challenge widget is loaded from
challenges.cloudflare.com; on submit, the challenge token and the visitor’s IP are sent
server-to-server to challenges.cloudflare.com/turnstile/v0/siteverify to confirm the visitor is
human.
Conditions: only on free-vote submissions, and only if Turnstile is configured.
Terms of service: https://www.cloudflare.com/website-terms/
Privacy policy: https://www.cloudflare.com/privacypolicy/
Google reCAPTCHA (optional CAPTCHA)
What it is and why: a bot-protection challenge on the free vote form, used only if you enable
reCAPTCHA as your CAPTCHA provider.
What is sent and when: when the vote form is shown, the reCAPTCHA widget is loaded from
www.google.com/recaptcha; on submit, the challenge token and the visitor’s IP are sent
server-to-server to www.google.com/recaptcha/api/siteverify to confirm the visitor is human.
Conditions: only on free-vote submissions, and only if reCAPTCHA is configured.
Terms of service: https://policies.google.com/terms
Privacy policy: https://policies.google.com/privacy
