Use this article to configure the Data Quality Enforcement Blueprint, which validates phone and email and flags invalid records for review.
Contact records with invalid phone numbers and email addresses create problems across every process that depends on them — outreach fails, deliverability suffers, and bad data propagates through downstream integrations. The Data Quality Enforcement Example Blueprint validates phone and email format across contact records and automatically routes invalid records to a data quality review queue, making data quality a continuously enforced policy rather than a periodic cleanup project.
How the Data Quality Enforcement Blueprint Works
The Data Quality Enforcement Example Blueprint (pictured above) matches records by evaluating phone format, email format, and country together, in rows evaluated in order until the first match. Because only the first matching row applies, a row that doesn't directly test a given field can still draw a valid conclusion about that field's status, based on which earlier rows the record failed to match — this pattern is covered in detail in the Row Walkthrough below. When a match is found, Data Logic writes phone status, email status, record quality score, quarantine flag, and assigned cleaner to the record.
- Match on phone format — The Phone (Regex) column matches records where the phone number fits a regular expression pattern, distinguishing correctly formatted numbers from placeholder or invalid entries such as those with five or more leading zeros.
- Match on email format — The Email (Regex) column matches records where the email address conforms to a standard email structure, containing an @ symbol and a domain with an extension.
- Match on country where relevant — The Country (Exact) column further qualifies rows where country matters, such as rows that require a US-specific phone format for a match.
- Write phone and email status only when the row has one to assert — The Phone Status (Output Non-Empty) and Email Status (Output Non-Empty) columns update only when the matching row contains a value for that field, so a row evaluating one field doesn't overwrite the other with a blank.
- Write record quality score on every match — The Record Quality Score (Always) column updates on every matching record regardless of existing values, keeping the score current as a record's data changes.
- Quarantine records only when the field is blank — The Quarantine Flag (Field Empty) column writes only to records that don't already have a quarantine flag set, so records already flagged manually aren't overwritten.
- Assign a cleaner only to records already in review — The Assigned Cleaner (Field Non-Empty) column updates only records that already have a cleaner assigned, so new records aren't automatically routed into someone's queue.
- Use row order to infer field status without testing it directly — Because rows are evaluated in sequence and the first match wins, a row can safely assert that phone or email is invalid without a regex test of its own, based on which earlier rows the record already failed to match.
Data Quality Enforcement Blueprint Row Walkthrough
The Blueprint Preview pictured above shows all 8 rows of the Data Quality Enforcement example.
Rows 2–3: US Records with a Valid Phone
Row 2 matches US records with both a valid phone number and a valid email address, assigning a Record Quality Score of 100 with no quarantine flag or cleaner assignment.
Row 3 matches US records with a valid phone number but no valid email — Phone Status is set to Valid directly from the phone match, while Email Status is set to Invalid by inference, since the record only reaches this row after failing to match Row 2's email condition. Row 3 assigns a score of 60, quarantines the record, and assigns data-team@co.com as the cleaner.
Row 4: All-Zeros Phone, Any Country or Email
Row 4 catches any record whose phone number begins with five or more zeros, a common pattern for placeholder or test data. Country and email are not evaluated in this row. It's placed ahead of the remaining phone-format rows so that all-zeros records always receive a Record Quality Score of 0 rather than partial credit from a later row. It sets Phone Status to Invalid, assigns a score of 0, quarantines the record, and assigns data-team@co.com as the cleaner.
Row 5: US Records with a Valid Email Only
Row 5 matches US records where email is valid but phone is not — Email Status is set to Valid directly from the email match, while Phone Status is set to Invalid by inference, since the record reaches this row only after failing to match against Rows 2–4. It assigns a score of 60, quarantines the record, and assigns data-team@co.com as the cleaner.
Rows 6–7: Valid International-Format Phone
Row 6 matches records with a phone number in international format and a valid email, regardless of country, assigning a Record Quality Score of 90 with no quarantine flag or cleaner assignment.
Row 7 matches records with the same international phone format, but no valid email — Email Status is set to Invalid by inference, since the record reaches this row only after failing the earlier email conditions. Row 7 assigns a score of 50, quarantines the record, and assigns data-team@co.com as the cleaner.
Row 8: Valid Email Only, Any Phone or Country
Row 8 matches any record not caught by Rows 2–7 that has a valid email. Phone Status is set to Invalid by inference, since every valid phone pattern recognized by this Blueprint has already been ruled out by this point. It assigns a score of 50, quarantines the record, and assigns data-team@co.com as the cleaner.
Row 9: Fallback Row
Row 9 is the Blueprint's Fallback Row. With Blank Cell Matches Any enabled on Phone, Email, and Country, every input cell in this row acts as a wildcard, so it catches any record not matched by an earlier row. Phone Status and Email Status are left unset, preserving any existing values from a previous run rather than overwriting them. The row assigns a Record Quality Score of 0, quarantines the record, and assigns data-team@co.com as the cleaner if the record is already in the review queue.
Data Quality Enforcement Data Logic Configuration
Most of this Blueprint's output fields — Phone Status, Email Status, Record Quality Score, Quarantine Flag, and Assigned Cleaner — are not standard fields in most CRMs. Create these as custom fields on the relevant object type before configuring the mapping below.
To configure the input mapping in the Data Management > Data Logic module, select the object type, then select the example Blueprint under Explore Examples, and then under 2. Input Mapping, add the following:
- Blueprint column Phone (Regex) maps to CRM field Phone using Regex matching criteria, with Blank Cell Matches Any and Trim Whitespace enabled.
- Blueprint column Email (Regex) maps to CRM field Email using Regex matching criteria, with Blank Cell Matches Any and Trim Whitespace enabled.
- Blueprint column Country (Exact) maps to CRM field Country using Exact matching criteria, with Blank Cell Matches Any, Case Insensitive, and Trim Whitespace enabled.
To configure the output mapping, under 3. Output Mapping, add the following:
- Blueprint column Phone Status (Output Non-Empty) maps to CRM field Phone Status with update condition Output Non-Empty.
- Blueprint column Email Status (Output Non-Empty) maps to CRM field Email Status with update condition Output Non-Empty.
- Blueprint column Record Quality Score (Always) maps to CRM field Record Quality Score with update condition Always.
- Blueprint column Quarantine Flag (Field Empty) maps to CRM field Quarantine Flag with update condition Field Empty.
- Blueprint column Assigned Cleaner (Field Non-Empty) maps to CRM field Assigned Cleaner with update condition Field Non-Empty.
Using an Example Blueprint as a Starting Point
The example Blueprint in this article is available directly in the Data Logic module under 1. Pick Blueprint > Explore Examples. Rather than building a Blueprint from scratch, you can use any example as a starting point and tailor it to match your specific field values, scoring criteria, or business rules.
To use an example Blueprint as a starting point:
- In Data Management > Data Logic, under 1. Pick Blueprint, select Explore Examples.
- Select the example Blueprint you want to use. Click the Preview icon to review the table structure and column values before proceeding.
- In the Blueprint Preview, click Download to save the Blueprint as a CSV file.
- Open the CSV file and tailor the values to match your CRM data — update field values, scoring ranges, date ranges, owner assignments, or any other values specific to your business.
- When your CSV is ready, navigate to Operations > Blueprints and upload it as a new Blueprint.
- Return to Data Management > Data Logic, select your uploaded Blueprint under 1. Pick Blueprint > Select Existing, and configure your input and output mapping.
Note: Some CRM fields referenced in the example Blueprints may not exist by default in your CRM and will need to be created as custom fields before configuring your input and output mapping.
If no Blueprint row matches a record, Data Logic applies the fallback values configured in your output mapping rather than leaving those fields empty. When tailoring an example Blueprint, consider what default state non-matching records should receive and configure fallback values in your output mapping accordingly. For more information, see What Happens When a Record Does Not Match Any Blueprint Row? in the Module Overview.
Frequently Asked Questions
Why does the Data Quality Enforcement Blueprint set a status for a field a row doesn't evaluate?
The Data Quality Enforcement Blueprint assigns a status to a field it didn't test directly because of how row order and first-match-wins work together — see When a record matches more than one row, which row is applied? for the underlying mechanism. Because a record only reaches a given row after failing to match every row above it, reaching that row already rules out certain outcomes.
For example, a record only reaches Row 5 (US, valid email only) after failing to match Rows 2, 3, and 4.
Failing Row 2 means phone or email wasn't valid.
Failing Row 3 means phone specifically wasn't valid.
Failing Row 4 means phone isn't an all-zeros placeholder either.
By the time Row 5 matches on a valid email, the Blueprint has already established that phone is neither valid nor a placeholder — so asserting Phone Status as Invalid is a conclusion drawn from that elimination, not an unverified guess. The same logic applies to Row 3 (Email Status), Row 7 (Email Status), and Row 8 (Phone Status).
Why is 'Blank Cell Matches Any' required on every input column for this Blueprint?
Blank Cell Matches Any is required on every input column for this Blueprint because several rows intentionally leave one or more input columns blank so that only the remaining columns determine the match — see How does 'Blank Cell Matches Any' Match Option affect row matching? for how the Match Option works generally, and Match Options in the Module Overview for the full set of Match Options available.
Without it enabled, a blank cell under Exact matching — used on the Country column — would instead only match records where that CRM field is also empty, breaking rows like Row 4 (all-zeros phone, any country) that need Country to act as a wildcard. Enable Blank Cell Matches Any on Phone, Email, and Country before running this Blueprint.
Does this Blueprint need to be re-run manually when a record's data changes?
No, this Blueprint doesn't need to be re-run manually when a record's data changes, as long as it's configured as a scheduled Data Logic template. Because Data Logic evaluates all records against the Blueprint on every run, a record that was clean last week but received a bad phone number update today is caught, re-scored, and re-flagged automatically on the template's next scheduled run — no manual review or cleanup job required. See Can Data Logic keep CRM fields clean on an ongoing basis, or is it a one-time operation? for how scheduling works, and Templates and Automation in the Module Overview for setting up the schedule itself.
For more answers to common questions about creating, editing, and applying Data Logic and Blueprints, check out the Data Logic & Blueprints FAQs.
Additional Resources
Related Help Articles
Related Blog Posts