Data Logic Blueprint Examples: CRM Automation Use Cases for HubSpot and Salesforce

See how Data Logic and Blueprints solve real CRM data problems — from normalizing job titles and scoring leads to enforcing compliance rules and migrating legacy field values — with Blueprint Preview images and step-by-step configuration details for all 15 example Blueprints.

header-data-monster-connected-monitors.jpeg

 

This article walks through the 15 example Blueprints available in the Data Logic module under 1. Pick Blueprint > Explore Examples. Each example illustrates a common CRM data problem and shows how Data Logic and Blueprints can solve it without code or complex branching logic. For guidance on tailoring an example Blueprint to your own data, see Using an Example Blueprint as a Starting Point at the end of this article. For a full explanation of how Data Logic works, see the Module Overview: Data Logic.

In each Blueprint Preview, the column headers follow a consistent pattern: input columns show the matching criteria in parentheses, such as Domain (Ends With) or Industry (Contains), and output columns show the update condition in parentheses, such as Account Tier (Always) or Territory Owner (Field Empty). These values correspond directly to the matching criteria and update condition settings you configure in Data Logic's input and output mapping.

Note: Some CRM fields referenced in the example Blueprints may not exist by default in your CRM and may need to be created as custom fields before configuring your input and output mapping.

Account and Company Data

Account Enrichment from Domain

Company records often arrive in the CRM with key classification fields such as industry, account tier, or GTM motion, left blank because no manual process exists to consistently fill them. This Blueprint uses each company's domain to automatically populate those fields and can be set up to run as soon as a record enters the system.

The Blueprint matches records using two input types: exact domain values for known accounts and domain-suffix patterns (such as .edu and .gov) that classify entire categories of organizations in a single row. When a match is found, Data Logic writes industry, account tier, GTM motion, and data source to the record simultaneously. 

  • Match on exact domain — The Domain (Exact) column targets specific known accounts by their full domain value, such as walmart.com or target.com. 
  • Match on domain suffix — The Domain (Ends With) column classifies all .edu and .gov domains in one row each, covering every subdomain and institution without listing them individually. 
  • Write multiple output fields from one match — A single matching row populates industry, account tier, GTM motion, and data source fields simultaneously. 
  • Fallback values for unmatched records — Records with domains that don't match any Blueprint row receive a default classification — such as Unclassified or Review — configured in the Data Logic output mapping rather than in the Blueprint itself.

The Blueprint Preview pictured below shows the Account Enrichment from Domain example. 

  • Rows 2 and 3 use exact domain matching to classify walmart.com and target.com as Retail industry, Enterprise account tier, Field Sales GTM motion, with Data Vendor A and Data Vendor B assigned as the data source, respectively. 
  • Rows 4 and 5 use Ends With matching to classify all .edu and .gov domains as Education and Government industry, Non-Commercial account tier, Inbound Only GTM motion, with Education and Government as the data source values.
data-logic-example-blueprint-account-enrichment-from-domain-813w.png

Data Logic Configuration

To configure the input mapping in the Data Management > Data Logic module, select the object type, example Blueprint, then under 2. Input Mapping, add the following:

  • Blueprint column Domain (Exact) maps to CRM field Website using Exact matching criteria
  • Blueprint column Domain (Ends With) maps to CRM field Website using Ends With matching criteria
data-logic-input-mapping-account-enrichment-from-domain-646w.png

To configure the output mapping, click 3. Output Mapping and add the following:

  • Blueprint column Industry (Always) maps to CRM field Industry using Always update condition
  • Blueprint column Account Tier maps to CRM field Account Tier with update condition Always
  • Blueprint column GTM Motion maps to CRM field GTM Motion with update condition Always
  • Blueprint column Region maps to CRM field Region with update condition Always
  • Blueprint column Data Source maps to CRM field Data Source with update condition Always
data-logic-output-mapping-account-enrichment-from-domain-646w.png

ICP Scoring

Account records often lack a consistent, auditable way to measure fit against your Ideal Customer Profile — scores get set manually, criteria live in someone's head, and updates require reconfiguring whatever process set them in the first place. This Blueprint scores accounts against your ICP using firmographic signals and technology stack, and assigns a tier and flag to each record based on how well it fits your ICP.

The Blueprint matches records by evaluating industry, employee count, annual revenue, and technology stack together in a single row. When all conditions in a row are satisfied simultaneously, Data Logic writes the ICP score, tier, flag, and disqualify reason to the record. Row order determines priority — more specific profiles appear above broader ones, so that a SaaS company using Salesforce matches its specific row before a more general SaaS row is evaluated.

  • Match on industry — The Industry (Contains) column matches records where the industry field contains the Blueprint value, so "Financial Services" matches any industry value that includes that phrase. 
  • Match on employee count and revenue ranges — The Employee Count (Number Between) and Annual Revenue (Number Between) columns define ranges using a lower-inclusive, upper-exclusive format (for example, 100-1000 matches 100 through 999). Both ranges must be satisfied simultaneously with industry for a row to match. 
  • Match on technology stack — The Technology (Contains Word) column matches records where the technology field contains the Blueprint value as a whole word, so "Salesforce" matches "Salesforce CRM" but not "Salesforce-adjacent." 
  • Write ICP score and tier on every match — The ICP Score (Always) and ICP Tier (Always) columns update those fields on every matching record regardless of existing values, keeping scores current as the Blueprint is updated. 
  • Protect manually set ICP flags — The ICP Flag (Field Empty) column only writes a flag to records where that field is currently blank, so flags set manually by sales are never overwritten. 
  • Write disqualify reasons only where one already exists — The Disqualify Reason (Field Non-Empty) column only updates records that already carry a disqualify signal, leaving unqualified-but-not-yet-disqualified records untouched.

The Blueprint Preview pictured below shows the ICP Scoring example:

  • Row 2 matches SaaS companies with 100–999 employees, annual revenue between $1,000,000 and $49,999,999, and Salesforce in their technology stack, assigning a score of 95, Tier 1, and ICP Flag set to TRUE.
  • Row 3 matches the same firmographic profile but with HubSpot in the technology stack, assigning a score of 90, Tier 1, and ICP Flag set to TRUE.
  • Row 4 matches Financial Services companies with 500–9,999 employees and annual revenue between $10,000,000 and $99,999,999, assigning a score of 85, Tier 1, and ICP Flag set to TRUE.
  • Row 5 matches Healthcare companies with 100–4,999 employees and annual revenue between $5,000,000 and $9,999,999, assigning a score of 75, Tier 2, and ICP Flag set to TRUE.
  • Row 6 matches Manufacturing companies with 50–499 employees and annual revenue between $500,000 and $999,999, assigning a score of 60 and Tier 2, with no ICP Flag value.
  • Row 7 matches any company with fewer than 50 employees, regardless of industry, assigning a score of 20 and a Disqualified tier.
data-logic-example-blueprint-icp-scoring-1089w.png

Data Logic Configuration

To configure the input mapping in the Data Management > Data Logic module, select the object type, example Blueprint, then under 2. Input Mapping, add the following:

  • Blueprint column Industry (Contains) maps to CRM field Industry using Contains matching criteria
  • Blueprint column Employee Count (Number Between) maps to CRM field Number of Employees using Number Between matching criteria
  • Blueprint column Annual Revenue (Number Between) maps to CRM field Annual Revenue using Number Between matching criteria
  • Blueprint column Technology (Contains Word) maps to CRM field Technology using Contains Word matching criteria
data-logic-input-mapping-icp-scoring-646w.png

