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

# Import and export end users

> Add a profile from the Add user modal, import a CSV through upload, mapping, and check, and export the directory.

export const Browser = ({url, children}) => <div className="tars-browser">
    <div className="tars-browser-bar">
      <span className="tars-browser-dots">
        <i />
        <i />
        <i />
      </span>
      {url ? <span className="tars-browser-url">{url}</span> : null}
    </div>
    <div className="tars-browser-view">{children}</div>
  </div>;

export const img = {
  activity: {
    activityTimeline: "/docs/guides/activity/images/activity-timeline.png",
    capturedVariablesPanel: "/docs/guides/activity/images/captured-variables-panel.png",
    dataViewCards: "/docs/guides/activity/images/data-view-cards.png",
    exportDataDialog: "/docs/guides/activity/images/export-data-dialog.png",
    tasksPanelExportReady: "/docs/guides/activity/images/tasks-panel-export-ready.png"
  },
  analytics: {
    analyticsOverview: "/docs/guides/analytics/images/analytics-overview.png",
    exploreGallery: "/docs/guides/analytics/images/explore-gallery.png",
    exploreTab: "/docs/guides/analytics/images/explore-tab.png",
    goalForm: "/docs/guides/analytics/images/goal-form.png",
    goalsTab: "/docs/guides/analytics/images/goals-tab.png",
    improveDiagnostics: "/docs/guides/analytics/images/improve-diagnostics.png",
    improveTab: "/docs/guides/analytics/images/improve-tab.png",
    teamTab: "/docs/guides/analytics/images/team-tab.png"
  },
  billing: {
    billingOverview: "/docs/guides/billing/images/billing-overview.png",
    buyConversationsDialog: "/docs/guides/billing/images/buy-conversations-dialog.png",
    buySeatsDialog: "/docs/guides/billing/images/buy-seats-dialog.png",
    livechatSeatsTab: "/docs/guides/billing/images/livechat-seats-tab.png",
    organizationDeletionLifecycle: "/docs/guides/billing/images/organization-deletion-lifecycle.svg",
    organizationSwitcher: "/docs/guides/billing/images/organization-switcher.png",
    rolesAndAccessMatrix: "/docs/guides/billing/images/roles-and-access-matrix.png"
  },
  building: {
    agentBehaviorGuardrails: "/docs/guides/building/images/agent-behavior-guardrails.png",
    agentCardMenu: "/docs/guides/building/images/agent-card-menu.png",
    agentConfigure: "/docs/guides/building/images/agent-configure.png",
    agentExitRoutesDialog: "/docs/guides/building/images/agent-exit-routes-dialog.png",
    agentLibrary: "/docs/guides/building/images/agent-library.png",
    agentModelParameters: "/docs/guides/building/images/agent-model-parameters.png",
    aiAgentGambitLoop: "/docs/guides/building/images/ai-agent-gambit-loop.svg",
    builderBasics: "/docs/guides/building/images/builder-basics.png",
    builderConnectHandlePanel: "/docs/guides/building/images/builder-connect-handle-panel.png",
    builtInToolsDialog: "/docs/guides/building/images/built-in-tools-dialog.png",
    configureDebugTab: "/docs/guides/building/images/configure-debug-tab.png",
    configureLanguage: "/docs/guides/building/images/configure-language.png",
    configureNotifications: "/docs/guides/building/images/configure-notifications.png",
    createAgentDialog: "/docs/guides/building/images/create-agent-dialog.png",
    draftPublishRollbackPinning: "/docs/guides/building/images/draft-publish-rollback-pinning.svg",
    draftSwitcherChip: "/docs/guides/building/images/draft-switcher-chip.png",
    duplicateAgentDialog: "/docs/guides/building/images/duplicate-agent-dialog.png",
    flowConditions: "/docs/guides/building/images/flow-conditions.png",
    gambitPalette: "/docs/guides/building/images/gambit-palette.png",
    gambits: {
      gambitAiAgent: "/docs/guides/building/gambits/images/gambit-ai-agent.png",
      gambitApiCall: "/docs/guides/building/gambits/images/gambit-api-call.png",
      gambitAutoSuggestion: "/docs/guides/building/gambits/images/gambit-auto-suggestion.png",
      gambitButton: "/docs/guides/building/gambits/images/gambit-button.png",
      gambitCard: "/docs/guides/building/gambits/images/gambit-card.png",
      gambitChannel: "/docs/guides/building/gambits/images/gambit-channel.png",
      gambitCustomCode: "/docs/guides/building/gambits/images/gambit-custom-code.png",
      gambitDateTime: "/docs/guides/building/gambits/images/gambit-date-time.png",
      gambitGeoLocation: "/docs/guides/building/gambits/images/gambit-geo-location.png",
      gambitLanguage: "/docs/guides/building/gambits/images/gambit-language.png",
      gambitLiveChat: "/docs/guides/building/gambits/images/gambit-live-chat.png",
      gambitMediaUpload: "/docs/guides/building/gambits/images/gambit-media-upload.png",
      gambitNoInput: "/docs/guides/building/gambits/images/gambit-no-input.png",
      gambitRedirect: "/docs/guides/building/gambits/images/gambit-redirect.png",
      gambitStarRating: "/docs/guides/building/gambits/images/gambit-star-rating.png",
      gambitStartAndEnd: "/docs/guides/building/gambits/images/gambit-start-and-end.png",
      gambitText: "/docs/guides/building/gambits/images/gambit-text.png",
      gambitTrigger: "/docs/guides/building/gambits/images/gambit-trigger.png"
    },
    languagesTranslateGambit: "/docs/guides/building/images/languages-translate-gambit.png",
    languageSystemMessages: "/docs/guides/building/images/language-system-messages.png",
    newDraftDialog: "/docs/guides/building/images/new-draft-dialog.png",
    outputComponentsGrid: "/docs/guides/building/images/output-components-grid.png",
    publishDialog: "/docs/guides/building/images/publish-dialog.png",
    systemPromptDialog: "/docs/guides/building/images/system-prompt-dialog.png",
    testModeEventLog: "/docs/guides/building/images/test-mode-event-log.png",
    testModePanel: "/docs/guides/building/images/test-mode-panel.png",
    validationProblemsPanel: "/docs/guides/building/images/validation-problems-panel.png",
    variablePickerPanel: "/docs/guides/building/images/variable-picker-panel.png",
    variablePillInserted: "/docs/guides/building/images/variable-pill-inserted.png",
    versionsDraftsPanel: "/docs/guides/building/images/versions-drafts-panel.png"
  },
  campaigns: {
    campaignFlavorsTriggers: "/docs/guides/campaigns/images/campaign-flavors-triggers.svg",
    campaignReplyRouting: "/docs/guides/campaigns/images/campaign-reply-routing.svg",
    campaignSendAnatomy: "/docs/guides/campaigns/images/campaign-send-anatomy.svg",
    createACampaign: "/docs/guides/campaigns/images/create-a-campaign.png",
    walletReserveSettleRefund: "/docs/guides/campaigns/images/wallet-reserve-settle-refund.svg",
    webhookCampaignContractLocking: "/docs/guides/campaigns/images/webhook-campaign-contract-locking.svg",
    webhookCampaignLifecycleStates: "/docs/guides/campaigns/images/webhook-campaign-lifecycle-states.svg",
    webhookCampaignOneCallOneDelivery: "/docs/guides/campaigns/images/webhook-campaign-one-call-one-delivery.svg"
  },
  channels: {
    distributeWhatsappConnect: "/docs/guides/channels/images/distribute-whatsapp-connect.png",
    whatsappConnectDialogWaiting: "/docs/guides/channels/images/whatsapp-connect-dialog-waiting.png",
    whatsappEmptyState: "/docs/guides/channels/images/whatsapp-empty-state.png"
  },
  deploy: {
    bridgeEventGambitSection: "/docs/guides/deploy/images/bridge-event-gambit-section.png",
    deploymentSurfacesAndChannels: "/docs/guides/deploy/images/deployment-surfaces-and-channels.svg",
    designAgentTab: "/docs/guides/deploy/images/design-agent-tab.png",
    designLauncherTab: "/docs/guides/deploy/images/design-launcher-tab.png",
    embedIframeTab: "/docs/guides/deploy/images/embed-iframe-tab.png",
    embedTheWidget: "/docs/guides/deploy/images/embed-the-widget.png",
    mobileAppIntegration: "/docs/guides/deploy/images/mobile-app-integration.png",
    onYourDomain: "/docs/guides/deploy/images/on-your-domain.png",
    shareYourAgentLink: "/docs/guides/deploy/images/share-your-agent-link.png"
  },
  developer: {
    api: {
      channelSendTemplateVsMessage: "/docs/developer/api/images/channel-send-template-vs-message.svg",
      endUsers: {
        endUsersListCursorPagination: "/docs/developer/api/end-users/images/end-users-list-cursor-pagination.svg"
      },
      triggerCallConversationLifecycle: "/docs/developer/api/images/trigger-call-conversation-lifecycle.svg"
    },
    developerSurfacesMap: "/docs/developer/images/developer-surfaces-map.svg",
    embed: {
      embedConfigToWidgetContext: "/docs/developer/embed/images/embed-config-to-widget-context.svg",
      hostPageBridgeFlow: "/docs/developer/embed/images/host-page-bridge-flow.svg",
      identitySigningFlow: "/docs/developer/embed/images/identity-signing-flow.svg",
      scriptVsIframeEmbed: "/docs/developer/embed/images/script-vs-iframe-embed.svg"
    },
    mobile: {
      bridgeMessageProtocol: "/docs/developer/mobile/images/bridge-message-protocol.svg",
      webviewBridgeArchitecture: "/docs/developer/mobile/images/webview-bridge-architecture.svg"
    }
  },
  endUsers: {
    anonymousToIdentifiedProfile: "/docs/guides/end-users/images/anonymous-to-identified-profile.svg",
    bulkActionBar: "/docs/guides/end-users/images/bulk-action-bar.png",
    campaignConsentGate: "/docs/guides/end-users/images/campaign-consent-gate.svg",
    consentPerChannelStates: "/docs/guides/end-users/images/consent-per-channel-states.svg",
    dynamicVsStaticSegments: "/docs/guides/end-users/images/dynamic-vs-static-segments.svg",
    endUserDirectory: "/docs/guides/end-users/images/end-user-directory.png",
    endUserProfileAcrossChannels: "/docs/guides/end-users/images/end-user-profile-across-channels.svg",
    endUserProfilePanes: "/docs/guides/end-users/images/end-user-profile-panes.png",
    profileMergeAndTakeoverProtection: "/docs/guides/end-users/images/profile-merge-and-takeover-protection.svg",
    segmentBuilder: "/docs/guides/end-users/images/segment-builder.png",
    segmentsPage: "/docs/guides/end-users/images/segments-page.png"
  },
  getStarted: {
    agentStates: "/docs/get-started/images/agent-states.svg",
    buildToLivePath: "/docs/get-started/images/build-to-live-path.svg",
    dashboardSidebarMap: "/docs/get-started/images/dashboard-sidebar-map.png",
    organizationOwnershipAndRoles: "/docs/get-started/images/organization-ownership-and-roles.svg",
    quickstart: {
      step1CreateYourAccount: "/docs/get-started/images/quickstart/step-1-create-your-account.png",
      step3ConnectTheAiAgent: "/docs/get-started/images/quickstart/step-3-connect-the-ai-agent.png",
      step4TestMode: "/docs/get-started/images/quickstart/step-4-test-mode.png"
    },
    quickstartCanvas: "/docs/get-started/images/quickstart-canvas.png"
  },
  knowledge: {
    addASource: "/docs/guides/knowledge/images/add-a-source.png",
    addRetrieverPicker: "/docs/guides/knowledge/images/add-retriever-picker.png",
    attachKnowledgeGambit: "/docs/guides/knowledge/images/attach-knowledge-gambit.png",
    configureARetriever: "/docs/guides/knowledge/images/configure-a-retriever.png",
    createKnowledgeBaseDialog: "/docs/guides/knowledge/images/create-knowledge-base-dialog.png",
    customRetrieverDialog: "/docs/guides/knowledge/images/custom-retriever-dialog.png",
    datasetTab: "/docs/guides/knowledge/images/dataset-tab.png",
    documentChangeReindexLifecycle: "/docs/guides/knowledge/images/document-change-reindex-lifecycle.svg",
    documentsTabPreview: "/docs/guides/knowledge/images/documents-tab-preview.png",
    importAWebsite: "/docs/guides/knowledge/images/import-a-website.png",
    kbList: "/docs/guides/knowledge/images/kb-list.png",
    manageMedia: "/docs/guides/knowledge/images/manage-media.png",
    retrieverIndexStates: "/docs/guides/knowledge/images/retriever-index-states.svg",
    retrieverQueryPipeline: "/docs/guides/knowledge/images/retriever-query-pipeline.svg",
    standardVsParentChildChunking: "/docs/guides/knowledge/images/standard-vs-parent-child-chunking.svg",
    syncManagement: "/docs/guides/knowledge/images/sync-management.png",
    testRetriever: "/docs/guides/knowledge/images/test-retriever.png"
  },
  liveChat: {
    agentWorkspace: "/docs/guides/live-chat/images/agent-workspace.png",
    assignedAgentPicker: "/docs/guides/live-chat/images/assigned-agent-picker.png",
    automaticAssignmentRouting: "/docs/guides/live-chat/images/automatic-assignment-routing.svg",
    availabilityDropdown: "/docs/guides/live-chat/images/availability-dropdown.png",
    cannedResponses: "/docs/guides/live-chat/images/canned-responses.png",
    composerPreferences: "/docs/guides/live-chat/images/composer-preferences.png",
    copilotPanel: "/docs/guides/live-chat/images/copilot-panel.png",
    filterConversationsDialog: "/docs/guides/live-chat/images/filter-conversations-dialog.png",
    inboxAnalyticsTab: "/docs/guides/live-chat/images/inbox-analytics-tab.png",
    inboxAvailabilityTab: "/docs/guides/live-chat/images/inbox-availability-tab.png",
    inboxesSettings: "/docs/guides/live-chat/images/inboxes-settings.png",
    inboxRoutingTab: "/docs/guides/live-chat/images/inbox-routing-tab.png",
    labelsSettings: "/docs/guides/live-chat/images/labels-settings.png",
    newAttributeDialog: "/docs/guides/live-chat/images/new-attribute-dialog.png",
    newCannedResponseDialog: "/docs/guides/live-chat/images/new-canned-response-dialog.png",
    notificationPreferences: "/docs/guides/live-chat/images/notification-preferences.png",
    notificationsPage: "/docs/guides/live-chat/images/notifications-page.png",
    pickupTargetCard: "/docs/guides/live-chat/images/pickup-target-card.png",
    resolveMenu: "/docs/guides/live-chat/images/resolve-menu.png",
    searchDialog: "/docs/guides/live-chat/images/search-dialog.png",
    seatGateConversation: "/docs/guides/live-chat/images/seat-gate-conversation.png",
    seatsSettings: "/docs/guides/live-chat/images/seats-settings.png",
    workTheInbox: "/docs/guides/live-chat/images/work-the-inbox.png"
  },
  security: {
    addOpenRouterKeyDialog: "/docs/guides/security/images/add-open-router-key-dialog.png",
    auditChainVerified: "/docs/guides/security/images/audit-chain-verified.png",
    auditEventDrawer: "/docs/guides/security/images/audit-event-drawer.png",
    auditExportDialog: "/docs/guides/security/images/audit-export-dialog.png",
    auditLogViewer: "/docs/guides/security/images/audit-log-viewer.png",
    auditRecordLifecycle: "/docs/guides/security/images/audit-record-lifecycle.svg",
    logPrivacyRedactionEnabled: "/docs/guides/security/images/log-privacy-redaction-enabled.png",
    modelProviderEmptyState: "/docs/guides/security/images/model-provider-empty-state.png",
    privacySettings: "/docs/guides/security/images/privacy-settings.png",
    siemConnectWizard: "/docs/guides/security/images/siem-connect-wizard.png",
    supportActorMasking: "/docs/guides/security/images/support-actor-masking.svg"
  },
  tools: {
    addToolModal: "/docs/guides/tools/images/add-tool-modal.png",
    addToolsPanel: "/docs/guides/tools/images/add-tools-panel.png",
    codekitActionEditor: "/docs/guides/tools/images/codekit-action-editor.png",
    codekitConnectToolkitsDialog: "/docs/guides/tools/images/codekit-connect-toolkits-dialog.png",
    codekitSchemaDialog: "/docs/guides/tools/images/codekit-schema-dialog.png",
    codekitToolkit: "/docs/guides/tools/images/codekit-toolkit.png",
    codekitToolkitAnatomy: "/docs/guides/tools/images/codekit-toolkit-anatomy.svg",
    createActionDialog: "/docs/guides/tools/images/create-action-dialog.png",
    createCodekitDialog: "/docs/guides/tools/images/create-codekit-dialog.png",
    responseFilteringDialog: "/docs/guides/tools/images/response-filtering-dialog.png",
    toolGambitEditorAgentMode: "/docs/guides/tools/images/tool-gambit-editor-agent-mode.png",
    toolGambitEditorWorkflowMode: "/docs/guides/tools/images/tool-gambit-editor-workflow-mode.png",
    toolkitDetail: "/docs/guides/tools/images/toolkit-detail.png",
    toolsConnected: "/docs/guides/tools/images/tools-connected.png",
    toolsDirectory: "/docs/guides/tools/images/tools-directory.png",
    viewActionsModal: "/docs/guides/tools/images/view-actions-modal.png",
    workflowModeResponse: "/docs/guides/tools/images/workflow-mode-response.png"
  }
};

