Troubleshooting CSV Uploads
Last updated: May 5, 2026
Context
Users frequently inquire about potential reasons why the total number of individuals in an audience is less than the expected total based on their uploaded CSV file.
How to Troubleshoot
There are multiple factors that can contribute to this discrepancy, including but not limited to:
Audiences are dynamic and change over time as contacts move in and out based on the defined criteria, while sequence/play enrollment logs remain static records of who was enrolled at specific points in time.
This means your current audience count may be lower than your total sequence enrollments if:
Contacts no longer meet the audience criteria after being enrolled
Contacts have been moved, deleted, or updated since enrollment
Time-based audience filters have excluded contacts that were previously included
Data type mismatches between Lists and Plays. If you're comparing a List size to a Play's trigger preview count, verify that the Play trigger is set to the correct record type. Plays run on a single record type (people or companies), so a List containing 92 people will show a lower count in a Play configured to trigger on companies. Ensure your Play trigger matches the data type you expect to enroll.
When troubleshooting count discrepancies, compare your current audience count to contacts that currently meet the criteria, not to historical enrollment totals.
Audience-Level Exclusion Troubleshooting
When contacts don’t appear in your audience view despite a successful CSV upload or data sync, exclusions may be filtering them out at the audience creation level before they reach sequence enrollment.
Check Exclusions Toggle First – Some exclusions (like Internal Employees) are enabled by default when creating audiences. Before investigating complex sequence enrollment issues, verify that audience‑level exclusions aren’t preventing contacts from appearing in your audience view by checking the exclusions toggle at the bottom of the audience creation page.
Testing with Your Own Contact – If you’re testing audience creation with your own email address or internal team members, temporarily disable audience‑level exclusions to verify the contacts are syncing correctly. Internal employee exclusions are commonly enabled by default and will hide your test contacts from audience views.
Audience vs. Sequence Exclusions – Disabling exclusions at the audience level only affects what contacts appear in your audience view. Organization‑wide exclusion rules will still apply during sequence enrollment, so contacts may appear in your audience but still be blocked from enrolling in sequences.
CSV Processing Timing Issues
The interface may show your CSV upload as complete while contacts are still being processed in the background. Wait 2-3 minutes after upload completion and refresh the audience page to verify the final count matches your expected total before proceeding with sequence creation.
Enrollment Evaluation Timing: After creating a sequence with your uploaded contacts, the enrollment eligibility evaluation can take an additional 30‑60 minutes to complete. During this time, the enrollment counter may lag and show fewer enrolled contacts than expected while the system checks each contact against exclusion rules, re‑enrollment settings, and sending limits. The “Not Enrolled” breakdown in the sequence’s Enrollments tab will finalize once evaluation completes.
Creating a sequence immediately after CSV upload may only include contacts that finished processing at that moment, missing those still being loaded.
Data format issues preventing processing. Verify that your CSV is properly formatted with correct column headers, valid email addresses, UTF-8 encoding, and no blank rows. Improperly formatted data can cause contacts to be skipped during processing. If your CSV includes an employee count column from data providers like ZoomInfo, ensure values are numbers (e.g.,
1000,4999) rather than text ranges (e.g.,Employees.1000to4999). Text‑formatted employee counts may cause the CSV to route to Lists with 0 companies displayed, or cause contacts to be rejected during upload. Remove or reformat these columns before uploading. When comparing exclusion counts, remember that company-level exclusions automatically exclude all people at those companies, which can result in excluded counts significantly higher than your CSV row count if you're excluding companies with many associated contacts.Companies are automatically deduplicated by domain during upload. If your CSV contains multiple rows with the same domain (e.g.,
example.com), they will be merged into a single company record. This means a CSV with 80 rows containing only 25 unique domains will result in 25 companies. Review your CSV for duplicate domains before uploading to understand the expected final count.LinkedIn URL format requirements. LinkedIn URL fields must use standard LinkedIn profile URLs (e.g., linkedin.com/in/username). Sales Navigator URLs and other LinkedIn URL variations may prevent enrichment and cause contacts to be skipped. Verify all LinkedIn URLs follow the standard format before uploading.
Website URL format requirements. Website URLs should not include protocol prefixes (http:// or https://). Including these prefixes can cause the upload to fail or only partially succeed. If you experience partial upload success (e.g., only 16 out of 150 companies uploading successfully), check your website column and remove any http:// or https:// prefixes before re‑uploading.
Special characters in numeric fields. Remove apostrophes, quotes, or other special characters from phone number fields and other numeric columns. These characters can cause the upload to fail or contacts to be skipped during processing. Use find-and-replace in your spreadsheet software to remove these characters before uploading.
Some domains contained within the CSV file may no longer exist or are invalid. Double-check the validity of all domains to ensure accurate processing.
If the user is enriching, Unify will not upload the contact into the audience if our data provider cannot provide an email address
CSV formatting requirements not met. The Domain column must contain bare domains only (e.g.,
example.com), not full URLs. Remove protocols (http://,https://),www.prefixes, paths, and query strings.CSV formatting requirements not met. Ensure CSV headers are exactly
Company NameandDomain. Variations like “Domain Name” will cause upload failures.
Debugging Specific Exclusion Reasons
When contacts from your CSV are excluded from sequences, use these methods to identify the exact cause:
Understanding Company vs. People Exclusions – Company-level exclusions automatically exclude all people associated with those companies, while people-level exclusions only exclude the specific contacts you select. If you're excluding both a company group and a people group, your total excluded count will be much higher than the sum of both groups because the company exclusion pulls in every contact at those companies. The excluded people count can grow significantly if excluded companies have large numbers of associated contacts, or if duplicate/variant company records aggregate more contacts than expected. If your goal is to exclude only specific contacts at certain companies (not everyone at the company), use a people-level exclusion for that subset and reserve company-level exclusions only for companies you want fully excluded.
Method 0: Refresh Template Variables – If contacts show as "Blocked" in your sequence enrollments, template variable issues may be preventing enrollment. Bulk select the blocked contacts in the sequence's Enrollments tab and click "Refresh template variables" to resolve the blockage. This forces the system to re-evaluate personalization tokens and can clear enrollment blocks caused by missing or stale variable data.
Method 1: Check Execution Logs – In your sequence, navigate to Execution Logs or Metrics > Enrollments to see the specific exclusion reason for each contact. Navigate to your Play → Metrics → click the Sequence node (or the "Not Enrolled" count) to view the list of contacts and their failure reasons. Note that this breakdown may take 30‑60 minutes to fully populate after triggering enrollment.
Method 2: Toggle Exclusions in Play – Navigate to your Play and use the exclusions toggle to turn specific exclusions on/off. This will show you in real‑time which exclusions are impacting enrollment counts and causing the drop‑off between your uploaded CSV total and actual enrollments.
Method 3: Check Individual Contact Activity – Open a contact's record → Activity → check the Play/Sequence entries for enrollment attempts and reasons. Common failure reasons include opt-out status, existing sequence enrollments, exclusion criteria matches, and re‑enrollment settings ("already enrolled" or "recently enrolled").
Method 4: Check Contact Exclusion Tab – Navigate to Contacts, search for the person by email, click their contact record, and check the "Exclusion" tab to see which exclusions apply to that contact. This shows if a global exclusion applies but requires checking each contact individually.
Method 5: Test Individual Contacts – Create a test audience with a single contact using
email is equal to [contact email]. Toggle exclusions on/off at the bottom of the audience creation page to identify which exclusion applies to that contact.Method 6: Verify Company Domain Matching – Unify identifies companies primarily by domain. When companies are acquired or merged, the acquired company's original domain may still be used in Unify rather than the parent company's domain. This means exclusion rules applied to the parent company (e.g., "Current Customer" relationship status on the parent account) will not automatically apply to contacts at the acquired company's domain. To resolve this, update the CRM record for the acquired company to match the exclusion criteria (e.g., set the Relationship field to "Current Customer"), and allow 15‑30 minutes for the changes to sync.
Domain Exclusion Interface Limitation: When configuring domain exclusions during CSV upload processing, domains that are not yet in your CRM will not appear in Unify’s dropdown list. You can still add these domains by typing them directly into the exclusion field, even though they are absent from the suggested options. This limitation can cause confusion when trying to exclude specific CSV domains that aren’t visible in the dropdown.
Additional Troubleshooting: Linked Company Records
Linked company records with differing field values. Unify groups companies by domain, and when multiple HubSpot company records share the same domain, each linked record is evaluated individually against your audience criteria. If any one linked record matches your filters, the company will appear in the audience—even if other linked records for that domain show different field values. This can cause companies to appear in audiences when they seemingly don't match your criteria, or be excluded when you expect them to be included. To verify: open the company in Unify, check the “Linked Records” tab to see if multiple HubSpot company records are associated with the domain, then confirm the filter field values on each linked record. For more details, see Why companies appear in multiple HubSpot audiences and Why are my HubSpot field values different in Unify.
Setting Up CRM-Based Company Exclusions
When creating company-level exclusions based on CRM properties (e.g., HubSpot lifecycle stage, opportunity status), follow these configuration requirements to ensure filters work correctly:
Use Internal Property Names – When filtering by CRM properties, you must use the property's internal name value, not the display name. For example, if your HubSpot lifecycle stage shows “Customer” in the UI, the internal value might be
customer(lowercase). Using the display name will cause the filter to fail silently.Find Internal Values in HubSpot – Navigate to Settings → Properties → select your property, check the “Internal value” column for each option, and use these exact values in your Unify exclusion rules.
Company-Level Exclusions Block All Contacts – Creating a company-level exclusion (Settings → Organization → Exclusions → Companies) automatically excludes all people at that company from sequences. Separate people‑level exclusion rules are unnecessary.
Multi-Select Field Limitation – If your CRM property is a multi‑select field, create a single‑select version of that property for use in exclusions, as multi‑select fields are not supported in exclusion filters.
Duplicate Company Records – If contacts from excluded companies are still being enrolled, check for duplicate company records in your CRM. Duplicate records can bypass property‑based filters if the contact is linked to the duplicate rather than the primary record.
CRM Property Refresh Timing – CRM‑based property checks (such as lifecycle stage or opportunity status) refresh roughly every 15 minutes. Allow this propagation time before testing exclusion rules.
Critical Exclusion Hierarchy and Timing
Global Exclusions Override All Settings – Global exclusions (found in Settings > Organization > Exclusions) will block enrollment even when audience‑level and sequence‑level exclusions are disabled. These exclusions also block manual enrollment via the browser extension. To enroll contacts that match global exclusions, temporarily disable the specific global exclusion and wait 30 minutes before attempting enrollment.
Understanding Ruleset vs. Global Exclusion Settings – When troubleshooting sequence enrollments, note that turning off exclusions in a Ruleset (Settings > Features > Sequences > Rulesets) only affects that specific ruleset. Contacts can still be blocked if the exclusion itself has “Exclude from Sequences” enabled at the global level (Settings > Organization > Exclusions). To allow excluded contacts into a specific sequence: (1) Go to Settings > Organization > Exclusions, (2) Select the relevant exclusion and toggle off “Exclude from Sequences”, (3) Wait 30 minutes for the change to propagate, (4) Duplicate and re‑run your Play, (5) Re‑enable the exclusion toggle immediately after enrollment completes. This approach is safer than disabling global exclusions entirely, which could cause unintended enrollments across all sequences.
Activity-Based Exclusion Caution: When using activity‑based exclusions (e.g., “Recent Manual Email” or “Last Sales Activity within X days”), Unify’s own email activity write‑back can update these fields and trigger the exclusion immediately after the first email is sent. To prevent unintended mid‑sequence unenrollments, many teams keep the Sequences toggle OFF for activity‑based exclusions, which blocks new enrollments without removing contacts already in active sequences. Only enable the Sequences toggle for activity‑based exclusions if you specifically want contacts to be unenrolled when the activity criterion is met.
Audience‑level exclusions and sequence‑level exclusions are controlled separately. You can disable exclusions when creating an audience, but those same contacts will still be blocked from sequences if organization‑wide exclusion rules have the sequence toggle enabled. Navigate to Settings > Organization > Exclusions, select each rule, and verify the sequence toggle setting. Important: When the sequence toggle is enabled for an exclusion rule, contacts meeting that exclusion criteria will be removed from active sequences immediately. When the sequence toggle is disabled, contacts already enrolled in sequences will continue receiving emails, but new contacts meeting the exclusion criteria cannot enter sequences. For example, if a contact books a meeting and an open opportunity is created, enabling the sequence toggle on the "open opportunities" exclusion will remove that contact and all other contacts from their company from any active sequences.
Allow 15‑30 minutes for exclusion or CRM field changes to propagate through the system before re‑running enrollment or re‑checking audience counts. Global exclusion changes specifically require approximately 30 minutes to take effect.
CRM Sync Timing and Exclusion Evaluation – Play triggers evaluate exclusions against data that has already been synced from your CRM into Unify. Both CRM read sync and Play triggers run on approximately 15‑minute cycles. If a CRM record is created (such as an opportunity from a booked meeting) close to when a Play fires, the exclusion data may not have synced into Unify yet at evaluation time, causing the contact to be enrolled despite meeting exclusion criteria. This timing race condition cannot be fully prevented with the current polling-based sync architecture. For high‑priority Plays where this is a concern, add a short delay node (15‑30 minutes) at the start of the sequence to give CRM data more time to sync before contacts proceed through the sequence steps.
Enhanced Re‑enrollment Troubleshooting
To verify if a contact was excluded due to re‑enrollment rules:
For Play‑based enrollments: Check the contact's Activity tab or the Play's Logs tab. You'll see the Play run with a status of "not enrolled" and failure reasons such as "already enrolled" or "recently enrolled".
For manual enrollments: Exclusions due to re‑enrollment rules will not appear in the contact's activity log.
Note that individual Plays may have their own re‑enrollment settings that override organization‑level rules.
Intentionally Re‑enrolling Contacts
When you need to re‑enroll contacts into sequences for operational reasons (such as changing outboxes or restarting campaigns), follow this workflow.
Update the outbox for queued enrollments – Navigate to Email Backlog, scroll to Reassign Sequence enrollments and click Reassign Enrollments for your sequence. Select the new mailbox(es) and save. This can only be done for queued enrollments that haven't been sent yet.
Re‑enroll contacts – Because contacts have already been in the sequence, re‑enrollment rules will likely block them:
Temporarily set Settings > Organization > Sequences > Rulesets to allow re‑enrollment with a 0‑day wait.
Create an audience of the contacts you want to re‑enroll.
Either enroll them directly into the same sequence (they'll resume from their next step) or duplicate the sequence and enroll them into the new one to start from step 1.
Revert the re‑enrollment setting if you don’t want this behavior globally going forward.