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

# Upload a CSV

> Bulk-import customer lists into Mention Me from the Uploads page in Settings.

The **Uploads** page in Settings is where you bulk-import customer data into Mention Me from a CSV file. Use it for suppression lists, enrolling customers into an offer, and (soon) tags, voucher codes, and influencers.

You can find it at **Settings → Uploads**.

<Frame caption="Uploads page in its empty state">
  <img src="https://mintcdn.com/mentionme/zs_LFAsMcRkm7SEp/images/knowledge-v2/data/ui/empty-state.png?fit=max&auto=format&n=zs_LFAsMcRkm7SEp&q=85&s=59f5cdb1829b4e94244d4b8f04e67aa3" alt="Uploads page in its empty state" width="2562" height="1488" data-path="images/knowledge-v2/data/ui/empty-state.png" />
</Frame>

## Before you start

You'll need:

* A **CSV file** with headers in the first row.
* A clear idea of which columns map to which Mention Me fields. Don't worry if your column names don't match ours, you'll map them in the wizard.
* File size under **1GB**.
* For **Enrol in offer** uploads, the offer must already exist in your account, and you need GDPR consent on file if you plan to email these customers.

If you'd rather pull data in automatically, look at [SFTP](/knowledge/integrations/data-feeds/sftp-setup) instead.

## Choose what to upload

Two upload types are available today.

| Type                   | Use when                                                                        |
| ---------------------- | ------------------------------------------------------------------------------- |
| **Existing customers** | You want to suppress your existing buyers from referral or registration emails. |
| **Enrol in offer**     | You want to enrol existing customers into an offer so they can refer friends.   |

<Note>
  More upload types (tags / segments, voucher codes, influencers) are coming soon. They'll appear in the type picker once available.
</Note>

### Existing customers

Uploads a suppression list. Mention Me uses it to avoid sending referral or registration emails to people who are already your customers.

