Skip to content

Contains Email Best Practices

Guidelines for getting reliable signal from Contains Email checks while keeping the noise (and the maintenance) low.

Point the check at a field that should always carry the value

The rule asserts that email addresses are present in every row, so it belongs on a column dedicated to that data. Pointing it at a free-text column where an email address is merely common turns every ordinary row into an anomaly.

Use containment deliberately

The value passes as soon as an email address appears anywhere inside it, so "contact: {value}" passes just like a bare value. When the field must hold nothing but the value, pair the check with Matches Pattern anchored to the whole string.

Pair with Not Null when the field is mandatory

NULL values pass. Contains Email asserts that present values contain an email address; it does not require the field to be populated. When the field must also exist, add a Not Null check on the same field.

Normalize before you validate

Addresses copied from documents often carry surrounding whitespace, display names, or mailto: prefixes. Containment tolerates all of them, which is usually what you want; when the column must hold a bare address, normalize it upstream and pair the check with Matches Pattern.

Keep coverage at 100% unless a known backlog exists

For scalar fields, 100% coverage reports every failing row as a Record Anomaly, which tells you exactly which values are wrong. Below 100%, the check reports a single Shape Anomaly only when the failing fraction crosses the tolerance, and no per-row detail is produced. Array fields always report a Shape Anomaly, regardless of coverage. Lower coverage only while a known set of legacy rows is being cleaned up.

Scope with a filter instead of loosening coverage

When the rule only applies to part of the table (one channel, one country, rows created after a migration), express that with a filter clause rather than by lowering coverage. The filter removes the out-of-scope rows from evaluation entirely, and the expression is echoed in every anomaly message.

Route the anomalies to the right people

A missing or malformed value usually comes from a collection form or an integration. Set an Anomaly Assignee from the team that owns that producer, and tag the check so related checks are easy to find.

See Also