> ## Documentation Index
> Fetch the complete documentation index at: https://docs.dispoiq.app/llms.txt
> Use this file to discover all available pages before exploring further.

# Review import results and fix rejected rows

> See which contacts were added, find existing matches, and correct rows that couldn't be imported.

Open the import report to see what happened to each CSV row. Check its status and outcome counts, then fix the rows that need attention.

## Open the report

1. Open **Contacts** and select **Imports**.
2. Find your file and select **Open**.
3. Check the status beside the filename and the row counts below it.

The report can open over your Contacts list or as a full page. Both show the same outcomes and row details. On the full page, **Back to Imports** returns to the list; close the report dialog when it opens over the list.

Starting an import, using **Download rejected rows**, and starting or resuming skip tracing require an **Owner** or **Admin** role.

## Check the import status

| Status | What it means |
| - | - |
| **Queued** | The file has been saved and is waiting for processing. |
| **Processing** | The import is running. Counts reflect the rows processed so far. |
| **Completed** | The import finished processing. Check the outcomes: completed doesn't mean every row created a new contact. |
| **Failed** | Processing stopped before every row finished. Rows that weren't processed are marked **Processing failed**. |

While an import is still running, select **Refresh** to load its latest report. Closing the report doesn't stop the import.

## Understand each outcome

Select an outcome count, such as **Imported**, to see its rows. **Still processing** shows a count without opening a row filter. Select **Show all rows** to remove a filter. Use **Previous** and **Next** to move through the table.

| Outcome | What happened | What to do next |
| - | - | - |
| **Imported** | DispoIQ created a new contact and added it to the import's group. | Open the group to review the contact. |
| **Already a contact** | The phone matched an existing contact. That contact joined the group instead of creating another record. | Open the matched contact from **Detail**, when a link is shown. |
| **Already a buyer** | The phone matched an existing buyer. That buyer joined the group. | Review the matched buyer from **Detail**, when a link is shown. |
| **Duplicate in file** | Another row in this CSV has the same phone after formatting is normalized. | **Detail** identifies the earlier row. Keep the useful information in your source list and avoid a separate row for the same number unless you need its property details. |
| **Suppressed** | The phone is recorded as suppressed from outreach. No new contact or group membership is created for that row. | Keep the suppression in place. Re-uploading the same number won't remove it. |
| **No phone (held for skip trace)** | The mapped phone value was empty. The row is saved in the report, without becoming a new contact. | Add a known number to a corrected CSV, or consider the report's separate skip-trace action. |
| **Invalid phone number** | The phone couldn't be recognized as a valid US number. | Correct the phone value and import the corrected row. |
| **Processing failed** | Processing didn't complete for the row. | Check **Detail** and any failure code before deciding which rows to retry. |
| **Still processing** | The row hasn't reached a final outcome yet. | Wait, then select **Refresh**. |

The import matches by phone, not by name or email. Formatting such as `(202) 555-0101` and `+12025550101` resolves to the same number. A saved secondary number can also produce a match.

If a phone matches both a contact and a buyer, DispoIQ uses the contact. When a phone belongs to more than one existing contact, the import uses the oldest matching contact and leaves the other records separate. Importing doesn't merge those contacts.

For an existing contact, incoming values can fill blank fields; they don't replace populated fields. Duplicate rows in one file can contribute missing details and investment-property history to the saved record without creating a separate contact for each row.

## Read the row details

The table shows **Row**, **Name**, **Phone**, **Email**, **Outcome**, and **Detail**. Use **Row** to find the entry in your CSV; the first contact row follows the header row. On a narrow screen, scroll the table horizontally to see every column.

**Detail** explains the outcome, identifies an earlier duplicate row, or links to a matched contact or buyer when available. Where an invalid email warning appears, it is separate from the phone outcome: the row can still match an existing record or import. The invalid email value is omitted from the saved record.

## Download and correct rejected rows

<Steps>
  <Step title="Wait for processing to finish">
    Check for **Completed** or **Failed**. You can download while processing continues, but the file only includes rejected rows processed so far.
  </Step>

  <Step title="Download the rows that need attention">
    Select **Download rejected rows**.

    The export includes **No phone (held for skip trace)**, **Invalid phone number**, **Duplicate in file**, and **Processing failed**. It doesn't include successful contact/buyer matches or **Suppressed** rows.

    The CSV always contains **Row**, the eleven destination fields listed in the [import guide](/contacts/import-csv#columns-you-can-import), and **Reason**. Fields you didn't map appear as empty values. **Row** identifies the entry in the source file. Ignored source columns aren't included, and values may have been trimmed or normalized during import.
  </Step>

  <Step title="Correct the file">
    Add known phone numbers, fix invalid values, and review duplicate rows against the earlier row identified in **Reason**. Keep only the entries you intend to import again.

    For a processing failure, review the failure code first. If the cause is unclear or repeats, contact support with the filename, import report URL, failure code, and time of the attempt.
  </Step>

  <Step title="Import the corrected rows">
    Use **Contacts → Upload file** to [start a new import](/contacts/import-csv). Review the mapping and set **Row** and **Reason** to **Ignore**.

    Give the corrected import a new group name. It creates its own group; the original report remains available in **Imports**.
  </Step>
</Steps>

<Note>
  An invalid email alone doesn't put a row in the rejected export. Review the email values in your source file and the saved record even when the phone was imported successfully.
</Note>

## What about rows without a phone?

Skip tracing is a separate action on the report; uploading the CSV doesn't start it. When the report has rows it can queue, it offers **Skip trace…** with the row count. Review the wallet charge disclosure before using it.

The control can also show **Skip tracing in progress**, **Resume skip tracing**, or **Skip tracing needs billing review**. If it needs billing review, the batch won't be submitted again automatically. Check the explanation beside the control before proceeding.

You can also correct the source file with phone numbers you already know and upload only those rows. Before planning outreach, open the group linked beneath the filename and check the records that were actually added.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.