To configure the output mapping, under 3. Output Mapping, add the following:

  • Blueprint column ICP Score (Always) maps to CRM field ICP Score with update condition Always
  • Blueprint column ICP Tier (Always) maps to CRM field ICP Tier with update condition Always
  • Blueprint column ICP Flag (Field Empty) maps to CRM field ICP Flag with update condition Field Empty
  • Blueprint column Disqualify Reason (Field Non-Empty) maps to CRM field Disqualify Reason with update condition Field Non-Empty
data-logic-output-mapping-icp-scoring-646w.png

Territory Assignment

Automatically assign region, territory owner, and sales tier to company records based on country, state, and industry. When a new account enters the CRM or its location changes, Data Logic matches it against your Blueprint and updates the correct fields instantly — no manual lookup or branching logic required.

For the full example including Blueprint Preview, key techniques, Data Logic configuration, and step-by-step instructions, see Blueprint Example: Territory Assignment.

data-logic-example-blueprint-territory-assignment-753w.png

The Blueprint Preview pictured above shows the Territory Assignment example Blueprint available in the Data Logic module.

Contact and Lead Data

Job Title Normalization and Persona Assignment

Contact records frequently contain free-text job titles entered inconsistently — "VP of Sales," "Vice President, Sales," "vp sales" — making it difficult to reliably filter, route, or score contacts based on role. This Blueprint standardizes those variations into consistent normalized title, persona, seniority, and department values across your contact records.

The Blueprint matches records against three separate input columns — all mapped to the same Job Title CRM field — using different matching criteria across rows. Each row populates only one of those columns, leaving the others blank, so a record matches via whichever criteria its job title satisfies first. When a match is found, Data Logic writes the normalized title, persona, seniority, and department to the record.

  • Match on job title containing a word — The Job Title (Contains Word) column matches records where the job title contains the Blueprint value as a whole word, so "VP" matches "VP of Sales" but not "MVP."
  • Match on job title starting with a phrase — The Job Title (Starts With) column matches records where the job title begins with the Blueprint value, so "Head of" matches "Head of Marketing" and "Head of Sales."
  • Match on job title using a pattern — The Job Title (Regex) column matches records where the job title fits a regular expression pattern, so "^Chief.*(Officer|Executive)$" matches "Chief Executive Officer" and "Chief Marketing Officer" in a single row.
  • Write normalized title and persona on every match — The Normalized Title (Always) and Persona (Always) columns update those fields on every matching record regardless of existing values.
  • Write seniority only when the Blueprint row contains a value — The Seniority (Output Non-Empty) column updates the seniority field only when the matching Blueprint row contains a seniority value, so rows without one do not erase an existing value on the record.
  • Fill department only when the field is blank — The Department (Field Empty) column only writes a department value to records where that field is currently empty, so existing department values are never overwritten.

The Blueprint Preview pictured below shows the Job Title Normalization and Persona Assignment example. 

  • Row 2 uses Contains Word matching to classify any title containing "VP" as Vice President / Economic Buyer / Senior. 
  • Row 3 matches titles containing "Director" as Director / Economic Buyer / Senior. 
  • Row 4 uses Starts With matching to classify titles beginning with "Head of" as Head of Function / Champion / Senior. 
  • Row 5 uses a Regex pattern to match any title that begins with "Chief" and ends with "Officer" or "Executive," classifying it as C-Suite Executive / Economic Buyer / Executive, and assigning Executive as the department. 
  • Row 6 uses Contains Word to classify titles containing "Manager" as Manager / Champion / Mid. 
  • Row 7 uses a Regex pattern to match any title containing "Engineer" or "engineer," classifying it as Engineer / End User, with Engineering assigned as the department.
data-logic-example-blueprint-Job-Title-Normalization+Persona-Assignment-969w.png

Data Logic Configuration

This Blueprint maps three input columns — Job Title (Contains Word), Job Title (Starts With), and Job Title (Regex) — all to the same CRM field. Each row in the Blueprint populates only one of those columns, so a record matches via whichever criteria its job title satisfies first. This allows different matching criteria to be applied to the same field across different rows. For a full explanation, see Do All Conditions Have to Match for a Blueprint Row to Apply? in the Module Overview.

To configure the input mapping in the Data Management > Data Logic module, select the object type, example Blueprint, then under 2. Input Mapping, add the following:

  • Blueprint column Job Title (Contains Word) maps to CRM field Job Title using Contains Word matching criteria
  • Blueprint column Job Title (Starts With) maps to CRM field Job Title using Starts With matching criteria
  • Blueprint column Job Title (Regex) maps to CRM field Job Title using Regex matching criteria
data-logic-input-mapping-Job-Title-Normalization+Persona-Assignment-646w.png

To configure the output mapping, under 3. Output Mapping, add the following:

  • Blueprint column Normalized Title (Always) maps to CRM field Job Title with update condition Always
  • Blueprint column Persona (Always) maps to CRM field Persona with update condition Always
  • Blueprint column Seniority (Output Non-Empty) maps to CRM field Seniority with update condition Output Non-Empty
  • Blueprint column Department (Field Empty) maps to CRM field Department with update condition Field Empty
data-logic-output-mapping-Job-Title-Normalization+Persona-Assignment-646w.png

Lead Scoring by Engagement and Firmographics

Lead records are often prioritized inconsistently — scoring criteria are stored in spreadsheets or institutional knowledge, and follow-up SLAs depend on whoever is triaging the queue that day. This Blueprint scores and prioritizes leads by combining company size with recent engagement, and automatically assigns each lead to the correct queue with a defined follow-up SLA.

The Blueprint matches records by evaluating employee count and days since last activity together in a single row. Both ranges must be satisfied simultaneously for a row to match. When a match is found, Data Logic writes the MQL score, sales priority, assigned queue, and follow-up SLA days to the record.

  • Match on employee count range — The Employee Count (Number Between) column matches records where the employee count falls within the defined range using a lower-inclusive, upper-exclusive format (for example, 100-1000 matches 100 through 999).
  • Match on days since last activity — The Last Activity Days (Number Between) column matches records based on how recently the lead engaged, using the same lower-inclusive, upper-exclusive range format (for example, 0-8 matches leads who engaged within the last 7 days).
  • Write MQL score and sales priority on every match — The MQL Score (Always) and Sales Priority (Always) columns update those fields on every matching record regardless of existing values, keeping scores current as engagement data changes.
  • Assign to queue only when the field is blank — The Assigned Queue (Field Empty) column only writes a queue assignment to records where that field is currently empty, so leads already routed to a queue are not reassigned.
  • Write follow-up SLA on every match — The Follow-up SLA Days (Always) column updates the SLA field on every matching record, ensuring follow-up timelines stay consistent with current scoring criteria.

The Blueprint Preview pictured below shows the Lead Scoring by Engagement and Firmographics example. 

  • Row 2 matches companies with 1,000–9,999 employees that engaged within the last 7 days, assigning an MQL score of 95, P1 priority, enterprise-queue, and a 1-day SLA. 
  • Row 3 matches the same company size but with activity between 8 and 29 days ago, scoring 80 with a 3-day SLA. 
  • Row 4 matches mid-market companies with 100–999 employees and recent engagement, scoring 75 with a 2-day SLA. 
  • Row 6 matches companies with 1–99 employees regardless of recent activity, scoring 40 with a 7-day SLA.
data-logic-example-blueprint-Lead-Scoring-by-Engagement+Firmographics-895w.png

Data Logic Configuration

The Last Activity Days input requires a custom field in your CRM that calculates the number of days since the last logged activity.

In HubSpot, create a custom property on the lead object with the following settings:

  • Field Label: Last Activity Days
  • Field type: Calculation
  • Calculated property type: Time since
  • Start date: Last Activity Date

