Targeted surveys inside a product, on a website or by email, with the answers routed into the tools a team already uses.
Build me an in-product survey tool that replaces Survicate: short questions asked inside my own app, at the right moment, without a third-party script watching my users. STACK - Node 20+ with Fastify, SQLite through better-sqlite3 - One small embeddable script, vanilla, under 10KB gzipped, served from my own domain - Server-rendered admin, no client framework - Caddy in front THE DATA MODEL - surveys: id, name, status, kind, created_at, started_at, ended_at - questions: id, survey_id, position, kind, title, description, required, settings_json - targeting: id, survey_id, rule_kind, operator, value — page URL, event fired, user attribute, time on page, first seen, device - displays: id, survey_id, session_hash, shown_at, dismissed_at, completed_at - answers: id, display_id, question_id, value_text, value_number, value_choice, answered_at - respondents: id, key_hash, attributes_json, first_seen, last_seen - Question kinds: nps, csat, rating, single choice, multiple choice, short text, long text, yes/no - Nothing identifies a person unless the host application chose to send an attribute; the default identity is a salted hash of a session ASKING AT THE RIGHT MOMENT - Trigger on: page matching a pattern, a custom event the app fires, N seconds on a page, scroll depth, exit intent on desktop, or an explicit call from the app - Frequency rules that are actually respected: never show the same survey twice to the same respondent, never show any survey more than once per N days, never during the first session unless told otherwise - A global off switch, and a preview mode that only the admin sees - Delay and probability: show to 20% of people who match, so a survey does not exhaust its audience in a day QUESTION LOGIC - Branching: an answer sends the respondent to a specific question or ends the survey - NPS behaves like NPS: 0 to 10, and a follow-up whose wording depends on detractor, passive or promoter - Every question skippable unless required, and required questions are the ones people abandon on - A thank-you screen that can carry a link - Partial answers are kept: somebody who answers two of four has told you something THE WIDGET - Three shapes: a small card in a corner, a bar at the top or bottom, and a modal that must be dismissible - Never block the page, never take focus without being opened, never move the page content - Keyboard reachable and screen-reader labelled: a survey that traps a keyboard user is a survey that gets your product complained about - Remembers where it was if the page reloads mid-survey - Renders from a single JSON payload fetched once per session, so answering does not need a round trip per question - Respects prefers-reduced-motion and prefers-color-scheme, and takes a colour and a corner radius from a config so it looks like the host application READING THE ANSWERS - Per survey: shown, started, completed, and the completion rate — defined on the page, because everybody computes it differently - NPS score with the three groups and the trend by week - Choice questions as counts and percentages; text answers as a list you can read and tag - Filter every view by any attribute the app sent, by device, by page - Export to CSV, and a JSON feed per survey - A daily digest email of new answers, off by default PRIVACY, WHICH IS THE REASON TO SELF-HOST - No cookie: the session identity is a salted hash held in memory and in sessionStorage - No IP stored, no user agent stored beyond a coarse device bucket - The script talks to your domain and nowhere else, and the admin can say so on a privacy page - A data request from a respondent can be answered: attributes come from the host app, so deletion is a delete by key THE INTERFACE - Build a survey on one page: questions on the left, live preview on the right - Targeting rules read as sentences, not as a query builder - Dark and light, one accent OPERATIONS - .env: DATABASE_PATH, BASE_URL, ADMIN_PASSWORD_HASH, HASH_SALT - Migrations on boot, each once - The payload endpoint answers from memory with an ETag: it is hit by every page view of the host app - Nightly backup off the machine, restore script included - Health endpoint WHAT MATTERS MOST The widget and the frequency rules are the product. A survey tool that annoys people costs more than it learns. Build the script, the trigger rules and the one-per-N-days memory first, put it on a real page and try to make it annoying — if you can, the rules are not finished. Give me the repository, the embeddable script, migrations, .env.example, a seed survey, and a README with deploy steps behind Caddy.
What you lose
- Targeting by behaviour and attributes, changeable without shipping code
- Integrations that push answers into a CRM or warehouse
- Question templates that have been tested on real audiences
If you would rather not build
- A dialog and an insert, for one question
- Typeform, for a standalone survey
What it costs
read from their page 15 Aug 2026
| Plan | Billed monthly | Billed yearly | Last read |
|---|---|---|---|
| — | $114/mo | — | 15 Aug 2026 |
Their pricing page is where these came from. Seeing a different price? Tell us.
The escape hatch
open source · no votes, no paid placement
Formbricks
$0Self-hosted in-product surveys with targeting already built.
formbricks/formbricksfree · open source
LimeSurvey
$0For long questionnaires rather than one-question prompts.
LimeSurvey/LimeSurveyfree · open source
Why this verdict
our own opinion · changed only by a person
76/100
Verdict yes at 76. Saving partial answers is what makes the results useful; the rest is a form in a corner.
History
tracked since 10 Aug 2026 · nothing is ever overwritten
Questions about Survicate
answered from the record above
Is Survicate free?
No — the plan we track is $114 a month. Growth from $114/month billed annually, priced on how much feedback you collect; Pro starts at $349.
Can you replace Survicate by building your own?
YES. Replaceable in one session with an AI coding agent. Replacement score 76 out of 100, build time one session. Read what you lose before you decide.
How much does Survicate cost?
$114 a month on Starter — $1,368 a year. Recorded 14 Aug 2026.
What do you lose by replacing Survicate?
Targeting by behaviour and attributes, changeable without shipping code; Integrations that push answers into a CRM or warehouse; Question templates that have been tested on real audiences. If any of those carry weight for you, keep paying.
Is there an open-source alternative to Survicate?
Yes: Formbricks, LimeSurvey. The prompt on this page is for when you want it your way instead.
Related entries
same category first, most replaced first
Every week, something stops being worth paying for.
New verdicts, prices that moved, entries added. One email a week. Unsubscribe in one click. Nothing is being sent yet — your address is kept here, and the first issue is the first thing it is used for.
free forever · no tracking pixel · stored here, never passed to anyone

