Back to blog
New Feature·

Conditional Logic and Scoring — Build Forms That Think

TL;DR: Forms can now branch based on answers. Set up skip logic, conditional jumps, and score-based routing — all without code. Scoring assigns point values to choices, and you can route respondents to different final pages based on their total score.

#The problem with linear forms

Most forms ask every respondent the same questions in the same order. That works for simple use cases, but falls apart when you need:

  • A follow-up question only when someone gives a low rating
  • Different paths for different user types
  • A quiz that shows different results based on performance
  • A survey that skips irrelevant sections

Until now, building this in Polyform meant keeping forms linear and working around the limitations. That changes today.

#Conditional logic

Every page in your form can now have logic rules that control what happens next. The rule builder supports conditions like:

  • Equals / not equals — "If answer is 'Yes', jump to page 5"
  • Contains / not contains — "If answer contains 'enterprise', show the pricing page"
  • Greater than / less than — "If rating is below 3, ask why"
  • Is skipped — "If question was skipped, go to the end"

Rules are evaluated in order — first match wins. You set a default action for when no conditions match, so every respondent always has somewhere to go.

This is enough for most survey branching. But we also added something more powerful.

#Scoring

You can now assign point values to individual choice options — on single choice, multiple choice, and image-choice questions. As respondents answer, their score accumulates.

This unlocks a new set of logic operators:

  • Score greater than / less than — route based on cumulative score
  • Score equals — exact score matching

A typical use case: build a quiz with 10 questions, assign 1 point to each correct answer, then route respondents to different final pages based on their score — "Great job" for 8+, "Not bad" for 5-7, "Try again" for below 5.

You can display the score on the final page using recall syntax: @[Score](__score__) renders the respondent's total.

#Verification

Logic gets complex fast. A form with 15 pages and conditional branching can have orphaned pages that no path reaches, or dead-end branches that don't lead to a final page.

Polly (our AI agent) runs a verification pass after every logic change to catch these issues. You can also test your logic manually in the builder before publishing.

#Trade-offs

Conditional logic adds power but also complexity:

  • Debugging branching forms is harder — the more paths you have, the harder it is to reason about every possible route. Start with 2-3 branches before building complex trees.
  • Score-based routing works best with discrete choices — text inputs, sliders, and open-ended questions don't contribute to scores.
  • Rules evaluate in order — if you have overlapping conditions, the first match wins. This is intentional but can be surprising if you're not careful about rule ordering.

#Getting started

Open any form in the builder, click on a page, and look for the logic tab. From there, add conditions and define where each path leads.

Scoring is available in the page settings for choice-based questions — toggle it on and assign point values to each option.

Both features are available on all plans.