# Update or create contacts (v3)

**URL:** <https://community.hubspot.com/t/update-or-create-contacts-v3/41658>\
**Category:** APIs & Integrations\
**Tags:** professional\
**Created:** [August 2, 2021, 3:22pm UTC](https://community.hubspot.com/t/update-or-create-contacts-v3/41658 "2021-08-02T15:22:07Z")\
**Posts on this page:** 14\
**Page:** 1

<div class="post-metadata">

**Author:** ![JeremyD1](https://d10pqhm3lwygmk.cloudfront.net/user_avatar/community.hubspot.com/jeremyd1/32/47092_2.png) [@JeremyD1](https://community.hubspot.com/u/JeremyD1)\
**Post date:** [August 2, 2021, 3:22pm UTC](https://community.hubspot.com/t/update-or-create-contacts-v3/41658/1 "2021-08-02T15:22:07Z")

</div>

I am trying to hit an one api endpoint to batch update or create contacts using the email as a unique identifier. I am wondering if that is possible using API v3. This is to sync contacts from an external database.

---

<div class="post-metadata">

**Author:** ![dennisedson](https://d10pqhm3lwygmk.cloudfront.net/user_avatar/community.hubspot.com/dennisedson/32/28044_2.png) [@dennisedson](https://community.hubspot.com/u/dennisedson)\
**Post date:** [August 2, 2021, 8:18pm UTC](https://community.hubspot.com/t/update-or-create-contacts-v3/41658/2 "2021-08-02T20:18:37Z")

</div>

@JeremyD1

Short answer. No

But this is one of the last items that is being worked on to finish the v3 version of this API. Hopefully, will be completed sooner than later 🤞

---

<div class="post-metadata">

**Author:** ![Ampl\_CohortSync](https://d10pqhm3lwygmk.cloudfront.net/user_avatar/community.hubspot.com/ampl_cohortsync/32/44643_2.png) [@Ampl\_CohortSync](https://community.hubspot.com/u/Ampl_CohortSync)\
**Post date:** [December 7, 2021, 11:03pm UTC](https://community.hubspot.com/t/update-or-create-contacts-v3/41658/3 "2021-12-07T23:03:28Z")

</div>

Hi Dennis,

We are facing a similar situation as the original post. Would you mind me asking the progress about v3 version of this API?

---

<div class="post-metadata">

**Author:** ![PFriederich](https://d10pqhm3lwygmk.cloudfront.net/user_avatar/community.hubspot.com/pfriederich/32/78108_2.png) [@PFriederich](https://community.hubspot.com/u/PFriederich)\
**Post date:** [April 12, 2022, 10:50am UTC](https://community.hubspot.com/t/update-or-create-contacts-v3/41658/4 "2022-04-12T10:50:04Z")

</div>

@dennisedson any news on this?

---

<div class="post-metadata">

**Author:** ![RafaCorrea](https://d10pqhm3lwygmk.cloudfront.net/user_avatar/community.hubspot.com/rafacorrea/32/68963_2.png) [@RafaCorrea](https://community.hubspot.com/u/RafaCorrea)\
**Post date:** [October 19, 2022, 11:13pm UTC](https://community.hubspot.com/t/update-or-create-contacts-v3/41658/5 "2022-10-19T23:13:39Z")

</div>

@dennisedson , could you please update us regarding this API feature?  
We were using the CreateOrUpdate Contact (Documentation link :[https://legacydocs.hubspot.com/docs/methods/contacts/create\_or\_update](https://legacydocs.hubspot.com/docs/methods/contacts/create_or_update)) in many of our calls, and now we’ll have to basically take that intelligence in our own system, doing a List and then, after receiving the reponse, make another API call Creating or Updating the Contact.

This means that for every create/update we have to do, we’ll have to do two API calls.

It would be great to still have this single API call, could you please let us know if it’s being developed?

---

<div class="post-metadata">

**Author:** ![AirswiftRob](https://d10pqhm3lwygmk.cloudfront.net/user_avatar/community.hubspot.com/airswiftrob/32/102437_2.png) [@AirswiftRob](https://community.hubspot.com/u/AirswiftRob)\
**Post date:** [October 26, 2022, 3:22pm UTC](https://community.hubspot.com/t/update-or-create-contacts-v3/41658/6 "2022-10-26T15:22:16Z")

</div>

Hi, is there a v3 version of this API call ready? Or should we continue using the legacy version?

---

<div class="post-metadata">

**Author:** ![CDean](https://d10pqhm3lwygmk.cloudfront.net/user_avatar/community.hubspot.com/cdean/32/76463_2.png) [@CDean](https://community.hubspot.com/u/CDean)\
**Post date:** [May 3, 2023, 2:55pm UTC](https://community.hubspot.com/t/update-or-create-contacts-v3/41658/7 "2023-05-03T14:55:12Z")

</div>

Any updates on this?

---

<div class="post-metadata">

**Author:** ![JeremyD1](https://d10pqhm3lwygmk.cloudfront.net/user_avatar/community.hubspot.com/jeremyd1/32/47092_2.png) [@JeremyD1](https://community.hubspot.com/u/JeremyD1)\
**Post date:** [August 2, 2021, 10:04pm UTC](https://community.hubspot.com/t/update-or-create-contacts-v3/41658/8 "2021-08-02T22:04:47Z")

</div>

Hey Dennis. In looking for a solution I stumbled on the following endpoint:

[https://api.hubapi.com/crm/v3/imports](https://api.hubapi.com/crm/v3/imports)

Is this a dead end for what I am trying to do? I am currently trying to save the things that are updated or new in my database to a csv then uploading it here. I am hoping the behavior for duplicates will be to update them.

I am still working through errors in my own testing, but I will take a different route if I hear it won’t work.

---

<div class="post-metadata">

**Author:** ![dennisedson](https://d10pqhm3lwygmk.cloudfront.net/user_avatar/community.hubspot.com/dennisedson/32/28044_2.png) [@dennisedson](https://community.hubspot.com/u/dennisedson)\
**Post date:** [August 3, 2021, 4:44pm UTC](https://community.hubspot.com/t/update-or-create-contacts-v3/41658/9 "2021-08-03T16:44:43Z")

</div>

@JeremyD1 , I believe for your use case, that should do the trick. The csv will be deduplicated and the properties that have been changed should be updated.

If I were you, I would run a test with a small batch of contacts with various property changes. Just to confirm 😀

---

<div class="post-metadata">

**Author:** ![JeremyD1](https://d10pqhm3lwygmk.cloudfront.net/user_avatar/community.hubspot.com/jeremyd1/32/47092_2.png) [@JeremyD1](https://community.hubspot.com/u/JeremyD1)\
**Post date:** [August 9, 2021, 4:19pm UTC](https://community.hubspot.com/t/update-or-create-contacts-v3/41658/10 "2021-08-09T16:19:29Z")

</div>

Thanks for the help!

---

<div class="post-metadata">

**Author:** ![bengavin](https://d10pqhm3lwygmk.cloudfront.net/user_avatar/community.hubspot.com/bengavin/32/191590_2.png) [@bengavin](https://community.hubspot.com/u/bengavin)\
**Post date:** [October 25, 2021, 3:44pm UTC](https://community.hubspot.com/t/update-or-create-contacts-v3/41658/11 "2021-10-25T15:44:33Z")

</div>

@dennisedson - I’m in a similar situation to the original poster, and want to use the Import endpoint. I’d like to determine whether I need to do multiple ‘sets’ of updates for each unique set of updated properties or if the import will simply skip fields in the CSV that do not contain any data. Essentially, we need to update many thousands of records on a daily basis and the current batch update limitations (10 records per batch) means that we cannot use the v3 batch endpoints. We want behavior similar to the batch endpoint where a non-specified property isn’t updated, but the only way to achieve this via the import API endpoints appears to be multiple import calls (one for each ‘subset’ of properties across a set of contacts that need importing). Is this correct?

Thanks!

---

<div class="post-metadata">

**Author:** ![matt\_scott](https://d10pqhm3lwygmk.cloudfront.net/user_avatar/community.hubspot.com/matt_scott/32/36038_2.png) [@matt\_scott](https://community.hubspot.com/u/matt_scott)\
**Post date:** [July 2, 2024, 2:16pm UTC](https://community.hubspot.com/t/update-or-create-contacts-v3/41658/12 "2024-07-02T14:16:59Z")

</div>

Hey Dennis,  
Following on from other people to ask if there is any update on this, It seems odd that my api logs are forced to include 404 errors because I’m having to check if contacts exist

---

<div class="post-metadata">

**Author:** ![system](https://d10pqhm3lwygmk.cloudfront.net/user_avatar/community.hubspot.com/system/32/124_2.png) [@system](https://community.hubspot.com/u/system)\
**Post date:** [August 3, 2021, 2:00pm UTC](https://community.hubspot.com/t/update-or-create-contacts-v3/41658/13 "2021-08-03T14:00:29Z")

</div>

Hi @JeremyD1 ,  
Please use this api for create and update contacts:  
[https://api.hubapi.com/contacts/v1/contact/createOrUpdate/email/\<email\>/?hapikey=demo](https://api.hubapi.com/contacts/v1/contact/createOrUpdate/email/%3Cemail%3E/?hapikey=demo)  
Documentation link :  
[https://legacydocs.hubspot.com/docs/methods/contacts/create\_or\_update](https://legacydocs.hubspot.com/docs/methods/contacts/create_or_update)

Hope this helps!

If we were able to answer your query, kindly help the community by marking it as a solution.  
Thanks and Regards.

---

<div class="post-metadata">

**Author:** ![JeremyD1](https://d10pqhm3lwygmk.cloudfront.net/user_avatar/community.hubspot.com/jeremyd1/32/47092_2.png) [@JeremyD1](https://community.hubspot.com/u/JeremyD1)\
**Post date:** [August 9, 2021, 4:17pm UTC](https://community.hubspot.com/t/update-or-create-contacts-v3/41658/14 "2021-08-09T16:17:28Z")

</div>

I found out that I had additional requirements on how to update. I ended up doing a batch read to get current information for all emails. If information was returned for the email I was able to compare to current data record what needed updated. If there were updates for a read, I would do a batch update. At the very end of reading and updating, I used the [https://api.hubapi.com/crm/v3/imports](https://api.hubapi.com/crm/v3/imports) endpoint to do a bulk create. This proccess will hopefully work well for me since most of the time I need to create. The only downside is that I will be heavilly hitting the read and update bulk APIs.

Before I did implement it using only [https://api.hubapi.com/crm/v3/imports.](https://api.hubapi.com/crm/v3/imports) Bulk create and update did work as expected with the email as the property to match on an update. I didn’t test if it would work with multiple updates in the same csv.

I managed to do my solution 100% in the v3 API since I didn’t want to think about EOL of v1.