export const urls = {
  app: "https://dashboard.hellotars.com",
  site: "https://hellotars.com",
  support: "mailto:support@hellotars.com",
  status: "https://status.hellotars.com"
};

At the end of this page, your existing end user records are in Tars and you can export them again.

## Before you start

Before you start, sign in to <a href={urls.app}>the dashboard</a> and select the organization you want to work in.

* **Add user** requires permission to manage end users.
* **Import** is visible only to organization admins.
* **Export** requires permission to export data.
* To create profiles from your own systems, see the [end user API](/docs/developer/api/end-users).

## Where these actions live

Open **Users** in the sidebar. The **All users** tab shows the directory, and its toolbar holds all three actions.

<Browser url={urls.app}>
  <img src={img.endUsers.endUserDirectory} alt="The Users directory with the Add user, Import, Filter, Sort, and Export toolbar buttons above the identity and email table" />
</Browser>

| Button | What it does |
| - | - |
| **Add user** | Opens the **Add user** modal for one profile. |
| **Import** | Opens the **Import users** modal for a CSV file. |
| **Export** | Starts a background export of all end users, up to 10,000 rows. |

## Add one profile

<Steps>
  <Step title="Select Add user in the toolbar">
    The **Add user** modal opens.
  </Step>

  <Step title="Fill in the details">
    The fields are **First name**, **Last name**, **Email**, **Phone**, **Labels**, and **Tags**.
    The phone field is an international input. Type a tag and press Enter to add it.

    At least one of email or phone is required. Saving with neither shows **Email or phone is required**.
  </Step>

  <Step title="Select Save">
    A **User added** message confirms the new profile.

    <Check>
      If the email or phone matches an existing profile, Tars shows **Existing user matched** instead of creating a duplicate.
    </Check>
  </Step>
