Importing Contacts With Original Source, Customer Date, etc



We are looking to import our contact/customer list into Hubspot but have not found a way to import these contacts/customers where it would retain the true date they became a customer or the original source and source drill down info.

Is this possible via any import method (API, CSV, etc…) Would love to do it via API, but willing to get the data in somehow.

  1. Original Source and Source Drill Down info. We want to be able to set these items. We have mapped our source data to the original sources in Hubspot and then we want to carry the additional into into the Drill Down Sources. I.E. original source set is Referral and then set the drill down to be ‘jimmy bob’ or something like that. We are not sure how we can do this via the API as it looks like HS wants to change the source to offline and say API/Contact-Upsert.

  2. Dates - We want to set the true dates when a customer became a customer with the imported data, otherwise it looks like they became a customer today. Same for Close Date, and less important but would be good is Create Date. How can we set these with the import of our data?



Did you ever get an answer to this? We’re looking to do something very similar: we want to gather the “Original Source Type” from any form submission to HS via the API. Would love to hear how to do it.


@Jesse_Craycraft there is not a way to set those system fields, with the exception of the close date. Close date does get set automatically when a record is set to customer, but it can also be manually set. The source properties get set based on the analytics data for the contact, and will default to offline for contacts created using the API, though the source can be updated if the record is later associated with analytics data (details are in this article).

@jkisling the source properties get set based on the analytics data collected by HubSpot, and that analytics data gets associated with the contact via the hubspotutk tracking cookie. If you’re using HubSpot forms, that cookie is automatically included in the form submission, but if you’re using the Forms API you need to make sure you’re populating the hutk value as detailed here:

It can take a few minutes for the source properties to be populated since it takes time to process the analytics data for the record, so those properties may not be populated if you’re searching for the contact immediately.


@dadams Thanks for your swift reply. Forgive the basic nature of this question, I’m still new to API work. So right now I’m using the Contacts API to get a list of contacts, and all of the forms submitted by contact. That’s all working great. The Client now wants to know how the contact came to the form (i.e. directly through our website, through an ad, etc.) You say that the analytics data are associated with the contact via the utk tracking cookie. Can I therefore add a parameter to the Contact API call that would include that data in the returned JSON? If so, would I need to know the utk keys for the forms? Or something else? Thanks!


@jkisling you can use the property= parameter to also get the source properties when pulling your contacts. The specific properties you’d want would be hs_analytics_source, hs_analytics_source_data_1, and hs_analytics_source_data_2, so you’d add this to the URL when pulling contact records:


These properties track the original source for how the contact found the site, so if they’re a repeat visitor it wouldn’t necessarily represent how they most recently found the last form.


Hi @dadams ,

do you know how can i map the field “hs_analytics_source_data_2” to the value of the list used to update the contact or company?

when i use the API the hs_analytics_source_data_2 value is on the format of xxxx-xxxxx-xxxxx-xxxxx-xxx but when i look into the CRM the same field has a string value that is associated with the file name used to update a list of contacts. (not sure if this is clear)


ps i posted this one How to convert field hs_analytics_source_data_2 to file name


Hi! Similar to @Jesse_Craycraft original question about working with dates through the API, I’m trying to create a custom property called Registered Date, which let’s me know exactly when that user signed-up to our platform.

We first tried using a “single-text” field type. The API call wen through fine but it wasn’t useful for my purposes since I couldn’t filter the view as you would for any other included date value.

We then tried switching to the “date-picker” field type but the API call didn’t go through. This is the format our CTO is using to send the date: { property: ‘registro_somos’, value: ‘07/21/2017’ } ] }.

Here’s a screenshot of our custom property. Any ideas how to make this work?