In Salesforce, create a custom field on the lead object with the following settings:

  • Field Label: Last Activity Days
  • Data type: Formula field
  • Formula Return Type: Number
  • Decimal Places: 0
  • Formula: TODAY() - LastActivityDate

This field dynamically calculates the number of days since the last logged activity and is what the Number Between matching criteria evaluates.

To configure the input mapping in the Data Management > Data Logic module, select the object type, example Blueprint, then under 2. Input Mapping, add the following:

  • Blueprint column Employee Count (Number Between) maps to CRM field Number of Employees using Number Between matching criteria
  • Blueprint column Last Activity Days (Number Between) maps to the custom CRM field Last Activity Days using Number Between matching criteria
data-logic-input-mapping-Lead-Scoring-by-Engagement+Firmographics-646w.png

To configure the output mapping, under 3. Output Mapping, add the following:

  • Blueprint column MQL Score (Always) maps to CRM field MQL Score with update condition Always
  • Blueprint column Sales Priority (Always) maps to CRM field Sales Priority with update condition Always
  • Blueprint column Assigned Queue (Field Empty) maps to CRM field Assigned Queue with update condition Field Empty
  • Blueprint column Follow-up SLA Days (Always) maps to CRM field Follow-up SLA Days with update condition Always
data-logic-output-mapping-Lead-Scoring-by-Engagement+Firmographics-646w.png

Persona-to-Segment Mapping

Contacts often sit in the CRM without consistent nurture track, SDR sequence, or outbound eligibility values — or get enrolled in the wrong sequence because routing logic lives in disconnected workflows or manual processes. This Blueprint routes contacts to the correct nurture track and SDR sequence based on persona, company type, and deal stage, and automatically enforces outbound suppression for closed accounts.

The Blueprint matches records by evaluating persona, company type, and deal stage together. Row order is critical here — more specific rows appear above broader ones, so that an Enterprise Economic Buyer with a closed deal matches row 2 before the broad closed-deal catch-all in row 7 is evaluated. When a match is found, Data Logic writes the nurture track, content persona, SDR sequence, outbound eligibility, and priority score to the record.

  • Match on persona and company type together — The Persona (Exact) and Company Type (Exact) columns match records where both fields exactly match the Blueprint values simultaneously.
  • Match on deal stage — The Deal Stage (Contains) column matches records where the deal stage field contains the Blueprint value, so "Closed" matches both Closed Won and Closed Lost in a single row.
  • Write nurture track and content persona on every match — The Nurture Track (Always) and Content Persona (Always) columns update those fields on every matching record, regardless of existing values.
  • Enroll in SDR sequence only when the field is blank — The SDR Sequence (Field Empty) column only writes a sequence assignment to records where that field is currently empty, so contacts already enrolled in an active sequence are not disrupted.
  • Enforce outbound suppression on every match — The Exclude from Outbound (Always) column updates that field on every matching record regardless of existing values, ensuring suppression is applied consistently across all closed accounts.
  • Write priority score on every match — The Priority Score (Always) column updates the priority score for every matching record, keeping scores current as persona and deal-stage data changes.

The Blueprint Preview pictured below shows the Persona-to-Segment Mapping example. 

  • Row 2 matches Enterprise Economic Buyers with a closed deal stage, routing them to the Alumni nurture track, setting Exclude from Outbound to true, and assigning a priority score of 0. 
  • Row 3 matches active Enterprise Economic Buyers with no deal stage condition, enrolling them in exec-sequence and assigning a priority score of 90. 
  • Row 4 matches Enterprise Champions, routing them to the Champion nurture track and champ-sequence with a score of 85. 
  • Row 5 matches SMB End Users, routing them to the PLG nurture track and plg-sequence with a score of 60. 
  • Row 6 matches SMB Economic Buyers with a Closed Lost deal stage, routing them to a Re-engage track. 
  • Row 7 matches any record with a closed deal stage regardless of persona or company type, routing it to the Alumni track, setting Exclude from Outbound to true, and assigning a score of 0.
data-logic-example-blueprint-Persona-to-Segment-Mapping-1016w.png

Data Logic Configuration

To configure the input mapping in the Data Management > Data Logic module, select the object type, example Blueprint, then under 2. Input Mapping, add the following:

  • Blueprint column Persona (Exact) maps to CRM field Persona using Exact matching criteria
  • Blueprint column Company Type (Exact) maps to CRM field Company Type using Exact matching criteria
  • Blueprint column Deal Stage (Contains) maps to CRM field Deal Stage using Contains matching criteria
data-logic-input-mapping-Persona-to-Segment-Mapping-646w.png

To configure the output mapping, under 3. Output Mapping, add the following:

  • Blueprint column Nurture Track (Always) maps to CRM field Nurture Track with update condition Always
  • Blueprint column Content Persona (Always) maps to CRM field Content Persona with update condition Always
  • Blueprint column SDR Sequence (Field Empty) maps to CRM field SDR Sequence with update condition Field Empty
  • Blueprint column Exclude from Outbound (Always) maps to CRM field Exclude from Outbound with update condition Always
  • Blueprint column Priority Score (Always) maps to CRM field Priority Score with update condition Always
data-logic-output-mapping-Persona-to-Segment-Mapping-646w.png

Attribution and Marketing Data

Lead Source Harmonization

Lead source values accumulate inconsistencies over time — form submissions, manual entry, and integrations each produce their own variations, making attribution reporting unreliable across HubSpot and Salesforce. This Blueprint normalizes inconsistent lead source values into a clean attribution taxonomy, assigning normalized lead source, attribution channel, and source category to each record.

The Blueprint matches records using three input columns, where each row populates only one — either a lead source keyword, an exact original source value, or a referrer domain suffix. The Lead Source (Contains) and Referrer Domain (Ends With) columns require Blank Cell Matches Any enabled in the Match Options field of the input mapping, so rows leaving those columns blank skip that condition rather than blocking the row from matching. Lead Source Original (Exact) does not require this — a blank cell under Exact matching already matches records where the corresponding CRM field is also empty, which is the correct behavior for this column.

  • Match on lead source keyword — The Lead Source (Contains) column matches records where the lead source field contains the Blueprint value, so "webinar" matches any lead source value that includes that word.
  • Match on exact original source value — The Lead Source Original (Exact) column matches records where the original lead source field exactly matches the Blueprint value, such as "Direct."
  • Match on referrer domain suffix — The Referrer Domain (Ends With) column matches records where the referrer domain ends with the Blueprint value, so "g2.com" matches www.g2.com, community.g2.com, and any other g2.com subdomain in a single row.
  • Write normalized lead source, attribution channel, and source category on every match — The Normalized Lead Source (Always), Attribution Channel (Always), and Source Category (Always) columns update those fields on every matching record regardless of existing values.
  • Preserve the original source value only when one exists — The Original Preserved (Field Non-Empty) column only writes a preservation marker to records that already have an existing source value, so records without one are left unchanged.
  • Write a review flag only when the Blueprint row contains a value — The Review Flag (Output Non-Empty) column updates the review flag field only when the matching Blueprint row contains a value, so rows without a review flag — such as webinar or partner rows — do not erase an existing flag on the record.

The Blueprint Preview below shows the Lead Source Harmonization example. 

  • Rows 2 and 3 use Contains matching to classify lead sources containing "webinar" and "conference" as Event, with Owned and Offline attribution channels, respectively. 
  • Rows 4 and 5 use Ends With matching on the referrer domain to classify g2.com traffic as Review Site / G2 / Paid, and capterra.com as Review Site / Capterra / Paid, with G2 Review and Capterra Review written as the review flag. 
  • Row 6 matches lead sources containing "partner" as Partner / Channel / Indirect. 
  • Row 7 matches "referral" as Referral / Word of Mouth / Organic. 
  • Row 8 uses exact matching to classify a Direct original source value as Direct across all output fields.
