Detection rules › Sublime MQL
Sublime MQL rules: canva
| Rule | Severity |
|---|---|
| Canva design with suspicious embedded link | high |
| Canva infrastructure abuse | medium |
Canva design with suspicious embedded link
#Detects when a Canva design contains links to suspicious domains or credential harvesting sites. The rule examines embedded scripts within Canva documents for suspicious URLs and analyzes link text for malicious intent.
Threat classification
Sublime's own taxonomy (not MITRE ATT&CK).
| Category | Values |
|---|---|
| Attack types | Credential Phishing |
| Tactics and techniques | Evasion, Social engineering, Free file host |
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
Rule body
type.inbound
and any(body.links,
.href_url.domain.root_domain == "canva.com"
and strings.starts_with(.href_url.path, "/design/")
and any(html.xpath(ml.link_analysis(.).final_dom,
"/html/body/script[2]"
).nodes,
any(regex.iextract(.raw,
'\"[A-Z]\":{[^\}]+\"[a-z]\":\"(?P<display_text>[^\"]+)\"},\"[a-z]\":{[^\}]+"[a-z]":"(?<url>https:\/\/[^\s"'')\]}]+)\"'
),
strings.parse_url(.named_groups["url"]).domain.root_domain not in (
"canva.com",
"sentry.io",
"googleusercontent.com"
)
and (
any(ml.nlu_classifier(.named_groups['display_text']).intents,
.name == "cred_theft"
)
or strings.parse_url(.named_groups["url"]).domain.tld in $suspicious_tlds
or strings.parse_url(.named_groups["url"]).domain.domain in $free_subdomain_hosts
or strings.parse_url(.named_groups["url"]).domain.root_domain in $free_subdomain_hosts
or ml.link_analysis(strings.parse_url(.named_groups["url"]
)
).credphish.disposition == "phishing"
)
)
// parse out links using file.explode
or any(file.explode(.),
any(filter(.scan.url.urls,
.domain.root_domain not in (
"canva.com",
"sentry.io",
"googleusercontent.com"
)
),
.domain.tld in $suspicious_tlds
or .domain.domain in $free_subdomain_hosts
or .domain.root_domain in $free_subdomain_hosts
or ml.link_analysis(.).credphish.disposition == "phishing"
)
)
)
)
and not profile.by_sender_email().any_messages_benign
Detection logic
Scope: inbound message.
Detects when a Canva design contains links to suspicious domains or credential harvesting sites. The rule examines embedded scripts within Canva documents for suspicious URLs and analyzes link text for malicious intent.
- inbound message
any of
body.linkswhere all hold:- .href_url.domain.root_domain is 'canva.com'
- .href_url.path starts with '/design/'
any of
html.xpath(ml.link_analysis(.).final_dom, '/html/body/script[2]').nodeswhere any holds:any of
regex.iextract(.raw)where all hold:- strings.parse_url(.named_groups['url']).domain.root_domain not in ('canva.com', 'sentry.io', 'googleusercontent.com')
any of:
any of
ml.nlu_classifier(.named_groups['display_text']).intentswhere:- .name is 'cred_theft'
- strings.parse_url(.named_groups['url']).domain.tld in $suspicious_tlds
- strings.parse_url(.named_groups['url']).domain.domain in $free_subdomain_hosts
- strings.parse_url(.named_groups['url']).domain.root_domain in $free_subdomain_hosts
- ml.link_analysis(strings.parse_url(.named_groups['url'])).credphish.disposition is 'phishing'
any of
file.explode(.)where:any of
filter(.scan.url.urls)where any holds:- .domain.tld in $suspicious_tlds
- .domain.domain in $free_subdomain_hosts
- .domain.root_domain in $free_subdomain_hosts
- ml.link_analysis(.).credphish.disposition is 'phishing'
not:
- profile.by_sender_email().any_messages_benign
Inspects: body.links, body.links[].href_url.domain.root_domain, body.links[].href_url.path, type.inbound. Sensors: file.explode, html.xpath, ml.link_analysis, ml.nlu_classifier, profile.by_sender_email, regex.iextract, strings.parse_url, strings.starts_with. Reference lists: $free_subdomain_hosts, $suspicious_tlds.
Indicators matched (4)
| Field | Match | Value |
|---|---|---|
body.links[].href_url.domain.root_domain | equals | canva.com |
strings.starts_with | prefix | /design/ |
regex.iextract | regex | \"[A-Z]\":{[^\}]+\"[a-z]\":\"(?P<display_text>[^\"]+)\"},\"[a-z]\":{[^\}]+"[a-z]":"(?<url>https:\/\/[^\s"')\]}]+)\" |
ml.nlu_classifier(regex.iextract(html.xpath(ml.link_analysis(body.links[]).final_dom, '/html/body/script[2]').nodes[].raw)[].named_groups['display_text']).intents[].name | equals | cred_theft |
Stages and Predicates
Stage 1: mql_rule
and
any(body.links)
and
any(html.xpath(ml.link_analysis(body.links).final_dom, '/html/body/script[2]').nodes)
or
any(regex.iextract(html.xpath(ml.link_analysis(body.links).final_dom, '/html/body/script[2]').nodes.raw))
and
or
any(ml.nlu_classifier(regex.iextract(html.xpath(ml.link_analysis(body.links).final_dom, '/html/body/script[2]').nodes.raw).named_groups['display_text']).intents)
ml.nlu_classifier(regex.iextract(html.xpath(ml.link_analysis(body.links).final_dom, '/html/body/script[2]').nodes.raw).named_groups['display_text']).intents.name eq "cred_theft"
ml.link_analysis func_call "ml.link_analysis(strings.parse_url(regex.iextract(html.xpath(ml.link_analysis(body.links[]).final_dom, '/html/body/script[2]').nodes[].raw)[].named_groups['url'])).credphish.disposition == phishing"
strings.parse_url func_call "strings.parse_url(regex.iextract(html.xpath(ml.link_analysis(body.links[]).final_dom, '/html/body/script[2]').nodes[].raw)[].named_groups['url']).domain.domain in free_subdomain_hosts"
strings.parse_url func_call "strings.parse_url(regex.iextract(html.xpath(ml.link_analysis(body.links[]).final_dom, '/html/body/script[2]').nodes[].raw)[].named_groups['url']).domain.root_domain in free_subdomain_hosts"
strings.parse_url func_call "strings.parse_url(regex.iextract(html.xpath(ml.link_analysis(body.links[]).final_dom, '/html/body/script[2]').nodes[].raw)[].named_groups['url']).domain.tld in suspicious_tlds"
strings.parse_url func_call "strings.parse_url(regex.iextract(html.xpath(ml.link_analysis(body.links[]).final_dom, '/html/body/script[2]').nodes[].raw)[].named_groups['url']).domain.root_domain not in (canva.com, sentry.io, googleusercontent.com)"
any(file.explode(html.xpath(ml.link_analysis(body.links).final_dom, '/html/body/script[2]').nodes))
any(filter(file.explode(html.xpath(ml.link_analysis(body.links).final_dom, '/html/body/script[2]').nodes).scan.url.urls))
or
ml.link_analysis func_call "ml.link_analysis(filter(file.explode(html.xpath(ml.link_analysis(body.links[]).final_dom, '/html/body/script[2]').nodes[])[].scan.url.urls)[]).credphish.disposition == phishing"
macro "filter(file.explode(html.xpath(ml.link_analysis(body.links[]).final_dom, '/html/body/script[2]').nodes[])[].scan.url.urls)[].domain.domain in free_subdomain_hosts"
macro "filter(file.explode(html.xpath(ml.link_analysis(body.links[]).final_dom, '/html/body/script[2]').nodes[])[].scan.url.urls)[].domain.root_domain in free_subdomain_hosts"
macro "filter(file.explode(html.xpath(ml.link_analysis(body.links[]).final_dom, '/html/body/script[2]').nodes[])[].scan.url.urls)[].domain.tld in suspicious_tlds"
body.links.href_url.domain.root_domain eq "canva.com"
body.links.href_url.path starts_with "/design/"
not
profile.by_sender_email func_call "profile.by_sender_email().any_messages_benign"
type.inbound eq "true"Indicators
These rows show field, operator, and value matches.
| Field | Kind | Values | Search |
|---|---|---|---|
type.inbound | eq |
| field:"type.inbound" kind:eq value:"true" |
Canva infrastructure abuse
#A fraudulent invoice/receipt found in the body of the message sent by exploiting Canva's design sharing feature.
Threat classification
Sublime's own taxonomy (not MITRE ATT&CK).
| Category | Values |
|---|---|
| Attack types | BEC/Fraud, Callback Phishing |
| Tactics and techniques | Social engineering, Impersonation: Brand, Impersonation: Employee, Free email provider |
Telemetry coverage
| Platform | Record / event type |
|---|---|
| Sublime | Inbound email message |
Message attributes
Rule body
type.inbound
and length(attachments) <= 1
and sender.email.domain.root_domain in ("canva.com")
and (
strings.ilike(body.html.display_text, "*take a look at the design*")
or regex.icontains(body.current_thread.text, 'invited.{0,10}(?:class|school)')
or strings.icontains(body.current_thread.text, "no longer have access")
)
and (
(
// icontains a phone number
(
regex.icontains(strings.replace_confusables(body.current_thread.text),
'.*\+?([ilo0-9]{1}.)?\(?[ilo0-9]{3}?\)?.[ilo0-9]{3}.?[ilo0-9]{4}.*\n'
)
or regex.icontains(strings.replace_confusables(body.current_thread.text),
'.*\+[ilo0-9]{1,3}[ilo0-9]{10}.*\n'
)
// +12028001238
or regex.icontains(strings.replace_confusables(body.current_thread.text),
'.*[ilo0-9]{3}\.[ilo0-9]{3}\.[ilo0-9]{4}.*\n'
)
// 202-800-1238
or regex.icontains(strings.replace_confusables(body.current_thread.text),
'.*[ilo0-9]{3}-[ilo0-9]{3}-[ilo0-9]{4}.*\n'
)
// (202) 800-1238
or regex.icontains(strings.replace_confusables(body.current_thread.text),
'.*\([ilo0-9]{3}\)[\s-]+[ilo0-9]{3}[\s-]+[ilo0-9]{4}.*\n'
)
// (202)-800-1238
or regex.icontains(strings.replace_confusables(body.current_thread.text),
'.*\([ilo0-9]{3}\)-[ilo0-9]{3}-[ilo0-9]{4}.*\n'
)
or ( // 8123456789
regex.icontains(strings.replace_confusables(body.current_thread.text),
'.*8[ilo0-9]{9}.*\n'
)
and regex.icontains(strings.replace_confusables(body.current_thread.text
),
'\+[1l]'
)
)
)
and (
(
4 of (
strings.ilike(body.html.inner_text, '*you did not*'),
strings.ilike(body.html.inner_text, '*is not for*'),
strings.ilike(body.html.inner_text, '*done by you*'),
regex.icontains(body.html.inner_text, "didn\'t ma[kd]e this"),
strings.ilike(body.html.inner_text, '*Fruad Alert*'),
strings.ilike(body.html.inner_text, '*Fraud Alert*'),
strings.ilike(body.html.inner_text, '*fraudulent*'),
strings.ilike(body.html.inner_text, '*using your PayPal*'),
strings.ilike(body.html.inner_text, '*subscription*'),
strings.ilike(body.html.inner_text, '*antivirus*'),
strings.ilike(body.html.inner_text, '*order*'),
strings.ilike(body.html.inner_text, '*support*'),
strings.ilike(body.html.inner_text, '*sincerely apologize*'),
strings.ilike(body.html.inner_text, '*receipt*'),
strings.ilike(body.html.inner_text, '*invoice*'),
strings.ilike(body.html.inner_text, '*Purchase*'),
strings.ilike(body.html.inner_text, '*transaction*'),
strings.ilike(body.html.inner_text, '*Market*Value*'),
strings.ilike(body.html.inner_text, '*BTC*'),
strings.ilike(body.html.inner_text, '*call*'),
strings.ilike(body.html.inner_text, '*get in touch with our*'),
strings.ilike(body.html.inner_text, '*quickly inform*'),
strings.ilike(body.html.inner_text, '*quickly reach *'),
strings.ilike(body.html.inner_text, '*detected unusual transactions*'),
strings.ilike(body.html.inner_text, '*without your authorization*'),
strings.ilike(body.html.inner_text, '*cancel*'),
strings.ilike(body.html.inner_text, '*renew*'),
strings.ilike(body.html.inner_text, '*refund*'),
strings.ilike(body.html.inner_text, '*+1*'),
regex.icontains(body.html.inner_text, 'help.{0,3}desk'),
strings.ilike(body.html.inner_text, '* your funds*'),
strings.ilike(body.html.inner_text, '* your checking*'),
strings.ilike(body.html.inner_text, '* your saving*'),
strings.ilike(body.html.inner_text, '*transfer*'),
strings.ilike(body.html.inner_text, '*secure your account*'),
strings.ilike(body.html.inner_text, '*recover your*'),
strings.ilike(body.html.inner_text, '*unusual activity*'),
strings.ilike(body.html.inner_text, '*suspicious transaction*'),
strings.ilike(body.html.inner_text, '*transaction history*'),
strings.ilike(body.html.inner_text, '*please ignore this*'),
strings.ilike(body.html.inner_text, '*report activity*'),
)
)
or regex.icontains(body.current_thread.text,
'note from.{0,50}(?:call|reach|contact|paypal)'
)
or any(ml.nlu_classifier(body.current_thread.text).intents,
.name == "callback_scam"
)
or (
// Unicode confusables words obfuscated in note
regex.icontains(body.html.inner_text,
'\+𝟭|𝗽𝗮𝘆𝗺𝗲𝗻𝘁|𝗛𝗲𝗹𝗽 𝗗𝗲𝘀𝗸|𝗿𝗲𝗳𝘂𝗻𝗱|𝗮𝗻𝘁𝗶𝘃𝗶𝗿𝘂𝘀|𝗰𝗮𝗹𝗹|𝗰𝗮𝗻𝗰𝗲𝗹'
)
)
or strings.ilike(body.html.inner_text, '*kindly*')
)
)
)
Detection logic
Scope: inbound message.
A fraudulent invoice/receipt found in the body of the message sent by exploiting Canva's design sharing feature.
- inbound message
- length(attachments) ≤ 1
- sender.email.domain.root_domain in ('canva.com')
any of:
- body.html.display_text matches '*take a look at the design*'
- body.current_thread.text matches 'invited.{0,10}(?:class|school)'
- body.current_thread.text contains 'no longer have access'
all of:
any of:
- strings.replace_confusables(body.current_thread.text) matches '.*\\+?([ilo0-9]{1}.)?\\(?[ilo0-9]{3}?\\)?.[ilo0-9]{3}.?[ilo0-9]{4}.*\\n'
- strings.replace_confusables(body.current_thread.text) matches '.*\\+[ilo0-9]{1,3}[ilo0-9]{10}.*\\n'
- strings.replace_confusables(body.current_thread.text) matches '.*[ilo0-9]{3}\\.[ilo0-9]{3}\\.[ilo0-9]{4}.*\\n'
- strings.replace_confusables(body.current_thread.text) matches '.*[ilo0-9]{3}-[ilo0-9]{3}-[ilo0-9]{4}.*\\n'
- strings.replace_confusables(body.current_thread.text) matches '.*\\([ilo0-9]{3}\\)[\\s-]+[ilo0-9]{3}[\\s-]+[ilo0-9]{4}.*\\n'
- strings.replace_confusables(body.current_thread.text) matches '.*\\([ilo0-9]{3}\\)-[ilo0-9]{3}-[ilo0-9]{4}.*\\n'
all of:
- strings.replace_confusables(body.current_thread.text) matches '.*8[ilo0-9]{9}.*\\n'
- strings.replace_confusables(body.current_thread.text) matches '\\+[1l]'
any of:
at least 4 of 41: body.html.inner_text matches any of 41 patterns
*you did not**is not for**done by you*didn\'t ma[kd]e this*Fruad Alert**Fraud Alert**fraudulent**using your PayPal**subscription**antivirus**order**support**sincerely apologize**receipt**invoice**Purchase**transaction**Market*Value**BTC**call**get in touch with our**quickly inform**quickly reach **detected unusual transactions**without your authorization**cancel**renew**refund**+1*help.{0,3}desk* your funds** your checking** your saving**transfer**secure your account**recover your**unusual activity**suspicious transaction**transaction history**please ignore this**report activity*
- body.current_thread.text matches 'note from.{0,50}(?:call|reach|contact|paypal)'
any of
ml.nlu_classifier(body.current_thread.text).intentswhere:- .name is 'callback_scam'
- body.html.inner_text matches '\\+𝟭|𝗽𝗮𝘆𝗺𝗲𝗻𝘁|𝗛𝗲𝗹𝗽 𝗗𝗲𝘀𝗸|𝗿𝗲𝗳𝘂𝗻𝗱|𝗮𝗻𝘁𝗶𝘃𝗶𝗿𝘂𝘀|𝗰𝗮𝗹𝗹|𝗰𝗮𝗻𝗰𝗲𝗹'
- body.html.inner_text matches '*kindly*'
Inspects: body.current_thread.text, body.html.display_text, body.html.inner_text, sender.email.domain.root_domain, type.inbound. Sensors: ml.nlu_classifier, regex.icontains, strings.icontains, strings.ilike, strings.replace_confusables.
Indicators matched (57)
| Field | Match | Value |
|---|---|---|
sender.email.domain.root_domain | member | canva.com |
strings.ilike | substring | *take a look at the design* |
regex.icontains | regex | invited.{0,10}(?:class|school) |
strings.icontains | substring | no longer have access |
regex.icontains | regex | .*\+?([ilo0-9]{1}.)?\(?[ilo0-9]{3}?\)?.[ilo0-9]{3}.?[ilo0-9]{4}.*\n |
regex.icontains | regex | .*\+[ilo0-9]{1,3}[ilo0-9]{10}.*\n |
regex.icontains | regex | .*[ilo0-9]{3}\.[ilo0-9]{3}\.[ilo0-9]{4}.*\n |
regex.icontains | regex | .*[ilo0-9]{3}-[ilo0-9]{3}-[ilo0-9]{4}.*\n |
regex.icontains | regex | .*\([ilo0-9]{3}\)[\s-]+[ilo0-9]{3}[\s-]+[ilo0-9]{4}.*\n |
regex.icontains | regex | .*\([ilo0-9]{3}\)-[ilo0-9]{3}-[ilo0-9]{4}.*\n |
regex.icontains | regex | .*8[ilo0-9]{9}.*\n |
regex.icontains | regex | \+[1l] |
45 more
strings.ilike | substring | *you did not* |
strings.ilike | substring | *is not for* |
strings.ilike | substring | *done by you* |
regex.icontains | regex | didn\'t ma[kd]e this |
strings.ilike | substring | *Fruad Alert* |
strings.ilike | substring | *Fraud Alert* |
strings.ilike | substring | *fraudulent* |
strings.ilike | substring | *using your PayPal* |
strings.ilike | substring | *subscription* |
strings.ilike | substring | *antivirus* |
strings.ilike | substring | *order* |
strings.ilike | substring | *support* |
strings.ilike | substring | *sincerely apologize* |
strings.ilike | substring | *receipt* |
strings.ilike | substring | *invoice* |
strings.ilike | substring | *Purchase* |
strings.ilike | substring | *transaction* |
strings.ilike | substring | *Market*Value* |
strings.ilike | substring | *BTC* |
strings.ilike | substring | *call* |
strings.ilike | substring | *get in touch with our* |
strings.ilike | substring | *quickly inform* |
strings.ilike | substring | *quickly reach * |
strings.ilike | substring | *detected unusual transactions* |
strings.ilike | substring | *without your authorization* |
strings.ilike | substring | *cancel* |
strings.ilike | substring | *renew* |
strings.ilike | substring | *refund* |
strings.ilike | substring | *+1* |
regex.icontains | regex | help.{0,3}desk |
strings.ilike | substring | * your funds* |
strings.ilike | substring | * your checking* |
strings.ilike | substring | * your saving* |
strings.ilike | substring | *transfer* |
strings.ilike | substring | *secure your account* |
strings.ilike | substring | *recover your* |
strings.ilike | substring | *unusual activity* |
strings.ilike | substring | *suspicious transaction* |
strings.ilike | substring | *transaction history* |
strings.ilike | substring | *please ignore this* |
strings.ilike | substring | *report activity* |
regex.icontains | regex | note from.{0,50}(?:call|reach|contact|paypal) |
ml.nlu_classifier(body.current_thread.text).intents[].name | equals | callback_scam |
regex.icontains | regex | \+𝟭|𝗽𝗮𝘆𝗺𝗲𝗻𝘁|𝗛𝗲𝗹𝗽 𝗗𝗲𝘀𝗸|𝗿𝗲𝗳𝘂𝗻𝗱|𝗮𝗻𝘁𝗶𝘃𝗶𝗿𝘂𝘀|𝗰𝗮𝗹𝗹|𝗰𝗮𝗻𝗰𝗲𝗹 |
strings.ilike | substring | *kindly* |
Stages and Predicates
Stage 1: mql_rule
and
or
any(ml.nlu_classifier(body.current_thread.text).intents)
ml.nlu_classifier(body.current_thread.text).intents.name eq "callback_scam"
body.current_thread.text regex_match "note from.{0,50}(?:call|reach|contact|paypal)"
body.html.inner_text match " your checking"
body.html.inner_text match " your funds"
body.html.inner_text match " your saving"
body.html.inner_text match "+1"
body.html.inner_text match "BTC"
body.html.inner_text match "Fraud Alert"
body.html.inner_text match "Fruad Alert"
body.html.inner_text match "Purchase"
body.html.inner_text match "antivirus"
body.html.inner_text match "call"
body.html.inner_text match "cancel"
body.html.inner_text match "detected unusual transactions"
body.html.inner_text match "done by you"
body.html.inner_text match "fraudulent"
body.html.inner_text match "get in touch with our"
body.html.inner_text match "invoice"
body.html.inner_text match "is not for"
body.html.inner_text match "kindly"
body.html.inner_text match "order"
body.html.inner_text match "please ignore this"
body.html.inner_text match "quickly inform"
body.html.inner_text match "quickly reach "
body.html.inner_text match "receipt"
body.html.inner_text match "recover your"
body.html.inner_text match "refund"
body.html.inner_text match "renew"
body.html.inner_text match "report activity"
body.html.inner_text match "secure your account"
body.html.inner_text match "sincerely apologize"
body.html.inner_text match "subscription"
body.html.inner_text match "support"
body.html.inner_text match "suspicious transaction"
body.html.inner_text match "transaction history"
body.html.inner_text match "transaction"
body.html.inner_text match "transfer"
body.html.inner_text match "unusual activity"
body.html.inner_text match "using your PayPal"
body.html.inner_text match "without your authorization"
body.html.inner_text match "you did not"
body.html.inner_text regex_match "\\+𝟭|𝗽𝗮𝘆𝗺𝗲𝗻𝘁|𝗛𝗲𝗹𝗽 𝗗𝗲𝘀𝗸|𝗿𝗲𝗳𝘂𝗻𝗱|𝗮𝗻𝘁𝗶𝘃𝗶𝗿𝘂𝘀|𝗰𝗮𝗹𝗹|𝗰𝗮𝗻𝗰𝗲𝗹"
body.html.inner_text regex_match "didn\\'t ma[kd]e this"
body.html.inner_text regex_match "help.{0,3}desk"
body.html.inner_text wildcard "*Market*Value*"
or
and
strings.replace_confusables(body.current_thread.text) regex_match ".*8[ilo0-9]{9}.*\\n"
strings.replace_confusables(body.current_thread.text) regex_match "\\+[1l]"
strings.replace_confusables(body.current_thread.text) regex_match ".*[ilo0-9]{3}-[ilo0-9]{3}-[ilo0-9]{4}.*\\n"
strings.replace_confusables(body.current_thread.text) regex_match ".*[ilo0-9]{3}\\.[ilo0-9]{3}\\.[ilo0-9]{4}.*\\n"
strings.replace_confusables(body.current_thread.text) regex_match ".*\\([ilo0-9]{3}\\)-[ilo0-9]{3}-[ilo0-9]{4}.*\\n"
strings.replace_confusables(body.current_thread.text) regex_match ".*\\([ilo0-9]{3}\\)[\\s-]+[ilo0-9]{3}[\\s-]+[ilo0-9]{4}.*\\n"
strings.replace_confusables(body.current_thread.text) regex_match ".*\\+?([ilo0-9]{1}.)?\\(?[ilo0-9]{3}?\\)?.[ilo0-9]{3}.?[ilo0-9]{4}.*\\n"
strings.replace_confusables(body.current_thread.text) regex_match ".*\\+[ilo0-9]{1,3}[ilo0-9]{10}.*\\n"
or
body.current_thread.text contains "no longer have access"
body.current_thread.text regex_match "invited.{0,10}(?:class|school)"
body.html.display_text match "take a look at the design"
attachments length_compare "1"
sender.email.domain.root_domain eq "canva.com"
type.inbound eq "true"Indicators
These rows show field, operator, and value matches.
| Field | Kind | Values | Search |
|---|---|---|---|
body.current_thread.text | contains |
| field:"body.current_thread.text" kind:contains value:"no longer have access" |
body.current_thread.text | regex_match |
| field:"body.current_thread.text" kind:regex_match |
body.html.display_text | wildcard |
| field:"body.html.display_text" kind:wildcard value:"*take a look at the design*" |
body.html.inner_text | regex_match |
| field:"body.html.inner_text" kind:regex_match |
body.html.inner_text | wildcard |
| field:"body.html.inner_text" kind:wildcard |
sender.email.domain.root_domain | in |
| field:"sender.email.domain.root_domain" kind:in value:"canva.com" |
strings.replace_confusables(body.current_thread.text) | regex_match |
| field:"strings.replace_confusables(body.current_thread.text)" kind:regex_match |
type.inbound | eq |
| field:"type.inbound" kind:eq value:"true" |