=== Matchoice ===
Contributors: digizaal
Tags: quiz, personality test, voting advice, survey, poll
Requires at least: 6.5
Tested up to: 7.1
Requires PHP: 8.1
Stable tag: 0.1.4
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Personality tests, product choosers and voting advice applications: match visitors to an outcome and see what your audience thinks.

== Description ==

Matchoice matches visitors to an outcome: a personality type, a product, a model or a political party. Create the outcomes, write the questions, give every answer points for the outcomes it fits, and publish. Visitors get a personal result they like to share; you get analytics, results per question with filters, and a CSV export.

Matchoice is the engine behind the Regulator of reguleren.com and the Cannabis Stemwijzer (voting advice for the Dutch elections), with more than 35,000 completed tests.

= Features =

* 13 question types: single and multiple choice, dropdown, yes/no, statement (agree … disagree), scale, number, age, postcode, e-mail, short and long text, text block
* Weighting per answer and outcome, results in points or as a percentage of agreement
* Own look per campaign: colours, fonts, corners, progress bar (no external font services)
* Public results pages with pie charts, breakdown per group (for example age) and a map of the Netherlands by postcode area
* Analytics on the dashboard and per campaign, results per question with filters, CSV export
* Anonymous by default: no IP address, no session and no browser data stored with an answer
* Bot protection: honeypot, signed timing check, rate limit, optional Cloudflare Turnstile or Google reCAPTCHA v3
* Dutch and English for every text
* Blocks with a campaign picker, and shortcodes for classic themes
* Comes with a complete example: the personality test "Who are you, really?", with illustrations

The admin screens are in Dutch.

Inviting parties or organisations to enter their own positions in a voting advice application is available in the separate add-on Matchoice Pro: https://matchoice.digizaal.nl/pro/

Documentation (Dutch): https://matchoice.digizaal.nl/documentatie/

== Installation ==

1. Install Matchoice through Plugins › Add New, or upload the zip under Plugins › Add New › Upload Plugin, and activate it.
2. Open Campagnes and click "Voorbeeldtest installeren" to install the example test, or start your own campaign.
3. Put the test on a page with the "Campagne (vragenlijst)" block and choose the campaign in the sidebar.

== Frequently Asked Questions ==

= Does Matchoice store personal data? =

Not by default. Answers are stored without IP address, session or browser data. Postcodes are stored as digits only. E-mail and open-text questions are personal data; they are only exported when an administrator explicitly asks for it.

= Does Matchoice phone home? =

Only with your permission. After installation Matchoice asks once whether it may report that it runs on your site (see "Installation report" under External services). If you say no, nothing is sent.

= Can I use it with a classic theme or a page builder? =

Yes. Every campaign has a ready-made shortcode with a copy button in the campaign list.

== External services ==

Matchoice works without any external service. The following services are only contacted when you switch them on.

= Cloudflare Turnstile (optional bot check) =

When an administrator selects Turnstile under Campagnes › Instellingen › Botcontrole and enters keys, the test pages load the Turnstile script from challenges.cloudflare.com, and when a test is submitted the server sends the visitor's token and IP address to challenges.cloudflare.com to verify it.
Terms: https://www.cloudflare.com/website-terms/ — Privacy policy: https://www.cloudflare.com/privacypolicy/

= Google reCAPTCHA v3 (optional bot check) =

When an administrator selects reCAPTCHA and enters keys, the test pages load the reCAPTCHA script from www.google.com, and when a test is submitted the server sends the visitor's token and IP address to www.google.com/recaptcha/api/siteverify.
Terms: https://policies.google.com/terms — Privacy policy: https://policies.google.com/privacy

= Installation report to Digizaal (opt-in) =

Only after an administrator agrees, Matchoice sends to matchoice.digizaal.nl (Digizaal, the developer) on activation, once a week and on deactivation: a random site id, the site address and name, the versions of Matchoice, WordPress and PHP, the site language, the number of campaigns and whether the site is a multisite. It is used to know which versions are in use and to warn site owners about important updates. Never visitors, answers, users or e-mail addresses. The exact data is shown under Campagnes › Instellingen › Installatiemelding, where it can be switched on or off at any time.
Terms: https://matchoice.digizaal.nl/algemene-voorwaarden/ — Privacy policy: https://matchoice.digizaal.nl/privacyverklaring/

== Third-party resources ==

* Chart.js 4.4.1 (MIT), bundled in assets/vendor.
* Postcode areas of the Netherlands: CBS / PDOK 2023, CC BY 4.0, bundled in assets/maps.
* Illustrations of the example test and the outcome comics: © Digizaal (Dirk). Distributed with this plugin under the GPLv2 or later; the copyright stays with Digizaal.

== Screenshots ==

1. The question editor: points per answer and outcome.
2. Campaign settings and look.
3. Results with filters and CSV export.
4. Analytics per campaign.
5. A test as visitors see it.
6. Public results with the map of the Netherlands.

== Changelog ==

= 0.1.4 =
* Security review: stricter input handling, map legend built without HTML, Plugin Check clean.
* New text-free illustrations for the example test.

= 0.1.3 =
* Installation report only with the administrator's permission (opt-in).

= 0.1.2 =
* Installation report (see External services).

= 0.1.1 =
* Example test installable from the admin, with illustrations and its own look.
* The look of a campaign follows the default look unless "Eigen weergave" is switched on.
* Results: one question filter with pinned conditions, export at the top.
* Blocks in their own "Matchoice" category; copyable shortcode in the campaign list.
* Outcomes of a deleted campaign become drafts.

= 0.1.0 =
* First public version.
