Skip to content
Ken

Importing search results into a campaign

Push hand-picked search results directly into a campaign so those contacts can be enriched, qualified, and emailed.

8 min read · Updated Jun 29, 2026

Overview

The Search Contacts panel lets you build a filter-based audience from Ken AI's contact database and push the results into any campaign. This is the only way to move contacts out of the search database - there is no "export to CSV" option.

You will find the panel at Campaigns - [your campaign] - Actions - Search Contacts (under the Data Sources sidebar group). The URL pattern is /campaigns/build/handoff/search.

Use this feature when you want to target a specific slice of the contact database - for example, "fintech founders in the US with fewer than 200 employees" - and add those people to an outbound campaign's contact list.

Before you start

  • You must have an active campaign. If you have not created one yet, create it first.
  • Your account must have remaining lead credits. The import dialog shows how many credits are available and warns you if you try to import more than your remaining balance.
  • You must have at least one filter set before importing. Importing with no filters is blocked to prevent accidentally pulling an unfiltered audience.

How to import search results into a campaign

Step 1 - Open the Search Contacts panel

  1. Open your campaign and click Actions in the top navigation.
  2. In the left sidebar under Data Sources, click Search Contacts.

Step 2 - Load or build a filter set

You can start from a saved search or build filters from scratch.

To load a saved search: Use the dropdown at the top of the panel labeled "Select a saved search". Pick a search from the list. The filters load immediately and the result count updates on the right.

To build filters from scratch: Fill in the filter fields directly below the saved-search dropdown. As you change filters, the right-hand preview panel updates with a live result count and sample rows.

To save your current filters for later: Click Save Search (or Save as New if you have a saved search loaded). Give the search a name in the dialog and click Save Search to confirm. Saved searches are shared with your organization.

To overwrite an existing saved search with your current filters: Click Update Search. A confirmation dialog will appear before the change is applied.

Step 3 - Start the import

  1. Once your filters are set, click Import to Campaign. If an import is already running, the button shows View Import Progress instead - click it to check status.
  2. The "Import to Campaign" dialog opens. It shows the maximum number of profiles you can import (based on your plan and the estimated result count).
  3. Enter the number of profiles you want to import, or click Max to fill in the maximum allowed value.
  4. Click Start Import.

The dialog switches to a progress view titled Importing Contacts. A progress bar and a counter - "X / Y contacts" - update as the import runs.

You can close the dialog at any time. The import continues in the background. Reopen the dialog by clicking View Import Progress to check on it.

Step 4 - Wait for completion

The progress bar moves from left to right as contacts are processed. It stops at 99% until the platform confirms the import is fully committed.

When the import finishes, the dialog title changes to Import Complete and shows the final count of imported contacts. Click Close to dismiss it.

If the import fails, the dialog shows Import Failed with an error message. Click Close and try again.

How it works

When you click Start Import, the platform creates a background job and responds immediately - it does not make you wait for all contacts to be processed. The dialog polls the job's status automatically.

The import job works as follows:

  1. Your filter set (or the list of selected person IDs) is recorded and queued.
  2. A background worker collects the matching contacts from the search index - either by fetching them in a single bulk query (for manually selected IDs) or by scrolling through the full result set page by page using a cursor (for filter-based imports).
  3. The collected contacts are split into batches of 500 and sent to the campaign in parallel groups. Up to 3 batches upload at the same time.
  4. Progress is written back to the job record periodically. The UI polls every 2 seconds at first, backing off to up to 16 seconds if the server is slow, then snapping back to 2 seconds when it recovers.
  5. The very last batch is held back until all others have finished. Only then is it sent with a flag that tells the campaign to finalise - this prevents the campaign from triggering enrichment and deduplication while contacts are still arriving.
  6. The job finishes in one of three terminal states: Ready (success), Failed (all batches failed), or CompletedWithErrors (partial success).

