Forms: conditional logic

Introduction

Conditional logic is used on forms and decision tools to:

  • progressively show questions or information

  • show different questions or information based on previous responses.

Pre-reading

This guide assumes you’re familiar with how to create a Drupal webform.

See our other articles on forms and privacy.

Process

What you need to know

As for all Drupal forms, you need to create the form and embed it in a Landing page in the CMS. Then you publish or preview that Landing page for testing. (Although there is a test function in Drupal forms, it’s more reliable to test on an SDP front end view.)

Applying and testing conditional logic on forms can take a fair bit of trial and error. You’ll do a lot of refreshing of your published/preview page while setting up and testing logic configuration.

Tip: It helps to have 2 browser windows open side by side - building the form in one and testing the preview in the other. Each time you make a change on the form’s logic, you hit refresh on the other screen to see if your change did what you expected or wanted it to do.

What you need to do

Follow this basic process:

  1. Plan your logic first (see below).

  2. Add all your questions and information in your form in the CMS.

  3. Progressively apply conditions and keep testing.

    • Hidden/visible logic can be applied on text fields (not just on 'questions').

    • Specific logic is mainly used with radio and checkbox elements (e.g. Q2 is visible if the response to Q1 is 'no').

Tip: build screen

When you are in the Build mode on a webform, you can see if conditional logic has been applied to a question or piece of text by looking in the ‘Conditional’ column. Click Edit to add logic.

image-20240919-012002.png

How to use conditional logic settings

When you’re in Edit mode of a form element (a question or piece of text), you’ll see a panel on the right of your screen. Click the ‘Conditions’ tab to apply settings.

image-20240920-003803.png
In this example, we can see that question 4 (at the top in black) is set to be visible if the answer to question 3 is ‘Individual’. You can infer that there will be another question set up if the answer to question 3 is something else.

From the screenshot above:

1 = State: Visible or Hidden (usually 'visible')

2 = All, Any or One (to add more than 1 element so that ‘all’ or ‘any’ are applicable, click the plus icon next to the element)

3 = Options include: Empty / Filled; Checked / Unchecked; Value is /Value is not

Numbering: Because you’re showing and hiding information and questions according to answers chosen on previous questions, it doesn’t make sense to number the questions on the final published form or tool. But while planning and testing the logic and building the form or tool, it’s really useful. You can see on the table below how the numbering helps state the logic/conditions. It also helps when configuring logic and you need to select items on a long dropdown.

Plan your logic

People often set up a flowchart to map out the logic of a form or tool. I find it helpful to transfer this info a document to plan the numbering and the logic. Here’s an example:

Question / Text

Notes

Conditions / email handler

Question / Text

Notes

Conditions / email handler

1 What is your full name?*

Text field, required

 

2 What is your email address?*

Email field, required

 

3 What is your phone number?

Phone number field (10 digits), not required

 

4 What type of enquiry do you have?

4a Question

4b Complaint

Radios, required

na

5 What is your complaint about?

Radios, required

Visible if Q4 value is 4b

5a Melbourne

 

 

5b Geelong

 

 

5c Phillip Island

 

 

6 The next question (specifically for questions about Melbourne)

 

Visible if

Q4 value is 4a

and

Q5 value is 5a

7 The next question (specifically for complaints about Melbourne)

 

Visible if

Q4 value is 4b

and

Q5 value is 5a

8 The next question (specifically for complaints about Geelong)

 

Visible if

Q4 value is 4b

and

Q5 value is 5b

9 Do you like dogs?

Radios, Yes/No

Visible if TBC

9 What is your enquiry about?

Radios, required

Responses only for

Visible if Q9 value is filled

9a Apples

 

If Q4 value is 4a

and

Q5 value is 5a

email apples@vic.gov.au

If Q4 value is 4b

and Q5 value is 5a

email applecomplaints@vic.gov.au

9b Bananas

 

If Q4 value is 4a

and

Q5 value is 5b

email bananas@vic.gov.au

9c Oranges

 

If Q4 value is 4a

and

Q5 value is 5c

email oranges@vic.gov.au

 

Email handlers can have logic too

Refer to Create a Drupal webform - email notifications.

To add an email handler, go to Settings > Emails / Handlers.

On this example from the Email handers screen, you’ll see:

  • on the left are free-text notes on the conditons

  • in the middle is a summary of the settings, notably the ‘reply to’ address and the custom subject line

  • on the right you can see that conditions (logic) have been set

This was a complex setup with many different email addresses and logic that included specific responses to 3 questions.

The State for email handlers is either Enabled or Disabled. The conditions required that all 3 elements needed to have the set value in order for the handler to take the specified action (i.e. send to the specified email address).

 

Disable submissions

On the Settings tab of the form there’s a checkbox to disable submissions. This stops submissions being stored in the Drupal CMS. Submissions will only get emailed to the inbox specified.

Submissions rely on the Submit button being visible (the default setting on all new forms).

Hide the submit button

If you’re building a decision tool and don’t want the user to submit their responses you should hide the submit button.

To remove the default Submit button, click on Edit and tick the Hide submit button checkbox.

 

Â