Troubleshooting
Organised by what you're seeing, not by feature — find the symptom below and check its cause first. Where the real fix lives on another page, this links there instead of repeating it.
Check this first: is your Pro licence active?
An expired or deactivated Pro licence is the most disruptive thing that can happen to a SurveyX site, and it is easy to miss because the admin keeps working as normal — you can still open the dashboard, edit surveys and change settings. It is the respondent-facing side that goes dark, for every survey that uses a Pro feature:
- The
[surveyx]shortcode renders nothing at all — not even an error, only empty space. - The survey's own page returns a plain 404, as if it never existed.
- A survey that was already open in a visitor's browser can look like it's working, then fail the moment they interact with it — starting it or submitting an answer both call the same licence check submitting a vote does, so a page loaded shortly before the licence lapsed can still go dark mid-session.
Surveys that stay inside the free feature set — one question, one of the seven free question types — keep working throughout. SurveyX also warns you: while the licence is inactive its admin screens carry a notice naming how many surveys are affected.
None of this touches your data. Nothing is deleted, and reactivating the licence brings the blocked surveys back immediately, with nothing to republish. Full detail: Activate your Pro licence.
The survey doesn't show
Survey shows blank or empty. Check the licence cause above first — it's the most common
reason a survey that used to work suddenly shows nothing. If the licence is active, check next
that the survey's status is Active, not Inactive — a new survey starts inactive and stays
invisible until you switch it on. If you're using the shortcode, a missing id attribute also
renders nothing to a regular visitor (an administrator sees an inline notice instead); see
Embed a survey with the shortcode for the full shortcode
troubleshooting.
Shortcode displays as literal text, like [surveyx id="123"], instead of the survey. This is
WordPress deciding not to run the shortcode, not a SurveyX problem — usually a block that doesn't
execute shortcodes (a Custom HTML or Code block instead of a Shortcode or Paragraph block), or an
editor that auto-converted the straight quotes around the id into curly ones. See
Embed a survey with the shortcode.
Survey loads, then disappears. This happens when the survey's container appears — from a cached page, or because it was already open in the browser — but the request that actually fetches its data comes back empty. The licence gate (above) is the most common cause: it blocks the same respondent-facing requests whether the survey is newly started or already mid-session, so a page that looked fine a minute ago can go blank the moment someone tries to use it. Reactivating the licence fixes it immediately, with nothing to redo.
Votes and duplicate responses
Votes not being recorded. Two explanations cover most of this. Analytics figures are cached for 15 minutes and only re-measure when you click Refresh or the cache expires, so a vote can be real without being visible yet — see "Analytics shows no data" under Responses and analytics, below. Separately, if spam protection is on, a CAPTCHA that fails blocks the session before it's even created, so the vote never happens at all — see "CAPTCHA verification failed" under Spam protection, below. Also confirm the survey is Active; an inactive survey can't be opened, let alone voted on.
Users can vote multiple times. SurveyX doesn't identify a respondent by a WordPress account or
IP address — it generates a random id, stores it in the browser's localStorage, and uses that id
for everything, including whether someone has already completed the survey. Clearing browser
data, opening a private/incognito window, or switching browsers or devices all produce a fresh id,
and a fresh id can vote again. There's no server-side check that ties votes to a real person, so
this isn't something a setting can fully close. Turning on Login Required to Vote (survey
settings) requires a WordPress account before someone can start the survey, but it doesn't dedupe
votes by account — it only narrows who can attempt one.
"You have already voted" appears for someone who hasn't. What's actually happening: the
browser's localStorage id already belongs to a completed session, so the survey jumps straight
to the end screen instead of showing the questions — regardless of who's currently using that
browser. This is common on a shared or public computer, where the current visitor has inherited an
id that a previous person used to finish the survey. On Pro, turning on Allow Users to Start
Again After Completion adds a restart control that clears this state for that browser; Free has
no working version of that control, so on Free the only way past a false positive is clearing the
browser's site data.
Spam protection
reCAPTCHA not appearing. Spam protection is configured once, globally — under Settings → Security & Spam Protection — not per survey; there's no CAPTCHA field on an individual survey to check. Confirm a provider is actually selected there and its site key is filled in; a blank site key never renders a widget. On the free plugin, only reCAPTCHA v2 works: the server enforces that regardless of what the picker shows, so setting the provider to v3 or Turnstile on Free silently does nothing.
"CAPTCHA verification failed." Verification runs once, when a respondent's session is first created — a failure blocks them from starting the survey at all, not only from submitting. The two usual causes: the site key and secret key don't belong to the same registration (a typo, or a key pair copied from a different site), or — on reCAPTCHA v3 — the minimum score threshold is set high enough to reject real visitors along with bots. It defaults to 0.5; lower it if legitimate respondents are being blocked, but don't set it to 0, which passes every request unchecked.
Design and layout
Styling looks broken. Confirm first that the survey actually has a theme selected and saved — Survey Theme on the General tab. If you're using a Pro custom theme with a custom CSS block, remember that text isn't scoped for you: whatever selectors you write there apply globally inside the survey's stylesheet, so a rule meant for one element can leak onto others. Remove the custom CSS, confirm the built-in theme renders correctly, then reintroduce it a rule at a time.
Survey is too wide or too narrow. In a shortcode or embed, width is controlled by the size
attribute (xs through xl) — the default, l, may not fit the space you've embedded it in; try
a different size. On a Pro custom theme, Content Max Width caps the question column's width on
any render mode, while Min Height only affects the shortcode/embed — it has no effect on the
survey's own standalone page. If it still doesn't fit, check the width of the container (post
column, widget area, page-builder column) you've placed it in; SurveyX renders inside whatever
space it's given.
Fonts don't match my site. By design, none of the 6 free built-in themes names a font of its own — the survey inherits whatever font your site's theme sets on the page around it, the same way an ordinary post or widget would. If it still looks wrong, the mismatch is usually in your site's own CSS, not SurveyX. Matching a specific typeface regardless of what the host page does needs a Pro custom theme: set Content Font and Button Font there, either from the 1,907-font Google Fonts catalogue or from the built-in system-font stacks, which is the option to pick if your site already uses a system/web-safe font. See Build a custom theme.
Integrations
Not receiving email notifications. Check, in order: notifications are turned on; the recipient address isn't blank or misspelled (a blank field falls back to your WordPress admin email); the survey was actually completed, since a partial response never sends anything; and delivery runs on WordPress's own cron rather than firing instantly, so on a quiet site with little other traffic it can take longer than you'd expect. Full detail: Get notified when someone completes your survey.
Mailchimp isn't syncing. Mailchimp doesn't fire on survey completion — it fires the moment a respondent's contact-info question captures an email, mid-survey, then waits 5 minutes before sending. A survey with no contact-info question, or one whose contact-info question doesn't collect an email, will never sync anything. Confirm Mailchimp is enabled with an API key and a list selected under Settings, and that the survey's contact-info question has its Email field turned on. A sync that fails retries automatically — 60 seconds, then 300 seconds, 3 attempts total — and once those are spent, Sync Now picks it back up along with anything still pending.
Responses and analytics
Analytics shows no data. Every figure is cached for 15 minutes and refreshed on demand — click Refresh before assuming something's wrong. On the free plugin, the Responses tab (individual responses), CSV export, and the cross-survey Analytics Dashboard are all Pro-only and show an upgrade card instead of data; that's the edition gate, not a bug — see Free vs Pro. Average Completion Time shows an em dash rather than 0 when no completed session qualifies, which is expected, not missing data.
Export isn't working. CSV export — of responses, of the per-question summary, of contacts, or of a survey's full JSON definition — is Pro-only in every case; Free's export control doesn't do anything because there's nothing behind it, not because of an error. On Pro, response export, summary export and contact export are three separate controls on two different screens, producing different files — confirm you're using the one you actually want. If a response export comes back with fewer rows than expected, check whether a search filter was still active on the Responses tab; that export respects it. A contact export that shows No contacts collected yet means no respondent has answered a contact-info question with an email yet, not a broken export.
Performance
Survey loading slowly. SurveyX loads only the Google Fonts a theme actually uses, and caches both the template gallery and analytics figures rather than recomputing them on every visit, so the plugin itself does little to slow a page down. If a specific survey feels slow, the likelier causes are outside SurveyX: a large, unoptimised cover image, a page-builder-heavy host page, or general WordPress hosting performance. There's no SurveyX-specific cache or CDN setting to check.