Survicate

survicate.comcontributed by Samuele Ongaro

YES

Replaceable in one session with an AI coding agent.

Targeted surveys inside a product, on a website or by email, with the answers routed into the tools a team already uses.

Promptfree, for everyone, and the only version there is
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

PlanBilled monthlyBilled yearlyLast 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

$0

Self-hosted in-product surveys with targeting already built.

formbricks/formbricksfree · open source

LimeSurvey

$0

For 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

Interest · last 30 dayspeak 5/day
views024530 Aug4 Sept9 Sept14 Sept19 Sept24 Sept28 Sept
— views— prompt copies none yet— votes none yet

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

All 19 in Forms

Not sending yet

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

Esc