For supported question types, you can designate one answer choice (typically “Other (please specify)”) as a specify_option. When a respondent selects that choice, the UI opens a small text box using your specify_text prompt (defaults to “Please specify”).
The typed verbatim is stored, but the recorded choice is still the option’s label (e.g., “Other (please specify)”). This keeps your single- or multi-select columns clean for counts and quotas, while still capturing the write-in text for later coding and review.
Why this is useful
Clean crosstabs & quotas: analysis is based on the labeled option, not hundreds of unique strings.
Coverage for edge cases: you won’t force respondents to guess if their answer isn’t listed.
Qual insights without messy variables: verbatims are available for coding, taxonomy updates, or QA.
Question types that support specify_option
Question | Method | Supports specify_option | Notes |
Single select | select_question(...) | ✅ | Delegates to multi_choice_question under the hood. |
Multi select | multi_select_question(...) | ✅ | Works alongside exclusive_options and fixed_options. |
Grid (single per row) | grid_select_question(...) | ✅ | The specify choice appears in each row; text box opens per row. |
Grid (multi per row) | grid_multi_select_question(...) | ✅ | Same behavior as above, but allows multiple selections per row. |
Not supported in: rating_question, grid_rating_question, numeric_question, grid_numeric_question, ranking_question, max_diff_question, this_or_that_*, text_question, consent/media questions, etc.
How it appears to respondents
They tap/click the designated option (e.g., Other (please specify)).
A text input pops up with your specify_text (e.g., “Please tell us what we missed”).
They type their answer and proceed. If they unselect the option, the box collapses.
How it looks in your data
Main response column(s): value = the option label (e.g., Other (please specify)).
Companion verbatim field: the typed text is stored separately and linked to the response.
Analysts can scan these verbatims to see emerging themes and decide whether to add new coded options later.
Quick recipes
1) Single-select with “Other, please specify”
s.select_question( "Which of these best describes your role?", options=["Marketing", "Product", "Engineering", "Sales", "Other (please specify)"], specify_option="Other (please specify)", specify_text="What is your role?" )
2) Multi-select with exclusive “Other”
s.multi_select_question( "Which tools do you use regularly? Select all that apply.", options=["Figma", "Jira", "Notion", "Slack", "Other (please specify)"], specify_option="Other (please specify)", specify_text="Which tool?", exclusive_options=["Other (please specify)"], # prevents combining with other picks fixed_options=["Other (please specify)"] # keeps it anchored in the list )
3) Grid (single per row) with “Other” in each row
s.grid_select_question( "For each task, which app do you mainly use?", row_name="Task", rows=["Design", "Planning", "Communication"], options=["Figma", "Notion", "Slack", "Other (please specify)"], specify_option="Other (please specify)", specify_text="Name the app" )
4) Grid (multi per row) with “Other” in each row
s.grid_multi_select_question( "For each task, which apps do you use? Select all that apply.", row_name="Task", rows=["Design", "Planning", "Communication"], options=["Figma", "Notion", "Slack", "Other (please specify)"], specify_option="Other (please specify)", specify_text="Add an app" )
FAQ
Q: Will the write-in text change the recorded option?
A: No. The recorded choice stays as the option label (e.g., “Other (please specify)”). The verbatim is stored alongside it.
Q: Can I randomize options and still keep “Other” last?
A: Yes. Add “Other (please specify)” to fixed_options.
Q: Can I validate or limit the specify text?
A: No. If you need stricter rules, add a conditional text_question follow-up with your validator and use the specify verbatim as context.
Q: How is this different from other_options?
A: other_options simply adds more predefined choices. specify_option turns one of your choices into a write-in trigger with stored verbatim.

