How to add {if} statements to emails?


First: I am trying to understand if there is a way to apply an "if" "then" statement regarding anything after with emails. For example, IF John.Smith**** THEN insert/add Company123 (or assign a variable if a company has multiple emails under their umbrella it would still assign it to Company123). I am essentially trying to reference/associate specific emails to specific company names.

Second: How can I apply the {if} {else} formula when entering multiple emails into an email field and have them added separately vs throwing them all in at once? I want them to be recognized as separate emails vs being inserted as one block (If I insert them all at once it'll assume it as one email block, in which case I have to manually copy/paste).

E.g. If I have a list of emails (,,, I want it to add them each individually, after each comma (or specified character). I currently am using this regex below using the {key:tab} {key:shift-tab} in between each extraction but it's conditional upon having 3 emails vs 1, 2, or 4+. I'd like it to be dynamic and look ahead or end/stop, depending on if there is 1 or more emails in the list.

Let me know if you need any clarification.


To your first question, yes the {if} command allows you to implement conditional logic like this. You can learn more here:

To the second, you'll want to use the {repeat} command to iterate over your list of emails. It will allow you to carry out some actions (like the {key} command) for each email. You can learn more here:

Thanks @scott! I've been reviewing {if} and {repeat} commands, which are great.

Can you provide an example of how to implement {if} and {repeat} command with the {key:} command (if applicable) and how they can be utilized together? I've been trying to experiment but have been unsuccessful. On a learning curve.

I want to extract the emails to the "To:" field and have it be dynamic (if "comma" or "space" keep extracting/adding emails, otherwise end/stop). In some cases have 1 email to send and others have 3 or more. As mentioned above, I've been able to successfully add emails separately (including tab/shift keys) but it's conditional upon having X amount of emails (E.g. { =extractregex({site: text}, "contact: (.+)[^,]") } { key: tab } { key: shift-tab } { =extractregex({site: text}, "contact: [^ ] ([^, ].+)")* } { key:tab } ......)

Emails separated

Emails together

I've attempted the {repeat} command but haven't been able to properly implement it in this case scenario yet.

At a high level you would have something like this:

Define some sample text for testing purposes in this example (this comes from the site command in your case):


Get a string containing the emails from the page text:

{emails=extractregex(sample_page_text, "contact: (.+)") }

Debug emails: {=emails}

Convert that string into a list of emails (assumes each email is separated by a comma and a space):

{emails_list=split(emails, ", ")}

Debug emails list: {=emails_list}

Now we can use repeat to iterate over that list inserting them and using keypresses after each one:

{repeat: for email in emails_list}{=email}{key:enter}{key:tab}{endrepeat}


Thanks! That worked perfectly and really helped me better understand a few basics.

Regarding my First question, I've figured out the IF statement to match exact emails, however, I am trying to figure out how to apply the IF contains/includes (or a search for multiple emails associated with one company) THEN Company 123 ELSEIF (Ideally to keep searching until a match).

{ email=("") } { companyEmail=extractregex({site: text}, "Email: (.+)") } { if: companyEmail == contains(email, "") } Company 123 { else } XYZ { endif }

It's not clear to me what you are trying to do here.

contains(haystack, needle) returns yes/no depending on whether the second string is in the first. You seem to be comparing that to another string which isn't something that is going to provide a meaningful result.

Maybe you wanted: {if: contains(companyEmail, "")}...

Thank you for that clarification regarding the "contains" function. I see now the issue I was creating. I definitely wasn't receiving the correct result before.

I assume if I was to create a large list for matching I would just continue to add the same formula (while changing the associated emails and then doing the statements {} Company ABC {} Company XYZ {else} No Return {endif}

**I've answered my question from above.


Is there a way to match multiple keywords to an IF statement? For example, IF it contains Dog, Cat, Zebra, Then, Yes. Where it must match all the keywords else no return. As I understand it, contains() needs two parameters (or as few as possible?). {if: contains(Name, "John")Smith{else}{endif}, And
it doesn't work if it's more than that since it doesn't meet the logic.


You can combine items with the and or or operators.

For example:

{text="I like one, three, four, seven"}

{if: contains(text, "one") and contains(text, "three") and contains(text, "seven")}
You like all three odd numbers

{if: contains(text, "one") or contains(text, "three") or contains(text, "seven")}
You like at least one of the three odd numbers


Thank you again for the meeting today. It was helpful to clarify the Selector tool. Although SalesForce made it difficult to identify a few items for the Selector, it provided me additional insight into its functionality and use case.

I look forward to the future releases and growth of Text Blaze.

Hi @scott,

In regards to {if:} statements, how do I define the beginning or end of a set of words/numbers? E.g. {if: contains(ID, "74")}ABC{elseif: contains(ID, "1174")}DEF{else}{endif}. Both contain "74", however, I want to make sure that it finds only "74" and only "1174". As I understand it, traditionally anchors ^$ can define start/end of a input. Does this also apply to the above? "^1174$" I've used this in a few cases but I feel it hasn't always worked as expected so I'm not sure if I need to use anchors for all or both inputs that contain "74".


You can use testregex to answer questions like "Does this string start with a number" and things like that.

For your example though, it sounds like you just need equality comparison. For example:

{if: id == "74"}It's seventy-four{elseif: id == "1174"}It's 1,174{else}It's not a magic number{endif}


Perfect. Thank you! As a side note, is there a way I can quickly replace all instances of "contains(ID, " with "id ==" (using a google doc or page). I know there's replace("good job", "good", "great") ⇒ "great job" but I am unsure how to execute it properly.

Nevermind. I figured it out!

{ =replace(clipboard, "contains(Orgid,", "id ==") } { clipboard={clipboard} }


On a side note, I am attempting to extract first and last names from emails. I have only been able to successfully pull the first name and or full name (including the "."). For example. to John Smith. Currently I have: { =extractregex({site: text}, "[\s\S]*\nWeb Email\n([^@]+)") }, which pulls john.smith. If I add ^. then it will pull the first name only. I can't figure out how to pull last only or separate it.

"." is a special character in regular expressions meaning "match anything". To match an actual "." you need to use "\.".

For example:

Full Name: {=extractregex(email, "(.+)@")}
First Name: {=extractregex(email, "(.+?)\.")}
Last Name: {=extractregex(email, "\.(.+?)@")}