data-logic-example-blueprint-Lead-Source-Harmonization-1071w.png

Data Logic Configuration

This Blueprint uses three input columns — Lead Source (Contains), Lead Source Original (Exact), and Referrer Domain (Ends With) — where each row in the example Blueprint populates only one of them. The Lead Source (Contains) and Referrer Domain (Ends With) columns require Blank Cell Matches Any enabled in Match Options so that rows leaving those columns blank skip that condition rather than blocking the row. Blank Cell Matches Any is not enabled on Lead Source Original (Exact) — a blank cell under Exact matching already matches records where the corresponding CRM field is also empty, which is the correct behavior for this column.

To configure the input mapping in the Data Integrity > Data Logic module, select the object type, example Blueprint, then under 2. Input Mapping, add the following:

  • Blueprint column Lead Source (Contains) maps to CRM field Lead Source using Contains matching criteria, with Match Options set to Blank Cell Matches Any 
  • Blueprint column Lead Source Original (Exact) maps to CRM field Lead Source Original using Exact matching criteria, with no Match Options set 
  • Blueprint column Referrer Domain (Ends With) maps to CRM field Referrer Domain using Ends With matching criteria, with Match Options set to Blank Cell Matches Any
data-logic-input-mapping-Lead-Source-Harmonization-646w.png

To configure the output mapping, under 3. Output Mapping, add the following:

  • Blueprint column Normalized Lead Source (Always) maps to CRM field Normalized Lead Source with update condition Always
  • Blueprint column Attribution Channel (Always) maps to CRM field Attribution Channel with update condition Always
  • Blueprint column Source Category (Always) maps to CRM field Source Category with update condition Always
  • Blueprint column Original Preserved (Field Non-Empty) maps to CRM field Original Preserved with update condition Field Non-Empty
  • Blueprint column Review Flag (Output Non-Empty) maps to CRM field Review Flag with update condition Output Non-Empty
data-logic-output-mapping-Lead-Source-Harmonization-646w.png

UTM Normalization and Attribution

UTM parameters arrive in the CRM inconsistently — capitalization varies, campaign naming conventions drift, and the same source produces different values depending on who built the campaign. This Blueprint standardizes UTM parameters into clean channel, attribution group, and campaign quarter values as leads enter the system, without modifying the original UTM values.

The Blueprint matches records using four input columns across three CRM fields. UTM Source and UTM Medium each have their own input column, while UTM Campaign has two — one using Starts With matching for quarter prefixes and one using Regex matching for campaign name patterns — both mapped to the same UTM Campaign CRM field. Each row populates only one input column, so a record matches via whichever criteria its UTM data satisfies first. Some rows update only a single output field, demonstrating that Blueprint rows don't need to populate every output column — a row can apply just one value when that's all the logic requires.

  • Match on UTM source — The UTM Source (Contains) column matches records where the UTM source field contains the Blueprint value, so "google" matches any UTM source value that includes that word.
  • Match on UTM medium — The UTM Medium (Exact) column matches records where the UTM medium field exactly matches the Blueprint value, such as "cpc," "organic," or "email."
  • Match on campaign quarter prefix — The UTM Campaign (Starts With) column matches records where the campaign name begins with the Blueprint value, so "q1-" matches any campaign starting with that prefix and writes Q1-2025 as the campaign quarter.
  • Match on campaign name pattern — The UTM Campaign (Regex) column matches records where the campaign name fits a regular expression pattern, so ".webinar." matches any campaign name containing "webinar" regardless of what precedes or follows it.
  • Write normalized source, channel, and attribution group on every match — The Normalized Source (Always), Channel (Always), and Attribution Group (Always) columns update those fields on every matching record regardless of existing values.
  • Write campaign quarter only when the Blueprint row contains a value — The Campaign Quarter (Output Non-Empty) column updates that field only when the matching row contains a campaign quarter value, so rows without one — such as source and medium rows — do not erase an existing quarter value on the record.
  • Set MQL attribution only when the field is blank — The MQL Attribution (Field Empty) column only writes an attribution value to records where that field is currently empty, preserving attribution set by earlier pipeline stages.

The Blueprint Preview below shows the UTM Normalization and Attribution example. 

  • Row 2 matches records with UTM source containing "google" and UTM medium exactly "cpc," classifying them as Paid Search / Paid and setting MQL Attribution to Paid Search. 
  • Row 3 matches the same source with medium "organic," and is classified as Organic Search / Organic. 
  • Row 4 matches UTM source containing "linkedin" as Paid Social / Paid. 
  • Row 5 matches UTM medium exactly "email" as Internal / Email / Owned. 
  • Rows 6 and 7 match campaigns starting with "q1-" and "q2-" respectively, writing only the Campaign Quarter field — Q1-2025 and Q2-2025 — without affecting any other output fields. 
  • Row 8 uses Regex matching to identify any campaign name containing "webinar" and sets MQL Attribution to Event.
data-logic-example-blueprint-UTM-Normalization-&-Attribution-1097w.png

Data Logic Configuration

This Blueprint maps two input columns — UTM Campaign (Starts With) and UTM Campaign (Regex) — to the same CRM field, allowing different matching criteria to be applied to the UTM Campaign field across different rows. For a full explanation, see Do All Conditions Have to Match for a Blueprint Row to Apply? in the Module Overview.

To configure the input mapping in the Data Management > Data Logic module, select the object type, example Blueprint, then under 2. Input Mapping, add the following:

  • Blueprint column UTM Source (Contains) maps to CRM field UTM Source using Contains matching criteria
  • Blueprint column UTM Medium (Exact) maps to CRM field UTM Medium using Exact matching criteria
  • Blueprint column UTM Campaign (Starts With) maps to CRM field UTM Campaign using Starts With matching criteria
  • Blueprint column UTM Campaign (Regex) maps to CRM field UTM Campaign using Regex matching criteria
data-logic-input-mapping-UTM-Normalization-&-Attribution-646w.png

To configure the output mapping, under 3. Output Mapping, add the following:

  • Blueprint column Normalized Source (Always) maps to CRM field Normalized Source with update condition Always
  • Blueprint column Channel (Always) maps to CRM field Channel with update condition Always
  • Blueprint column Attribution Group (Always) maps to CRM field Attribution Group with update condition Always
  • Blueprint column Campaign Quarter (Output Non-Empty) maps to CRM field Campaign Quarter with update condition Output Non-Empty
  • Blueprint column MQL Attribution (Field Empty) maps to CRM field MQL Attribution with update condition Field Empty
data-logic-output-mapping-UTM-Normalization-&-Attribution-646w.png

Revenue Operations

Pricing Tier and Discount Governance

Customer records often carry inconsistent pricing tier assignments and discount values — set manually at the time of sale and never updated as contracts renew or customer tenure grows. This Blueprint enforces pricing tier assignments and discount guardrails across all customer records based on ARR, contract length, and customer tenure, and automatically sets approval requirements.

