Skip to main content
iVentureTeam

survey_question_trigger

The icon beside a survey question that says whether its conditional display will actually work, computed live from the list rather than from saved data.

Siddharth JambukiyaSiddharth JambukiyaOdoo Techno-Functional Consultant
August 27, 2026Updated August 28, 20264 min read
Technical namesurvey_question_trigger
Viewslist (view widget, <widget> element)
Modulesurvey, the Surveys app
Used in coreThe question list on a survey form in survey
VersionsOdoo 20.0, Odoo 19.0, Odoo 18.0, Odoo 17.0
No-code setupNo. It is set in view XML and depends on module-specific data
Alternativesweb_ribbon, handle, boolean_icon

What the trigger warning icon does

Conditional display in a survey means a question only appears when an earlier one got a particular answer. The word earlier is doing a lot of work there: a trigger that comes later in the survey can never fire, because the answer does not exist yet when the question is reached.

This widget is the icon that tells you so. Beside each question it shows whether that question's trigger is sound, and its tooltip explains the problem when it is not.

There are two failure modes it catches. A trigger positioned after its target, and a survey configured to pick questions at random, which ignores triggers altogether.

What this means for your team

Broken survey logic is expensive because it fails silently and in front of respondents. A question that never appears looks like a question you did not ask, and the data gap is only obvious once the responses are analyzed.

Catching it at design time, in the list where the questions are being reordered, is the only place the fix is cheap. The reordering is exactly when the breakage is introduced.

Supported options in Odoo 19

The widget takes the standard view widget props and declares no options. It requests two extra fields so its check works regardless of what the list shows. The states it can report are listed below. Read from the survey question trigger source, Odoo 19.0.

OptionTypeWhat it does
triggering_question_idsrequested field dependencyThe questions whose answers control this one. Requested by the widget so the check works whatever the list shows.
triggering_answer_idsrequested field dependencyThe specific answers that reveal this question. Their display names build the normal tooltip.
questions_selectionfield read from the surveyWhen set to random, every trigger is reported as unusable.
sequencefield read from both recordsCompared to detect a trigger positioned after its target, with record identifiers breaking ties.

The check is computed, not stored. The source explains why: reading a stored field would mean saving the survey after every reorder, and unsaved sequence values do not reliably match what the server would say.

Working examples

Placing it

<widget name="survey_question_trigger"/>

Inside the question list. No attributes.

What the tooltip says when sound

Displayed if "Yes".

The triggering answers, joined.

What it says when misplaced

Triggers based on the following questions will not
work because they are positioned after this question

With the offending questions named.

Three states, and why one of them shows nothing

The comparison is the part worth understanding. For each triggering question the widget finds the matching record in the survey's own question list, then compares sequences. When the current question's sequence is lower than the trigger's, the trigger is misplaced. When the sequences are equal, the record identifiers break the tie.

That tie-break matters more than it sounds. Freshly reordered rows often share a sequence until the save recomputes them, and without the identifier comparison the check would go quiet exactly when it is most needed.

The random selection case short-circuits before any of that: if the survey picks questions at random, every trigger is meaningless and the widget says so once rather than per question.

The third state is the interesting one. When every trigger question has been deleted from the list but not yet saved, the widget deliberately renders nothing rather than the normal icon. The source explains that showing the normal state would flicker, because the trigger itself is removed on the next save anyway.

Version compatibility

VersionStatusNotes
Odoo 20.0Partial / changedNot released. Converted to newer conventions; the logic is unchanged.
Odoo 19.0VerifiedVerified against the shipped source.
Odoo 18.0VerifiedSame three states.
Odoo 17.0VerifiedSame three states with older component conventions.
Odoo 16.0Not availableWidget does not exist.

Upgrade note. Present since Odoo 17 with the same three states. Odoo 16 has no equivalent widget, so surveys upgraded from it gain the warnings without any change to the data.

What is changing in Odoo 20

Odoo 20 is expected at Odoo Experience in Brussels, 24 to 26 September 2026. The development branch is unstable and this may still change; we re-verify this page after the release.

Converted to the newer conventions. The development branch replaces the state and reference hooks with their Owl 3 equivalents and drops the element check from the effect condition. The three states and the comparison logic are unchanged.

Common problems and fixes

SymptomCause and fix
A warning about random selectionThe survey is configured to pick questions at random, which ignores triggers. Change the selection mode, or remove the conditional display.
A misplaced trigger warning after reorderingThe trigger question now sits after the question it triggers. Move it back above, or pick a different trigger.
The icon disappears entirelyEvery trigger question was deleted but not yet saved. Expected. The trigger itself is removed on the next save.
No tooltip at allThe question has no triggering questions set. Expected. Conditional display is optional.
The warning persists after fixing the orderThe comparison uses sequence, and equal sequences fall back to record identifiers. Save the survey so sequences are recomputed.
The widget is missingThe Surveys module is not installed in that database. Install Surveys.

Trigger warning icon vs the alternatives

WidgetBest forKey difference
survey_question_triggerWarning that a survey's conditional display will not work, at design timeComputed live from the question list rather than from a stored field
web_ribbonA corner banner on a formA status label rather than a validity check
handleReordering the questions themselvesChanges the order this widget then checks
boolean_iconA yes or no shown as an iconA field value rather than a computed warning

There is no alternative widget. The check exists because the same information is not derivable from the row itself, and a stored field would require a save after every reorder, which is what the source says it was written to avoid.

Frequently asked questions

Why is the check not a stored field?+
The source explains it: reading a stored field would mean saving the survey after every reorder, and unsaved sequence values do not reliably match what the server would compute.
Why does the icon vanish sometimes?+
When every trigger question has been deleted but not yet saved, the widget deliberately renders nothing rather than the normal icon, because the trigger is removed on the next save and showing it would flicker.
What happens with randomly picked questions?+
Every trigger is reported as unusable, because that mode ignores conditional display entirely. It short-circuits before the position check runs.
How does it break a tie between equal sequences?+
By comparing record identifiers, which matters because freshly reordered rows often share a sequence until the save recomputes them.
Which versions have it?+
Odoo 17 onwards. The development branch converts it to newer conventions without changing the logic.

Surveys that ask the right people the right questions

Conditional logic, scoring and follow-up automation are where a survey stops being a form and starts being useful. We implement Odoo Surveys and the workflows behind them, on versions 16 through 19.

Book a free consultation

How this page was produced

The three trigger states, the sequence comparison with its record identifier tie-break, the random selection short circuit and the deliberate blank state on missing triggers were read from the survey question trigger source on the Odoo 19.0 branch, including the comment explaining the computed rather than stored approach. Version coverage comes from comparing the file across the 17.0 and 18.0 branches and its absence on 16.0, plus a comparison against the public development branch. Spotted an error? Tell us and we will correct the page.