Description
Stedica Surveys is a survey and questionnaire builder for WordPress. Build a
survey by dragging questions into sections, publish it with a shortcode, and
read the results in your own dashboard. Responses are stored in your
own database.
Everything listed below works in this plugin. Nothing is time-limited, capped,
or switched off pending a purchase.
Building
- Drag-and-drop builder — reorder sections and questions by dragging
- Unlimited surveys, unlimited questions per survey
- 17 question types — surveyor, open ended, closed ended, multiple choice,
Likert scale, dichotomous (yes/no), rating, number, dropdown, matrix,
ranking, image choice, demographic, calculated field, photo upload, date,
signature - Conditional logic — show or hide questions based on earlier answers
- Answer piping — put an earlier answer into a later question’s wording:
“How was your visit to {answer:q1}?” -
Option randomisation — shuffle a question’s answer options per respondent
to cancel order bias, with “Other” and “None of the above” pinned in place -
Starter templates — NPS, customer satisfaction, employee engagement,
event feedback, product feedback and a store/field audit - Question Library — save a question once, reuse it across surveys
- Survey versioning, with a Go-Live mode that locks schema changes
Keeping responses trustworthy
- Spam protection — a hidden decoy field, a submission-timing check and a
per-connection rate limit. No CAPTCHA, nothing sent to any third party, and
nothing for the respondent to do - One response per person — by WordPress account, by browser, or by network
address, with the limits of each stated where you choose it - Response cap — close the survey automatically once it reaches a set number
- Anonymous responses — do not record which account submitted a response
Collecting
- Shortcode
[stedica_survey id="123"], a Gutenberg block, and an
Elementor widget - Offline capture, switchable per survey — a progressive web app queues
answers on the respondent’s device with no connection and syncs them when the
signal returns. Turn it off per survey for anything only ever taken online - Offline Sync Monitor showing what is queued and what has landed
- Progress bar, and save-and-resume for long surveys
- Photo upload for image evidence, with server-side validation
Notifying
- Email notification when a response is submitted, to any list of recipients
- Confirmation email back to the respondent, when the response contains an
address - Merge tags for the survey name, the respondent, any individual answer, or the
whole response - Set defaults once for every survey, then override them per survey
- Optional Reply-To the respondent, so replying reaches the person
- Responses collected offline notify when they sync, not silently
- Webhooks — POST each response to a URL you enter, so another system can
react to it. Automatic retry if the endpoint is down, and a Send test button
so you can prove it works before going live
Reading
- Results dashboard — response counts, completion rate, per-question breakdowns,
section metrics and a submission timeline - Charts — doughnut, bar, stacked bar and a response-over-time line, chosen
automatically to suit each question type. Every chart carries a matching data
table, so the figures are readable by screen readers and copyable - Net Promoter Score — promoters, passives and detractors, with the score
and the base - Cross-tabulation — break one question down by another (satisfaction by
region), with row, column or total percentages - Individual response viewer — open one response and read it as a document,
every question in order, with the wording that was on screen when it was
answered - Question drill-down
- CSV and Excel (XLSX) export of every response
- REST API for external reporting tools
- Per-survey backup, restore, and clear-data
Running it safely
- A Survey Editor role, so people can build surveys without full admin rights
- Admin audit log
- GDPR personal-data exporter and eraser, wired into WordPress’s own privacy tools
- Plugin Health screen that checks tables, capabilities and scheduled jobs
Extensions, sold separately
These are separate products and are not required. This plugin is complete
without them.
- Stedica Surveys Premium — GPS capture, a geo intelligence map, territory
and KPI dashboards, risk alerts, and Power BI integration - Data Sources add-on — question options populated from an imported CSV or
XLSX file, with dependent filtering - AI Images add-on — product recognition, image recognition and image
comparison question types
External services
Nothing is sent anywhere by default. Out of the box this plugin makes no
outbound requests: surveys, responses and uploads stay in your own WordPress
database and on your own server.
Two things can send data out, and both are off until you switch them on.
Webhooks (optional, off by default)
If you enter a webhook URL under Stedica Surveys Notifications, each completed
response is POSTed to that URL — one you choose, not a service we run. The
request contains the survey id and name, the response id and submission time, and
the answers. It does not include IP or device hashes, WordPress user ids, or
internal version ids.
Requests go out through WordPress’s own wp_safe_remote_post(), which refuses
private and reserved network addresses. If you set a signing secret, each request
carries an X-Stedica-Signature header — HMAC-SHA256 of the request body — so
your endpoint can verify it. The secret itself is never transmitted.
Because the destination is yours, its terms and privacy policy are whatever
applies to the endpoint you point it at.
Licensing and updates (Freemius)
The plugin bundles the Freemius SDK. It runs in anonymous mode: everything
described above works without connecting, and no account, opt-in or consent is
required for any feature of this plugin. Nothing is sent until you choose to
start a trial or activate a licence.
The SDK is used for three things, all optional:
- the 7-day free trial of Stedica Surveys Premium, a separate paid plugin;
- licensing for the optional paid add-ons, and delivering their updates;
- delivering updates to Premium itself, which is not distributed here.
If you start a trial or activate a licence, the plugin then contacts
api.freemius.com periodically to validate it and to check for updates. What is
sent is set out on screen before you agree: your WordPress name and email, the
site’s URL, title and language, the WordPress, PHP and plugin versions it runs,
and whether the plugin is still active. Your surveys and their responses are
never sent. The list of other plugins and themes installed on the site, which
the SDK can collect by default, is switched off in this plugin and never
transmitted.
The Premium Version menu item opens checkout.freemius.com in a new tab. That
is a link you click, not a background request.
- Terms: https://freemius.com/terms/
- Privacy: https://freemius.com/privacy/
Screenshots