The Blueprint matches records by evaluating ARR, contract length, and customer since date together. Row order is critical here — more specific rows appear above broader ones, so that a long-tenured high-value customer with a qualifying contract length matches their specific row before a broader ARR-only row is evaluated. When a match is found, Data Logic writes the standard discount, max discount, pricing tier, negotiated rate marker, and approval requirement to the record.

  • Match on ARR range — The ARR (Number Between) column matches records where the ARR field falls within the defined range using a lower-inclusive, upper-exclusive format (for example, 100000-1000000 matches $100,000 through $999,999).
  • Match on contract length — The Contract Length Months (Number Between) column further qualifies rows where contract length is relevant, using a lower-inclusive, upper-exclusive format (for example, 24-49 matches 24 through 48 months). A 24-month contract, therefore, matches a different row than a 12-month contract with the same ARR.
  • Match on customer tenure — The Customer Since (Before) column matches records where the customer since date falls before the Blueprint value, so rows 2 and 7 identify long-tenured accounts by their join date.
  • Write standard discount, max discount, and pricing tier on every match — The Standard Discount % (Always), Max Discount % (Always), and Pricing Tier (Always) columns update those fields on every matching record regardless of existing values, keeping tier assignments and discount guardrails current.
  • Preserve manually negotiated rates — The Negotiated Rate (Field Non-Empty) column only writes a value to records that already have a negotiated rate, so manually set rates are never overwritten by the Blueprint.
  • Enforce approval requirements on every match — The Approval Required (Always) column updates that field on every matching record regardless of existing values, ensuring governance rules reflect current policy across all records.

The Blueprint Preview below shows the Pricing Tier & Discount Governance example. 

  • Row 2 matches high-ARR accounts with 24–48 month contracts and a customer since date before 2020-01-01, assigning Strategic pricing tier with a 20% standard discount, 30% max discount, and no approval required. For records in this row that already have a manually negotiated rate, the Negotiated Rate field is set to TRUE. 
  • Row 3 matches the same ARR range with 12–23 month contracts, assigning Enterprise tier with 15% standard and 25% max discount. 
  • Row 4 matches mid-range ARR accounts with 12–35 month contracts, assigning Mid-Market tier. 
  • Row 5 matches Growth-range ARR accounts with no contract length condition, assigning a 5% standard discount and requiring approval. 
  • Row 6 matches Starter-range ARR accounts with no discount ceiling and approval required. 
  • Row 7 matches high-ARR accounts with a customer since date before 2024-01-01, assigning Strategic-Founder tier with elevated discount ceilings of 25% standard and 35% max, and no approval required. For records in this row that already have a manually negotiated rate, the Negotiated Rate field is set to TRUE.
data-logic-example-blueprint-Pricing-Tier &-Discount-Governance-1100w.png

Data Logic Configuration

To configure the input mapping in the Data Management > Data Logic module, select the object type, example Blueprint, then under 2. Input Mapping, add the following:

  • Blueprint column ARR (Number Between) maps to CRM field ARR using Number Between matching criteria
  • Blueprint column Contract Length Months (Number Between) maps to CRM field Contract Length Months using Number Between matching criteria
  • Blueprint column Customer Since (Before) maps to CRM field Customer Since (or First Conversion Date as in the example below) using Before matching criteria
data-logic-input-mapping-Pricing-Tier-&-Discount-Governance-729w.png

To configure the output mapping, under 3. Output Mapping, add the following:

  • Blueprint column Standard Discount % (Always) maps to CRM field Standard Discount % with update condition Always
  • Blueprint column Max Discount % (Always) maps to CRM field Max Discount % with update condition Always
  • Blueprint column Pricing Tier (Always) maps to CRM field Pricing Tier with update condition Always
  • Blueprint column Negotiated Rate (Field Non-Empty) maps to CRM field Negotiated Rate with update condition Field Non-Empty
  • Blueprint column Approval Required (Always) maps to CRM field Approval Required with update condition Always
data-logic-output-mapping-Pricing-Tier-&-Discount-Governance-646w.png

Renewal Risk Scoring

At-risk accounts often go unnoticed until it's too late — renewal timelines, ARR, and engagement signals exist in the CRM but aren't combined into a single, consistently applied risk score. This Blueprint identifies at-risk accounts by evaluating the contract renewal timeline, ARR, and days since last login together, and automatically assigns a risk score, a CSM alert, and a renewal owner.

The Blueprint matches records by evaluating contract end date range, ARR, and days since last login simultaneously. When all three conditions in a row are satisfied, Data Logic writes the risk score, CSM alert, renewal owner, and intervention flag to the record.

Note: The contract end date ranges in this Blueprint are hardcoded to specific dates. As time passes, these ranges will need to be updated in the Blueprint to remain accurate. When using this Blueprint as a starting point, replace the date values with ranges that reflect your current renewal calendar, and plan to update them regularly.

  • Match on contract end date range — The Contract End Date (Date Between) column matches records where the contract end date falls within the defined date range. The range is lower-inclusive and upper-exclusive, so a range of 2026-01-01 to 2026-04-01 matches January 1 through March 31, 2026. The recommended format is ISO 8601 (yyyy-MM-dd for dates, yyyy-MM-dd'T'HH:mm:ss for datetimes), though several other date formats are also supported.
  • Match on ARR range — The ARR (Number Between) column further qualifies rows by ARR, using a lower-inclusive, upper-exclusive format (for example, 50000-100000 matches $50,000 through $99,999).
  • Match on days since last login — The Last Login Days (Number Between) column matches records based on how recently the account last logged in, using the same lower-inclusive, upper-exclusive range format.
  • Write risk score and CSM alert on every match — The Risk Score (Always) and CSM Alert (Always) columns update those fields on every matching record regardless of existing values, keeping risk signals current as engagement and renewal data changes.
  • Assign renewal owner only when the field is blank — The Renewal Owner (Field Empty) column only writes an owner to records where that field is currently empty, so existing owner assignments are not overwritten.
  • Write intervention flag only where one already exists — The Intervention Flag (Field Non-Empty) column only updates records that already carry an intervention signal, leaving records not yet flagged for intervention untouched.

The Blueprint Preview below shows the Renewal Risk Scoring example. 

  • Row 2 matches high-ARR accounts renewing in Q1 2026 that haven't logged in for 30 or more days, assigning a risk score of 95, RED alert, and csm-enterprise@co.com as renewal owner, with an intervention flag set to TRUE. 
  • Row 3 matches mid-range ARR accounts in the same renewal window with 14 or more days since last login, scoring 85 with a RED alert. 
  • Row 4 matches high-ARR accounts renewing in Q2 2026 with recent login activity within the last 13 days, scoring 70 with an AMBER alert. 
  • Row 5 matches smaller ARR accounts in the same Q2 renewal window with 30 or more days since last login, scoring 50 with an AMBER alert and csm-smb@co.com as renewal owner.
data-logic-example-blueprint-renewal-risk-scoring-1089w.png

Data Logic Configuration

The Contract End Date input uses Date Between matching. Ranges are lower-inclusive and upper-exclusive — a range of 2026-01-01 to 2026-04-01 matches January 1 through March 31, 2026. The recommended date format is ISO 8601: yyyy-MM-dd for dates and yyyy-MM-dd'T'HH:mm:ss for datetimes. For the full list of supported date formats, see the ISO 8601 standard.

The Last Login Days input requires a custom field in your CRM that calculates the number of days since the account last logged in.

In HubSpot, create a custom property with the following settings:

  • Field type: Calculation
  • Calculated property type: Time since
  • Date property: Last Login Date

In Salesforce, create a custom Formula Field with the following settings:

  • Field Label: Last Login Days
  • Formula Return Type: Number
  • Decimal Places: 0
  • Formula: TODAY() - Last_Login_Date__c

To configure the input mapping in the Data Management > Data Logic module, select the object type, example Blueprint, then under 2. Input Mapping, add the following:

  • Blueprint column Contract End Date (Date Between) maps to CRM field Contract End Date using Date Between matching criteria
  • Blueprint column ARR (Number Between) maps to CRM field ARR using Number Between matching criteria
  • Blueprint column Last Login Days (Number Between) maps to CRM field Last Login Days using Number Between matching criteria
