A rep opens Tuesday's pipeline review and points to a $40,000 opportunity with no lead source, no campaign, and a blank record type. The rep insists the lead existed because an outbound sequence triggered it. Marketing points to the CRM. Sales points to the sequence. Operations points to the integration. Nobody can show where the record went.
That is the meaning of find that lead. It isn't just locating a name in a search bar. It means proving that the record exists, confirming which object owns it, recovering its attribution, resolving duplicates, and preventing the same failure from distorting the next forecast. This playbook applies that full loop to Salesforce Sales Cloud, Account Engagement, Service Cloud, Revenue Cloud, HubSpot Sales and Marketing Hubs, and the integrations around them.
The Lead You Cannot Find Is Already Costing You Pipeline
The missing record creates more damage than an empty CRM result suggests. If the lead was never created, your MQL count is understated. If it was created as a contact or attached directly to a deal, campaign attribution may disappear. If someone merged it into another record, the original activity and source may be difficult to reconstruct.
The opportunity in Tuesday's review illustrates the operational failure. The outbound sequence shows engagement, but the CRM contains no matching lead. A campaign manager can't claim the opportunity. A sales operations manager can't confirm whether routing worked. The forecast includes revenue that the team can't connect to a documented acquisition path.

Three ways leads disappear
In practice, missing-lead investigations usually expose one of three conditions:
- The lead was never created: A form, sequence, event registration, or enrichment workflow failed before writing to Salesforce or HubSpot.
- The lead was created against the wrong object: A contact, account, deal, or person account contains the activity, while the team searches only the Lead object.
- The lead was merged or overwritten: A duplicate rule, import, or manual cleanup combined records and removed the identifier the rep remembers.
The commercial consequence is easy to underestimate. A pipeline report can still show an opportunity while its source, ownership, and lifecycle history are broken. That weakens channel decisions and makes it harder to tell whether a routing rule, campaign, or handoff worked as intended.
Teams that need a broader explanation of how pipeline stages behave can also use these sales pipeline examples for home services as a useful comparison point. The industry differs, but the operational lesson is the same, a pipeline stage is only useful when the underlying record and transition history are trustworthy.
Practical rule: Treat a missing lead as a systems incident, not as a sales-rep search problem.
The recovery process should move from broad discovery to evidence. Start with object and date checks, inspect source and ownership fields, trace integrations, compare activity IDs, and only then merge or restore records. A repeatable process should surface the next missing lead in minutes, not quarters.
Prepare the CRM Before You Run Any Search
Most find-that-lead attempts fail before anyone writes a query. The team searches a field that was never required, trusts a source value that an integration stopped populating, or overlooks a deleted record because the CRM's recycle or backup process wasn't checked.
Start by documenting the fields that define identity, ownership, lifecycle, attribution, and audit history. In Salesforce, confirm LeadSource, CampaignId, Status, OwnerId, ConvertedDate, IsConverted, CreatedDate, and LastModifiedDate. Include CreatedById, LastModifiedById, and RecordTypeId in the audit layer. If your organisation uses Lead_Score__c or UTM fields, confirm their history and integration mappings rather than assuming the current value reflects the original submission.
HubSpot needs the same discipline through different property names. Check hubspot_owner_id, hs_lead_status, hs_analytics_source, hs_latest_source, create_date, and hs_object_id. Confirm that contact properties carrying utm_source, utm_medium, utm_campaign, utm_content, and utm_term exist, have a consistent data type, and are populated by the intended forms or integrations.
| Domain | Salesforce Fields to Confirm | HubSpot Properties to Confirm |
|---|---|---|
| Identity | Lead Id, Email, Company, RecordTypeId |
hs_object_id, email, company |
| Lifecycle | Status, IsConverted, ConvertedDate | hs_lead_status, lifecycle stage |
| Ownership | OwnerId, queue or user assignment | hubspot_owner_id |
| Attribution | LeadSource, CampaignId, UTM fields, Lead_Score__c |
hs_analytics_source, hs_latest_source, UTM properties |
| Audit | CreatedDate, LastModifiedDate, CreatedById, LastModifiedById | create_date, last modified property, record activity |
| Integration | External ID, sync status, field mapping | Integration IDs, sync status, source timestamps |
Ownership and validation checks
Ownership needs an explicit model. Decide whether new records enter a queue, go directly to a user, or follow round-robin assignment rules. In Salesforce, confirm that assignment rules are active for the relevant creation paths and that the queue still has members. In HubSpot, check whether workflows assign owners or whether an integration writes hubspot_owner_id directly.
Then test the gates that determine whether a record is searchable and routable:
- Required fields: Validate that forms, imports, API jobs, and manual creation paths satisfy the same minimum fields.
- Duplicate rules: Confirm that Salesforce duplicate rules are active and that HubSpot's email-based deduplication isn't being undermined by inconsistent email values.
- Sync maps: Review Salesforce, Account Engagement, HubSpot, enrichment, and warehouse mappings for overwritten or unmapped fields.
- Deleted records: Check the relevant recycle bin, backup, or export before treating absence as proof that the lead never existed.
- Enrichment design: Use a practical data enrichment tools guide to compare enrichment approaches, but don't let an enrichment workflow append fields without a declared routing or qualification purpose.
- Documentation: Record the system of record for identity, lifecycle, ownership, source, and consent.
The data model should also support privacy controls. California guidance from the California Privacy Protection Agency ties processing to reasonable expectations, compatible purposes, or consent, so store source, collection time, consent state, permitted purpose, and opt-out status where those fields govern downstream use. A valid form submission isn't blanket permission for every enrichment or advertising destination.
Before searching, review the organisation's CRM data hygiene process and confirm that the fields in the process still match production configuration. A query can only find what the system preserves.
Search Strategies and SOQL for Salesforce
Salesforce search should become progressively more forensic. Start with a list view that catches newly created records with incomplete attribution. A useful first filter combines IsConverted = false, CreatedDate = LAST_N_DAYS:30, and a blank LeadSource. That view surfaces records that entered the system recently but failed to inherit source information.
Next, use global search with an email fragment, company name, domain fragment, or phone number. Search across Leads, Contacts, Accounts, Opportunities, Campaigns, and Activities. A rep may remember a person, while the integration stored a company or converted contact.
Move from list views to SOQL
For administrators, Workbench provides a more direct way to inspect raw fields and relationship data. This query retrieves leads and their campaign-member activity, which is often more useful than relying on the current LeadSource value alone:
Campaign attribution query: SELECT Id, Name, Email, Company, LeadSource, CreatedDate, (SELECT CampaignId, Campaign.Name, Status, FirstRespondedDate, CreatedDate FROM CampaignMembers ORDER BY CreatedDate DESC) FROM Lead WHERE CreatedDate = LAST_N_DAYS:90 ORDER BY CreatedDate DESC
To investigate stranded records associated with accounts that already appear in converted-lead history, use a two-stage approach. First export converted account IDs with SELECT ConvertedAccountId FROM Lead WHERE IsConverted = true AND ConvertedAccountId != null. Then use the resulting IDs in a controlled comparison against open or unconverted records. Where account names are the available bridge, a semi-join can expose companies not represented in that converted-account set:
Stranded-company query: SELECT Id, Name, Email, Company, Status, OwnerId, CreatedDate FROM Lead WHERE IsConverted = false AND Company NOT IN (SELECT Name FROM Account WHERE Id IN ('001xxxxxxxxxxxx'))
For source tracing, select the fields that reveal which system created or modified the record:
Source-trace query: SELECT Id, Name, Email, Company, LeadSource, CampaignId, CreatedById, LastModifiedById, RecordTypeId, CreatedDate, LastModifiedDate FROM Lead WHERE Email LIKE '%example.com%' OR Company LIKE '%Example%' ORDER BY LastModifiedDate DESC
History can show whether a field was populated, changed, or cleared after creation. Where field history tracking is enabled, query the history object:
History query: SELECT LeadId, Field, OldValue, NewValue, CreatedById, CreatedDate FROM LeadHistory WHERE LeadId IN ('00Qxxxxxxxxxxxx') ORDER BY CreatedDate ASC
These queries are investigative patterns, not universal copy-and-run solutions. Relationship names, history tracking, API versions, and permissions vary by org. Tools such as Salesforce integration for Captiwate also demonstrate why integration ownership and field mapping should be documented before an external system is blamed.