If your team already hashes customer emails before sharing them (for privacy or compliance reasons), turn on **My emails are already hashed**. Hashes must be SHA-256, lowercase hex. See [hashed data](/knowledge/security/data-management/hashing#understanding-hashed-data) for the full spec.

### Enrol in offer

Enrols the customers in your CSV into a specific offer, so they're eligible to refer friends.

You'll be asked to:

* **Pick the offer** to enrol customers in. Only existing offers in your account appear here.
* Optionally tick **Send referrer registration and forward emails to these customers**. Only do this if you have written or verbal GDPR consent from those customers.

## Upload your file

Click **New upload** to open the wizard. It has three steps: Prepare file → Import → Results.

<Steps>
  <Step title="Pick a type and download the sample CSV">
    Select the upload type at the top of the page. Click the download icon next to the type to grab a sample CSV. The sample contains the exact column headers we expect, with one example row.

    Match your data to the sample's structure where you can. You don't have to use the exact same column names, mapping happens in the next step.

    <Frame caption="Prepare file step with the Existing customers type selected">
      <img src="https://mintcdn.com/mentionme/zs_LFAsMcRkm7SEp/images/knowledge-v2/data/ui/prepare-step.png?fit=max&auto=format&n=zs_LFAsMcRkm7SEp&q=85&s=435b2c45efc273dca10d6648f487a47b" alt="Prepare file step with the Existing customers type selected" width="1726" height="1150" data-path="images/knowledge-v2/data/ui/prepare-step.png" />
    </Frame>
  </Step>

  <Step title="Drop your file in">
    Drag your CSV onto the dropzone, or click to browse. We accept CSV only, up to 1GB.

    Once the file is parsed, you'll see the filename, file size, and how many rows were detected.

    <Frame caption="Parsed CSV file with auto-matched columns ready for upload">
      <img src="https://mintcdn.com/mentionme/zs_LFAsMcRkm7SEp/images/knowledge-v2/data/ui/parsed-file-and-mapping.png?fit=max&auto=format&n=zs_LFAsMcRkm7SEp&q=85&s=32030c9952f3c9f8b7abadc16830eb58" alt="Parsed CSV file with auto-matched columns ready for upload" width="1720" height="1074" data-path="images/knowledge-v2/data/ui/parsed-file-and-mapping.png" />
    </Frame>
  </Step>

  <Step title="Map your columns">
    Mention Me reads the headers from your CSV and tries to match them to our fields automatically. Anything we couldn't auto-match shows up for you to map manually.

    * **Required fields** are always shown. You can't start the upload until each one is mapped, the **Start upload** button stays disabled until you do.
    * **Optional fields** vary by upload type. Map them if you have the data, leave them blank if you don't.

    <Frame caption="Column mapping with a required Email field still to map">
      <img src="https://mintcdn.com/mentionme/zs_LFAsMcRkm7SEp/images/knowledge-v2/data/ui/mapping-unmapped.png?fit=max&auto=format&n=zs_LFAsMcRkm7SEp&q=85&s=b86f6b7fc518f6a8497e9b7c0776245c" alt="Column mapping with a required Email field still to map" width="1734" height="1070" data-path="images/knowledge-v2/data/ui/mapping-unmapped.png" />
    </Frame>
  </Step>

  <Step title="Fix validation errors">
    We validate the first \~100 rows of your file as soon as you finish mapping. If a value looks wrong (for example, a malformed email address), you'll see an inline error pointing at the row and column.

    Fix the source data in your CSV, re-upload, and continue. Rows that fail validation later in the file are skipped during processing, not rejected outright.
  </Step>

  <Step title="Start the upload">
    Click **Start upload**. The wizard moves to the **Import** step and shows live progress as rows are processed.

    Don't close the tab until the import finishes. If something goes wrong (network drop, server error), you'll see a clear error and a **Try again** button.
  </Step>

  <Step title="Review the results">
    When processing finishes, the **Results** step shows how many rows succeeded and how many failed. Successful rows are queued for use in your campaigns straight away.

    <Frame caption="Results screen showing a completed upload">
      <img src="https://mintcdn.com/mentionme/zs_LFAsMcRkm7SEp/images/knowledge-v2/data/ui/results.png?fit=max&auto=format&n=zs_LFAsMcRkm7SEp&q=85&s=e6965ee9cc845854a1726a0eaf2cba84" alt="Results screen showing a completed upload" width="1724" height="846" data-path="images/knowledge-v2/data/ui/results.png" />
    </Frame>
  </Step>
</Steps>

## Review past uploads

Every upload you and your team run is listed on the main Uploads page, newest first. Each row shows the filename, type, who uploaded it, when, the status, and the success/failure counts.

Click any row to open a detail panel with:

* The full status (e.g. processing, complete, failed).
* Total rows processed, succeeded, and failed.
* A row-level list of any errors, with the line number, the original CSV row, and the error message. Use this to fix bad data before re-uploading.

<Frame caption="Upload detail panel with summary counts and per-row error messages">
  <img src="https://mintcdn.com/mentionme/zs_LFAsMcRkm7SEp/images/knowledge-v2/data/ui/upload-detail.png?fit=max&auto=format&n=zs_LFAsMcRkm7SEp&q=85&s=565a54ecb53cc74d2e8ee357ed9a4542" alt="Upload detail panel with summary counts and per-row error messages" width="1978" height="1112" data-path="images/knowledge-v2/data/ui/upload-detail.png" />
</Frame>

You can filter the list by date range using the filter at the top of the page.

## Common issues

<AccordionGroup>
  <Accordion title="My CSV won't upload">
    Check the file is genuinely a `.csv` (not `.xlsx` renamed) and is under 1GB. The dropzone rejects anything else.
  </Accordion>

  <Accordion title="Validation flags my email column as invalid">
    If you ticked **My emails are already hashed**, every value in the email column must be a SHA-256 hex digest, lowercase, with no spaces. Plaintext emails will fail. If your emails aren't hashed, leave that toggle off.
  </Accordion>

  <Accordion title="A required field has no matching column">
    Mention Me can't infer a column it didn't find. Either rename your CSV header to match the sample, or pick the right column manually in the mapping step.
  </Accordion>

  <Accordion title="Some rows succeeded, some failed">
    That's expected. We process every row independently, so a few bad rows don't block the rest. Open the upload's detail panel to see exactly which rows failed and why, fix those rows in your source CSV, and re-upload just the failed ones.
  </Accordion>

  <Accordion title="I can't tick the 'send emails' box on Enrol in offer">
    You need to pick an offer first. The checkbox enables once an offer is selected. Only tick it if you have GDPR consent.
  </Accordion>
</AccordionGroup>

## See also

* [Hashed data](/knowledge/security/data-management/hashing#understanding-hashed-data) - when and how to hash customer emails before upload.
* [SFTP setup](/knowledge/integrations/data-feeds/sftp-setup) - the recurring-feed alternative to manual CSV uploads.
* [Historical order upload](/knowledge/security/data-management/historical-order-upload) - context on what happens to data after it's imported.