data-logic-input-mapping-renewal-risk-scoring-646w.png

To configure the output mapping, under 3. Output Mapping add the following:

  • Blueprint column Risk Score (Always) maps to CRM field Risk Score with update condition Always
  • Blueprint column CSM Alert (Always) maps to CRM field CSM Alert with update condition Always
  • Blueprint column Renewal Owner (Field Empty) maps to CRM field Renewal Owner with update condition Field Empty
  • Blueprint column Intervention Flag (Field Non-Empty) maps to CRM field Intervention Flag with update condition Field Non-Empty
data-logic-output-mapping-renewal-risk-scoring-646w.png

SKU Standardization and Product Mapping

Product records accumulate inconsistent SKU codes and product name variations over time — especially after migrations, pricing changes, or acquisitions — making it difficult to report accurately on product line performance or billing categories. This Blueprint normalizes raw SKU codes and product names into consistent product line, billing category, and revenue type classifications, and assigns renewal eligibility automatically.

The Blueprint matches records using three input columns — SKU pattern, product name, and license type — where rows 2 through 4 and 7 match on SKU structure alone or combined with license type, and rows 5 and 6 match on product name alone. When a match is found, Data Logic writes the normalized SKU, product line, billing category, revenue type, and renewal eligibility to the record.

  • Match on SKU structure using a pattern — The SKU (Regex) column matches records where the SKU fits a regular expression pattern, so ^ENT-[A-Z]{3}-[0-9]{4}$ matches any SKU beginning with "ENT-" followed by three uppercase letters and four digits, while rejecting malformed variations.
  • Match on SKU structure combined with license type — The SKU (Regex) and License Type (Exact) columns work together in a single row so that structurally identical SKU codes produce different outputs depending on whether the license type is Annual or Monthly.
  • Match on product name — The Product Name (Contains Word) column matches records where the product name contains the Blueprint value as a whole word, so "Professional Services" and "Implementation" each match their respective rows without requiring an exact product name.
  • Write normalized SKU, product line, billing category, and revenue type on every match — The Normalized SKU (Always), Product Line (Always), Billing Category (Always), and Revenue Type (Always) columns update those fields on every matching record regardless of existing values.
  • Assign renewal eligibility only when the field is blank — The Renewal Eligible (Field Empty) column only writes a value to records where that field is currently empty, so existing renewal eligibility values are not overwritten.

The Blueprint Preview below shows the SKU Standardization and Product Mapping example:

  • Row 2 matches SKUs fitting the Enterprise pattern with an Annual license type, assigning ENT-STANDARD as the normalized SKU, Enterprise product line, ARR billing category, Recurring revenue type, and renewal eligibility set to true.
  • Row 3 matches the same SKU pattern with a Monthly license type, assigning ENT-STANDARD-MTM, Enterprise product line, MRR billing category, Recurring revenue type, and renewal eligibility set to true.
  • Row 4 matches SKUs beginning with "SMB-" followed by any characters, assigning SMB-STANDARD, SMB product line, MRR billing category, Recurring revenue type, and renewal eligibility set to true.
  • Row 5 matches product names containing "Professional Services," assigning PS-ENGAGEMENT, Services product line, One-Time billing category, Non-Recurring revenue type, and renewal eligibility set to false.
  • Row 6 matches product names containing "Implementation," assigning PS-IMPLEMENTATION, Services product line, One-Time billing category, Non-Recurring revenue type, and renewal eligibility set to false.
  • Row 7 matches SKUs beginning with "LEGACY-" followed by any characters, assigning LEGACY-MIGRATION, Legacy product line, ARR billing category, Recurring revenue type, and renewal eligibility set to true.
data-logic-example-blueprint-SKU-Standardization-&-Product-Mapping-1024w.png

Data Logic Configuration

To configure the input mapping in the Data Management > Data Logic module, select the object type, example Blueprint, then under 2. Input Mapping, add the following:

  • Blueprint column SKU (Regex) maps to CRM field SKU using Regex matching criteria
  • Blueprint column Product Name (Contains Word) maps to CRM field Product Name using Contains Word matching criteria
  • Blueprint column License Type (Exact) maps to CRM field License Type using Exact matching criteria
data-logic-input-mapping-SKU-Standardization-&-Product-Mapping-646w.png

To configure the output mapping, under 3. Output Mapping add the following:

  • Blueprint column Normalized SKU (Always) maps to CRM field SKU with update condition Always and fallback value UNCLASSIFIED
  • Blueprint column Product Line (Always) maps to CRM field Product Line with update condition Always
  • Blueprint column Billing Category (Always) maps to CRM field Billing Category with update condition Always
  • Blueprint column Revenue Type (Always) maps to CRM field Revenue Type with update condition Always
  • Blueprint column Renewal Eligible (Field Empty) maps to CRM field Renewal Eligible with update condition Field Empty
data-logic-output-mapping-SKU-Standardization-&-Product-Mapping-775w.png

Compliance and Data Quality

Compliance and Suppression List

Contact records that should be suppressed from outbound communications — competitors, legal holds, test records — often slip through because suppression logic is maintained manually or scattered across disconnected Workflows. This Blueprint enforces outbound suppression and GDPR compliance flags across all contact records automatically, classifying records by email domain, country, and company name the moment they enter the system.

The Blueprint matches records using three input columns, where each row populates only one — either an email domain pattern, an exact country value, or a company name keyword. When a match is found, Data Logic writes the suppression status, suppression reason, GDPR flag, outbound eligibility, and last reviewed date to the record. Row 8 has no input values, acting as a broad catch-all that assigns a default active state to records that don't match any more specific row above it.

Note: The Last Reviewed dates in this Blueprint are hardcoded to a specific date. When using this Blueprint as a starting point, replace the date values with your current review date, and plan to update them regularly to reflect when your suppression list was last reviewed.

  • Match on email domain pattern — The Email Domain (Regex) column matches records where the email address fits a regular expression pattern, so .*@competitor1\.com$ matches any email address at that domain, and .*\+test@.*$ matches any email address containing a plus sign before the @ symbol, identifying test records regardless of domain.
  • Match on country — The Country (Exact) column matches records where the country field exactly matches the Blueprint value, so "DE" and "FR" each match their respective GDPR-applicable countries in a single row.
  • Match on company name — The Company Name (Contains) column matches records where the company name contains the Blueprint value, so "Acme Corp" matches any company name that includes that phrase.
  • Write suppression status, GDPR flag, outbound eligibility, and last reviewed date on every match — The Suppression Status (Always), GDPR Flag (Always), Outbound Eligible (Always), and Last Reviewed (Always) columns update those fields on every matching record regardless of existing values.
  • Write suppression reason only when the Blueprint row contains a value — The Suppression Reason (Output Non-Empty) column updates that field only when the matching Blueprint row contains a suppression reason value, so rows without one — such as the GDPR country rows and the catch-all row — do not erase an existing reason on the record.

The Blueprint Preview below shows the Compliance and Suppression List example:

  • Rows 2 and 3 use Regex matching to suppress all email addresses at competitor1.com and competitor2.com, setting Suppression Status to Suppressed, Suppression Reason to Competitor, GDPR Flag to FALSE, and Outbound Eligible to FALSE.
  • Rows 4 and 5 use exact country matching to apply GDPR flags to all contacts in Germany (DE) and France (FR), setting Suppression Status to Active, GDPR Flag to TRUE, and Outbound Eligible to FALSE.
  • Row 6 uses company name matching to suppress all contacts at Acme Corp, setting Suppression Status to Suppressed and Suppression Reason to Legal Hold.
  • Row 7 uses a Regex pattern to identify test records by matching any email address containing a plus sign before the @ symbol, setting Suppression Status to Suppressed and Suppression Reason to Test Record.
  • Row 8 has no input values and acts as a catch-all for records that don't match any row above it, setting Suppression Status to Active, GDPR Flag to FALSE, and Outbound Eligible to TRUE.
