Check blank and over-limit text in Make before routing
Create two make routes for blanks/short/over-limit text. Follow the filters and check for empty string issue. Don't start using real submissions till you have these two.

Create a practice make scenario with the checks for blank or too much text. Send the short, non-blank text to a human review. All the other cases to the check input path. Neither path publishes or sends.
To create it you will need a make account (I made a recorded trial using free and used 15 credits. It depends on what records/modules you use).
If you already have a make account, use that for this exercise. Login to that account before creating the scenario.
Practice with your existing Make account if you have one. Login to your account before creating the scenario.
Practice only
The trial handled the 7 inputs fine. The final output returned null for an empty string. Keep live destinations unplugged until you can run a retry test and verify the empty string does not change.
The picture represents decision rule (not Make's UI). 500 units are UTF-16 code units (some emoji are counted twice).
1. Add fictional input
Make a new scenario, turning scheduling off. Then add JSON > Parse JSON. Copy/paste this initial array into the JSON string:
[ {"id":"text","original_text":"Please check this draft."}, {"id":"empty","original_text":""}, {"id":"spaces","original_text":" "}]
Create a data structure with text id and original_text fields (or just run Parse JSON by itself to expose them for mapping). One bundle for each array item. Here's the JSON instructions for Make (opens in a new tab).
Use unique IDs and strings. Field missing, null, numbers, arrays need to be handled specially.
2. Measure the text
Add Tools > Set multiple variables Create:
count = length(1.original_text)- blank_count = length(trim(1.original_text))
Take the original_text Parse JSON token. (Your module number might not be 1) Make's text-function reference (opens in a new tab) has functions for length and trim.
count is for original text blank_count is for what's left after trim (and if it's blank text it's 0) Don't change the original. For the starter array you should get count/blank_count pairs of 24/24. 0/0. 3/0
3. Set two route filters
Add Flow control > Router + for each route add Tools > Set multiple variables module. Add these filters using mapped numeric variables: Candidate for human review: blank_count > 0 AND count <= 500 Check input: blank_count = 0 OR count > 500
(You need to have a different filter per route. Order of routes won't stop duplicates from occuring. Read Make's router instructions (opens in a new tab))
In both terminal modules: Map id, original_text from Parse JSON. Map both counts. For candidate route: Terminal = candidate_for_human_review Reason = gate_only For check_input route: Terminal = manual_review Reason template: if(2.blank_count = 0; blank; over_limit) (replace 2.blank_count with the mapped blank_count token from your calulation module. Make sure you check this template you got from the documentation in your run.)
4. Check the output before using real text
Run with dummy boundary data first. Need one output per ID:
- For the boundary case: add a string with exactly 499 uppercase A characters. add a string with exactly 500 uppercase A characters. the strings are not blank and the number of characters are <= 500, so both are candidate for human review, which makes terminal = candidate_for_human_review reason = gate_only. We do not send/publish the text upon passing the gate.
- Test input (precisely 501 uppercase A's): count 501 (non-blank).
Path through: Check input.
Why? Because count > 500.
Terminal module is: terminal
manual_reviewreasonover_limit - Empty string or 500 spaces. Check input. Blank.
- space, tab, carriage return, newline, vertical tab, form feed: check input, blank. JSON value:
" \t\r\n\u000b\f". - Create this input consisting of the exact 499 uppercase A's, followed immediately by one emoji of 😀. Note: there is no space between the last A and the emoji. For the trial that we captured, this would have count 501, so it would have gone through the Check input path, with terminal
manual_review, reasonover_limit.
The 7-input trail agrees with those decisions. But the Parse JSON left empty string as-is, while the input/output of the final module shows null. The other 6 original strings remain as-is. Only suggested fix with an explicit empty-string mapping (not going through second native run yet).
Look at each original, type/value. Not just route. Try the same inputs after this mapping fix. And, prior to adding a live destination, look at its own length rules, and whitespace. Passing these filters only puts text in a position for human review.
Share this guide
From holdmytwist.com/guides/check-blank-over-limit-text-make-routing/