The practical limit is the 50,000-row SOQL query limit in a standard synchronous context. Narrow by date, owner, record type, or source before querying broadly. If the investigation needs a large historical population, use Data Loader or a bulk export rather than forcing one query to do the work. Review indexed fields, especially email and company fields, and avoid wildcard searches across an unbounded dataset.
The Salesforce Inspector Reloaded workflow can help an admin inspect records quickly, but inspection isn't remediation. Preserve the evidence before editing fields or merging records.
HubSpot Filters and API Queries That Surface the Lead
HubSpot investigations begin with the contact search bar and advanced filters. Search by email, company, phone, record ID, and recent activity, then save views that SDRs can subscribe to. A useful exception view combines a populated email address with an unassigned owner, an old last-contact date, or a lifecycle stage that doesn't match the associated deal.
Use source drilldown instead of stopping at the broad channel. Filter hs_analytics_source, hs_latest_source, utm_source, utm_campaign, and a custom lead_source_detail property together. That combination can distinguish a paid search lead from a partner form or an imported contact whose broad source was set during migration.
API patterns for deeper retrieval
HubSpot's CRM search API accepts a filter group and property list. A basic email search with lead status can be represented as:
Email and status search: POST /crm/v3/objects/contacts/search with filters for email EQ person@example.com and hs_lead_status HAS_PROPERTY, returning hs_object_id, email, company, hubspot_owner_id, hs_lead_status, and hs_latest_source.
For recently modified contacts, combine a date range with UTM properties:
Recent attribution pull: POST /crm/v3/objects/contacts/search with lastmodifieddate GTE {start} and lastmodifieddate LTE {end}, returning hs_object_id, email, create_date, lastmodifieddate, utm_source, utm_content, original_campaign, and lead_source_detail.
A lead may exist only as a contact associated with a deal. Search deals, request contact associations, and compare the associated contact IDs against the lead-status view:
Deal association search: GET /crm/v3/objects/deals/{dealId}?associations=contacts, then retrieve the associated contacts and inspect hs_lead_status, lifecycle stage, source, and ownership properties.
Create lead_source_detail, original_campaign, and the standard utm_* property set before building these queries. If the properties don't exist or differ by field type, the API can return technically valid records that still lack useful attribution.
The query isn't the control. The property definition, population rule, and exception view are the control.
HubSpot search results also require pagination. Preserve the after cursor and continue requesting pages until the response contains no next page. Respect account and endpoint rate limits, and log the number of records requested versus returned. A truncated export can look like a clean result when it omitted the older or less recently modified contacts.
Dedupe and Merge Without Losing History
Finding two records isn't enough to prove they should be merged. A shared email address can indicate a duplicate, a role-based inbox, or a contact shared by several people. Company names can collide, phone numbers can be formatted differently, and an old record may contain the only campaign activity that explains the opportunity.
Salesforce gives administrators more control through duplicate rules and matching rules. Configure criteria that reflect real collisions, such as exact email plus a fuzzy company-name comparison, or a normalised phone number combined with company. Don't rely on company name alone. Review the proposed match in Lightning, select the surviving field values deliberately, and document which record wins.
Field-level history requires special care. A merge can preserve the surviving record's history while making the losing record harder to inspect as an independent object. Before merging, capture the losing record's activities, campaign members, external IDs, consent state, and integration identifiers.
HubSpot's automatic contact deduplication is primarily based on email. That behaviour is useful for exact matches, but it won't reliably resolve contacts with changed addresses, missing email values, or conflicting identity data. The manual merge tool is available from the contact record, and a custom workflow can force a review queue when a combination of company, phone, domain, and role indicates a likely collision.
| Factor | Salesforce Lightning Merge | HubSpot Manual Merge |
|---|---|---|
| Record count | Best for a controlled pair or small review set | Best for a reviewed contact pair |
| Audit trail preservation | Surviving record keeps the primary history, but inspect losing-record fields first | Surviving contact becomes the continuing record, while losing-contact context may no longer be separately accessible |
| Automation triggers | Field changes, ownership changes, and merge outcomes can affect flows and integrations | Workflows and integrations may react to property or association changes |
| Rollback risk | High if external systems retain the losing ID | High if imports or integrations recreate the losing email or ID |
The pre-merge gate
Before either platform merges records, complete four checks:
- External IDs: Confirm which identifier downstream systems use and whether it can be remapped.
- Activity snapshot: Export activity IDs, campaign memberships, notes, calls, and meetings from the losing record.
- Consent and suppression: Preserve opt-out, consent source, purpose, and timestamp fields. Canadian organisations must account for CASL and PIPEDA expectations, including informed consent for collecting and using an electronic address from a third-party supplier, as described by the Office of the Privacy Commissioner of Canada.
- Automation pause: Pause list imports and enrichment jobs that could recreate the duplicate while the merge is in progress.
Document the merge decision and the surviving record's rationale in the CRM. For account-level conflicts, use a controlled Salesforce account merging process rather than treating account cleanup as a contact-only task.
Tracing the Source and Attribution of a Lead
A found lead still needs an explanation. Start with the attribution chain, not with the campaign report: utm_source, utm_medium, utm_campaign, utm_content, and utm_term. Then compare that chain with HubSpot's original-source properties and Salesforce Campaign and CampaignMember relationships.
In Salesforce, the CampaignMember relationship can show campaign participation even when LeadSource is blank. In HubSpot, original_source and related drilldown properties can reveal the first known channel, while latest-source fields describe a later interaction. Neither should be treated as a complete history without checking timestamps and integration behaviour.
A practical trace
Suppose a contact has a deal but no UTM values. First inspect the referring URL and landing-page activity. Then compare the timestamps for the web form, Marketo submission, ZoomInfo enrichment, and any webhook event. The missing campaign may not be missing at all. It may exist in a hidden field written by the webhook and never mapped to the visible campaign property.
A Salesforce pattern for campaign participation is:
Campaign-member trace: SELECT LeadId, CampaignId, Campaign.Name, Status, FirstRespondedDate, CreatedDate FROM CampaignMember WHERE LeadId IN ('00Qxxxxxxxxxxxx') AND CreatedDate >= 2026-01-01T00:00:00Z ORDER BY CreatedDate ASC
For HubSpot, search contacts with a non-null utm_content and a chosen analytics source, then export the properties with pagination:
HubSpot attribution search: POST /crm/v3/objects/contacts/search with filters for utm_content HAS_PROPERTY and hs_analytics_source EQ ORGANIC_SEARCH, returning hs_object_id, original_source, hs_analytics_source, utm_source, utm_medium, utm_campaign, utm_content, utm_term, and createdate.

