Validate Structured Responses (e.g., Date Format or List)

“Split by Flow Result” helps you validate and extract multiple values from a single contact message when those values are separated by a delimiter (such as a space, period, or +). This is useful when you want fast data capture in one message—while still ensuring each field is formatted correctly.

Validate multiple values from one message

If you just need the essentials, follow this quick path:

  1. Define the format (keyword + delimiter) and show an example
  2. Collect the raw message into a result
  3. Remove the keyword and isolate the delimited string
  4. Validate each field using Split by Flow Result
  5. Confirm back the extracted values
  6. Scale up using FIELD() when you need more fields

You’ll end up with clean, validated results (gender/name/birth year, etc.) you can store, report on, or send to a webhook.

Step-by-Step Process

1
Define your structured input format

  1. Start by choosing a format and delimiter that contacts can follow consistently.
  2. Example format:

    • birth [gender]+[child_name]+[mother_birth_year]
    • Example submission: birth f+Noel+1985
  3. In this pattern:

    • The first word (birth) acts as the keyword that starts the flow.
    • The remaining values are separated by +.

[CAPTURE: Example message format displayed in a Send Message node: “Reply: birth m+John+1990”.]

💡
Tip: Keep your format short and show an example in the message you send. Most formatting errors happen when contacts don’t see a concrete sample.

2
Collect the incoming message into a result variable

  1. Add a Wait for Response node.
  2. Use an open-ended rule that allows messages that contain your keyword (so you don’t reject valid submissions).
  3. Save the result with a clear name (example: message).

[CAPTURE: Wait for Response node saving the contact reply as result “message”.]

⚙️
Technical Detail: Split by Flow Result evaluates flow results (@results.*). It cannot directly evaluate @input.text, so you must save the input first.

3
Remove the keyword and isolate the delimited fields (Split by Expression)

  1. Because the first word is the keyword (birth), strip it out before parsing.
  2. Add a Split by Expression node (or an expression step depending on your UI).
  3. Use an expression that removes the first word from the incoming message:

    • @(REMOVE_FIRST_WORD(input.text))
  4. Save the output as a result variable (example: fields).
  5. This should leave only: f+Noel+1985

[CAPTURE: Split by Expression node showing the expression @(REMOVE_FIRST_WORD(input.text)) and saving the result as “fields”.]

⚠️
Warning: If you don’t remove the keyword first, the first “field” may become the keyword instead of the value you expect.

4
Validate the first field (Gender) with “Split by Flow Result”

  1. Add a Split by Flow Result node.
  2. Select the flow result you want to evaluate: @results.fields.
  3. In the Advanced section, enable Delimit Result and set the delimiter to +.
  4. Set the index to evaluate the first field (Gender).
  5. Add response rules to map short values to meaningful categories:

    • m → “Male”
    • f → “Female”
  6. Save the evaluated value into a new result variable (example: gender).
  7. If Gender is invalid, route to a Send Message node that explains the expected format and asks the contact to resubmit.

[CAPTURE: Split by Flow Result node showing delimiter “+”, field index = 1, rules for “m” and “f”, and saving as “gender”.]

💡
Tip: Echo the contact’s submission back (e.g., You sent: @results.fields) so they can compare it to the expected format.

5
Validate the second field (Child Name)

  1. Add another Split by Flow Result node.
  2. Evaluate @results.fields.
  3. Enable Delimit Result with delimiter +.
  4. Set the index to the second field (Name).
  5. Add a rule like is not empty (or your equivalent validation rule, depending on your UI).
  6. Save the value as a result variable (example: name).
  7. If Name is missing, send an error message and ask for resubmission.

[CAPTURE: Split by Flow Result node for Name, delimiter “+”, index = 2, rule “is not empty”, save as “name”.]

6
Validate the third field (Mother’s Birth Year)

  1. Add a third Split by Flow Result node.
  2. Evaluate @results.fields.
  3. Enable Delimit Result with delimiter +.
  4. Set the index to the third field (Birth Year).
  5. Use a numeric validation rule such as has a number between (example range: 1900 to current year).
  6. Save the value as a result variable (example: birth_year).
  7. If Birth Year is invalid, send an error message and request resubmission.

[CAPTURE: Split by Flow Result node for Birth Year with rule “has a number between”, and save as “birth_year”.]

⚠️
Warning: Choose a birth year range that fits your context (and avoids accepting obvious invalid data like 0000 or 9999).

7
Confirm submission using the extracted values

  1. Finish with a confirmation message that references the saved results:
  2. Example confirmation content:

    • Gender: @results.gender
    • Name: @results.name
    • Mother birth year: @results.birth_year

[CAPTURE: Final Send Message node confirming the structured submission using @results variables.]

8
Need more fields? Use FIELD() with Split by Expression

  1. If you outgrow the split-by-result approach (for example, more than a few fields), use delimiter parsing via expression.
  2. Function pattern:

    • FIELD(text, index, delimiter)
  3. Example:

    • @(FIELD(results.fields, 1, "+"))

[CAPTURE: Split by Expression node using FIELD() to extract a specific index from a delimited string.]

⚙️
Technical Detail: This approach gives you direct indexed access to values in a delimited string without creating multiple Split by Flow Result nodes.

Common Issues & Quick Fixes

Contacts keep submitting the wrong format

Problem: You receive messages like birth Noel 1985 instead of birth f+Noel+1985.

Fix:

  • Show the exact format in the prompt and include one example.
  • In your error message, repeat what they sent (@results.fields) and show the correct sample.
  • Use quick replies only when the channel supports it; for SMS, keep examples simple.
My Split by Flow Result node can’t find the value I want

Problem: The split always routes to “Other” even with valid input.

Fix:

  • Confirm you saved the input as a flow result (@results.fields).
  • Confirm Delimit Result is enabled and the delimiter matches (+, space, or .).
  • Confirm you’re evaluating the correct index (first vs second vs third).
Valid values appear shifted (wrong field in the wrong place)

Problem: Name ends up being treated as Gender, etc.

Fix:

  • Make sure you removed the keyword first (REMOVE_FIRST_WORD).
  • Confirm contacts aren’t adding extra spaces or missing delimiters.
  • Add an early “format check” step that verifies the number of expected delimiters.