data-logic-example-blueprint-example-blueprint-compliance-&-suppression-list-1067w.png

Data Logic Configuration

To configure the input mapping in the Data Management > Data Logic module, select the object type, example Blueprint, then under 2. Input Mapping, add the following:

  • Blueprint column Email Domain (Regex) maps to CRM field Email Domain using Regex matching criteria
  • Blueprint column Country (Exact) maps to CRM field Country using Exact matching criteria
  • Blueprint column Company Name (Contains) maps to CRM field Company Name using Contains matching criteria
data-logic-input-mapping-compliance-&-suppression-list-646w.png

To configure the output mapping, under 3. Output Mapping, add the following:

  • Blueprint column Suppression Status (Always) maps to CRM field Suppression Status with update condition Always
  • Blueprint column Suppression Reason (Output Non-Empty) maps to CRM field Suppression Reason with update condition Output Non-Empty
  • Blueprint column GDPR Flag (Always) maps to CRM field GDPR Flag with update condition Always
  • Blueprint column Outbound Eligible (Always) maps to CRM field Outbound Eligible with update condition Always
  • Blueprint column Last Reviewed (Always) maps to CRM field Last Reviewed with update condition Always
data-logic-output-mapping-compliance-&-suppression-list-690w.png

Data Quality Enforcement

Validate phone and email format across contact records and automatically route invalid records to a data quality review queue. Data Logic evaluates each record against your Blueprint continuously, turning data quality into an enforced policy rather than a periodic cleanup project.

For the full example including Blueprint Preview, key techniques, Data Logic configuration, and step-by-step instructions, see Blueprint Example: Data Quality Enforcement.

data-logic-example-blueprint-data-quality-enforcement-1073w.png

The Blueprint Preview pictured above shows the Data Quality Enforcement example Blueprint available in the Data Logic module.

Migration and System Integration

Legacy CRM Field Migration

Records migrated from a legacy CRM often arrive with field values that don't map cleanly to the new CRM's standards — stage names, source values, and owner IDs that made sense in the old system but aren't meaningful in the new one. This Blueprint maps legacy field values to current CRM standards, filling gaps in migrated records without overwriting values that were already correctly migrated through other means.

The Blueprint matches records by evaluating legacy stage, legacy source, and legacy owner ID together using exact matching. All three output fields for CRM stage, source, and owner use the Field Empty update condition, so the Blueprint only fills in what hasn't already been migrated — making it safe to run repeatedly throughout a migration without risk of overwriting correctly migrated values. Migration Status is written on every matching record to create a complete audit trail.

  • Match on legacy stage — The Legacy Stage (Exact) column matches records where the legacy stage field exactly matches the Blueprint value, so "PROSPECT" and "CLOSED_WON" each map to their corresponding CRM stage values.
  • Match on legacy source — The Legacy Source (Exact) column further qualifies rows where source is relevant, so PROSPECT / INBOUND and PROSPECT / OUTBOUND map to different CRM source values in separate rows.
  • Match on legacy owner ID — The Legacy Owner ID (Exact) column matches records where the legacy owner ID exactly matches the Blueprint value, mapping legacy IDs such as USR-001 and USR-002 to current owner email addresses.
  • Fill CRM stage, source, and owner only when the field is blank — The CRM Stage (Field Empty), CRM Source (Field Empty), and Owner Email (Field Empty) columns only write values to records where those fields are currently empty, so correctly migrated values are never overwritten.
  • Write migration status on every match — The Migration Status (Always) column updates that field on every matching record regardless of existing values, creating a complete audit trail across all processed records.
  • Mark migration flag only where one already exists — The Migration Flag (Field Non-Empty) column only updates records that already carry a migration flag, keeping unmigrated records identifiable throughout the process.

The Blueprint Preview below shows the Legacy CRM Field Migration example:

  • Row 2 matches records with Legacy Stage PROSPECT, Legacy Source INBOUND, and Legacy Owner ID USR-001, mapping to Prospecting stage, Inbound source, and john@co.com as owner.
  • Row 3 matches the same legacy stage and owner, but with Legacy Source OUTBOUND, mapping to Prospecting stage, Outbound source, and john@co.com as owner.
  • Row 4 matches Legacy Stage QUALIFIED and Legacy Owner ID USR-002 with no source condition, mapping to Qualified stage and sarah@co.com as owner.
  • Row 5 matches Legacy Stage CLOSED_WON and Legacy Owner ID USR-003 with no source condition, mapping to Closed Won stage and mike@co.com as owner.
  • Row 6 matches Legacy Stage CLOSED_LOST with no source or owner condition, mapping only to Closed Lost stage with no source or owner assignment.
  • Row 7 matches Legacy Owner ID USR-999 with no stage or source condition, mapping to unassigned@co.com as owner with no stage or source assignment.

All rows set Migration Status to Migrated and Migration Flag to true.

data-logic-example-blueprint-Legacy-CRM-Field-Migration-1065w.png

Data Logic Configuration

To configure the input mapping in the Data Management > Data Logic module, select the object type, example Blueprint, then under 2. Input Mapping, add the following:

  • Blueprint column Legacy Stage (Exact) maps to CRM field Legacy Stage using Exact matching criteria
  • Blueprint column Legacy Source (Exact) maps to CRM field Legacy Source using Exact matching criteria
  • Blueprint column Legacy Owner ID (Exact) maps to CRM field Legacy Owner ID using Exact matching criteria
data-logic-input-mapping-Legacy-CRM-Field-Migration-646w.png

To configure the output mapping, under 3. Output Mapping add the following:

  • Blueprint column CRM Stage (Field Empty) maps to CRM field CRM Stage with update condition Field Empty
  • Blueprint column CRM Source (Field Empty) maps to CRM field CRM Source with update condition Field Empty
  • Blueprint column Owner Email (Field Empty) maps to CRM field Owner Email with update condition Field Empty
  • Blueprint column Migration Status (Always) maps to CRM field Migration Status with update condition Always
  • Blueprint column Migration Flag (Field Non-Empty) maps to CRM field Migration Flag with update condition Field Non-Empty
data-logic-output-mapping-Legacy-CRM-Field-Migration-646w.png

Multi-System ID Harmonization

When records exist across both Salesforce and HubSpot, determining which system is the master of record — and how data should flow between them — is often handled inconsistently or not at all. This Blueprint determines the master system, sync direction, and conflict-resolution rules for each record based on its Salesforce ID prefix, HubSpot ID, and account type, and automatically routes unresolvable records to a manual review queue.

The Blueprint matches records by evaluating Salesforce ID prefix, HubSpot ID, and account type together. Row order is critical here — more specific rows combining all three inputs appear above broader rows that match on fewer conditions, so that a Customer account with both Salesforce and HubSpot IDs matches its specific row before a broader single-system row is evaluated. When a match is found, Data Logic writes the master system, sync direction, conflict resolution rule, deduplication priority, and review queue assignment to the record.

  • Match on Salesforce ID prefix — The Salesforce ID (Starts With) column matches records where the Salesforce ID begins with the Blueprint value. In Salesforce, ID prefixes indicate object type — "001" identifies account records and "003" identifies contact records — so this column determines which type of Salesforce record is being evaluated without requiring a separate object type filter.
  • Match on HubSpot ID — The HubSpot ID (Greater Than) column matches records where the HubSpot ID is greater than 0, confirming that a HubSpot ID exists on the record. Rows without this condition match records that exist only in Salesforce.
  • Match on account type — The Account Type (Exact) column further qualifies rows where account type is relevant, so Customer and Prospect accounts with the same Salesforce ID prefix produce different master system and sync direction outcomes.
  • Write master system, sync direction, conflict resolution, and dedup priority on every match — The Master System (Always), Sync Direction (Always), Conflict Resolution (Always), and Dedup Priority (Always) columns update those fields on every matching record regardless of existing values.
  • Write review queue only when the Blueprint row contains a value — The Review Queue (Output Non-Empty) column updates that field only when the matching Blueprint row contains a review queue value, so rows without one — such as rows 2, 3, and 4 — do not erase an existing review queue value on the record.