Make the next trace shorter
Create a fallback attribution field that records the best available source when the standard UTM chain is incomplete. Store the evidence type, such as referring URL, form ID, webhook, integration event, or manual correction, alongside the value. Keep the original value immutable and put corrected attribution in a separate field so an analyst can distinguish source data from remediation.
Campaign naming must support that model. Use a documented standard for source, medium, campaign, content, and term, and validate it at form submission or workflow entry. If a webhook writes the hidden fallback field, log the event ID and collection timestamp. That makes a future missing-UTM case diagnosable in under five minutes without asking three teams to reconstruct the same history.
Audit, Remediate, and Prevent the Next Missing Lead
A quarterly RevOps audit turns individual investigations into governance. The cadence should examine ownership, lifecycle stage, marketing-sourced status, integration errors, and merge activity as separate control areas. Each area needs an exception report, an owner, and a remediation record.
Build the Salesforce side around three views. A Stuck Leads >14 Days report should expose records that have not advanced or received the required sales activity. A SOQL-driven owner-less Lead exception list should identify records with no valid user or queue assignment. A campaign and lifecycle report should compare source, status, conversion, and opportunity creation without relying on one attribution field.
In HubSpot, create a dashboard that shows unassigned contacts, stale lead statuses, source gaps, and the sync-error widget from Operations Hub. Compare contacts associated with deals against contacts in the intended lead lifecycle. A contact that exists only through a deal association deserves a review, especially when the sales team expects a lead-stage record.
The control loop
Use the same operating sequence each quarter:
- Extract: Pull exception records from Salesforce, HubSpot, Account Engagement, integrations, and merge logs.
- Classify: Mark each exception as creation failure, object mismatch, routing failure, attribution gap, duplicate, or deletion.
- Assign: Give the record and the root cause to a named operations owner, not to a shared inbox.
- Remediate: Correct the data, mapping, workflow, or validation rule, then record the change.
- Retest: Create controlled test records through the affected source and confirm routing, attribution, consent, and reporting.
Set alert thresholds around operational failure rather than vanity metrics. A new lead without an owner, a record missing the minimum source fields, a sync error that blocks creation, or a consent state missing from an outbound record should create a ticket before the pipeline report is used. For California programs, response handling should use a timestamped control loop, business-hours and territory logic, data-quality gates, owner and backup notifications, and separate logging for automated acknowledgement versus the first human attempt. The cited speed-to-lead guidance reports that contacting a lead within five minutes materially improved contact and qualification odds compared with waiting thirty minutes, but it also cautions that those outcomes are not closed-won revenue.
Document every finding in a shared Notion or Confluence template with the affected object, source system, record IDs, root cause, owner, due date, evidence, and test result. Canadian teams should also keep consent evidence and unsubscribe handling aligned with CRTC CASL requirements, including sender identification, a working unsubscribe mechanism, and proof of prior consent where required. The CRTC says pre-checked consent boxes don't qualify as positive opt-in action.
Finally, put prevention into onboarding. Salesforce administrators should use required-field validation rules, explicit assignment rules, and restricted picklists. HubSpot administrators should maintain a lead-capture checklist covering owner, lifecycle, source, UTM, consent, and integration fields. Both teams need a source-of-truth map that names which system owns identity, campaign, lifecycle, ownership, suppression, and reporting.
Canadian organisations have a particular reason to prioritise these basics. A 2023 Canadian SME digital maturity report places CRM in the bottom five among OECD countries, which supports fixing account, contact, lifecycle, handoff, and reporting foundations before adding more automation. In California, the technology base is also broad. A statewide profile reports that 94% of California small businesses use at least one technology platform, 83% planned to increase technology use over the following two to three years, and 32% already used an AI platform, according to the U.S. Chamber of Commerce technology report. More connected tools increase the need for disciplined lead governance.
MarTech Do provides RevOps audits, Salesforce and HubSpot implementation, data remediation, lead routing, attribution, dashboards, integrations, and ongoing enablement for B2B teams. If missing leads, duplicate records, or broken handoffs are affecting your pipeline, visit MarTech Do to discuss an audit and a practical remediation roadmap.