The progress bar is intentionally capped at 99% for any in-flight job. It only reaches 100% (shown as "Import Complete") when the server confirms the job is in the Ready state. This prevents the UI from reporting success before the backend has committed everything.

If the status check fails five consecutive times, the UI stops polling and shows a Failed state with the message "Import status could not be retrieved. Please try again." This means the UI gave up watching, not necessarily that the import itself failed.

Troubleshooting and debugging

Symptom: "Import to Campaign" button is grayed out

  • Likely cause: You have no remaining lead credits, or the estimated contact count is 0.
  • What to check: Look at the credits indicator near the top of the panel. If credits are exhausted, upgrade your plan or wait for your billing cycle to reset.

Symptom: Import starts but the progress bar stays at 0% or "Preparing import..." for a long time

  • Likely cause: The job is queued behind other imports, or the worker is collecting a very large result set by cursor-paging.
  • What to check: This is normal for large imports (10,000+ contacts). Wait at least 2-5 minutes. If the dialog shows the same state after 10 minutes, check the server status or contact support.

Symptom: "Import status could not be retrieved. Please try again."

  • Likely cause: The status endpoint returned errors five times in a row. This can happen during brief platform outages or network disruptions.
  • What to check: Close the dialog, wait 30-60 seconds, then click View Import Progress to re-attach. If the underlying import finished, it will show "Import Complete". If the problem persists, check the platform status page.

Symptom: Import shows "Import Complete" but fewer contacts than expected appear in the campaign

  • Likely cause: Email enrichment, deduplication, AI qualification, or bounce verification removed some contacts after import. These are expected steps that run after the import finishes.
  • What to check: Open the campaign's contacts view. Contacts go through several post-processing stages before they are ready to send. Give the pipeline 10-30 minutes for large lists.

Symptom: "Import Failed" immediately after clicking Start Import

  • Likely cause: The import limit was 0 or negative, or no filters were set.
  • What to check: Confirm you have at least one filter active and that the import limit input is greater than 0. The panel blocks imports with empty filter sets, but edge cases around credit exhaustion can produce this error too.

Symptom: The right-hand preview shows "Failed to load search metadata"

  • Likely cause: A transient connection issue with the search service. This does not prevent importing if your filters are already populated.
  • What to check: Refresh the page. If the error persists, this is a platform infrastructure issue (the search metadata endpoint is unavailable). Imports will also fail until this recovers. Contact support if it lasts more than a few minutes.

Symptom: Import finishes but the same contacts appear again on a second import

  • Likely cause: Deduplication happens during post-processing, not during upload. Duplicate contacts are removed from the campaign after they are identified. A batch that contains only duplicates is still counted as a successful batch - the campaign finalises normally.
  • What to check: After enrichment completes, check the campaign's deduplication report.

FAQ

Q: Is there a limit on how many contacts I can import at once? The import limit is determined by your plan's remaining lead credits and the estimated result count from your filters. The dialog shows the maximum you can import in a single run.

Q: Can I import the same contacts into multiple campaigns? Yes. Deduplication runs per campaign, not across campaigns. A contact imported into Campaign A and Campaign B is treated as two separate contacts.

Q: What happens if I close my browser during an import? The import continues running in the background on the server. When you return and open the Search Contacts panel, click View Import Progress to see the current status. The import is not affected by browser navigation or page refreshes.

Q: What does "CompletedWithErrors" mean? Some batches succeeded and some failed. The contacts from successful batches were imported; the ones in failed batches were not. The platform still finalises the campaign with whatever was successfully uploaded.

Q: Can I cancel an import once it has started? No. Once the background job is queued, there is no cancel action. You can close the progress dialog - this does not stop the import.

Q: Why does the progress bar stop at 99%? The bar parks at 99% while the platform is committing the final batch and running post-processing. It only moves to "Import Complete" when the server confirms the job is fully done. This prevents the UI from showing success before all contacts are safely recorded.

Related articles

Related articles

Still need help?

Can't find what you're looking for? Our team is one message away. We usually reply within a business day.

Contact us