[{"data":1,"prerenderedAt":3226},["ShallowReactive",2],{"knowledge-listing":3},[4,156,282,440,562,733,827,943,1054,1153,1250,1346,1441,1621,1714,1838,1974,2078,2165,2305,2407,2518,2626,2731,3060],{"id":5,"title":6,"author":7,"body":8,"date":114,"description":115,"draft":116,"extension":117,"faqs":118,"image":126,"isPillar":116,"meta":127,"navigation":128,"path":129,"pillar":130,"pillarName":131,"seo":132,"sources":133,"stem":145,"tags":146,"takeaways":151,"updated":114,"__hash__":155},"knowledge/knowledge/building-trust-in-forms.md","How to Build Trust in Your Forms (So People Complete Them)","RoundPushPin Team",{"type":9,"value":10,"toc":105},"minimark",[11,15,20,32,36,54,58,70,74,85,89],[12,13,14],"p",{},"A form asks people to hand over their data, and people only do that for a site they trust. Trust isn't a nice-to-have on a form — it's a precondition for completion, and it's especially fragile the moment you ask for something personal.",[16,17,19],"h2",{"id":18},"why-does-trust-matter-for-form-completion","Why does trust matter for form completion?",[12,21,22,26,27,31],{},[23,24,25],"strong",{},"Because submitting a form is an act of trust, and doubt converts directly into abandonment."," When credibility is low, people hesitate, skip fields, or leave — and the effect is sharpest on sensitive questions, where distrust drives both refusals and inaccurate answers (Tourangeau & Yan, 2007). Earning trust isn't separate from conversion; it ",[28,29,30],"em",{},"is"," part of conversion.",[16,33,35],{"id":34},"what-makes-a-form-look-trustworthy","What makes a form look trustworthy?",[12,37,38,41,42,45,46,49,50,53],{},[23,39,40],{},"The elements people notice, and the meaning they assign to them."," Fogg's ",[28,43,44],{},"Prominence-Interpretation Theory"," (2003) explains online credibility as a two-step process: a person has to ",[23,47,48],{},"notice"," an element (prominence), then ",[23,51,52],{},"interpret"," it as good or bad. So trust on a form is built from noticeable, positively-interpreted cues — a clean, professional design, a real organization clearly behind the form, plain language, and no jarring or excessive questions (Nielsen Norman Group). Sloppiness and surprises read as risk.",[16,55,57],{"id":56},"how-do-you-reassure-people-about-their-data","How do you reassure people about their data?",[12,59,60,63,64,69],{},[23,61,62],{},"Tell them what you'll do with it, why you're asking, and prove you ask for little."," Concretely: state the purpose in plain language, link a privacy notice near the submit action, keep the form ",[65,66,68],"a",{"href":67},"/knowledge/what-to-ask-on-a-form","minimal",", and when you must ask something sensitive, explain why and place it late — after the person has invested effort. Transparency is what lowers the refusals that distrust causes (Tourangeau & Yan, 2007).",[16,71,73],{"id":72},"do-trust-signals-actually-change-behaviour","Do trust signals actually change behaviour?",[12,75,76,79,80,84],{},[23,77,78],{},"Yes — but only the ones people notice and believe."," Prominence-Interpretation Theory is a useful filter: a trust cue does nothing if it isn't noticed, and backfires if it's interpreted as hollow. Genuine signals (a real company, a clear privacy explanation, a short honest form) beat generic badges. Test which cues move ",[65,81,83],{"href":82},"/knowledge/form-completion-rate","completion rate"," for your audience rather than assuming.",[16,86,88],{"id":87},"how-roundpushpin-helps-you-earn-trust","How RoundPushPin helps you earn trust",[12,90,91,94,95,99,100,104],{},[23,92,93],{},"RoundPushPin supports trustworthy forms by default: clean conversational design, minimal relevant questions, and self-hosted data you genuinely control."," Because responses live in ",[65,96,98],{"href":97},"/knowledge/self-hosted-forms","your own database",", \"we keep your data private\" isn't a slogan — you decide where it lives and how long you keep it, which is the substance behind ",[65,101,103],{"href":102},"/knowledge/gdpr-compliant-forms","GDPR-compliant"," trust claims.",{"title":106,"searchDepth":107,"depth":107,"links":108},"",2,[109,110,111,112,113],{"id":18,"depth":107,"text":19},{"id":34,"depth":107,"text":35},{"id":56,"depth":107,"text":57},{"id":72,"depth":107,"text":73},{"id":87,"depth":107,"text":88},"2026-03-16","People won't hand over data to a form they don't trust. This research-backed guide covers how visitors judge credibility, the trust signals that matter on forms, and how to reassure people about their data.",false,"md",[119,121,123],{"q":19,"a":120},"Filling in a form means handing over data, which people only do when they trust the site. Low credibility raises hesitation and abandonment — and on sensitive questions, distrust increases refusals and misreporting.",{"q":35,"a":122},"Credibility comes from elements people notice and judge positively — clear design, a real organization behind it, plain language about why you ask, visible privacy/security cues, and no surprising or excessive questions.",{"q":124,"a":125},"How do you reassure people about their form data?","Tell them plainly what you'll do with it and why each question is asked, link a privacy notice, keep the form minimal, and place any sensitive question late with an explanation. Transparency reduces refusals.","/images/knowledge/building-trust-in-forms.png",{},true,"/knowledge/building-trust-in-forms","conversational-form-design","Conversational form design",{"title":6,"description":115},[134,138,141],{"title":135,"url":136,"publisher":137},"Fogg, B. J. (2003) — Prominence-Interpretation Theory: explaining how people assess credibility online","https://doi.org/10.1145/765891.765951","CHI '03 / Stanford Web Credibility Project",{"title":44,"url":139,"publisher":140},"https://www.nngroup.com/articles/prominence-interpretation-theory/","Nielsen Norman Group",{"title":142,"url":143,"publisher":144},"Tourangeau, R. & Yan, T. (2007) — Sensitive questions in surveys","https://doi.org/10.1037/0033-2909.133.5.859","Psychological Bulletin","knowledge/building-trust-in-forms",[147,148,149,150],"trust","credibility","conversion","research",[152,153,154],"People only submit data to a form they trust — low credibility raises hesitation and abandonment.","Credibility is what users notice and how they interpret it (Fogg's Prominence-Interpretation Theory).","Reassure with clear purpose, visible privacy cues, minimal asks, and sensitive questions placed late.","tzUin9YU-8HMjkplypyURGhSFed0__aoIDxr88QnEPQ",{"id":157,"title":158,"author":7,"body":159,"date":249,"description":250,"draft":116,"extension":117,"faqs":251,"image":260,"isPillar":116,"meta":261,"navigation":128,"path":67,"pillar":130,"pillarName":131,"seo":262,"sources":263,"stem":273,"tags":274,"takeaways":277,"updated":249,"__hash__":281},"knowledge/knowledge/what-to-ask-on-a-form.md","What to Ask (and Not Ask) on a Form",{"type":9,"value":160,"toc":242},[161,164,168,181,185,191,195,209,213,223,227],[12,162,163],{},"Every field on a form is a trade: more data for you, more effort and more drop-off for the respondent — and, for personal data, more legal exposure. Deciding what to ask, and what to leave off, is one of the highest-leverage choices in form design.",[16,165,167],{"id":166},"how-do-you-decide-which-fields-to-include","How do you decide which fields to include?",[12,169,170,173,174,177,178,180],{},[23,171,172],{},"Work backward from what you'll actually do with each answer."," If a field doesn't route the response, qualify a lead, personalize a follow-up, or satisfy a genuine requirement, it shouldn't be there. This is also the GDPR principle of ",[23,175,176],{},"data minimisation"," — collect only what's necessary for your stated purpose (Article 5). Minimisation is both good law and good ",[65,179,83],{"href":82},".",[16,182,184],{"id":183},"what-should-you-not-ask-on-a-form","What should you not ask on a form?",[12,186,187,190],{},[23,188,189],{},"Anything you won't use — and sensitive data you don't truly need."," Beyond the obvious \"cut vanity fields\", be careful with sensitive topics. Tourangeau and Yan (2007) found that sensitive questions produce more misreporting and more refusals, so adding them costs you both data quality and completions. If you don't need it, don't ask it.",[16,192,194],{"id":193},"how-do-sensitive-questions-change-your-data","How do sensitive questions change your data?",[12,196,197,200,201,204,205,208],{},[23,198,199],{},"They lower honesty and raise refusals — so ask them sparingly and carefully."," When a question feels intrusive or socially loaded, people skip it or answer inaccurately (Tourangeau & Yan, 2007). If you genuinely need sensitive information: explain ",[28,202,203],{},"why"," you're asking, keep it optional where you can, and place it late — after the respondent has invested effort and has some reason to trust you (see ",[65,206,207],{"href":129},"building trust in forms",").",[16,210,212],{"id":211},"should-fields-be-required-or-optional","Should fields be required or optional?",[12,214,215,218,219,222],{},[23,216,217],{},"Require only what you truly need to proceed; defer or drop the rest."," Forcing optional fields to be mandatory inflates abandonment and breeds junk answers from respondents who ",[28,220,221],{},"satisfice"," under pressure (Krosnick, 1991). A short set of genuinely-required fields plus optional or progressively-collected extras beats one long required form.",[16,224,226],{"id":225},"how-roundpushpin-helps-you-ask-the-right-things","How RoundPushPin helps you ask the right things",[12,228,229,232,233,237,238,180],{},[23,230,231],{},"RoundPushPin makes minimal, relevant forms easy — and keeps the data typed and queryable so you only collect what you'll use."," Graph-based ",[65,234,236],{"href":235},"/knowledge/conditional-logic-in-forms","conditional logic"," shows sensitive or follow-up questions only when relevant, and because every field maps to a typed column, it's clear exactly what you store — the foundation of ",[65,239,241],{"href":240},"/knowledge/form-data-ownership","data ownership and privacy",{"title":106,"searchDepth":107,"depth":107,"links":243},[244,245,246,247,248],{"id":166,"depth":107,"text":167},{"id":183,"depth":107,"text":184},{"id":193,"depth":107,"text":194},{"id":211,"depth":107,"text":212},{"id":225,"depth":107,"text":226},"2026-03-14","Every field you add costs completion and risk. This research-backed guide explains how to decide what to ask, what to leave off, and how sensitive questions change both your data quality and your legal exposure.",[252,255,257],{"q":253,"a":254},"How do you decide which fields to put on a form?","Start from what you'll actually do with each answer. If a field doesn't route, qualify, personalize, or fulfil a real need, cut it. Every field costs completion, and under GDPR you should collect only what's necessary.",{"q":184,"a":256},"Anything you won't use, and sensitive data you don't truly need — research shows sensitive questions raise misreporting and refusals. If you must ask something sensitive, explain why, make it optional where possible, and ask it late.",{"q":258,"a":259},"Should form fields be required or optional?","Make required only what you genuinely need to proceed; mark the rest optional or defer it. Forcing optional fields to be required inflates abandonment and encourages junk answers.","/images/knowledge/what-to-ask-on-a-form.png",{},{"title":158,"description":250},[264,265,269],{"title":142,"url":143,"publisher":144},{"title":266,"url":267,"publisher":268},"Krosnick, J. A. (1991) — Response strategies for coping with the cognitive demands of attitude measures in surveys","https://doi.org/10.1002/acp.2350050305","Applied Cognitive Psychology",{"title":270,"url":271,"publisher":272},"Regulation (EU) 2016/679 (GDPR) — Article 5, data minimisation","https://eur-lex.europa.eu/eli/reg/2016/679/oj","EUR-Lex, European Union","knowledge/what-to-ask-on-a-form",[275,176,276,150],"question design","privacy",[278,279,280],"Decide fields by what you'll act on — every field costs completion, and GDPR says collect only what's necessary.","Sensitive questions increase misreporting and refusals (Tourangeau & Yan, 2007); ask them only if needed, and late.","Keep required fields minimal; defer or drop the rest rather than forcing them.","bxIdGpoSliDGGguGfP_6vI3hYQzp3v9UMUBAZvuyqU4",{"id":283,"title":284,"author":7,"body":285,"date":408,"description":409,"draft":116,"extension":117,"faqs":410,"image":418,"isPillar":116,"meta":419,"navigation":128,"path":420,"pillar":130,"pillarName":131,"seo":421,"sources":422,"stem":431,"tags":432,"takeaways":435,"updated":408,"__hash__":439},"knowledge/knowledge/form-friction.md","Form Friction: What Causes It and How to Reduce It",{"type":9,"value":286,"toc":401},[287,290,294,300,304,313,317,322,371,375,385,389],[12,288,289],{},"Form friction is the sum of everything that stands between a respondent and the submit button — every extra field, moment of confusion, or irrelevant question that makes finishing feel like work. Reduce it and more people complete; ignore it and they leave.",[16,291,293],{"id":292},"what-is-form-friction","What is form friction?",[12,295,296,299],{},[23,297,298],{},"Form friction is any effort or hesitation a form imposes on its way to \"submit\"."," It's the cognitive and physical cost of answering — reading, deciding, typing, recovering from errors — plus the doubt a confusing or intrusive question creates. Friction isn't one thing; it's the accumulation of small costs, and each one is a chance to lose someone.",[16,301,303],{"id":302},"what-causes-friction-in-forms","What causes friction in forms?",[12,305,306,309,310,312],{},[23,307,308],{},"Mostly length and cognitive load, then irrelevance and confusion."," Longer forms reduce participation and response quality (Galesic & Bosnjak, 2009), and when a question is burdensome people ",[28,311,221],{}," — taking mental shortcuts or abandoning rather than answering well (Krosnick, 1991). On top of that: fields that don't apply, vague or double-barrelled wording, and unclear error messages each add friction.",[16,314,316],{"id":315},"how-do-you-reduce-form-friction","How do you reduce form friction?",[12,318,319],{},[23,320,321],{},"Remove reasons to stop, one at a time:",[323,324,325,332,347,355,365],"ol",{},[326,327,328,331],"li",{},[23,329,330],{},"Ask fewer questions"," — cut anything you won't act on.",[326,333,334,337,338,342,343,346],{},[23,335,336],{},"Show one question at a time"," — the ",[65,339,341],{"href":340},"/knowledge/conversational-form-design","conversational format"," is ",[28,344,345],{},"progressive disclosure",", a long-standing way to cut cognitive load (Nielsen Norman Group).",[326,348,349,352,353,180],{},[23,350,351],{},"Hide irrelevant fields"," with ",[65,354,236],{"href":235},[326,356,357,360,361,180],{},[23,358,359],{},"Phrase questions plainly"," — see ",[65,362,364],{"href":363},"/knowledge/how-to-ask-the-right-questions-in-a-form","how to ask the right questions",[326,366,367,370],{},[23,368,369],{},"Make errors recoverable"," — clear, inline, specific.",[16,372,374],{"id":373},"does-removing-friction-hurt-your-data","Does removing friction hurt your data?",[12,376,377,380,381,384],{},[23,378,379],{},"No — lower friction usually improves data, because burdened respondents satisfice."," Krosnick (1991) showed that high effort pushes people toward low-quality shortcut answers, so reducing burden tends to raise answer quality, not lower it. The exception is removing a genuinely necessary question — friction reduction means cutting the ",[28,382,383],{},"unnecessary",", not the important.",[16,386,388],{"id":387},"how-roundpushpin-reduces-form-friction","How RoundPushPin reduces form friction",[12,390,391,394,395,397,398,400],{},[23,392,393],{},"RoundPushPin is built to keep friction low: one question at a time, relevant fields only, and clean validation — with the data still fully structured underneath."," Conversational delivery and graph-based ",[65,396,236],{"href":235}," cut the length and irrelevance that drive abandonment, and you can measure the payoff in ",[65,399,83],{"href":82}," straight from your data.",{"title":106,"searchDepth":107,"depth":107,"links":402},[403,404,405,406,407],{"id":292,"depth":107,"text":293},{"id":302,"depth":107,"text":303},{"id":315,"depth":107,"text":316},{"id":373,"depth":107,"text":374},{"id":387,"depth":107,"text":388},"2026-03-12","Form friction is the effort and hesitation between a respondent and 'submit'. This research-backed guide breaks down what causes friction — length, cognitive load, irrelevant and unclear questions — and how to cut it.",[411,413,416],{"q":293,"a":412},"Form friction is anything that raises the effort or hesitation between a respondent and submitting — too many fields, confusing questions, irrelevant steps, unclear errors, or a layout that feels long. More friction means more abandonment.",{"q":414,"a":415},"What causes the most form friction?","Length and cognitive load. Research links longer forms to lower completion and quality, and burdensome questions push people to take shortcuts or quit. Irrelevant fields, vague wording, and poor error handling add more.",{"q":316,"a":417},"Ask fewer questions, show one at a time, hide irrelevant fields with conditional logic, phrase questions plainly, and give clear inline error recovery. Each removes a reason to hesitate or leave.","/images/knowledge/form-friction.png",{},"/knowledge/form-friction",{"title":284,"description":409},[423,424,428],{"title":266,"url":267,"publisher":268},{"title":425,"url":426,"publisher":427},"Galesic, M. & Bosnjak, M. (2009) — Effects of questionnaire length on participation and response quality","https://doi.org/10.1093/poq/nfp031","Public Opinion Quarterly",{"title":429,"url":430,"publisher":140},"Progressive Disclosure (Jakob Nielsen)","https://www.nngroup.com/articles/progressive-disclosure/","knowledge/form-friction",[433,434,149,150],"friction","ux",[436,437,438],"Form friction is the effort and hesitation between a respondent and 'submit' — and it drives abandonment.","The biggest sources are length and cognitive load; irrelevant fields, vague wording, and bad errors add more.","Cut friction by asking less, one question at a time, with relevant fields, plain wording, and clear errors.","ejJmvZfkmuywxW7gFZeCCJ_4RTkOxIw2UC_A0zHbkHE",{"id":441,"title":442,"author":7,"body":443,"date":527,"description":528,"draft":116,"extension":117,"faqs":529,"image":539,"isPillar":116,"meta":540,"navigation":128,"path":541,"pillar":130,"pillarName":131,"seo":542,"sources":543,"stem":553,"tags":554,"takeaways":557,"updated":527,"__hash__":561},"knowledge/knowledge/lead-generation-forms.md","How to Design a Form That Generates Leads",{"type":9,"value":444,"toc":520},[445,448,452,462,466,476,480,492,496,502,506],[12,446,447],{},"A lead-generation form turns interest into a contactable, qualified lead — but only if people finish it. The design decision that matters most isn't the colour of the button; it's how much effort you ask for before someone has any reason to trust you.",[16,449,451],{"id":450},"what-makes-a-lead-generation-form-convert","What makes a lead-generation form convert?",[12,453,454,457,458,461],{},[23,455,456],{},"Low effort and high relevance."," People weigh the effort of filling in a form against what they get for it, and abandon when the effort feels too high. Survey research is consistent here: longer forms reduce participation and response quality (Galesic & Bosnjak, 2009), and abandonment — ",[28,459,460],{},"breakoff"," — tracks respondent burden (Peytchev, 2009). A converting lead form keeps the ask small and the value obvious.",[16,463,465],{"id":464},"how-many-fields-should-a-lead-form-have","How many fields should a lead form have?",[12,467,468,471,472,475],{},[23,469,470],{},"As few as you can actually act on — often an email plus one or two qualifiers."," Baymard Institute found the average checkout asks 11.3 fields when around 8 suffice; lead forms suffer the same bloat. Every extra field is another reason to leave, so drop anything you won't use to route, qualify, or follow up. If you can't name what a field is ",[28,473,474],{},"for",", cut it.",[16,477,479],{"id":478},"should-a-lead-form-be-conversational","Should a lead form be conversational?",[12,481,482,485,486,488,489,491],{},[23,483,484],{},"Often yes — asking one question at a time lowers the perceived effort that drives abandonment."," A ",[65,487,341],{"href":340}," makes a multi-field form feel like a series of small, easy steps rather than a wall, which is exactly the burden the research links to completion. Pair it with ",[65,490,236],{"href":235}," so each person only sees the fields relevant to them.",[16,493,495],{"id":494},"how-do-you-capture-more-information-without-losing-leads","How do you capture more information without losing leads?",[12,497,498,501],{},[23,499,500],{},"Use progressive profiling — ask the minimum now, request more later."," Capture an email and one qualifier on the first form, then ask follow-up questions on a later visit or step, once the person is already engaged. You get a short first form (high completion) and a complete profile over time, instead of trading one for the other.",[16,503,505],{"id":504},"how-roundpushpin-helps-you-generate-leads","How RoundPushPin helps you generate leads",[12,507,508,511,512,516,517,519],{},[23,509,510],{},"RoundPushPin's conversational design lifts completion, and because responses are stored relationally you can see exactly where leads drop off."," You can A/B test a shorter form against a longer one and read the winner from the data (see ",[65,513,515],{"href":514},"/knowledge/ab-testing-forms","A/B testing forms","), measure ",[65,518,83],{"href":82}," per question, and keep every lead in one queryable place ready for your CRM.",{"title":106,"searchDepth":107,"depth":107,"links":521},[522,523,524,525,526],{"id":450,"depth":107,"text":451},{"id":464,"depth":107,"text":465},{"id":478,"depth":107,"text":479},{"id":494,"depth":107,"text":495},{"id":504,"depth":107,"text":505},"2026-03-10","A lead-generation form only works if people finish it. This evidence-based guide covers what actually drives lead form conversion — fewer fields, lower effort, and asking for commitment in the right order.",[530,533,536],{"q":531,"a":532},"How many fields should a lead generation form have?","As few as you can act on — usually an email plus one or two qualifiers. Research links longer forms to lower completion, and Baymard found most forms ask more fields than they need. Collect the rest later.",{"q":534,"a":535},"Do shorter forms always generate more leads?","Shorter forms usually lift completion, but the goal is qualified leads, not just volume. Cut fields you don't act on; keep the one or two that route or qualify the lead, and gather the rest after the first conversion.",{"q":537,"a":538},"What's the best way to ask for more information without losing leads?","Progressive profiling: ask the minimum up front, then request more on later visits or steps once the person is already engaged. It keeps the first form short while still building a full profile over time.","/images/knowledge/lead-generation-forms.png",{},"/knowledge/lead-generation-forms",{"title":442,"description":528},[544,546,549],{"title":545,"url":426,"publisher":427},"Galesic, M. & Bosnjak, M. (2009) — Effects of questionnaire length on participation and indicators of response quality in a web survey",{"title":547,"url":548,"publisher":427},"Peytchev, A. (2009) — Survey breakoff","https://doi.org/10.1093/poq/nfp014",{"title":550,"url":551,"publisher":552},"Checkout flows have an average of 11.3 form fields","https://baymard.com/blog/checkout-flow-average-form-fields","Baymard Institute","knowledge/lead-generation-forms",[555,149,556,150],"lead generation","marketing",[558,559,560],"A lead form only generates leads if people finish it — completion is the constraint, not the form's looks.","Fewer fields and lower effort raise completion; research ties form length to drop-off.","Ask only what you'll act on now; collect the rest later with progressive profiling.","ra3EWzgpGm6eU4kPpp6ZlgTDUS68CHplk5wqELupV2Y",{"id":563,"title":564,"author":7,"body":565,"date":700,"description":701,"draft":116,"extension":117,"faqs":702,"image":712,"isPillar":116,"meta":713,"navigation":128,"path":514,"pillar":130,"pillarName":131,"seo":714,"sources":715,"stem":724,"tags":725,"takeaways":728,"updated":700,"__hash__":732},"knowledge/knowledge/ab-testing-forms.md","How to A/B Test Forms (and Read the Results)",{"type":9,"value":566,"toc":693},[567,570,577,581,587,591,597,633,640,644,658,662,668,672],[12,568,569],{},"A/B testing a form means showing two versions of it to comparable, randomly assigned groups and measuring which one performs better — usually on completion rate. Done properly it tells you what actually works instead of what you assume works; done sloppily it produces confident, wrong conclusions.",[12,571,572],{},[573,574],"img",{"alt":575,"src":576},"Diagram of A/B testing a form: incoming traffic split into branch A and branch B, then measuring completion to pick the winner","/images/knowledge/diagrams/ab-branches.png",[16,578,580],{"id":579},"can-you-ab-test-a-form","Can you A/B test a form?",[12,582,583,586],{},[23,584,585],{},"Yes — a form is well suited to A/B testing because it has a clear, measurable outcome: did the person finish it."," You split incoming respondents randomly between version A and version B, keep everything else equal, and compare completion. Random assignment is the core idea from controlled experiments (Kohavi, Tang & Xu, 2020): it's what lets you credit the difference to your change rather than to chance or to who happened to see which version.",[16,588,590],{"id":589},"what-should-you-ab-test-on-a-form","What should you A/B test on a form?",[12,592,593,596],{},[23,594,595],{},"Test one meaningful change at a time, so you can attribute any difference to it."," High-leverage things to test on a form:",[323,598,599,605,613,622,628],{},[326,600,601,604],{},[23,602,603],{},"Length"," — fewer fields vs more (the change most likely to move completion).",[326,606,607,337,610,612],{},[23,608,609],{},"One question at a time vs all-on-one-page",[65,611,341],{"href":340}," vs a classic layout.",[326,614,615,618,619,180],{},[23,616,617],{},"Question wording"," — since ",[65,620,621],{"href":363},"wording shapes answers and effort",[326,623,624,627],{},[23,625,626],{},"Question order"," — front-loading easy questions vs sensitive ones.",[326,629,630],{},[23,631,632],{},"The call to action and intro copy.",[12,634,635,636,639],{},"Changing several things at once is fine for shipping, but then you won't know ",[28,637,638],{},"which"," change caused the result.",[16,641,643],{"id":642},"how-do-you-read-ab-test-results","How do you read A/B test results?",[12,645,646,649,650,653,654,657],{},[23,647,648],{},"Compare the primary metric between variants and ask whether the difference is real or noise — using a significance test, not eyeballing."," Compute completion rate for each variant and a confidence interval or p-value; a gap that isn't statistically significant is not yet a result. The most common mistake is ",[28,651,652],{},"peeking"," — repeatedly checking and stopping the moment it looks significant — which dramatically inflates false positives (Evan Miller, \"How Not to Run an A/B Test\"). Decide your metric and stopping rule before you start, and read per-question drop-off too, so you can see ",[28,655,656],{},"where"," a variant helped or hurt.",[16,659,661],{"id":660},"how-long-should-you-run-a-form-ab-test","How long should you run a form A/B test?",[12,663,664,667],{},[23,665,666],{},"Long enough to reach the sample size you set in advance, and across full business cycles — not until it looks good."," Estimate the sample with a power calculation based on your baseline completion rate and the smallest improvement worth detecting; smaller effects need much larger samples. Run for whole weeks to avoid day-of-week bias, and avoid stopping early on an exciting-but-underpowered result.",[16,669,671],{"id":670},"how-roundpushpin-helps-you-test-and-read-forms","How RoundPushPin helps you test and read forms",[12,673,674,677,678,682,683,687,688,692],{},[23,675,676],{},"Because RoundPushPin stores responses relationally, the metrics an A/B test needs are already in the data — no tracking project required."," Completion rate and per-question drop-off come straight from the database with a ",[65,679,681],{"href":680},"/knowledge/query-form-data-with-sql","SQL query",", and because you can run ",[65,684,686],{"href":685},"/knowledge/one-template-many-versions","one master template in many versions",", standing up an A and a B variant is quick — see ",[65,689,691],{"href":690},"/features/ab-testing","RoundPushPin's A/B testing feature",". Structured data is what turns a form test from guesswork into a measurable experiment.",{"title":106,"searchDepth":107,"depth":107,"links":694},[695,696,697,698,699],{"id":579,"depth":107,"text":580},{"id":589,"depth":107,"text":590},{"id":642,"depth":107,"text":643},{"id":660,"depth":107,"text":661},{"id":670,"depth":107,"text":671},"2026-03-08","A/B testing a form means showing two versions to comparable groups and measuring which converts better. This guide covers what to test, how to read the data without fooling yourself, and how long to run a test.",[703,706,709],{"q":704,"a":705},"What is A/B testing for forms?","It's a controlled experiment: visitors are split randomly between two versions of a form, and you compare a metric — usually completion rate — to see which performs better. Random assignment is what lets you attribute the difference to the change rather than to chance or audience.",{"q":707,"a":708},"How big a sample do I need to A/B test a form?","Enough to detect the effect size you care about — smaller expected improvements need larger samples. Decide the sample size before you start using a calculator, and don't stop early just because a result looks significant; peeking inflates false positives.",{"q":710,"a":711},"What metric should I track for a form A/B test?","Usually completion rate (finishers ÷ starters), plus per-question drop-off to see where a variant helps or hurts. Pick one primary metric before the test so you're not cherry-picking afterward.","/images/knowledge/ab-testing-forms.png",{},{"title":564,"description":701},[716,720],{"title":717,"url":718,"publisher":719},"Kohavi, R., Tang, D., & Xu, Y. (2020) — Trustworthy Online Controlled Experiments: A Practical Guide to A/B Testing","https://doi.org/10.1017/9781108653985","Cambridge University Press",{"title":721,"url":722,"publisher":723},"Evan Miller — How Not to Run an A/B Test","https://www.evanmiller.org/how-not-to-run-an-ab-test.html","Evan Miller","knowledge/ab-testing-forms",[726,149,727],"a/b testing","analytics",[729,730,731],"A/B testing splits the same traffic randomly between two or more form branches and compares completion.","Read results with a significance test and a sample size set in advance — never stop early on a peek.","Because RoundPushPin stores responses relationally, completion and drop-off come straight from your data.","gaHsci9_Oq3iPyBAVOygobW9R42nO8j_fdmxhPWoR-s",{"id":734,"title":735,"author":7,"body":736,"date":796,"description":797,"draft":116,"extension":117,"faqs":798,"image":808,"isPillar":116,"meta":809,"navigation":128,"path":97,"pillar":810,"pillarName":811,"seo":812,"sources":813,"stem":820,"tags":821,"takeaways":825,"updated":796,"__hash__":826},"knowledge/knowledge/self-hosted-forms.md","Self-Hosted Forms: Own Your Form Data",{"type":9,"value":737,"toc":790},[738,741,745,751,755,764,768,774,778],[12,739,740],{},"A self-hosted form runs on infrastructure you control, with responses stored in your own database rather than a vendor's cloud. It is the most direct form of data ownership: no third party sits between you and your respondents' answers.",[16,742,744],{"id":743},"what-does-self-hosted-actually-mean","What does \"self-hosted\" actually mean?",[12,746,747,750],{},[23,748,749],{},"It means you run the form application and its database on servers you choose — your own cloud account, a private server, or on-prem — instead of submitting data to a SaaS vendor's platform."," The form still works the same for respondents; the difference is custody. With a hosted tool the vendor holds the data and you access it through their product; self-hosted, you hold it.",[16,752,754],{"id":753},"why-does-self-hosting-matter-for-privacy","Why does self-hosting matter for privacy?",[12,756,757,760,761,763],{},[23,758,759],{},"Because it removes a party from the data path and puts residency in your hands."," Where data is stored and transferred is a real concern under regimes like the GDPR, whose Chapter V governs transfers of personal data across borders. When you self-host, you decide which region and provider hold the data, rather than inheriting a vendor's choices — which simplifies ",[65,762,241],{"href":240}," generally.",[16,765,767],{"id":766},"what-are-the-trade-offs","What are the trade-offs?",[12,769,770,773],{},[23,771,772],{},"Self-hosting trades convenience for control."," You run the infrastructure — updates, backups, uptime — which a fully-managed SaaS handles for you. The upside is ownership: direct database access, your own residency and retention rules, and no vendor lock-in. Good tooling narrows the gap; a one-command Docker setup and a typed schema (via tools like Drizzle) make running your own stack far less work than it used to be.",[16,775,777],{"id":776},"how-roundpushpin-does-self-hosting","How RoundPushPin does self-hosting",[12,779,780,786,787,180],{},[23,781,782,783,180],{},"RoundPushPin is self-hosted: a Docker Compose file brings up the app with PostgreSQL in one command, so every response lands in a relational database you own and can ",[65,784,785],{"href":680},"query with SQL"," You get the conversational experience of a hosted tool with the ownership of running your own — the foundation for ",[65,788,789],{"href":102},"GDPR-compliant forms",{"title":106,"searchDepth":107,"depth":107,"links":791},[792,793,794,795],{"id":743,"depth":107,"text":744},{"id":753,"depth":107,"text":754},{"id":766,"depth":107,"text":767},{"id":776,"depth":107,"text":777},"2026-03-06","Self-hosted forms run on your own infrastructure, so responses live in a database you control rather than a vendor's cloud. This guide explains what self-hosting means, the trade-offs, and why it matters for data ownership.",[799,802,805],{"q":800,"a":801},"What does a self-hosted form mean?","It means the form application and its database run on infrastructure you control, so responses are stored in your own database rather than a vendor's cloud. Respondents see the same form; you hold the data.",{"q":803,"a":804},"Are self-hosted forms worth the trade-off?","If data ownership, residency, or privacy matter, usually yes. You take on running the infrastructure, but you gain direct database access, your own retention rules, and no vendor lock-in. Good tooling narrows the operational gap.",{"q":806,"a":807},"How do I self-host RoundPushPin?","RoundPushPin ships with a Docker Compose setup that brings up the app and PostgreSQL in one command, so every response lands in a relational database you own and can query with SQL.","/images/knowledge/self-hosted-forms.png",{},"form-data-ownership","Privacy & data ownership",{"title":735,"description":797},[814,816],{"title":815,"url":271,"publisher":272},"Regulation (EU) 2016/679 (GDPR) — Chapter V, transfers of personal data to third countries",{"title":817,"url":818,"publisher":819},"Drizzle ORM — Overview","https://orm.drizzle.team/docs/overview","Drizzle","knowledge/self-hosted-forms",[822,823,824],"self-hosted","data ownership","data residency",[],"RzL7AxN_kbM3NSnZ9kp1aFZ7xi-3lBJgfjrKMeMLoUQ",{"id":828,"title":829,"author":7,"body":830,"date":915,"description":916,"draft":116,"extension":117,"faqs":917,"image":927,"isPillar":116,"meta":928,"navigation":128,"path":102,"pillar":810,"pillarName":811,"seo":929,"sources":930,"stem":937,"tags":938,"takeaways":941,"updated":915,"__hash__":942},"knowledge/knowledge/gdpr-compliant-forms.md","How to Build GDPR-Compliant Forms",{"type":9,"value":831,"toc":909},[832,835,841,845,868,872,882,886,892,896],[12,833,834],{},"A GDPR-compliant form collects personal data lawfully, takes only what it needs, tells people what you'll do with it, and lets you honor their rights over that data. The form tool can't make you compliant on its own, but its design and where it stores data make compliance much easier or much harder.",[836,837,838],"blockquote",{},[12,839,840],{},"This is general information about GDPR concepts, not legal advice. Confirm your specific obligations with a qualified professional.",[16,842,844],{"id":843},"what-does-gdpr-require-of-a-form","What does GDPR require of a form?",[12,846,847,848,851,852,855,856,859,860,863,864,867],{},"At a high level, the GDPR's Article 5 principles mean a compliant form should: have a ",[23,849,850],{},"lawful basis"," for collecting the data (consent, contract, legitimate interests, etc., per ICO guidance), collect ",[23,853,854],{},"only what's necessary"," (data minimisation), be ",[23,857,858],{},"transparent"," about purpose, keep data only ",[23,861,862],{},"as long as needed"," (storage limitation), and keep it ",[23,865,866],{},"secure",". People also have rights — access, rectification, erasure — that you must be able to act on.",[16,869,871],{"id":870},"how-do-you-design-a-form-for-data-minimisation","How do you design a form for data minimisation?",[12,873,874,875,877,878,881],{},"Ask less. Every field should map to a real, stated purpose; if you can't name why you need it, drop it or defer it. Practically that means cutting optional fields, avoiding \"nice to have\" questions, and using ",[65,876,236],{"href":235}," so people only answer what applies. Minimisation is both a legal principle and a ",[65,879,880],{"href":82},"completion-rate"," win.",[16,883,885],{"id":884},"how-do-consent-and-retention-work-on-a-form","How do consent and retention work on a form?",[12,887,888,891],{},[23,889,890],{},"Consent must be specific, informed, and freely given — a pre-ticked box doesn't count."," In practice, that's a clear, unbundled opt-in next to a plain-language purpose, plus a link to your privacy notice. Retention means deciding up front how long you keep each response and being able to delete it on request — which is far easier when the data sits in a database you can query and delete from directly.",[16,893,895],{"id":894},"how-roundpushpin-helps-with-gdpr-compliant-forms","How RoundPushPin helps with GDPR-compliant forms",[12,897,898,904,905,908],{},[23,899,900,901,903],{},"Because RoundPushPin is ",[65,902,822],{"href":97}," with responses in your own PostgreSQL database, you control the data path, residency, retention, and deletion directly — no third-party submissions store to reason about."," Combined with data-minimising ",[65,906,907],{"href":340},"conversational design",", it gives you the technical foundation to build compliant forms; the policies and lawful basis remain yours to define.",{"title":106,"searchDepth":107,"depth":107,"links":910},[911,912,913,914],{"id":843,"depth":107,"text":844},{"id":870,"depth":107,"text":871},{"id":884,"depth":107,"text":885},{"id":894,"depth":107,"text":895},"2026-03-04","Building GDPR-compliant forms means collecting only what you need, on a lawful basis, with clear consent and control over retention. This guide covers the principles that apply and how a self-hosted, relational form helps you meet them.",[918,921,924],{"q":919,"a":920},"How do I make a form GDPR-compliant?","Collect data on a lawful basis, take only what you need, be transparent about purpose, keep it only as long as necessary, secure it, and be able to honor access and deletion rights. The tool helps, but the policies are yours. This is general information, not legal advice.",{"q":922,"a":923},"Do I need consent for a form?","Only if consent is your lawful basis — there are others, such as contract or legitimate interests. When you do rely on consent it must be specific, informed, and freely given, with no pre-ticked boxes. Confirm your basis with a professional.",{"q":925,"a":926},"How does self-hosting help with GDPR?","Self-hosting puts the data path, residency, retention, and deletion under your control, with no third-party submissions store to account for. It's a strong technical foundation, though compliance still depends on your policies.","/images/knowledge/gdpr-compliant-forms.png",{},{"title":829,"description":916},[931,933],{"title":932,"url":271,"publisher":272},"Regulation (EU) 2016/679 (GDPR) — Article 5, principles relating to processing",{"title":934,"url":935,"publisher":936},"Lawful basis for processing","https://ico.org.uk/for-organisations/uk-gdpr-guidance-and-resources/lawful-basis/","Information Commissioner's Office (ICO)","knowledge/gdpr-compliant-forms",[939,276,940],"gdpr","compliance",[],"DGrXe9Lk9CMOY7LwUCgCMT0x5pAMGjiqSDCTl-qWFUQ",{"id":944,"title":945,"author":7,"body":946,"date":1027,"description":1028,"draft":116,"extension":117,"faqs":1029,"image":1039,"isPillar":128,"meta":1040,"navigation":128,"path":240,"pillar":1041,"pillarName":1041,"seo":1042,"sources":1043,"stem":1049,"tags":1050,"takeaways":1052,"updated":1027,"__hash__":1053},"knowledge/knowledge/form-data-ownership.md","Form Data Ownership and Privacy: Who Controls Your Responses?",{"type":9,"value":947,"toc":1021},[948,951,956,960,974,978,995,999,1005,1009],[12,949,950],{},"Form data ownership is the question of who actually controls the responses your form collects — you, or the platform you built it on. With most hosted form tools the answer is \"the vendor holds it and you access it\"; with a self-hosted, relational store the answer is \"you hold it.\" That distinction shapes your privacy posture, your portability, and your risk.",[836,952,953],{},[12,954,955],{},"This article is general information about data-protection concepts, not legal advice. For obligations specific to your situation, consult a qualified professional.",[16,957,959],{"id":958},"who-owns-the-data-collected-by-a-form","Who owns the data collected by a form?",[12,961,962,973],{},[23,963,964,965,968,969,972],{},"Legally, the organization collecting personal data is usually its ",[28,966,967],{},"controller"," and carries the obligations; the form tool is typically a ",[28,970,971],{},"processor"," acting on your instructions."," Practically, \"ownership\" is about control: can you access, export, move, and delete the data freely, or is it locked inside a vendor's platform? Where the data physically lives, and who can reach it, determines how much control you really have.",[16,975,977],{"id":976},"what-privacy-principles-apply-to-form-data","What privacy principles apply to form data?",[12,979,980,981,984,985,987,988,991,992,180],{},"Under the EU/UK GDPR, personal data must be handled according to principles set out in Article 5 — including lawfulness, ",[23,982,983],{},"purpose limitation",", ",[23,986,176],{}," (collect only what you need), accuracy, ",[23,989,990],{},"storage limitation"," (don't keep it longer than necessary), and integrity and confidentiality. The ICO publishes practical guidance on applying these. Notably, data minimisation is also good form design: asking fewer questions both respects the principle and ",[65,993,994],{"href":82},"improves completion",[16,996,998],{"id":997},"how-does-where-the-data-lives-affect-privacy","How does where the data lives affect privacy?",[12,1000,1001,1004],{},[23,1002,1003],{},"It affects who can access it and which transfer rules apply."," Hosted form tools store responses on their infrastructure, which may sit in other jurisdictions and brings cross-border transfer considerations. Keeping responses in a database you control — on infrastructure you choose — removes a third party from the data path and makes residency a decision you make, not one you inherit.",[16,1006,1008],{"id":1007},"how-roundpushpin-approaches-ownership-and-privacy","How RoundPushPin approaches ownership and privacy",[12,1010,1011,1017,1018,180],{},[23,1012,1013,1014,1016],{},"RoundPushPin is ",[65,1015,822],{"href":97},": responses live in a PostgreSQL database on your own infrastructure, not a vendor's."," That makes data minimisation, retention, export, and deletion things you control directly — the foundations of ",[65,1019,1020],{"href":102},"building GDPR-compliant forms",{"title":106,"searchDepth":107,"depth":107,"links":1022},[1023,1024,1025,1026],{"id":958,"depth":107,"text":959},{"id":976,"depth":107,"text":977},{"id":997,"depth":107,"text":998},{"id":1007,"depth":107,"text":1008},"2026-03-02","When someone fills in your form, where does the data go — and who controls it? This guide covers form data ownership, the privacy principles that apply, and why self-hosting changes the answer.",[1030,1033,1036],{"q":1031,"a":1032},"Who owns the data collected by an online form?","Practically, whoever can access, export, move, and delete it. Legally, the organization collecting personal data is usually its controller and the form tool is a processor. Self-hosting keeps both control and custody with you.",{"q":1034,"a":1035},"Are self-hosted forms more private?","They can be, because self-hosting removes a third party from the data path and lets you choose where data is stored. Privacy still depends on how you configure access, retention, and security.",{"q":1037,"a":1038},"Where is my form data stored?","With most hosted form tools, on the vendor's cloud; with a self-hosted tool like RoundPushPin, in a database on infrastructure you control, so you decide the region and provider.","/images/knowledge/form-data-ownership.png",{},null,{"title":945,"description":1028},[1044,1046],{"title":1045,"url":271,"publisher":272},"Regulation (EU) 2016/679 (General Data Protection Regulation)",{"title":1047,"url":1048,"publisher":936},"UK GDPR guidance and resources","https://ico.org.uk/for-organisations/uk-gdpr-guidance-and-resources/","knowledge/form-data-ownership",[276,823,1051],"guide",[],"pJw9Yv8CYwpqHvDjFahdbN9F0KJpFiu-h0o0tNL6JKQ",{"id":1055,"title":1056,"author":7,"body":1057,"date":1120,"description":1121,"draft":116,"extension":117,"faqs":1122,"image":1132,"isPillar":116,"meta":1133,"navigation":128,"path":1134,"pillar":1135,"pillarName":1136,"seo":1137,"sources":1138,"stem":1147,"tags":1148,"takeaways":1151,"updated":1120,"__hash__":1152},"knowledge/knowledge/repeatable-contexts.md","Repeatable Contexts: Ask the Same Questions for Many Items",{"type":9,"value":1058,"toc":1114},[1059,1066,1070,1076,1080,1086,1090,1096,1100],[12,1060,1061,1062,1065],{},"A repeatable context is a set of questions asked once ",[28,1063,1064],{},"per item"," in a list — once for each product, student, employee, or event — instead of being hard-coded into the form a fixed number of times. It lets one form scale to any number of items without rebuilding.",[16,1067,1069],{"id":1068},"what-problem-do-repeatable-contexts-solve","What problem do repeatable contexts solve?",[12,1071,1072,1075],{},[23,1073,1074],{},"The \"I don't know how many there will be\" problem."," If you need to ask the same five questions about each of a respondent's products, you can't know in advance whether that's two products or twenty. Hard-coding \"Product 1 / Product 2 / Product 3…\" fields is brittle and caps the count; a repeatable context asks the five questions as many times as there are items.",[16,1077,1079],{"id":1078},"how-is-this-different-from-just-adding-more-fields","How is this different from just adding more fields?",[12,1081,1082,1085],{},[23,1083,1084],{},"Duplicated fields bloat the form and still impose a fixed limit; a repeatable context is one definition applied N times."," You define the question set once and attach it to a list of items, so the form expands to fit the data instead of the data being forced to fit the form.",[16,1087,1089],{"id":1088},"why-does-the-data-model-matter-here","Why does the data model matter here?",[12,1091,1092,1095],{},[23,1093,1094],{},"Because repeating questions naively produces messy, wide data."," The clean representation is relational: a parent record for the response and a child row per item, linked by a foreign key — exactly the normalized structure the relational model was designed for (Codd, 1970), with PostgreSQL foreign keys keeping each item tied to its response. That way \"20 products\" is 20 tidy rows, not 100 sparse columns.",[16,1097,1099],{"id":1098},"how-roundpushpin-models-repeatable-contexts","How RoundPushPin models repeatable contexts",[12,1101,1102,1105,1106,1109,1110,180],{},[23,1103,1104],{},"RoundPushPin lets you define a question set once and repeat it for every item in a context — products, people, events — and stores each item as its own related row rather than duplicated columns."," The result is a form that adapts to any number of items and a dataset that stays clean and ",[65,1107,1108],{"href":680},"queryable",", consistent with RoundPushPin's broader ",[65,1111,1113],{"href":1112},"/knowledge/form-data-architecture","form data architecture",{"title":106,"searchDepth":107,"depth":107,"links":1115},[1116,1117,1118,1119],{"id":1068,"depth":107,"text":1069},{"id":1078,"depth":107,"text":1079},{"id":1088,"depth":107,"text":1089},{"id":1098,"depth":107,"text":1099},"2026-02-28","Repeatable contexts let you ask one set of questions for each item in a list — products, students, events — without rebuilding the form. This guide explains the concept and how RoundPushPin models it relationally.",[1123,1126,1129],{"q":1124,"a":1125},"How do I ask the same questions for multiple items?","Use a repeatable context: define the question set once and repeat it per item — per product, student, or event — instead of hard-coding fixed fields. The form then expands to fit any number of items.",{"q":1127,"a":1128},"How is a repeatable context different from adding more fields?","Duplicated fields impose a fixed limit and bloat the form; a repeatable context is one definition applied many times, so the form adapts to the data instead of the data being forced to fit the form.",{"q":1130,"a":1131},"How is repeated-question data stored cleanly?","Relationally: a parent record for the response and a child row per item, linked by a foreign key. That keeps '20 items' as 20 tidy rows rather than 100 sparse columns.","/images/knowledge/repeatable-contexts.png",{},"/knowledge/repeatable-contexts","scaling-localizing-forms","Scaling & localizing forms",{"title":1056,"description":1121},[1139,1143],{"title":1140,"url":1141,"publisher":1142},"A Relational Model of Data for Large Shared Data Banks (E. F. Codd, 1970)","https://dl.acm.org/doi/10.1145/362384.362685","Communications of the ACM",{"title":1144,"url":1145,"publisher":1146},"Foreign Keys","https://www.postgresql.org/docs/current/tutorial-fk.html","PostgreSQL Global Development Group","knowledge/repeatable-contexts",[1149,1150],"repeatable","data model",[],"yRHeUw1YyQO5dJRpVG3c28cpwt0oDwDMlM6OGft4FBQ",{"id":1154,"title":1155,"author":7,"body":1156,"date":1219,"description":1220,"draft":116,"extension":117,"faqs":1221,"image":1231,"isPillar":116,"meta":1232,"navigation":128,"path":1233,"pillar":1135,"pillarName":1136,"seo":1234,"sources":1235,"stem":1243,"tags":1244,"takeaways":1248,"updated":1219,"__hash__":1249},"knowledge/knowledge/multilingual-forms.md","How to Build Multilingual Forms",{"type":9,"value":1157,"toc":1213},[1158,1161,1165,1175,1179,1189,1193,1199,1203],[12,1159,1160],{},"A multilingual form presents the same questions to respondents in their own language while collecting every answer into one consistent dataset. Done well, it widens your reach without multiplying your maintenance — done badly, it becomes a pile of forks that drift apart.",[16,1162,1164],{"id":1163},"whats-the-difference-between-translating-and-localizing-a-form","What's the difference between translating and localizing a form?",[12,1166,1167,1170,1171,1174],{},[23,1168,1169],{},"Translation converts the text; localization adapts the experience."," The W3C distinguishes the two clearly: localization includes formats (dates, numbers), conventions, and structure appropriate to a locale — not just translated words. A genuinely multilingual form gets translated questions ",[28,1172,1173],{},"and"," locale-appropriate formats and examples.",[16,1176,1178],{"id":1177},"why-not-just-duplicate-the-form-per-language","Why not just duplicate the form per language?",[12,1180,1181,1184,1185,1188],{},[23,1182,1183],{},"Because each language copy becomes a separate thing to maintain, and they drift."," Change a question in the English form and the other nine fall behind. The scalable pattern is a ",[65,1186,1187],{"href":685},"single master template"," with language layered on top, so the questions stay identical across languages and only the wording changes.",[16,1190,1192],{"id":1191},"how-do-you-keep-multilingual-responses-comparable","How do you keep multilingual responses comparable?",[12,1194,1195,1198],{},[23,1196,1197],{},"Map every language version to the same underlying question."," When the Spanish \"¿Cuál es tu rol?\" and the English \"What is your role?\" both write to the same typed column, responses from all languages land in one dataset you can analyze together — instead of separate spreadsheets per language that you later have to reconcile.",[16,1200,1202],{"id":1201},"how-roundpushpin-handles-multilingual-forms","How RoundPushPin handles multilingual forms",[12,1204,1205,1208,1209,1212],{},[23,1206,1207],{},"RoundPushPin translates your master template into 10+ languages automatically, so you don't rewrite questions per language or hire a translator to start."," Because all versions derive from one template and write to one relational store, every answer — in any language — flows into the same ",[65,1210,1211],{"href":680},"queryable place",", already aligned by question.",{"title":106,"searchDepth":107,"depth":107,"links":1214},[1215,1216,1217,1218],{"id":1163,"depth":107,"text":1164},{"id":1177,"depth":107,"text":1178},{"id":1191,"depth":107,"text":1192},{"id":1201,"depth":107,"text":1202},"2026-02-26","Reaching a global audience means more than translating questions. This guide covers multilingual forms — translation vs localization, keeping versions in sync, and how RoundPushPin translates one template into 10+ languages.",[1222,1225,1228],{"q":1223,"a":1224},"How do I create a form in multiple languages?","Use one master template and layer translations on top so the questions stay identical across languages and only the wording changes. RoundPushPin translates the master into 10+ languages automatically.",{"q":1226,"a":1227},"What's the difference between translation and localization?","Translation converts the words; localization adapts the whole experience — date and number formats, conventions, and examples — to a locale. A genuinely multilingual form does both.",{"q":1229,"a":1230},"How do I keep multilingual responses comparable?","Map every language version to the same underlying question so all answers write to one column. Then responses from every language land in one dataset you can analyze together, instead of separate spreadsheets per language.","/images/knowledge/multilingual-forms.png",{},"/knowledge/multilingual-forms",{"title":1155,"description":1220},[1236,1240],{"title":1237,"url":1238,"publisher":1239},"Localization vs. Internationalization","https://www.w3.org/International/questions/qa-i18n","W3C",{"title":1241,"url":1242,"publisher":1239},"Internationalization (i18n) Activity","https://www.w3.org/International/","knowledge/multilingual-forms",[1245,1246,1247],"multilingual","localization","translation",[],"9fNPsN6WotaxguGaf-XW71wB69CVvJDxyuBcMAsmv_A",{"id":1251,"title":1252,"author":7,"body":1253,"date":1320,"description":1321,"draft":116,"extension":117,"faqs":1322,"image":1332,"isPillar":116,"meta":1333,"navigation":128,"path":685,"pillar":1135,"pillarName":1136,"seo":1334,"sources":1335,"stem":1340,"tags":1341,"takeaways":1344,"updated":1320,"__hash__":1345},"knowledge/knowledge/one-template-many-versions.md","One Template, Many Versions: Build a Form Once",{"type":9,"value":1254,"toc":1314},[1255,1258,1262,1272,1276,1286,1290,1296,1300],[12,1256,1257],{},"\"One template, many versions\" means you design a form a single time and generate every variant — per language, product, course, or campaign — from that one master. The master is the single source of truth, so the versions can never quietly drift apart.",[16,1259,1261],{"id":1260},"what-problem-does-a-master-template-solve","What problem does a master template solve?",[12,1263,1264,1267,1268,1271],{},[23,1265,1266],{},"It solves duplication drift."," The moment you clone a form, the copies start diverging: a fix here, an extra question there, a translation that lags. The ",[28,1269,1270],{},"Don't Repeat Yourself"," principle — that every piece of knowledge should have one authoritative representation — exists because duplicated knowledge is where inconsistencies and bugs breed. A form used ten ways should be defined once, not ten times.",[16,1273,1275],{"id":1274},"how-is-this-different-from-duplicating-a-form","How is this different from duplicating a form?",[12,1277,1278,1281,1282,1285],{},[23,1279,1280],{},"Duplicating creates independent copies that you maintain separately."," A master template creates ",[28,1283,1284],{},"derived"," versions that stay connected to their source: change the master question and every version updates, because the versions are projections of one definition rather than forks of it.",[16,1287,1289],{"id":1288},"what-stays-in-sync-across-versions","What stays in sync across versions?",[12,1291,1292,1295],{},[23,1293,1294],{},"Wording, structure, logic, and validation."," When the master changes, the change propagates — so all versions ask the same questions, branch the same way, and enforce the same rules. That consistency is what makes responses from different versions comparable in one dataset.",[16,1297,1299],{"id":1298},"how-roundpushpin-does-it","How RoundPushPin does it",[12,1301,1302,1305,1306,1309,1310,1313],{},[23,1303,1304],{},"RoundPushPin is built around the master template: create it once, replicate it in seconds for any audience, and keep editing the master to update every version at once."," Pair it with ",[65,1307,1308],{"href":1233},"automatic translation"," for languages and ",[65,1311,1312],{"href":1134},"repeatable contexts"," for per-item question sets — and every version still sends answers to a single, queryable store.",{"title":106,"searchDepth":107,"depth":107,"links":1315},[1316,1317,1318,1319],{"id":1260,"depth":107,"text":1261},{"id":1274,"depth":107,"text":1275},{"id":1288,"depth":107,"text":1289},{"id":1298,"depth":107,"text":1299},"2026-02-24","Instead of cloning a form for every audience, build one master template and generate every version from it. This guide explains the single-source-of-truth approach and why it keeps forms consistent at scale.",[1323,1326,1329],{"q":1324,"a":1325},"How do I reuse a form across products or campaigns?","Build one master template and generate each version from it, rather than cloning and editing. Versions stay connected to the source, so editing the master updates them all and they can't drift apart.",{"q":1327,"a":1328},"What is a master template?","A single authoritative definition of a form that every version derives from — the single source of truth. Wording, structure, logic, and validation all flow from it to the versions.",{"q":1330,"a":1331},"Why not just duplicate the form?","Because duplicates diverge: each copy is maintained separately, so fixes and translations fall out of sync. A master template avoids that by making versions projections of one definition.","/images/knowledge/one-template-many-versions.png",{},{"title":1252,"description":1321},[1336],{"title":1337,"url":1338,"publisher":1339},"The Pragmatic Programmer — DRY (Don't Repeat Yourself)","https://pragprog.com/titles/tpp20/the-pragmatic-programmer-20th-anniversary-edition/","Pragmatic Bookshelf","knowledge/one-template-many-versions",[1342,1343],"templates","scaling",[],"y8Bdebmx_wIL8kKUAECqH2IJ9uEI42rWPn9rz8D6z20",{"id":1347,"title":1348,"author":7,"body":1349,"date":1419,"description":1420,"draft":116,"extension":117,"faqs":1421,"image":1430,"isPillar":128,"meta":1431,"navigation":128,"path":1432,"pillar":1041,"pillarName":1041,"seo":1433,"sources":1434,"stem":1437,"tags":1438,"takeaways":1439,"updated":1419,"__hash__":1440},"knowledge/knowledge/scaling-localizing-forms.md","Scaling and Localizing Forms Without Rebuilding Them",{"type":9,"value":1350,"toc":1413},[1351,1354,1358,1367,1371,1380,1384,1393,1397],[12,1352,1353],{},"Scaling and localizing forms is the problem of running the same form across many languages, products, or campaigns without maintaining a dozen disconnected copies. The answer is a single source of truth: one master form that every version derives from, so a change in one place updates everywhere.",[16,1355,1357],{"id":1356},"why-does-copy-pasting-forms-fall-apart","Why does copy-pasting forms fall apart?",[12,1359,1360,1363,1364,1366],{},[23,1361,1362],{},"Because every copy is a maintenance liability."," Duplicate a form for five languages and three products and you have fifteen forms to keep in sync; fix a typo and you must remember to fix it fourteen more times. This is the inverse of the ",[28,1365,1270],{}," principle from software engineering — duplicated knowledge drifts out of sync and quietly accumulates errors.",[16,1368,1370],{"id":1369},"what-does-one-template-many-versions-mean","What does \"one template, many versions\" mean?",[12,1372,1373,1376,1377,180],{},[23,1374,1375],{},"It means you build the form once and generate every version from that master, instead of cloning and editing."," Update the master and all versions follow. This keeps wording, logic, and structure consistent across languages and products — and it is the core of ",[65,1378,1379],{"href":685},"building one template you use everywhere",[16,1381,1383],{"id":1382},"how-is-localizing-a-form-different-from-translating-it","How is localizing a form different from translating it?",[12,1385,1386,1389,1390,1392],{},[23,1387,1388],{},"Translation converts the words; localization adapts the whole experience — formats, conventions, and structure — to a locale, a distinction the W3C draws clearly in its internationalization guidance."," A localized form gets translated questions ",[28,1391,1173],{}," appropriate date formats, examples, and options for each audience, without forking the underlying form.",[16,1394,1396],{"id":1395},"how-roundpushpin-scales-and-localizes","How RoundPushPin scales and localizes",[12,1398,1399],{},[23,1400,1401,1402,1405,1406,1409,1410,1412],{},"RoundPushPin treats the master template as the single source of truth: you replicate it into ",[65,1403,1404],{"href":685},"many versions"," in seconds, get ",[65,1407,1408],{"href":1233},"automatic translation into 10+ languages",", and reuse the same question set across many items with ",[65,1411,1312],{"href":1134}," — all while every response flows back into one queryable place.",{"title":106,"searchDepth":107,"depth":107,"links":1414},[1415,1416,1417,1418],{"id":1356,"depth":107,"text":1357},{"id":1369,"depth":107,"text":1370},{"id":1382,"depth":107,"text":1383},{"id":1395,"depth":107,"text":1396},"2026-02-22","When one form needs to exist in many languages, products, or campaigns, copy-pasting it doesn't scale. This guide covers single-source templates, localization, and repeatable structures that keep every version in sync.",[1422,1425,1427],{"q":1423,"a":1424},"How do you manage one form in multiple languages?","Use a single master template and layer translations on top, rather than duplicating the form per language. That keeps questions and logic identical across languages and lets one edit propagate to every version.",{"q":1164,"a":1426},"Translation converts the words; localization adapts the whole experience — date formats, conventions, and examples — to a locale. A fully localized form does both.",{"q":1428,"a":1429},"How do you keep multiple form versions in sync?","Derive every version from one master template instead of cloning. When versions are projections of a single source, a change to the master updates them all, so they can't drift apart.","/images/knowledge/scaling-localizing-forms.png",{},"/knowledge/scaling-localizing-forms",{"title":1348,"description":1420},[1435,1436],{"title":1241,"url":1242,"publisher":1239},{"title":1337,"url":1338,"publisher":1339},"knowledge/scaling-localizing-forms",[1246,1343,1051],[],"do-sDGQuigCGQAGaQ9FiJZKpZueFOvXwvOYhitbCQ_U",{"id":1442,"title":1443,"author":7,"body":1444,"date":1593,"description":1594,"draft":116,"extension":117,"faqs":1595,"image":1605,"isPillar":116,"meta":1606,"navigation":128,"path":1607,"pillar":130,"pillarName":131,"seo":1608,"sources":1609,"stem":1615,"tags":1616,"takeaways":1619,"updated":1593,"__hash__":1620},"knowledge/knowledge/question-types-explained.md","Form Question Types, Explained",{"type":9,"value":1445,"toc":1587},[1446,1449,1453,1456,1483,1487,1497,1563,1567,1573,1577],[12,1447,1448],{},"A form question type is the input format a question uses — short text, long text, multiple choice, dropdown, rating, opinion scale, yes/no, date, file upload — and it determines both the effort a respondent spends and the shape of the data you get back. Choosing the right type is part of asking the right question.",[16,1450,1452],{"id":1451},"what-are-the-main-form-question-types","What are the main form question types?",[12,1454,1455],{},"They fall into a few families:",[1457,1458,1459,1465,1471,1477],"ul",{},[326,1460,1461,1464],{},[23,1462,1463],{},"Text"," — short text, long text, email, URL, phone, number. Flexible, but open text is costly to answer and to analyze.",[326,1466,1467,1470],{},[23,1468,1469],{},"Selection"," — multiple choice, dropdown, radio, yes/no. Fast to answer and easy to analyze because answers are constrained.",[326,1472,1473,1476],{},[23,1474,1475],{},"Scale"," — rating and opinion scales for measuring degree or sentiment.",[326,1478,1479,1482],{},[23,1480,1481],{},"Special"," — date, file upload, and display-only statements.",[16,1484,1486],{"id":1485},"when-should-you-use-open-text-vs-multiple-choice","When should you use open text vs multiple choice?",[12,1488,1489,1492,1493,1496],{},[23,1490,1491],{},"Use closed (selection) questions for anything you'll analyze, and reserve open text for genuine nuance."," Open questions demand more effort, which invites ",[28,1494,1495],{},"satisficing"," — respondents taking shortcuts when a question is burdensome (Krosnick, 1991) — and the free-text answers are far harder to compare. A well-built set of choices usually yields cleaner, more analyzable data than an open box.",[1498,1499,1500,1516],"table",{},[1501,1502,1503],"thead",{},[1504,1505,1506,1510,1513],"tr",{},[1507,1508,1509],"th",{},"Aspect",[1507,1511,1512],{},"Open text",[1507,1514,1515],{},"Multiple choice",[1517,1518,1519,1531,1542,1552],"tbody",{},[1504,1520,1521,1525,1528],{},[1522,1523,1524],"td",{},"Effort to answer",[1522,1526,1527],{},"Higher",[1522,1529,1530],{},"Lower",[1504,1532,1533,1536,1539],{},[1522,1534,1535],{},"Ease of analysis",[1522,1537,1538],{},"Hard (free text)",[1522,1540,1541],{},"Easy (constrained values)",[1504,1543,1544,1547,1550],{},[1522,1545,1546],{},"Risk of satisficing",[1522,1548,1549],{},"Higher on long forms",[1522,1551,1530],{},[1504,1553,1554,1557,1560],{},[1522,1555,1556],{},"Best for",[1522,1558,1559],{},"Genuine nuance, unknowns",[1522,1561,1562],{},"Anything you'll measure",[16,1564,1566],{"id":1565},"do-rating-scales-need-care","Do rating scales need care?",[12,1568,1569,1572],{},[23,1570,1571],{},"Yes — the scale you offer shapes the answer."," Schwarz (1999) showed that the range and labeling of response options change how people respond, so use a consistent number of points, label them clearly, and keep scales balanced. An unbalanced or vague scale measures your design as much as the respondent's opinion.",[16,1574,1576],{"id":1575},"how-question-type-connects-to-your-data","How question type connects to your data",[12,1578,1579,1582,1583,1586],{},[23,1580,1581],{},"Because RoundPushPin maps each question to a typed database column, the question type you choose becomes the column's type — a rating is an integer, a date is a timestamp, a yes/no is a boolean."," That means the right type produces clean, ",[65,1584,1585],{"href":680},"queryable data"," automatically, with no parsing after the fact.",{"title":106,"searchDepth":107,"depth":107,"links":1588},[1589,1590,1591,1592],{"id":1451,"depth":107,"text":1452},{"id":1485,"depth":107,"text":1486},{"id":1565,"depth":107,"text":1566},{"id":1575,"depth":107,"text":1576},"2026-02-20","Short text, multiple choice, rating scales, dates, file uploads — each question type collects a different kind of data. This guide explains when to use each and how the type you pick affects answer quality and analysis.",[1596,1599,1602],{"q":1597,"a":1598},"What are the main types of form questions?","They group into text (short/long, email, number), selection (multiple choice, dropdown, radio, yes/no), scale (rating, opinion), and special (date, file upload, statements). Selection and scale types are easiest to analyze.",{"q":1600,"a":1601},"When should I use a dropdown vs radio buttons?","Use radio buttons for a few mutually exclusive options the user should see at once; use a dropdown to save space when there are many options. Both store a single constrained value, which keeps analysis clean.",{"q":1603,"a":1604},"Are rating scales reliable?","They can be, if designed carefully: keep a consistent number of points, label them clearly, and keep the scale balanced. Research shows the range and labeling of options shape the answers, so scale design is part of measurement.","/images/knowledge/question-types-explained.png",{},"/knowledge/question-types-explained",{"title":1443,"description":1594},[1610,1611],{"title":266,"url":267,"publisher":268},{"title":1612,"url":1613,"publisher":1614},"Schwarz, N. (1999) — Self-reports: How the questions shape the answers","https://doi.org/10.1037/0003-066X.54.2.93","American Psychologist","knowledge/question-types-explained",[1617,1618],"question types","form design",[],"aEoTRuziAA3Wr8b9jGMGzdUl9_KafNRMahwZwwdQtIw",{"id":1622,"title":1623,"author":7,"body":1624,"date":1693,"description":1694,"draft":116,"extension":117,"faqs":1695,"image":1703,"isPillar":116,"meta":1704,"navigation":128,"path":235,"pillar":130,"pillarName":131,"seo":1705,"sources":1706,"stem":1709,"tags":1710,"takeaways":1712,"updated":1693,"__hash__":1713},"knowledge/knowledge/conditional-logic-in-forms.md","Conditional Logic and Skip Logic in Forms",{"type":9,"value":1625,"toc":1687},[1626,1629,1633,1643,1647,1656,1660,1674,1678],[12,1627,1628],{},"Conditional logic — also called skip logic or branching — shows, hides, or reorders questions based on what a respondent has already answered. It is how a form adapts to each person so they only ever see questions that apply to them.",[16,1630,1632],{"id":1631},"what-is-skip-logic-in-a-form","What is skip logic in a form?",[12,1634,1635,1638,1639,1642],{},[23,1636,1637],{},"Skip logic is a rule that changes the path through a form based on an answer."," \"If the respondent selects ",[28,1640,1641],{},"No",", skip the three follow-up questions\" is skip logic; so is routing enterprise and individual users down different branches. Instead of one rigid sequence, the form becomes a set of paths, and each respondent travels only the relevant one.",[16,1644,1646],{"id":1645},"why-use-conditional-logic","Why use conditional logic?",[12,1648,1649,1652,1653,1655],{},[23,1650,1651],{},"Because relevance reduces length, and length drives abandonment."," Showing only applicable questions is ",[28,1654,345],{}," — a long-standing UX principle for cutting cognitive load (Nielsen Norman Group) — and shorter, more relevant paths align with the finding that questionnaire length lowers participation and response quality (Galesic & Bosnjak, 2009). Conditional logic lets a form be comprehensive for the few without being long for everyone.",[16,1657,1659],{"id":1658},"whats-the-difference-between-skip-logic-and-branching","What's the difference between skip logic and branching?",[12,1661,1662,1673],{},[23,1663,1664,1665,1668,1669,1672],{},"They're the same idea at different scales. ",[28,1666,1667],{},"Skip logic"," usually means jumping over individual questions; ",[28,1670,1671],{},"branching"," means whole alternative sections or paths."," Both are conditional logic — rules connecting an answer to what comes next.",[16,1675,1677],{"id":1676},"how-roundpushpin-models-conditional-logic","How RoundPushPin models conditional logic",[12,1679,1680,1683,1684,1686],{},[23,1681,1682],{},"RoundPushPin represents logic as a visual graph of edges between questions rather than tangled nested rules."," You draw the paths — this answer leads here, that answer leads there — and the renderer evaluates the edges as the respondent moves through the form. The result is comprehensive forms that still feel short, which is exactly what ",[65,1685,83],{"href":82}," rewards.",{"title":106,"searchDepth":107,"depth":107,"links":1688},[1689,1690,1691,1692],{"id":1631,"depth":107,"text":1632},{"id":1645,"depth":107,"text":1646},{"id":1658,"depth":107,"text":1659},{"id":1676,"depth":107,"text":1677},"2026-02-18","Conditional logic shows or hides questions based on previous answers, so each respondent only sees what's relevant. This guide explains skip logic, branching, and how RoundPushPin models it as a visual graph.",[1696,1698,1701],{"q":1632,"a":1697},"Skip logic is a rule that changes the path through a form based on an answer — for example, skipping follow-up questions when someone answers 'No'. The form becomes a set of paths, and each respondent travels only the relevant one.",{"q":1699,"a":1700},"Does conditional logic improve completion?","Generally yes, because it hides irrelevant questions and shortens each respondent's path, and survey research links shorter, lower-burden forms to higher completion. It lets a form be thorough for the few without being long for everyone.",{"q":1659,"a":1702},"They're the same idea at different scales: skip logic usually jumps over individual questions, while branching routes respondents down whole alternative sections. Both connect an answer to what comes next.","/images/knowledge/conditional-logic-in-forms.png",{},{"title":1623,"description":1694},[1707,1708],{"title":429,"url":430,"publisher":140},{"title":425,"url":426,"publisher":427},"knowledge/conditional-logic-in-forms",[1711,1671,434],"skip logic",[],"Ufo2TZpfqD-PimyDABjq9SpoJlF48eGm8i9EBc8KQ78",{"id":1715,"title":1716,"author":7,"body":1717,"date":1813,"description":1814,"draft":116,"extension":117,"faqs":1815,"image":1825,"isPillar":116,"meta":1826,"navigation":128,"path":363,"pillar":130,"pillarName":131,"seo":1827,"sources":1828,"stem":1834,"tags":1835,"takeaways":1836,"updated":1813,"__hash__":1837},"knowledge/knowledge/how-to-ask-the-right-questions-in-a-form.md","How to Ask the Right Questions in a Form",{"type":9,"value":1718,"toc":1807},[1719,1722,1726,1732,1736,1742,1746,1749,1787,1791],[12,1720,1721],{},"Asking the right questions in a form means writing each question so that everyone interprets it the same way, can answer it with reasonable effort, and gives you data you can actually use. Decades of survey-methodology research show that the wording, format, and order of questions change the answers you get — so question design is a measurement decision, not a cosmetic one.",[16,1723,1725],{"id":1724},"why-does-the-way-you-ask-a-question-matter-so-much","Why does the way you ask a question matter so much?",[12,1727,1728,1731],{},[23,1729,1730],{},"Because respondents construct answers from the question itself."," Schwarz (1999) showed that small changes in wording, response options, and context systematically shape the answers people give — the question is part of the measurement, not a neutral wrapper. Tourangeau, Rips, and Rasinski (2000) model answering as four cognitive steps — comprehension, retrieval, judgment, and response — and a question can break down at any of them.",[16,1733,1735],{"id":1734},"what-makes-people-give-low-quality-answers","What makes people give low-quality answers?",[12,1737,1738,1739,1741],{},"Effort. Krosnick (1991) described ",[28,1740,1495],{},": when a question is hard or a form is long, respondents stop giving their best answer and instead pick the easiest acceptable one — choosing the first reasonable option, agreeing by default, or selecting \"don't know.\" The fix is to lower the effort each question demands, not to demand more diligence from the respondent.",[16,1743,1745],{"id":1744},"what-are-the-practical-rules-for-writing-form-questions","What are the practical rules for writing form questions?",[12,1747,1748],{},"The research converges on a short, durable list:",[323,1750,1751,1757,1763,1769,1775,1781],{},[326,1752,1753,1756],{},[23,1754,1755],{},"Ask one thing per question."," Split double-barreled questions (\"How satisfied are you with speed and support?\") into two.",[326,1758,1759,1762],{},[23,1760,1761],{},"Use plain, concrete language."," Avoid jargon, negations, and vague quantifiers (\"often\", \"regularly\").",[326,1764,1765,1768],{},[23,1766,1767],{},"Make response options balanced and exhaustive."," Offer a clear scale and a genuine escape (\"Not applicable\") so people don't satisfice into a wrong answer.",[326,1770,1771,1774],{},[23,1772,1773],{},"Prefer closed questions for data you'll analyze;"," reserve open text for genuine nuance, since open answers cost more effort and are harder to compare.",[326,1776,1777,1780],{},[23,1778,1779],{},"Mind order and context."," Earlier questions frame later ones (Schwarz, 1999); ask general before specific, and don't let one question bias the next.",[326,1782,1783,1786],{},[23,1784,1785],{},"Only ask what you'll use."," Every question is effort that risks drop-off — relevance is part of good question design.",[16,1788,1790],{"id":1789},"how-does-this-connect-to-completion","How does this connect to completion?",[12,1792,1793,1800,1801,1804,1805,180],{},[23,1794,1795,1796,1799],{},"Clear, low-effort questions don't just produce better data — they reduce the hesitation and burden that drive abandonment, which is why question quality and ",[65,1797,1798],{"href":82},"form completion rate"," move together."," RoundPushPin pairs these question-design principles with ",[65,1802,1803],{"href":340},"conversational, one-at-a-time delivery"," and typed storage, so good questions also produce clean, ",[65,1806,1585],{"href":680},{"title":106,"searchDepth":107,"depth":107,"links":1808},[1809,1810,1811,1812],{"id":1724,"depth":107,"text":1725},{"id":1734,"depth":107,"text":1735},{"id":1744,"depth":107,"text":1745},{"id":1789,"depth":107,"text":1790},"2026-02-16","The wording and order of your questions shape the answers you get — and whether people finish at all. This research-backed guide distills decades of survey methodology into practical rules for writing form questions.",[1816,1819,1822],{"q":1817,"a":1818},"What makes a good form question?","It asks one thing, in plain concrete language, with balanced and exhaustive answer options. Good questions are interpreted the same way by everyone and can be answered with low effort.",{"q":1820,"a":1821},"Should I use open-ended or multiple-choice questions?","Use closed (multiple-choice) questions for anything you'll analyze — they're faster to answer and easier to compare. Reserve open text for genuine nuance, since it costs more effort and invites shortcutting.",{"q":1823,"a":1824},"Does question wording affect the answers people give?","Yes. Research shows wording, response options, and order systematically shape answers — the question is part of the measurement. Ask general before specific and avoid leading phrasing.","/images/knowledge/how-to-ask-the-right-questions-in-a-form.png",{},{"title":1716,"description":1814},[1829,1830,1831],{"title":1612,"url":1613,"publisher":1614},{"title":266,"url":267,"publisher":268},{"title":1832,"url":1833,"publisher":719},"Tourangeau, R., Rips, L. J., & Rasinski, K. (2000) — The Psychology of Survey Response","https://doi.org/10.1017/CBO9780511819322","knowledge/how-to-ask-the-right-questions-in-a-form",[275,434,150],[],"HIEGdx8r65NlxYASsg8N80CMjzRFLezd3XLsgzvoIeo",{"id":1839,"title":1840,"author":7,"body":1841,"date":1949,"description":1950,"draft":116,"extension":117,"faqs":1951,"image":1960,"isPillar":116,"meta":1961,"navigation":128,"path":82,"pillar":130,"pillarName":131,"seo":1962,"sources":1963,"stem":1967,"tags":1968,"takeaways":1969,"updated":1949,"__hash__":1973},"knowledge/knowledge/form-completion-rate.md","How to Improve Form Completion Rate (What the Research Says)",{"type":9,"value":1842,"toc":1942},[1843,1846,1852,1856,1862,1866,1878,1882,1888,1892,1895,1926,1930],[12,1844,1845],{},"Form completion rate is the percentage of people who finish a form out of everyone who starts it. It is the single most important number for any form, and the research on what improves it is remarkably consistent: reduce length, reduce effort, and only ask what's relevant.",[12,1847,1848],{},[573,1849],{"alt":1850,"src":1851},"Funnel diagram showing form completion leaking from \"Form viewed\" down to \"Completed\" as drop-off grows with each step","/images/knowledge/diagrams/completion-funnel.png",[16,1853,1855],{"id":1854},"what-is-a-good-form-completion-rate","What is a good form completion rate?",[12,1857,1858,1861],{},[23,1859,1860],{},"There is no universal benchmark — it depends on audience, intent, and how much you ask — so the useful comparison is your form against itself over time."," Track starts, completions, and where people drop off, then change one thing and measure. Absolute numbers from other companies' forms are rarely comparable to yours.",[16,1863,1865],{"id":1864},"does-form-length-really-reduce-completion","Does form length really reduce completion?",[12,1867,1868,1871,1872,1874,1875,1877],{},[23,1869,1870],{},"Yes — this is one of the best-supported findings in survey methodology."," In a controlled web-survey experiment, Galesic and Bosnjak (2009) found that longer stated questionnaire length lowered participation ",[28,1873,1173],{}," degraded response quality in the later questions. Peytchev (2009) studied ",[28,1876,460],{}," — people abandoning partway — and tied it to respondent burden. Every additional question is a chance to lose someone.",[16,1879,1881],{"id":1880},"how-much-does-cutting-fields-help","How much does cutting fields help?",[12,1883,1884,1887],{},[23,1885,1886],{},"Enough that it's the highest-leverage change you can usually make."," Baymard Institute's research on checkout flows found the average checkout asks 11.3 form fields when around 8 are actually needed. The lesson generalizes: audit every field and delete or defer anything you don't truly need at that moment.",[16,1889,1891],{"id":1890},"what-actually-moves-completion-rate","What actually moves completion rate?",[12,1893,1894],{},"The evidence points to a short list:",[323,1896,1897,1903,1909,1918],{},[326,1898,1899,1902],{},[23,1900,1901],{},"Ask fewer questions."," Cut optional fields; collect the rest later. (Galesic & Bosnjak, 2009)",[326,1904,1905,1908],{},[23,1906,1907],{},"Lower perceived effort."," One question at a time and a visible sense of progress reduce the burden that drives breakoff (Peytchev, 2009).",[326,1910,1911,1914,1915,1917],{},[23,1912,1913],{},"Only ask what's relevant."," Use ",[65,1916,236],{"href":235}," so no one answers questions that don't apply to them.",[326,1919,1920,1923,1924,180],{},[23,1921,1922],{},"Ask clearly."," Confusing questions cause hesitation and drop-off — see ",[65,1925,364],{"href":363},[16,1927,1929],{"id":1928},"how-roundpushpin-helps","How RoundPushPin helps",[12,1931,1932,1938,1939,180],{},[23,1933,1934,1935,1937],{},"RoundPushPin's ",[65,1936,907],{"href":340}," lowers perceived effort by asking one question at a time, and its conditional logic shows only relevant questions — both of which target the exact factors the research links to completion."," And because responses are stored relationally, you can measure completion and drop-off per question ",[65,1940,1941],{"href":680},"directly in SQL",{"title":106,"searchDepth":107,"depth":107,"links":1943},[1944,1945,1946,1947,1948],{"id":1854,"depth":107,"text":1855},{"id":1864,"depth":107,"text":1865},{"id":1880,"depth":107,"text":1881},{"id":1890,"depth":107,"text":1891},{"id":1928,"depth":107,"text":1929},"2026-02-14","Form completion rate is the share of people who finish a form they started. This evidence-based guide covers what survey-methodology and UX research show actually moves it: fewer questions, lower perceived effort, and relevant questions only.",[1952,1954,1957],{"q":1855,"a":1953},"There's no universal benchmark — it varies by audience, intent, and length — so compare your form against itself over time rather than to others. Track starts, completions, and per-question drop-off.",{"q":1955,"a":1956},"Does reducing the number of form fields increase conversions?","Usually yes. Research links longer forms to lower completion, and Baymard found typical checkouts ask about 11 fields when around 8 suffice. Cutting unnecessary fields is often the single highest-leverage change.",{"q":1958,"a":1959},"Why do people abandon forms?","Mostly effort: too many questions, irrelevant fields, unclear wording, and no sense of progress. Survey research ties 'breakoff' to respondent burden, so lowering effort is the core fix.","/images/knowledge/form-completion-rate.png",{},{"title":1840,"description":1950},[1964,1965,1966],{"title":545,"url":426,"publisher":427},{"title":547,"url":548,"publisher":427},{"title":550,"url":551,"publisher":552},"knowledge/form-completion-rate",[149,83,150],[1970,1971,1972],"Completion rate = finishers ÷ starters; compare your form against itself over time, not to others.","Length is the biggest lever — research links longer forms to lower completion and quality.","Cut fields, lower perceived effort, show only relevant questions, and ask clearly.","tavcEKYHSA8KbRqa1bK_h3nWX27ArfLqaWy9OF2vE-Q",{"id":1975,"title":1976,"author":7,"body":1977,"date":2056,"description":2057,"draft":116,"extension":117,"faqs":2058,"image":2068,"isPillar":128,"meta":2069,"navigation":128,"path":340,"pillar":1041,"pillarName":1041,"seo":2070,"sources":2071,"stem":2074,"tags":2075,"takeaways":2076,"updated":2056,"__hash__":2077},"knowledge/knowledge/conversational-form-design.md","Conversational Form Design: Asking One Question at a Time",{"type":9,"value":1978,"toc":2050},[1979,1982,1986,1992,1996,2005,2009,2012,2037,2041],[12,1980,1981],{},"Conversational form design presents a form as a focused sequence — one question at a time — rather than a single page packed with fields. The goal is to lower the perceived effort of each step so more people start, stay, and finish, while still capturing clean, structured data underneath.",[16,1983,1985],{"id":1984},"what-is-a-conversational-form","What is a conversational form?",[12,1987,1988,1991],{},[23,1989,1990],{},"A conversational form asks one question per screen, advances as the respondent answers, and uses transitions to keep the flow moving."," It borrows from how a good interviewer works: ask, listen, ask the next relevant thing — instead of handing someone a clipboard with forty fields. The format is a presentation choice; the data it collects can still be fully structured.",[16,1993,1995],{"id":1994},"why-does-asking-one-question-at-a-time-help","Why does asking one question at a time help?",[12,1997,1998,2001,2002,2004],{},[23,1999,2000],{},"Because perceived length and cognitive load drive abandonment."," Research on web surveys finds that longer questionnaires reduce participation and response quality (Galesic & Bosnjak, 2009), and the UX principle of ",[28,2003,345],{}," — showing only what's relevant at each step — is a well-established way to reduce that load (Nielsen Norman Group). Showing one question at a time is progressive disclosure applied to forms.",[16,2006,2008],{"id":2007},"what-does-good-conversational-design-get-right","What does good conversational design get right?",[12,2010,2011],{},"It manages three things at once:",[1457,2013,2014,2020,2029],{},[326,2015,2016,2019],{},[23,2017,2018],{},"Momentum"," — each screen is a small, obvious step, so starting feels cheap and finishing feels close.",[326,2021,2022,2025,2026,2028],{},[23,2023,2024],{},"Relevance"," — ",[65,2027,236],{"href":235}," hides questions that don't apply, so no one wades through irrelevant fields.",[326,2030,2031,2034,2035,208],{},[23,2032,2033],{},"Clarity"," — each question is phrased to be understood and answered the same way by everyone, which is its own discipline (see ",[65,2036,364],{"href":363},[16,2038,2040],{"id":2039},"does-conversational-ux-hurt-the-data","Does conversational UX hurt the data?",[12,2042,2043,2046,2047,2049],{},[23,2044,2045],{},"Only if the tool treats the data as an afterthought."," The format is about presentation; the storage is a separate decision. RoundPushPin keeps the conversational experience but maps every answer to a typed column in a relational database — so you get higher completion ",[28,2048,1173],{}," structured, queryable data. The articles in this topic go deeper on each part of designing forms people finish.",{"title":106,"searchDepth":107,"depth":107,"links":2051},[2052,2053,2054,2055],{"id":1984,"depth":107,"text":1985},{"id":1994,"depth":107,"text":1995},{"id":2007,"depth":107,"text":2008},{"id":2039,"depth":107,"text":2040},"2026-02-12","Conversational form design presents one question at a time instead of a wall of fields. This guide explains why the format works, what the survey-methodology research says about length and question quality, and how to design forms people finish.",[2059,2062,2065],{"q":2060,"a":2061},"Do conversational forms get higher completion rates?","They can, because showing one question at a time lowers perceived effort, and survey research links shorter, lower-burden forms to higher participation. Completion still depends on asking few, clear, relevant questions.",{"q":2063,"a":2064},"What is the difference between a conversational form and a regular form?","A conversational form asks one question per screen and advances as you answer; a regular form shows all fields on one page. The data collected can be identical — the difference is presentation and perceived effort.",{"q":2066,"a":2067},"Are conversational forms good for surveys?","Yes for most surveys — the one-at-a-time format reduces fatigue. For very long, matrix-style instruments, pair the format with a clear progress indicator so respondents can gauge how much is left.","/images/knowledge/conversational-form-design.png",{},{"title":1976,"description":2057},[2072,2073],{"title":545,"url":426,"publisher":427},{"title":429,"url":430,"publisher":140},"knowledge/conversational-form-design",[1618,434,1051],[],"0keBt93sanctFvicv_WGXbHUHSFX7LcrnniJOViPG8I",{"id":2079,"title":2080,"author":7,"body":2081,"date":2134,"description":2135,"draft":116,"extension":117,"faqs":2136,"image":2146,"isPillar":116,"meta":2147,"navigation":128,"path":2148,"pillar":2149,"pillarName":2150,"seo":2151,"sources":2152,"stem":2159,"tags":2160,"takeaways":2163,"updated":2134,"__hash__":2164},"knowledge/knowledge/export-form-responses-to-csv.md","How to Export Form Responses to CSV",{"type":9,"value":2082,"toc":2129},[2083,2086,2090,2096,2100,2111,2115],[12,2084,2085],{},"Exporting form responses to CSV produces a comma-separated file with one row per submission and one column per question — the most portable way to move responses into a spreadsheet, BI tool, or another system. A clean export depends entirely on how the responses were stored.",[16,2087,2089],{"id":2088},"what-makes-a-clean-csv-export","What makes a \"clean\" CSV export?",[12,2091,2092,2095],{},[23,2093,2094],{},"A clean CSV has stable headers, one column per question, consistent types down each column, and proper escaping of commas, quotes, and line breaks."," The CSV format is specified in RFC 4180, and the details — quoting fields that contain delimiters, consistent line endings — are exactly what trips up hand-rolled exports. When data already lives in typed columns, the export is mechanical; when it lives in JSON blobs, every export risks shifting or missing columns.",[16,2097,2099],{"id":2098},"why-are-spreadsheet-based-form-tools-messy-to-export","Why are spreadsheet-based form tools messy to export?",[12,2101,2102,2105,2106,2110],{},[23,2103,2104],{},"Because the column layout drifts."," If responses are stored as documents or in an ever-widening sheet, adding or removing a question changes the shape of every future export, and types are unenforced — a \"number\" column may contain text. Relational storage avoids this: the schema fixes the columns, so the CSV is the same shape every time. Databases like PostgreSQL even expose a dedicated ",[2107,2108,2109],"code",{},"COPY"," command to stream a table straight to CSV.",[16,2112,2114],{"id":2113},"how-roundpushpin-exports-to-csv","How RoundPushPin exports to CSV",[12,2116,2117,2120,2121,2125,2126,180],{},[23,2118,2119],{},"Because RoundPushPin stores each response as typed relational rows, a CSV export is one click and always well-formed: stable headers, consistent types, proper escaping."," When you outgrow files, the same clean source ",[65,2122,2124],{"href":2123},"/knowledge/export-form-responses-to-bigquery","exports directly to BigQuery"," or is ",[65,2127,2128],{"href":680},"queryable in place with SQL",{"title":106,"searchDepth":107,"depth":107,"links":2130},[2131,2132,2133],{"id":2088,"depth":107,"text":2089},{"id":2098,"depth":107,"text":2099},{"id":2113,"depth":107,"text":2114},"2026-02-10","CSV is the universal format for moving form responses into spreadsheets and other tools. This guide covers what a clean CSV export looks like, the pitfalls of messy exports, and how RoundPushPin exports in one click.",[2137,2140,2143],{"q":2138,"a":2139},"How do I export form responses to CSV?","Most form tools offer a CSV export; the quality depends on how the data is stored. Relational storage yields stable headers, one column per question, consistent types, and proper escaping — RoundPushPin exports a clean CSV in one click.",{"q":2141,"a":2142},"Why is my form CSV export messy?","Usually because the columns drift: if responses are stored as documents or an ever-widening sheet, adding or removing a question changes every export and types aren't enforced. Relational storage fixes the column layout.",{"q":2144,"a":2145},"What is the standard CSV format?","RFC 4180 defines CSV: one record per line, fields separated by commas, and fields containing commas, quotes, or line breaks wrapped in double quotes. Hand-rolled exports often get the escaping wrong.","/images/knowledge/export-form-responses-to-csv.png",{},"/knowledge/export-form-responses-to-csv","form-data-architecture","Form data architecture",{"title":2080,"description":2135},[2153,2157],{"title":2154,"url":2155,"publisher":2156},"Common Format and MIME Type for CSV Files (RFC 4180)","https://www.rfc-editor.org/rfc/rfc4180","IETF",{"title":2109,"url":2158,"publisher":1146},"https://www.postgresql.org/docs/current/sql-copy.html","knowledge/export-form-responses-to-csv",[2161,2162,1051],"csv","export",[],"Yr1qEbZAaKKsvAjU32SFRvpGh9Mjbh9-9tnKT98Budw",{"id":2166,"title":2167,"author":7,"body":2168,"date":2275,"description":2276,"draft":116,"extension":117,"faqs":2277,"image":2287,"isPillar":116,"meta":2288,"navigation":128,"path":680,"pillar":2149,"pillarName":2150,"seo":2289,"sources":2290,"stem":2300,"tags":2301,"takeaways":2303,"updated":2275,"__hash__":2304},"knowledge/knowledge/query-form-data-with-sql.md","How to Query Form Data With SQL",{"type":9,"value":2169,"toc":2269},[2170,2173,2177,2186,2190,2193,2241,2245,2255,2259],[12,2171,2172],{},"Querying form data with SQL means asking questions of your responses directly in the database — filtering, grouping, and joining them — instead of exporting a file and pivoting in a spreadsheet. It only works when responses are stored relationally, with each question as a typed column.",[16,2174,2176],{"id":2175},"can-you-query-form-responses-with-sql","Can you query form responses with SQL?",[12,2178,2179,2182,2183,2185],{},[23,2180,2181],{},"You can when responses live in a relational database."," If a form tool stores answers as JSON blobs you have to deserialize every document first; if each question is a typed column, you query it like any other table. The difference is the storage model — see ",[65,2184,1113],{"href":1112}," for why it matters.",[16,2187,2189],{"id":2188},"what-can-you-actually-ask","What can you actually ask?",[12,2191,2192],{},"The three workhorses are filtering, aggregating, and joining:",[1457,2194,2195,2204,2227],{},[326,2196,2197,2200,2201],{},[23,2198,2199],{},"Filter"," to a segment: ",[2107,2202,2203],{},"SELECT * FROM responses WHERE role = 'Engineer' AND submitted_at > '2026-01-01'",[326,2205,2206,2209,2210,2213,2214,984,2217,984,2220,984,2223,2226],{},[23,2207,2208],{},"Aggregate"," to a metric: ",[2107,2211,2212],{},"SELECT role, COUNT(*) FROM responses GROUP BY role"," — PostgreSQL's aggregate functions (",[2107,2215,2216],{},"COUNT",[2107,2218,2219],{},"AVG",[2107,2221,2222],{},"MIN",[2107,2224,2225],{},"MAX",") turn raw rows into answers.",[326,2228,2229,2232,2233,2236,2237,2240],{},[23,2230,2231],{},"Join"," to context: connect responses to your ",[2107,2234,2235],{},"users"," or ",[2107,2238,2239],{},"orders"," table on a shared key to analyze answers alongside the rest of your data.",[16,2242,2244],{"id":2243},"how-do-you-analyze-completion-or-drop-off-with-sql","How do you analyze completion or drop-off with SQL?",[12,2246,2247,2250,2251,2254],{},[23,2248,2249],{},"Group by question and count non-null answers."," Because each question is its own column, a query like ",[2107,2252,2253],{},"SELECT COUNT(question_3) / COUNT(*)::float FROM responses"," gives the completion ratio for that question — the kind of drop-off analysis that is painful when the whole response is one opaque blob.",[16,2256,2258],{"id":2257},"how-roundpushpin-makes-responses-queryable","How RoundPushPin makes responses queryable",[12,2260,2261,2264,2265,2268],{},[23,2262,2263],{},"RoundPushPin stores every response relationally, so your data is queryable from day one — no export step, no reshaping."," Connect your own SQL client or ",[65,2266,2267],{"href":2123},"export to BigQuery"," when you want to analyze form data next to everything else.",{"title":106,"searchDepth":107,"depth":107,"links":2270},[2271,2272,2273,2274],{"id":2175,"depth":107,"text":2176},{"id":2188,"depth":107,"text":2189},{"id":2243,"depth":107,"text":2244},{"id":2257,"depth":107,"text":2258},"2026-02-08","When form responses live in a relational database, you can answer questions with SQL instead of exporting spreadsheets. This guide shows the queries that matter — filtering, aggregating, and joining responses.",[2278,2281,2284],{"q":2279,"a":2280},"Can you run SQL on form responses?","Yes, when responses are stored relationally — each question as a typed column. You can filter, aggregate, and join them like any table. If a tool stores answers as JSON blobs, you must deserialize them first.",{"q":2282,"a":2283},"How do you analyze form drop-off?","Group by question and count non-null answers: comparing answered versus total per question reveals where people stop. This is simple when each question is its own column and painful when the response is one opaque blob.",{"q":2285,"a":2286},"How do you join form data with other tables?","Connect responses to another table on a shared key, such as a user ID, with a SQL JOIN. Relational storage makes this direct; RoundPushPin stores responses this way so they sit alongside your other data.","/images/knowledge/query-form-data-with-sql.png",{},{"title":2167,"description":2276},[2291,2294,2297],{"title":2292,"url":2293,"publisher":1146},"SELECT","https://www.postgresql.org/docs/current/sql-select.html",{"title":2295,"url":2296,"publisher":1146},"Aggregate Functions","https://www.postgresql.org/docs/current/functions-aggregate.html",{"title":2298,"url":2299,"publisher":1146},"Joins Between Tables","https://www.postgresql.org/docs/current/tutorial-join.html","knowledge/query-form-data-with-sql",[2302,727,1051],"sql",[],"8-YH_T1SbhmtDvDbowCzrSccBzS9qyn4zgXNLGRfKJk",{"id":2306,"title":2307,"author":7,"body":2308,"date":2376,"description":2377,"draft":116,"extension":117,"faqs":2378,"image":2388,"isPillar":116,"meta":2389,"navigation":128,"path":2390,"pillar":2149,"pillarName":2150,"seo":2391,"sources":2392,"stem":2401,"tags":2402,"takeaways":2405,"updated":2376,"__hash__":2406},"knowledge/knowledge/store-form-responses-in-a-database.md","How to Store Form Responses in a Database",{"type":9,"value":2309,"toc":2370},[2310,2313,2317,2323,2327,2345,2349,2355,2359],[12,2311,2312],{},"Storing form responses in a database means persisting each submission as structured, typed rows in tables — not as a spreadsheet or a serialized document. It is what turns raw submissions into data you can trust, query, and connect to the rest of your stack.",[16,2314,2316],{"id":2315},"when-should-you-store-form-responses-in-a-database","When should you store form responses in a database?",[12,2318,2319,2322],{},[23,2320,2321],{},"As soon as the responses have to be queried, joined, validated, or kept consistent over time."," A spreadsheet is fine for a one-off RSVP, but the moment you need to filter thousands of responses, enforce that an email is really an email, or connect answers to your users table, a relational database is the right home.",[16,2324,2326],{"id":2325},"how-do-you-model-form-responses-as-tables","How do you model form responses as tables?",[12,2328,2329,2332,2333,2336,2337,2340,2341,2344],{},[23,2330,2331],{},"You map the form's structure onto a schema: a table for forms, a table for questions, and typed columns for answers."," Each question becomes a column with a real type (text, integer, boolean, timestamp), and constraints enforce the rules — ",[2107,2334,2335],{},"NOT NULL"," for required questions, ",[2107,2338,2339],{},"UNIQUE"," where answers must not repeat, and foreign keys linking responses back to their form. PostgreSQL's ",[2107,2342,2343],{},"CREATE TABLE"," and constraint system exist precisely to encode these rules at the data layer, where they can't be bypassed.",[16,2346,2348],{"id":2347},"what-about-questions-that-change-over-time","What about questions that change over time?",[12,2350,2351,2354],{},[23,2352,2353],{},"Use migrations."," Forms evolve — you add a question, rename another, change a type — and a migration records each change as a versioned, repeatable step. Tools like Drizzle generate migrations from your schema definition, so the database structure stays in lock-step with the form and you never lose the history of how it changed.",[16,2356,2358],{"id":2357},"how-roundpushpin-stores-responses-for-you","How RoundPushPin stores responses for you",[12,2360,2361,2364,2365,2236,2367,180],{},[23,2362,2363],{},"RoundPushPin does all of this automatically."," When you build a form, it maps each question to a typed PostgreSQL column, enforces required and format rules as constraints, and versions structural changes with migrations — so you get a clean relational store without writing a line of SQL or designing a schema by hand. From there, responses are ready to ",[65,2366,785],{"href":680},[65,2368,2369],{"href":2148},"export to CSV",{"title":106,"searchDepth":107,"depth":107,"links":2371},[2372,2373,2374,2375],{"id":2315,"depth":107,"text":2316},{"id":2325,"depth":107,"text":2326},{"id":2347,"depth":107,"text":2348},{"id":2357,"depth":107,"text":2358},"2026-02-06","A practical look at storing form responses in a relational database: when a spreadsheet stops being enough, how to model questions as typed columns, and how RoundPushPin does it automatically.",[2379,2382,2385],{"q":2380,"a":2381},"How do you save form submissions to a database?","Map the form to a schema: a table per form, typed columns per question, and rows per response, with constraints for required and format rules. RoundPushPin generates the PostgreSQL schema for you automatically.",{"q":2383,"a":2384},"Should form data go in a database or a spreadsheet?","Use a database once you need to query, join, validate, or keep responses consistent over time. A spreadsheet is fine for a quick one-off, but it drifts and enforces no types as the form changes.",{"q":2386,"a":2387},"How do you handle form fields that change over time?","Use migrations — versioned, repeatable steps that update the database structure as the form evolves. That keeps the schema in sync with the form and preserves a history of changes.","/images/knowledge/store-form-responses-in-a-database.png",{},"/knowledge/store-form-responses-in-a-database",{"title":2307,"description":2377},[2393,2395,2398],{"title":2343,"url":2394,"publisher":1146},"https://www.postgresql.org/docs/current/sql-createtable.html",{"title":2396,"url":2397,"publisher":1146},"Constraints","https://www.postgresql.org/docs/current/ddl-constraints.html",{"title":2399,"url":2400,"publisher":819},"Drizzle ORM — Migrations","https://orm.drizzle.team/docs/migrations","knowledge/store-form-responses-in-a-database",[2403,2404,1051],"database","postgresql",[],"T9BsnyPelUYLC2_-LOVcmy8gU4xiki1YmYNpwgbC1_g",{"id":2408,"title":2409,"author":7,"body":2410,"date":2487,"description":2488,"draft":116,"extension":117,"faqs":2489,"image":2499,"isPillar":116,"meta":2500,"navigation":128,"path":2123,"pillar":2149,"pillarName":2150,"seo":2501,"sources":2502,"stem":2513,"tags":2514,"takeaways":2516,"updated":2487,"__hash__":2517},"knowledge/knowledge/export-form-responses-to-bigquery.md","How to Export Form Responses to BigQuery",{"type":9,"value":2411,"toc":2480},[2412,2415,2419,2429,2433,2439,2443,2446,2457,2460,2464,2470,2474],[12,2413,2414],{},"Getting form responses into Google BigQuery turns a stream of submissions into a queryable analytics table you can join with the rest of your data. This guide covers why teams do it, the manual route most form tools force on you, and how a relational form builder makes the export direct.",[16,2416,2418],{"id":2417},"can-you-export-form-responses-to-bigquery","Can you export form responses to BigQuery?",[12,2420,2421,2424,2425,2428],{},[23,2422,2423],{},"Yes — any form tool that lets you export CSV can get data into BigQuery, because BigQuery natively loads CSV (and JSON, Avro, and Parquet) files."," Google's documentation describes BigQuery as a fully managed, serverless data warehouse, and loading data into it is a first-class operation. The real question is not ",[28,2426,2427],{},"whether"," you can, but how much manual cleanup stands between a submission and a clean row in your warehouse.",[16,2430,2432],{"id":2431},"why-send-form-data-to-bigquery","Why send form data to BigQuery?",[12,2434,2435,2438],{},[23,2436,2437],{},"Because BigQuery is built to analyze large datasets with SQL and to join them with your other business data."," Once responses live in BigQuery you can answer questions a form dashboard never could — completion trends over time, segmentation by any field, and joins against your CRM, product, or billing tables — using the same SQL your data team already writes.",[16,2440,2442],{"id":2441},"how-do-most-form-tools-get-data-into-bigquery","How do most form tools get data into BigQuery?",[12,2444,2445],{},"Most do it indirectly, through a chain of glue:",[323,2447,2448,2451,2454],{},[326,2449,2450],{},"Export the form's responses as a CSV (or connect a no-code automation tool).",[326,2452,2453],{},"Reshape the columns to match a BigQuery schema.",[326,2455,2456],{},"Load the file with a batch job, or pipe it through a third-party connector on a schedule.",[12,2458,2459],{},"BigQuery's batch-loading documentation makes each step routine, but the work compounds: every form change can break the column mapping, and nested or repeated answers rarely survive a flat CSV cleanly.",[16,2461,2463],{"id":2462},"how-roundpushpin-exports-to-bigquery","How RoundPushPin exports to BigQuery",[12,2465,2466,2469],{},[23,2467,2468],{},"Because RoundPushPin already stores responses relationally — each question a typed column, each response a row — the data is export-shaped from the start."," That removes the reshape-and-clean step: you get one-click CSV when you want a file, and a direct BigQuery export when you want the responses to land in your warehouse as a structured table, ready to query and join.",[16,2471,2473],{"id":2472},"bigquery-vs-csv-export-which-should-you-use","BigQuery vs CSV export — which should you use?",[12,2475,2476,2479],{},[23,2477,2478],{},"Use CSV for a quick one-off pull you'll open in a spreadsheet; use a direct BigQuery export when form data needs to live alongside your other analytics data for ongoing querying."," The advantage of starting from a relational store is that both paths come from the same clean, typed source — so you are never reconciling a spreadsheet against your warehouse.",{"title":106,"searchDepth":107,"depth":107,"links":2481},[2482,2483,2484,2485,2486],{"id":2417,"depth":107,"text":2418},{"id":2431,"depth":107,"text":2432},{"id":2441,"depth":107,"text":2442},{"id":2462,"depth":107,"text":2463},{"id":2472,"depth":107,"text":2473},"2026-02-04","A practical guide to getting form responses into Google BigQuery for analysis — why teams do it, the usual CSV-and-glue approach, and how RoundPushPin exports structured responses directly.",[2490,2493,2496],{"q":2491,"a":2492},"How do I get form responses into BigQuery?","BigQuery natively loads CSV, JSON, Avro, and Parquet, so any tool that exports those can feed it. The friction is reshaping messy exports; starting from relational storage makes the data export-shaped, and RoundPushPin offers a direct BigQuery export.",{"q":2494,"a":2495},"Why analyze form data in BigQuery?","BigQuery analyzes large datasets with SQL and joins them with your other business data, so you can answer questions a form dashboard can't — trends over time, segmentation, and joins against CRM or product tables.",{"q":2497,"a":2498},"Is CSV or BigQuery better for form data?","Use CSV for a quick one-off pull; use a direct BigQuery export when form data needs to live alongside your other analytics for ongoing querying. Starting from a relational store keeps both clean.","/images/knowledge/export-form-responses-to-bigquery.png",{},{"title":2409,"description":2488},[2503,2507,2510],{"title":2504,"url":2505,"publisher":2506},"BigQuery — Introduction","https://cloud.google.com/bigquery/docs/introduction","Google Cloud",{"title":2508,"url":2509,"publisher":2506},"Loading data into BigQuery","https://cloud.google.com/bigquery/docs/loading-data",{"title":2511,"url":2512,"publisher":2506},"Batch loading data","https://cloud.google.com/bigquery/docs/batch-loading-data","knowledge/export-form-responses-to-bigquery",[2515,2162,727],"bigquery",[],"WndWLTxIIJvRRC24e2sk4yWsJRUSlNfS0lGIe4HAqGE",{"id":2519,"title":2520,"author":7,"body":2521,"date":2595,"description":2596,"draft":116,"extension":117,"faqs":2597,"image":2607,"isPillar":128,"meta":2608,"navigation":128,"path":1112,"pillar":1041,"pillarName":1041,"seo":2609,"sources":2610,"stem":2618,"tags":2619,"takeaways":2621,"updated":2595,"__hash__":2625},"knowledge/knowledge/form-data-architecture.md","Form Data Architecture: How to Store Form Responses the Right Way",{"type":9,"value":2522,"toc":2589},[2523,2526,2530,2536,2540,2546,2552,2556,2559,2579,2583],[12,2524,2525],{},"Form data architecture is how a form tool persists, structures, and exposes the answers people submit. It is the most consequential — and most ignored — decision in form building: the storage model you start with determines whether your responses stay a queryable asset or become a pile of exports you fight with later.",[16,2527,2529],{"id":2528},"what-is-form-data-architecture","What is form data architecture?",[12,2531,2532,2535],{},[23,2533,2534],{},"Form data architecture is the underlying model a form platform uses to store responses — flat rows, nested JSON documents, or normalized relational tables — and the interfaces it gives you to read that data back."," Two forms can look identical to a respondent while storing answers in completely different ways underneath, and that difference is what dictates how you query, join, validate, and export later.",[16,2537,2539],{"id":2538},"why-does-the-way-you-store-form-data-matter","Why does the way you store form data matter?",[12,2541,2542,2545],{},[23,2543,2544],{},"Because the storage model is hard to change after the fact, and it caps what you can do with the data."," A model with no schema accepts anything but lets nothing be trusted, indexed, or joined; a structured model enforces types and relationships so the data is usable the moment it lands. The relational model — first described by E. F. Codd in 1970 — exists precisely to keep data consistent, queryable, and free of duplication, and it still underpins most serious data work today.",[12,2547,2548],{},[573,2549],{"alt":2550,"src":2551},"Diagram comparing a JSON blob and relational tables for storing the same form response","/images/knowledge/diagrams/relational-vs-json.png",[16,2553,2555],{"id":2554},"flat-files-vs-json-blobs-vs-relational-tables","Flat files vs JSON blobs vs relational tables",[12,2557,2558],{},"There are three common ways form tools store responses, in increasing order of structure:",[323,2560,2561,2567,2573],{},[326,2562,2563,2566],{},[23,2564,2565],{},"Flat files / spreadsheets."," One row per submission, one column per question. Simple and instantly readable, but fragile — columns drift as the form changes, types are unenforced, and joining to other data means manual work.",[326,2568,2569,2572],{},[23,2570,2571],{},"JSON blobs."," The whole response serialized into one document. Flexible and easy to write, but you lose referential integrity, type safety, and efficient querying. PostgreSQL can store JSON, but its own documentation notes that JSON should be used when the structure is genuinely variable — not as a default for data you intend to query relationally.",[326,2574,2575,2578],{},[23,2576,2577],{},"Relational tables."," Each question becomes a typed column and each response a row, with foreign keys connecting related records. More upfront discipline, but the data is queryable with SQL, joinable to other systems, and protected by constraints from day one.",[16,2580,2582],{"id":2581},"how-roundpushpin-approaches-form-data-architecture","How RoundPushPin approaches form data architecture",[12,2584,2585,2588],{},[23,2586,2587],{},"RoundPushPin maps every form to a real PostgreSQL schema rather than a blob."," Each question becomes a typed column, each response a row, and form structure is versioned with migrations — so your responses are queryable, joinable, and exportable to CSV or BigQuery without an ETL project. The sections below go deeper on each part of this model.",{"title":106,"searchDepth":107,"depth":107,"links":2590},[2591,2592,2593,2594],{"id":2528,"depth":107,"text":2529},{"id":2538,"depth":107,"text":2539},{"id":2554,"depth":107,"text":2555},{"id":2581,"depth":107,"text":2582},"2026-02-02","Form data architecture is how a form tool persists, structures, and exposes responses. This guide compares flat files, JSON blobs, and relational databases — and why the model you choose decides what you can do with your data later.",[2598,2601,2604],{"q":2599,"a":2600},"What is the best way to store form data?","For data you'll query or join, a relational database is the best fit: each question becomes a typed column and each response a row, so the data stays consistent and queryable. Flat files and JSON blobs are simpler but harder to analyze and validate.",{"q":2602,"a":2603},"Is JSON or relational storage better for form responses?","Relational storage is better when you need to query, join, or validate responses, because it enforces types and relationships. JSON is better only when the structure is genuinely variable — and most form data is regular, so it benefits from a relational model.",{"q":2605,"a":2606},"Does RoundPushPin store form responses in a database?","Yes. RoundPushPin maps every form to a PostgreSQL schema, storing each question as a typed column and each response as a row, so the data is queryable from day one.","/images/knowledge/form-data-architecture.png",{},{"title":2520,"description":2596},[2611,2612,2615],{"title":1140,"url":1141,"publisher":1142},{"title":2613,"url":2614,"publisher":1146},"PostgreSQL Documentation — Data Types","https://www.postgresql.org/docs/current/datatype.html",{"title":2616,"url":2617,"publisher":1146},"JSON Types","https://www.postgresql.org/docs/current/datatype-json.html","knowledge/form-data-architecture",[2620,1051],"data architecture",[2622,2623,2624],"Form data architecture is the model a form tool uses to store responses — flat files, JSON blobs, or relational tables.","The model is hard to change later and caps what you can do: query, join, validate, export.","Relational storage (typed columns, real rows) makes responses a queryable asset rather than a pile of exports.","0WnsYBwYZdtd-2pT6qsc1BvjmvDIuNFWh6r0E2Ntnis",{"id":2627,"title":2628,"author":7,"body":2629,"date":2704,"description":2705,"draft":116,"extension":117,"faqs":2706,"image":2716,"isPillar":116,"meta":2717,"navigation":128,"path":2718,"pillar":1041,"pillarName":1041,"seo":2719,"sources":2720,"stem":2725,"tags":2726,"takeaways":2729,"updated":1120,"__hash__":2730},"knowledge/knowledge/what-is-cortexform.md","What Is RoundPushPin?",{"type":9,"value":2630,"toc":2698},[2631,2634,2638,2649,2653,2672,2676,2684,2688],[12,2632,2633],{},"RoundPushPin is an self-hosted conversational form builder that stores every response in a relational PostgreSQL database instead of an unstructured JSON blob. It pairs the one-question-at-a-time experience people expect with a data architecture teams can actually query, join, and trust.",[16,2635,2637],{"id":2636},"what-is-roundpushpin","What is RoundPushPin?",[12,2639,2640,2648],{},[23,2641,2642,2643,2647],{},"RoundPushPin is a form builder — a ",[65,2644,2646],{"href":2645},"/compare/typeform","Typeform alternative"," — built around structured data."," It keeps the conversational interface that drives high completion, but underneath it maps each form to a real database schema: every question is a typed column, every response a row. The result is a tool that produces clean, queryable data by default, not a pile of exports to clean up later.",[16,2650,2652],{"id":2651},"how-does-roundpushpin-work","How does RoundPushPin work?",[12,2654,2655,2658,2659,2661,2662,2665,2666,2668,2669,2671],{},[23,2656,2657],{},"You build one master template, and RoundPushPin turns it into a relational schema automatically."," From that single template you can replicate ",[65,2660,1404],{"href":685},", translate it into ",[65,2663,2664],{"href":1233},"10+ languages",", and reuse a question set across items with ",[65,2667,1312],{"href":1134}," — while every version sends answers to one place you can ",[65,2670,785],{"href":680}," or export to CSV and BigQuery.",[16,2673,2675],{"id":2674},"what-makes-roundpushpin-different","What makes RoundPushPin different?",[12,2677,2678,2683],{},[23,2679,2680,2681,180],{},"Its ",[65,2682,2620],{"href":1112}," Most form tools store responses as JSON blobs or spreadsheet rows; RoundPushPin stores them relationally, which is the difference between data you can question and data you have to wrangle. It is also self-hosted, so your responses live on your own infrastructure.",[16,2685,2687],{"id":2686},"who-is-roundpushpin-for","Who is RoundPushPin for?",[12,2689,2690,2693,2694,180],{},[23,2691,2692],{},"Teams whose forms feed real decisions — product, research, operations, and developers — and who care what happens to the data after \"submit.\" If you've ever exported form responses just to reshape them before you could analyze them, RoundPushPin is built for you."," Start with ",[65,2695,2697],{"href":2696},"/knowledge/why-relational-data","why your form data deserves a real database",{"title":106,"searchDepth":107,"depth":107,"links":2699},[2700,2701,2702,2703],{"id":2636,"depth":107,"text":2637},{"id":2651,"depth":107,"text":2652},{"id":2674,"depth":107,"text":2675},{"id":2686,"depth":107,"text":2687},"2026-01-30","RoundPushPin is an self-hosted conversational form builder that stores responses in a relational PostgreSQL database instead of JSON blobs — a Typeform alternative for teams that need structured, queryable data.",[2707,2710,2713],{"q":2708,"a":2709},"Is RoundPushPin free?","RoundPushPin is self-hostable, and it offers a paid hosted plan with a 7-day free trial. Self-hosted, you provide the infrastructure; the hosted plan handles that for you.",{"q":2711,"a":2712},"Is RoundPushPin a Typeform alternative?","Yes — it offers the same conversational, one-question-at-a-time experience, but stores responses in a relational PostgreSQL database you can query with SQL, rather than inside a hosted platform.",{"q":2714,"a":2715},"What can you build with RoundPushPin?","Surveys, applications, registrations, intake and onboarding flows — any form where responses become data you need to query, join, or analyze. It's aimed at teams whose forms feed real decisions.","/images/knowledge/what-is-cortexform.png",{},"/knowledge/what-is-cortexform",{"title":2628,"description":2705},[2721,2722],{"title":1140,"url":1141,"publisher":1142},{"title":2723,"url":2724,"publisher":1146},"PostgreSQL Documentation","https://www.postgresql.org/docs/current/","knowledge/what-is-cortexform",[2727,2728],"product","introduction",[],"nVTvffB3sCmWMvyhfgDO7tflvxIBc7O2ZWe6dCpXFZs",{"id":2732,"title":2733,"author":7,"body":2734,"date":3032,"description":3033,"draft":116,"extension":117,"faqs":3034,"image":3044,"isPillar":116,"meta":3045,"navigation":128,"path":2696,"pillar":2149,"pillarName":2150,"seo":3046,"sources":3047,"stem":3051,"tags":3052,"takeaways":3055,"updated":2595,"__hash__":3059},"knowledge/knowledge/why-relational-data.md","Why Your Form Data Deserves a Real Database",{"type":9,"value":2735,"toc":3026},[2736,2739,2743,2747,2753,2756,2871,2874,2900,2904,2910,2913,2968,2971,2975,2978,3005,3009,3019,3022],[12,2737,2738],{},"Most form builders store your responses as JSON documents. It works — until you need to actually do something with that data. Here's why we chose a relational model instead.",[12,2740,2741],{},[573,2742],{"alt":2550,"src":2551},[16,2744,2746],{"id":2745},"why-are-json-blobs-a-problem-for-form-data","Why are JSON blobs a problem for form data?",[12,2748,2749,2752],{},[23,2750,2751],{},"JSON blobs are easy to store but hard to use: they offer no referential integrity, no cross-form queries, no type safety, and no efficient indexing."," As soon as you need to analyze, join, or validate responses, the unstructured format works against you.",[12,2754,2755],{},"When a user submits a form on most platforms, the response gets serialized into something like this:",[2757,2758,2762],"pre",{"className":2759,"code":2760,"language":2761,"meta":106,"style":106},"language-json shiki shiki-themes github-light github-dark","{\n  \"form_id\": \"abc123\",\n  \"responses\": {\n    \"name\": \"Jane Doe\",\n    \"email\": \"jane@example.com\",\n    \"role\": \"Engineer\",\n    \"experience\": \"5-10 years\"\n  },\n  \"submitted_at\": \"2026-01-28T10:00:00Z\"\n}\n","json",[2107,2763,2764,2773,2789,2798,2811,2824,2837,2848,2854,2865],{"__ignoreMap":106},[2765,2766,2769],"span",{"class":2767,"line":2768},"line",1,[2765,2770,2772],{"class":2771},"sVt8B","{\n",[2765,2774,2775,2779,2782,2786],{"class":2767,"line":107},[2765,2776,2778],{"class":2777},"sj4cs","  \"form_id\"",[2765,2780,2781],{"class":2771},": ",[2765,2783,2785],{"class":2784},"sZZnC","\"abc123\"",[2765,2787,2788],{"class":2771},",\n",[2765,2790,2792,2795],{"class":2767,"line":2791},3,[2765,2793,2794],{"class":2777},"  \"responses\"",[2765,2796,2797],{"class":2771},": {\n",[2765,2799,2801,2804,2806,2809],{"class":2767,"line":2800},4,[2765,2802,2803],{"class":2777},"    \"name\"",[2765,2805,2781],{"class":2771},[2765,2807,2808],{"class":2784},"\"Jane Doe\"",[2765,2810,2788],{"class":2771},[2765,2812,2814,2817,2819,2822],{"class":2767,"line":2813},5,[2765,2815,2816],{"class":2777},"    \"email\"",[2765,2818,2781],{"class":2771},[2765,2820,2821],{"class":2784},"\"jane@example.com\"",[2765,2823,2788],{"class":2771},[2765,2825,2827,2830,2832,2835],{"class":2767,"line":2826},6,[2765,2828,2829],{"class":2777},"    \"role\"",[2765,2831,2781],{"class":2771},[2765,2833,2834],{"class":2784},"\"Engineer\"",[2765,2836,2788],{"class":2771},[2765,2838,2840,2843,2845],{"class":2767,"line":2839},7,[2765,2841,2842],{"class":2777},"    \"experience\"",[2765,2844,2781],{"class":2771},[2765,2846,2847],{"class":2784},"\"5-10 years\"\n",[2765,2849,2851],{"class":2767,"line":2850},8,[2765,2852,2853],{"class":2771},"  },\n",[2765,2855,2857,2860,2862],{"class":2767,"line":2856},9,[2765,2858,2859],{"class":2777},"  \"submitted_at\"",[2765,2861,2781],{"class":2771},[2765,2863,2864],{"class":2784},"\"2026-01-28T10:00:00Z\"\n",[2765,2866,2868],{"class":2767,"line":2867},10,[2765,2869,2870],{"class":2771},"}\n",[12,2872,2873],{},"This is easy to store. It's flexible. But it has serious limitations:",[323,2875,2876,2882,2888,2894],{},[326,2877,2878,2881],{},[23,2879,2880],{},"No referential integrity."," Delete a question and orphaned data floats around forever.",[326,2883,2884,2887],{},[23,2885,2886],{},"No cross-form queries."," Want the average completion time grouped by question type across all forms? You need to deserialize every response.",[326,2889,2890,2893],{},[23,2891,2892],{},"No type safety."," The \"experience\" field could contain anything — a number, a string, an array.",[326,2895,2896,2899],{},[23,2897,2898],{},"No indexing."," You can't efficiently query \"all responses where role = Engineer\" without scanning every document.",[16,2901,2903],{"id":2902},"how-does-a-relational-model-store-form-data","How does a relational model store form data?",[12,2905,2906,2909],{},[23,2907,2908],{},"In a relational model, every form maps to a structured PostgreSQL schema: each question becomes a typed column and each response becomes a row."," Foreign keys keep everything connected, so nothing gets orphaned and every field has a known type.",[12,2911,2912],{},"In RoundPushPin, the same data looks like this:",[2757,2914,2917],{"className":2915,"code":2916,"language":2302,"meta":106,"style":106},"language-sql shiki shiki-themes github-light github-dark","-- Forms table\nSELECT * FROM forms WHERE id = 'abc123';\n\n-- Blocks (questions) with enforced types\nSELECT * FROM blocks WHERE form_id = 'abc123' ORDER BY position;\n\n-- Responses with proper columns\nSELECT name, email, role, experience\nFROM responses_abc123\nWHERE submitted_at > '2026-01-01';\n",[2107,2918,2919,2924,2929,2934,2939,2944,2948,2953,2958,2963],{"__ignoreMap":106},[2765,2920,2921],{"class":2767,"line":2768},[2765,2922,2923],{},"-- Forms table\n",[2765,2925,2926],{"class":2767,"line":107},[2765,2927,2928],{},"SELECT * FROM forms WHERE id = 'abc123';\n",[2765,2930,2931],{"class":2767,"line":2791},[2765,2932,2933],{"emptyLinePlaceholder":128},"\n",[2765,2935,2936],{"class":2767,"line":2800},[2765,2937,2938],{},"-- Blocks (questions) with enforced types\n",[2765,2940,2941],{"class":2767,"line":2813},[2765,2942,2943],{},"SELECT * FROM blocks WHERE form_id = 'abc123' ORDER BY position;\n",[2765,2945,2946],{"class":2767,"line":2826},[2765,2947,2933],{"emptyLinePlaceholder":128},[2765,2949,2950],{"class":2767,"line":2839},[2765,2951,2952],{},"-- Responses with proper columns\n",[2765,2954,2955],{"class":2767,"line":2850},[2765,2956,2957],{},"SELECT name, email, role, experience\n",[2765,2959,2960],{"class":2767,"line":2856},[2765,2961,2962],{},"FROM responses_abc123\n",[2765,2964,2965],{"class":2767,"line":2867},[2765,2966,2967],{},"WHERE submitted_at > '2026-01-01';\n",[12,2969,2970],{},"Each form gets a structured schema. Each question maps to a typed column. Foreign keys ensure nothing gets orphaned.",[16,2972,2974],{"id":2973},"what-does-relational-form-storage-enable","What does relational form storage enable?",[12,2976,2977],{},"With relational storage, you can:",[1457,2979,2980,2987,2993,2999],{},[326,2981,2982,2781,2985],{},[23,2983,2984],{},"Run analytics directly",[2107,2986,2212],{},[326,2988,2989,2992],{},[23,2990,2991],{},"Join with other data",": Connect form responses to your user table, CRM, or any other system",[326,2994,2995,2998],{},[23,2996,2997],{},"Enforce constraints",": Required fields, unique values, valid email formats — at the database level",[326,3000,3001,3004],{},[23,3002,3003],{},"Version your schema",": Track changes to form structure over time with migrations",[16,3006,3008],{"id":3007},"whats-the-trade-off-of-a-relational-schema","What's the trade-off of a relational schema?",[12,3010,3011,3014,3015,180],{},[23,3012,3013],{},"Relational schemas are less flexible than JSON."," Adding a question means adding a column. But we think this trade-off is worth it. The discipline of a structured schema pays dividends in data quality, queryability, and long-term maintainability — a principle at the heart of ",[65,3016,3018],{"href":3017},"/knowledge/building-better-forms","our product vision",[12,3020,3021],{},"Your form data isn't throwaway. It deserves a real database.",[3023,3024,3025],"style",{},"html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}",{"title":106,"searchDepth":107,"depth":107,"links":3027},[3028,3029,3030,3031],{"id":2745,"depth":107,"text":2746},{"id":2902,"depth":107,"text":2903},{"id":2973,"depth":107,"text":2974},{"id":3007,"depth":107,"text":3008},"2026-01-28","JSON blobs vs relational tables: why we chose PostgreSQL as the backbone of RoundPushPin and what it means for your data.",[3035,3038,3041],{"q":3036,"a":3037},"Why use a relational database for form responses instead of JSON?","Relational tables enforce types and relationships and let you query and join responses with SQL, while JSON blobs store everything in one document you must deserialize to analyze. For data you'll actually use, relational wins on integrity and queryability.",{"q":3039,"a":3040},"Can you store form data in PostgreSQL?","Yes. PostgreSQL suits form data well: each question becomes a typed column, constraints enforce required and format rules, and you query responses with standard SQL. RoundPushPin maps every form to a PostgreSQL schema automatically.",{"q":3042,"a":3043},"What's wrong with storing form responses as JSON blobs?","JSON blobs lack referential integrity, type safety, and efficient indexing, so you can't easily validate, join, or query responses without deserializing every document. They're flexible but become a liability once you need to analyze the data.","/images/knowledge/why-relational-data.png",{},{"title":2733,"description":3033},[3048,3049,3050],{"title":2616,"url":2617,"publisher":1146},{"title":2396,"url":2397,"publisher":1146},{"title":817,"url":818,"publisher":819},"knowledge/why-relational-data",[3053,3054],"technical","architecture",[3056,3057,3058],"JSON blobs are easy to write but offer no type safety, no joins, and no referential integrity.","A relational model maps each question to a typed column and each response to a row you can query with SQL.","RoundPushPin stores responses in PostgreSQL automatically, so your data is queryable and joinable from day one.","lOhUA5IBPXmTygdlUyB9c6jupBhbfDak7GF2SOtSymk",{"id":3061,"title":3062,"author":7,"body":3063,"date":3203,"description":3204,"draft":116,"extension":117,"faqs":3205,"image":3215,"isPillar":116,"meta":3216,"navigation":128,"path":3017,"pillar":130,"pillarName":131,"seo":3217,"sources":3218,"stem":3221,"tags":3222,"takeaways":3224,"updated":2056,"__hash__":3225},"knowledge/knowledge/building-better-forms.md","Building Better Forms: Our Product Vision",{"type":9,"value":3064,"toc":3192},[3065,3068,3072,3078,3081,3084,3088,3093,3096,3100,3106,3110,3113,3117,3120,3124,3162,3166,3169,3189],[12,3066,3067],{},"Forms are everywhere. Job applications, customer surveys, event registrations, onboarding flows. They're one of the most common ways software collects data from humans. Yet the tools we use to build them force us to choose between great UX and great data.",[16,3069,3071],{"id":3070},"do-you-have-to-choose-between-form-ux-and-data-quality","Do you have to choose between form UX and data quality?",[12,3073,3074,3077],{},[23,3075,3076],{},"No — that trade-off is a false one."," Polished form tools tend to hide your data in a black box, while custom-built forms give you data control at the cost of weeks of work and weaker UX. RoundPushPin gives you both: conversational UX on top of a structured, queryable database.",[12,3079,3080],{},"On one side, you have Typeform and its clones. Beautiful, conversational, high completion rates. But your data lives in a black box. On the other side, you have custom-built forms. Full control over your data model, but you're spending weeks building something that still doesn't look as good.",[12,3082,3083],{},"RoundPushPin eliminates this trade-off.",[16,3085,3087],{"id":3086},"what-are-roundpushpins-design-principles","What are RoundPushPin's design principles?",[3089,3090,3092],"h3",{"id":3091},"_1-respondent-experience-first","1. Respondent Experience First",[12,3094,3095],{},"Every form built with RoundPushPin uses a one-question-at-a-time interface. CSS Scroll Snap provides native-feeling transitions. Vue's transition system handles animations. The result feels smooth, focused, and respectful of the respondent's attention.",[3089,3097,3099],{"id":3098},"_2-data-as-a-first-class-citizen","2. Data as a First-Class Citizen",[12,3101,3102,3103,180],{},"Behind the scenes, every form maps to a PostgreSQL schema. We use Drizzle ORM with TypeScript to define table structures that mirror your form's questions. This means your data is queryable, joinable, and analyzable from the moment it's collected — the reasoning behind ",[65,3104,3105],{"href":2696},"choosing a relational model over JSON blobs",[3089,3107,3109],{"id":3108},"_3-developer-experience-matters","3. Developer Experience Matters",[12,3111,3112],{},"RoundPushPin is built with TypeScript end-to-end. Validation schemas defined with Zod work on both client and server — the same rules that provide real-time feedback to respondents also protect your API. No duplication, no drift.",[3089,3114,3116],{"id":3115},"_4-own-your-infrastructure","4. Own Your Infrastructure",[12,3118,3119],{},"We believe your data should live on your servers. RoundPushPin is self-hosted by default. A Docker Compose file gets you running with PostgreSQL in one command. No vendor lock-in, no data residency concerns, no surprise pricing.",[16,3121,3123],{"id":3122},"what-is-roundpushpin-built-with","What is RoundPushPin built with?",[1457,3125,3126,3132,3138,3144,3150,3156],{},[326,3127,3128,3131],{},[23,3129,3130],{},"Nuxt 4"," for server-side rendering and client-side interactivity",[326,3133,3134,3137],{},[23,3135,3136],{},"FormKit"," for schema-driven form rendering",[326,3139,3140,3143],{},[23,3141,3142],{},"Drizzle ORM"," for type-safe database operations",[326,3145,3146,3149],{},[23,3147,3148],{},"PostgreSQL"," for relational data storage",[326,3151,3152,3155],{},[23,3153,3154],{},"Pinia"," for client-side state management",[326,3157,3158,3161],{},[23,3159,3160],{},"Zod"," for isomorphic validation",[16,3163,3165],{"id":3164},"what-is-roundpushpin-building-next","What is RoundPushPin building next?",[12,3167,3168],{},"Our roadmap is focused on three areas:",[323,3170,3171,3177,3183],{},[326,3172,3173,3176],{},[23,3174,3175],{},"The Form Builder",": A visual editor for creating forms with conditional logic, validation rules, and custom themes",[326,3178,3179,3182],{},[23,3180,3181],{},"The Response Engine",": Real-time data capture with event sourcing for granular analytics",[326,3184,3185,3188],{},[23,3186,3187],{},"The Analytics Layer",": Built-in dashboards for completion rates, drop-off analysis, and response patterns",[12,3190,3191],{},"We're shipping fast and improving constantly. If you care about forms and data, follow along.",{"title":106,"searchDepth":107,"depth":107,"links":3193},[3194,3195,3201,3202],{"id":3070,"depth":107,"text":3071},{"id":3086,"depth":107,"text":3087,"children":3196},[3197,3198,3199,3200],{"id":3091,"depth":2791,"text":3092},{"id":3098,"depth":2791,"text":3099},{"id":3108,"depth":2791,"text":3109},{"id":3115,"depth":2791,"text":3116},{"id":3122,"depth":107,"text":3123},{"id":3164,"depth":107,"text":3165},"2026-01-25","How RoundPushPin reimagines the form-building experience with conversational UX, developer-first design, and structured data.",[3206,3209,3212],{"q":3207,"a":3208},"What makes a good form builder?","One that delivers a high-completion experience and keeps the resulting data usable. Many tools optimize the first and neglect the second; the better question after 'how does it look?' is 'how do I query this data?'",{"q":3210,"a":3211},"Why does form data structure matter?","Because the storage model caps what you can do later: structured, typed data is queryable and joinable, while unstructured blobs must be wrangled before any analysis. Structure is the difference between data you can question and data you fight.",{"q":3213,"a":3214},"Can I self-host RoundPushPin?","Yes. RoundPushPin is self-hosted, built with TypeScript end to end, so you can run it on your own infrastructure and own your data.","/images/knowledge/building-better-forms.png",{},{"title":3062,"description":3204},[3219,3220],{"title":429,"url":430,"publisher":140},{"title":425,"url":426,"publisher":427},"knowledge/building-better-forms",[2727,3223],"vision",[],"ZaP-Ua9nq9rSM2PVDqRGSDwZJqhOKm3tSDgefhD4ovk",1780692422737]