Blocks
This plugin provides 1 block.
- Stedica Survey Embed a Stedica survey. The survey itself is rendered when the page loads, so edits to the survey appear everywhere it is embedded.
Installation
- Install through Plugins Add New, or upload the ZIP via Plugins Add New Upload Plugin.
- Activate it.
- Open Stedica Surveys in the admin menu and create your first survey.
- Publish it with the Stedica Survey block, or the [stedica_survey id=”123″] shortcode.
FAQ
-
Do I need an account anywhere?
-
No. The plugin does not require registration, does not contact any external
service, and works entirely on your own site. -
Where are responses stored?
-
In your own WordPress database. Nothing is sent anywhere else.
-
Does the spam protection use Google reCAPTCHA?
-
No. It uses a hidden decoy field, a submission-timing check and a rate limit,
all handled on your own server. Nothing is sent to any third party, so there is
no external service to disclose and no consent banner to add. -
What does “one response per person” actually record?
-
By WordPress account, it records the account id. By browser, a random value in
a first-party cookie that means nothing outside your site. By network address,
a salted one-way hash — the address itself is never stored and the hash
cannot be turned back into one. Surveys set to anonymous record none of these. -
Can respondents answer without an internet connection?
-
Yes, and it is switchable per survey. Open the survey in the builder and look
under Survey Settings for “Collect responses offline”. When it is on, answers
are stored on the respondent’s device and sync when the connection returns; the
Offline Sync Monitor shows what is still queued. When it is off, nothing is
stored on the device and no connectivity banner is shown.Surveys created before version 5.0.0 have it on.
-
Does the plugin work without the paid extensions?
-
Yes. Everything documented above is in this plugin and is not gated. The
extensions add separate features; they do not unlock anything here. -
Do notification emails work with my SMTP plugin?
-
Yes. The plugin sends through
wp_mail(), which any SMTP plugin overrides in
the normal way. If notifications are not arriving, that is almost always the
site’s mail delivery rather than the survey: send failures are written to the
plugin’s error log, visible on Stedica Surveys Plugin Health. -
Can I let someone build surveys without making them an administrator?
-
Yes — the plugin adds a Survey Editor role with the survey capabilities and
nothing else.
Reviews
There are no reviews for this plugin.
Contributors & Developers
“Stedica Surveys” is open source software. The following people have contributed to this plugin.
ContributorsTranslate “Stedica Surveys” into your language.
Interested in development?
Browse the code, check out the SVN repository, or subscribe to the development log by RSS.
Changelog
5.16.5
Sanitization fix from the plugin review.
Structured answers saved by the autosave path were decoded from JSON and stored
without being sanitized. The same answers arriving on final submit were already
cleaned, so the two paths disagreed; both now run through the same sanitizer.
Plain-text and malformed-JSON values on that path are sanitized too, as is a
value that arrives as an array rather than a string.
