Skip to main content
Contributor III
October 3, 2025
Solved

Unable to populate 'external_id' for customer in the right profile section when loading via csv file

  • October 3, 2025
  • 2 replies
  • 81 views

Hi, 

We are trying to support our clients with loading existing customer profiles to Klaviyo via csv file during onboarding. After onboarding, we send customer create and update via real-time profiles API to Klaviyo. 

When sending customer data via API, we send ‘external_id’ field under the attributes section per Klaviyo documentation. 

 

This external_id field then gets populated correctly under ‘Profile details’ section. 

 

However, when I upload customer profile via csv file and input the ID under ‘external_id’ column, Klaviyo asks to map the external_id field to a new field and when it gets uploaded, it is created under ‘Custom properties’.

 

How can I get the external_id field to be populated under ‘Profile detail’ section when loading data via csv file? 

    Best answer by Byrne C

    Hi ​@suminchoi2015,

    It actually is possible to set the external ID via a CSV file upload. Use the heading $id as a column in your file, and you should be able to set the external ID!

    2 replies

    zacfromson
    Expert Problem Solver III
    2025 Champion
    October 17, 2025

    Hi ​@suminchoi2015 - Thanks for you questions. 

    This happens because Klaviyo’s CSV importer treats all non-standard fields as custom properties by default.

    The external_id field is a reserved API field that can only be populated via the Profiles API, not via CSV upload.

    When you upload a CSV file, Klaviyo doesn’t interpret external_id as a special field, it just sees it as a custom attribute and stores it under “Custom properties.”

     

    Solution

    To have the external_id appear under Profile Details, you must set it using the Profiles API.

    Here’s the proper way to do it:

    POST https://a.klaviyo.com/api/profiles/
    Authorization: Klaviyo-API-Key <PRIVATE_API_KEY>
    Content-Type: application/json

    {
      "data": {
        "type": "profile",
        "attributes": {
          "email": "test@test.com",
          "external_id": "1234567891",
          "first_name": "Test",
          "last_name": "User"
        }
      }
    }

    Zac Fromson | Co Founder @ Lilo Social - a full-funnel ecommerce growth agency | lilosocial.com | 2026 Klaviyo Champion
    Byrne C
    Community Manager
    Byrne CAnswer
    Community Manager
    October 23, 2025

    Hi ​@suminchoi2015,

    It actually is possible to set the external ID via a CSV file upload. Use the heading $id as a column in your file, and you should be able to set the external ID!