The WYSIWYG editor doesn't do very well with handling multiple conditional statements (also known as IF, THEN, ELSE statements). The interface can become quite clunky when attempting this. There are also very limited Constituent360 fields that can be selected in the WYSIWYG feature; only Additional Information fields are available. Instead, we can work off of a basic template. I'll create a conditional statement based on State as an example.

<convio:choose>
  <convio:when title="home_stateprov is equal to TX" test="eq" selected="selected">
    <convio:op><convio:session name="1" param="home_stateprov"></convio:session></convio:op>
    <convio:op>TX</convio:op>
    <convio:then>You live in Texas</convio:then>
  </convio:when>
</convio:choose>

Each conditional statement should go inside the <convio:choose> tags unless you are creating "nested" conditional statement (more on this later). We can ignore most of this code, but there are 3 important parts. The "when title" will display in the WYSIWYG for user reference, but it's not important since we are going to use the Plain Text Editor.
  1. <convio:op><convio:session name="1" param="home_stateprov"></convio:session></convio:op>
  2. <convio:op>TX</convio:op>
  3. <convio:then>You live in Texas</convio:then>
For number 1, the param= should contain the Constituent360 field that our conditional is inspecting. In this example, we are conditionalizing based on the value of home_stateprov. You can find the database value for all Constituent360 fields by looking in Database Configuration, or use an HTML inspector while editing a Constituent360 profile.

Number 2 is defining the conditional, which in this example is TX.

and number 3 is the text that will be printed if the conditional is true.

You can repeat this template multiple times if you need multiple conditional responses based on the state that the constituent lives in. Here's an example:

<convio:choose>
  <convio:when title="home_stateprov is equal to TX" test="eq" selected="selected">
    <convio:op><convio:session name="1" param="home_stateprov"></convio:session></convio:op>
    <convio:op>TX</convio:op>
    <convio:then>You live in Texas</convio:then>
  </convio:when>
  <convio:when title="home_stateprov is equal to AZ" test="eq" selected="selected">
    <convio:op><convio:session name="1" param="home_stateprov"></convio:session></convio:op>
    <convio:op>AZ</convio:op>
    <convio:then>You live in Arizona</convio:then>
  </convio:when>
  <convio:when title="home_stateprov is equal to AK" test="eq" selected="selected">
    <convio:op><convio:session name="1" param="home_stateprov"></convio:session></convio:op>
    <convio:op>AK</convio:op>
    <convio:then>You live in Alaska. Why would anyone want to live there?</convio:then>
  </convio:when>
  <convio:otherwise title="Unknown">You do not live in TX, AZ, or AK.</convio:otherwise>
</convio:choose>

Notice how all 4 of these conditionals are contained within the <convio:choose> tag. Also notice the extra tag at the bottom: <convio:otherwise title="Unknown">. This will render a statement if none of the conditionals are met. This is also known as the ELSE statement.

If you would like a conditional statement to render based on whether something is not equal to a certain value, then you would simply change test="eq" to test="neq" (not equal).

What if we wanted to create a "nested" conditional statement based on whether or not multiple values are true? Let's render a conditional based on State and ZIP code.

<convio:choose>
  <convio:when title="You live in TX" test="eq" selected="selected">
    <convio:op><convio:session name="1" param="home_stateprov"></convio:session></convio:op>
    <convio:op>TX</convio:op>
    <convio:then>
<convio:choose>
  <convio:when title="Your zip code is 78758" test="eq" selected="selected">
    <convio:op><convio:session name="1" param="home_zip"></convio:session></convio:op>
    <convio:op>78758</convio:op>
    <convio:then>You live in Austin, Texas.</convio:then>
  </convio:when>
  <convio:when title="Is your zip code 78758?" test="neq">
    <convio:op><convio:session name="1" param="home_zip"></convio:session></convio:op>
    <convio:op>78758</convio:op>
    <convio:then>You do not live in 78758</convio:then>
  </convio:when>
</convio:choose>
</convio:then>
  </convio:when>
</convio:choose>

In this statement, we are testing if 2 values are true. If both are true, it will display "You live in Austin, Texas." If they live in Texas, but their zip code is different, it will say "You do not live in 78758." If they don't live in Texas, than it will not display anything. Since we are rendering data based on "not equal" results, we cannot use an ELSE statement in this conditional.