The Blueprint Preview below shows the Multi-System ID Harmonization example:

  • Row 2 matches account-type records (Salesforce ID starting with 001) with a HubSpot ID and Customer account type, setting Salesforce as master system, SF→HS sync direction, SF Wins conflict resolution, and dedup priority 1.
  • Row 3 matches contact-type records (Salesforce ID starting with 003) with a HubSpot ID and Contact account type, setting HubSpot as master system, HS→SF sync direction, HS Wins conflict resolution, and dedup priority 2.
  • Row 4 matches account-type records with a HubSpot ID and Prospect account type, setting HubSpot as master system, HS→SF sync direction, HS Wins conflict resolution, and dedup priority 3.
  • Row 5 matches records with a HubSpot ID greater than 0 but no Salesforce ID, setting HubSpot as master system, HS Only sync direction, N/A conflict resolution, dedup priority 4, and writing No SF Record in the review queue.
  • Row 6 matches records with a Salesforce account-type ID but no HubSpot ID, setting Salesforce as master system, SF Only sync direction, N/A conflict resolution, dedup priority 4, and writing No HS Record in the review queue.
data-logic-example-blueprint-Multi-System-ID-Harmonization-966w.png

Data Logic Configuration

This Blueprint applies to the Account object type in Salesforce and the Company object type in HubSpot.

To configure the input mapping in the Data Management > Data Logic module, select the object type, example Blueprint, then under 2. Input Mapping, add the following:

  • Blueprint column Salesforce ID (Starts With) maps to CRM field Salesforce ID using Starts With matching criteria
  • Blueprint column HubSpot ID (Greater Than) maps to CRM field HubSpot ID using Greater Than matching criteria
  • Blueprint column Account Type (Exact) maps to CRM field Account Type using Exact matching criteria
data-logic-input-mapping-Multi-System-ID-Harmonization-646w.png

To configure the output mapping, under 3. Output Mapping, add the following:

  • Blueprint column Master System (Always) maps to CRM field Master System with update condition Always
  • Blueprint column Sync Direction (Always) maps to CRM field Sync Direction with update condition Always
  • Blueprint column Conflict Resolution (Always) maps to CRM field Conflict Resolution with update condition Always
  • Blueprint column Dedup Priority (Always) maps to CRM field Dedup Priority with update condition Always
  • Blueprint column Review Queue (Output Non-Empty) maps to CRM field Review Queue with update condition Output Non-Empty
data-logic-output-mapping-Multi-System-ID-Harmonization-646w.png

 

Using an Example or Reference Blueprint as a Starting Point

Example and reference Blueprints are available directly in the Data Logic module under:

  • 1. Pick Blueprint > Explore Examples or 
  • 1. Pick Blueprint > Use Reference Data

Rather than building a Blueprint from scratch, you can use either as a starting point and tailor it to match your specific field values, scoring criteria, or business rules.

To use an example or reference Blueprint as a starting point:

  1. In Data Integrity > Data Logic, under 1. Pick Blueprint, select Explore Examples, or Use Reference Data.
  2. Select the Blueprint you want to use. Click the Preview icon to review the table structure and column values before proceeding.
  3. In the Blueprint Preview, click Download to save the Blueprint as a CSV file.
  4. 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.
  5. When your CSV is ready, navigate to Data Integrity > Blueprints and upload it as a new Blueprint.
  6. Return to Data Integrity > 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 or reference 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 a 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 FAQ article.

Frequently Asked Questions

What Happens When a Blueprint Input Cell Is Empty?

What happens if I leave an input cell empty in my Blueprint?

What happens when an input cell is left empty in a Blueprint depends on the matching criteria configured for that column in Data Logic. Empty cells behave differently under Exact matching versus all other criteria. This default behavior can be overridden per column using the Blank Cell Matches Any Match Option — see I want a row to apply broadly without restricting by a particular field. Can I leave that cell empty? below.

Under Exact matching, an empty cell matches records where the corresponding CRM field also has no value — this is how a row with no input values can act as a catch-all for records missing data. Under any other criteria, an empty cell will never match any record; it's effectively inactive for that condition, and a Blueprint row containing a blank cell is permanently unusable unless Blank Cell Matches Any is enabled on that input column. 

This is the pattern used throughout the Lead Source Harmonization Blueprint (pictured below): each row populates only one input column, leaving the others blank. For example, rows 2 and 3 populate only the Lead Source (Contains) column, leaving Lead Source Original (Exact) and Referrer Domain (Ends With) blank; rows 4 and 5 populate only Referrer Domain (Ends With), leaving Lead Source (Contains) and Lead Source Original (Exact) blank.

Lead Source (Contains) and Referrer Domain (Ends With) both require the Blank Cell Matches Any input mapping Match Option enabled, so a blank cell in either column acts as a wildcard rather than blocking the row — this is what allows rows 2 and 3 to match on Lead Source alone, and rows 4 and 5 to match on Referrer Domain alone. Lead Source Original (Exact) does not have Blank Cell Matches Any enabled, so its default Exact behavior applies: a blank cell in that column matches only records where the CRM field is also empty. Row 8, which populates Lead Source Original with "Direct," shows that column used deliberately for an exact-value match rather than left to its default blank behavior.

data-logic-example-blueprint-Lead-Source-Harmonization-1071w.png

What happens with an empty cell under Exact matching?

An empty cell under Exact matching causes Data Logic to match records whose corresponding CRM field is also empty. This is intentional — it lets you define specific outcomes for records that are missing data in a given field. In the Lead Source Harmonization Blueprint above, this is why a blank cell in the Lead Source Original (Exact) column would match records where the Lead Source Original CRM field has no value, rather than being skipped.

What happens with an empty cell under any other matching criteria?

By default, an empty cell under any matching criteria other than Exact will never match any record — it's effectively inactive for that condition, and a row containing one is permanently unusable unless Blank Cell Matches Any is enabled on that column. This applies to all other criteria: Contains, Contains Word, Starts With, Ends With, Regex, any numeric comparison, and any date comparison. The Lead Source Harmonization Blueprint above shows why this matters in practice: without Blank Cell Matches Any enabled on Referrer Domain (Ends With), rows 2 and 3 — which leave that column blank — could never match any record, regardless of the record's Lead Source CRM field value.

I want a row to apply broadly without restricting by a particular field. Can I leave that cell empty?

There are two ways to make a row apply broadly without restricting by a particular field, and they behave differently:

  1. If you want a column to never act as a condition anywhere in the Blueprint, omit that input column from the mapping entirely in Data Logic. Unmapped columns are not evaluated as conditions, so every row will match based only on the columns that are mapped.
     

  2. If you want some rows to ignore a column while other rows still use it for matching, map the column as usual and enable Blank Cell Matches Any on it. With this Match Option enabled, a blank cell in that column acts as a wildcard for that row only — rows that populate the column still match against it normally, while rows that leave it blank skip that condition.

 

Additional Resources

Related Help Articles

Related Blog Posts