</Steps>

## Import a CSV file

The **Import users** modal walks three steps: **Upload**, **Map columns**, and **Check**. To import into a segment instead, see [Import into a segment](#import-into-a-segment).

### Step 1: Upload

<Steps>
  <Step title="Select Import in the toolbar">
    The **Import users** modal opens on the **Upload** step.
  </Step>

  <Step title="Drop your CSV on the dropzone">
    Only `.csv` files up to 20 MB are accepted. The file must be UTF-8 with a header row.
    Select **Download sample.csv** for a working example with the columns `name,email,phone,company,country,tags_list`.

    The modal moves to **Map columns** as soon as the file parses.
  </Step>
</Steps>

If the file cannot be read, the step shows one of these errors:

| Error | Cause |
| - | - |
| **File is larger than 20MB.** | The file exceeds the size limit. |
| **Please upload a .csv file.** | The file is not a CSV. |
| **No header row detected in CSV.** | The first row does not look like column headers. |
| **CSV has no data rows.** | The file contains only the header row. |

### Step 2: Map columns

The mapping grid has three columns: **CSV column**, **TARS field**, and **Preview (first row)**. Tars auto-maps columns from common header names, such as `full_name` to Name and `mobile` to Phone. A header that matches the key of an end user custom attribute maps to that attribute. Adjust any mapping from the **TARS field** dropdown.

The field options are:

| Option | Notes |
| - | - |
| **Skip column** | The column is ignored. The option renders with dashes around its label. |
| **Contact attribute** | A group that lists your end user custom attributes. Each value must fit the attribute's type. See [Set up custom attributes](/docs/guides/live-chat/set-up-inboxes#set-up-custom-attributes). |
| **Name**, **First name**, **Last name** | Name fields. |
| **Email**, **Phone** | Identity fields, also used for matching existing profiles. |
| **Identifier (anonymousId)** | Identity field for an external id, auto-mapped from headers like `external_id`. |
| **Description / Bio**, **Company name**, **Country**, **Country code**, **City** | Profile attributes. |
| **Social: Facebook**, **Social: Instagram**, **Social: LinkedIn**, **Social: Twitter** | Social profile links. |
| **Tags (semicolon-sep)**, **Labels (semicolon-sep)** | Multiple values in one cell, separated by semicolons. |

At least one of **Email**, **Phone**, or **Identifier (anonymousId)** must be mapped. Until then the step blocks with **Required: at least one identity column (email / phone / identifier).**

Once an identity column is mapped, the same line turns muted grey and confirms the file is ready to preview.

The step also blocks **Next** and lists the reason when:

* two columns in the file have the same header
* a column that is not skipped has a header that starts with `$` or uses characters other than English letters, digits, spaces, and punctuation
* the file has more than 500,000 rows

Select **Next** to check the file.

### Step 3: Check and start

Tars reads the whole file in your browser and matches every row against existing profiles. The check does not write anything. When it finishes, three cards show exact counts for the file:

| Card | Label under the count | Meaning |
| - | - | - |
| **To create** | **new users** | Rows that become new profiles. |
| **To update** | **existing users** | Rows matched to existing profiles, which are updated in place. |
| **Skipped** | **errors** | Rows that cannot be imported. |

If rows are skipped, the **Skipped rows** list shows a count for each reason, such as **Invalid email** or **Duplicate in file**. Sample rows follow, each with its row number and reason. The import report holds the full list.

The counts are as of the check, and the import report is the final record. If no row can be imported, the start button stays disabled. If the check cannot finish, select **Retry check**, or start the import anyway, because the import checks every row again.

<Steps>
  <Step title="Optionally add tags for every imported profile">
    The **Tags to apply to all imported users (optional)** field tags every row. Tags from a mapped CSV column are merged per row on top.
  </Step>

  <Step title="Tick the consent acknowledgement">
    The checkbox confirms these end users opted in to receive outbound messages. It is required before the import can start.
  </Step>

  <Step title="If the check found existing profiles or could not finish, tick the update acknowledgement">
    This checkbox confirms that matched profiles are updated. The directory import matches by email first, then phone.
  </Step>

  <Step title="Select Start import">
    The button reads **Starting…** while pending, then an **Import started** message confirms.

    <Check>
      The import runs in the background. The tasks tracker in the sidebar shows its progress, the final counts, and a **Report** download.
    </Check>
  </Step>
</Steps>

### Import into a segment

Organization admins can import a CSV into a static segment from two places. The modal is titled **Import CSV into segment**, and every imported end user joins the segment.

| Where | When the import runs |
| - | - |
| **Import from CSV** in the static segment builder | The final button reads **Use this file**. The import runs when you save the segment. |
| **Import from CSV** on the **Members** tab of a saved static segment | The final button reads **Start import**. The import starts in the background. |

The steps match the directory import, with these differences:

* The **TARS field** dropdown adds **Segment data (this segment only)**. A segment data value is stored on the end user's membership in this segment, not on the profile.
* Columns that match no field or attribute default to segment data. **Download sample.csv** adds a `your_own_column` column as an example.
* The check cards read **New contacts**, **Existing contacts**, and **Skipped**.
* A segment import matches existing profiles by phone first, then email.

A segment holds at most 50 segment data columns. A segment data column name is at most 64 characters and cannot start with `$` or `_`.

When you import into a segment again, the **Existing contacts** card also says how many end users are already in the segment. The file replaces their values in the mapped segment data columns, and a blank cell clears the stored value.

To send segment data in a campaign, see [Reuse segments in campaigns](/docs/guides/end-users/segments#reuse-segments-in-campaigns).

## Export profiles

<Steps>
  <Step title="Select Export in the toolbar">
    The button is visible only when your role allows data export.
  </Step>

  <Step title="Wait for the background job">
    An **Export started** message confirms the job is running, and a download arrives when it is ready.
    If the job cannot start, Tars shows **Could not start the export**.
  </Step>
</Steps>

Export covers all end users, up to 10,000 rows. To export a subset, save the group as a segment and use **Export** on the segment's **Members** tab.

## Verify

The directory count chip reflects the loaded rows after the import finishes. Open an imported profile and check the **Metadata** section. Its **Source** reads **CSV import**. You can also filter the directory by **Source** equals **CSV import**.

## Related pages

* [End user profiles](/docs/guides/end-users/profiles)
* [Build end user segments](/docs/guides/end-users/segments)
* [End user consent](/docs/guides/end-users/consent)
* [End user API](/docs/developer/api/end-users)
