Difference between hs_lastmodifieddate and lastmodifieddate?

We are using the contacts search endpoint (/crm/v3/objects/contacts/search) to fetch “all” contacts for syncing data. Because that endpoint is limited to paging through 10k contacts, we are sorting by `hs_lastmodifieddate` (desc) as a workaround to retrieve the most relevant contacts.

Recently we noticed that a contact was not being included because its `hs_lastmodifieddate` value is null. However, it’s `lastmodifieddate` does have a value.

What’s the difference between these two attributes? Why would one be null while the other isn’t?

Hello @dhan88 thank you for posting in our Community.

That is expected behavior. Lastmodifieddate is exposed in HubSpot on contact properties and in property settings, and as documented here, it reflects the last update to a contact’s properties. hs_lastmodifieddate, however, is not exposed in app and will track any update at all on a record (not just property updates but email/analytics/page view activity, property updates, workflow progress, etc. More information in this community post here .

Kindly,

Pam

I feel like there has been a breaking change here. I’m also seeing hs_lastmodifieddate as null but I can see lastmodifieddate is set.

We need to track any update to the contact record so we’ve been using hs_lastmodifieddate for > 1 year now.

It doesn’t make sense that this is null if lastmodifieddate is populated. hs_lastmodifieddate should always be >= lastmodifieddate; let me know if I am misunderstanding here.

Hi, I know this is an old thread but I’m finding the exact same issue.

For all other objects, the property “hs_lastmodifieddate” works as expected, but for the contacts objects it is “null”. I was wondering if you had any response, or if you ended up just reverting to lastmodifieddate instead?

I agree with @AdrianSM , it looks like a bug

> hs_lastmodifieddate, however, is not exposed in app and will track any update at all on a record

Makes me think that it never can be null.

I was trying to use Search API and filter by hs_lastmodifieddate and was pretty surprised when noticed that it always returns empty array for contacts. Turned out I need to use lastmodifieddate

Hi @MYermolayev and thanks for posting on the HubSpot Community!
Great question, thanks for asking!
I understand that you’d like to know what is the difference between the hs_lastmodifieddate and lastmodifieddate properties in HubSpot, especially when using the Search API. You also want to know why does filtering by hs_lastmodifieddate return an empty array for contacts, and should it ever be null. Please let me know if that’s not the case.
I’d love to put you in touch with our Top Experts: Hi @Anton, @Mike_Eastwood and @sylvain_tirreau do you have any insights to share with @MYermolayev, please?
Thanks so much and have a lovely day!
Bérangère

Hi @MYermolayev and Happy Friday!
So, when using the Search API with contacts, be sure to use lastmodifieddate (not hs_lastmodifieddate) when setting up your filters. The documentation highlights lastmodifieddate as the property you’ll want for finding recently updated contact records.

Here’s a quick overview:

lastmodifieddate – This is the searchable property for contacts in the Search API.
hs_lastmodifieddate – This is an internal property used to track updates, but it isn’t exposed in the app and may not be searchable for contacts.
So, this is working as expected, it’s not a bug! To filter for recently updated contacts, your query would look something like this:

{
“filterGroups”: [{
“filters”: [{
“propertyName”: “lastmodifieddate”,
“operator”: “GT”,
“value”: “2025-05-31”
}]
}]
}
Hope this helps clarify things! If you have more questions, feel free to ask.
Bérangère
This post was created with the assistance of AI tools

> Hope this helps clarify things!

Well, not really. It’s still strange to me that only contacts have such behavior

After some trials I’ve made a mapping like this to be able to search through crm objects

Seems to be working.

Anyway, thanks for the response

Thank you for your follow-up and for sharing your workaround @MYermolayev!
Regarding the difference between those fields, I’d recommend submitting the HubSpot Developer Feedback form for this! If you prefer, I’m happy to submit it on your behalf, just let me know!
I’m glad to hear your mapping is helping you search through CRM objects.

If you have any more questions or run into anything else, feel free to reach out. We’re always here to help!

Thanks again for being part of the community!
Bérangère

Hi @AdrianSM
Thank you for reaching out to the Community!
I’d like to invite some community members who are subject matter experts to join this conversation.
@TomM2 @Gaurav_Aggarwal @karstenkoehler - Would you be able to share any insights on this? Your expertise would be greatly appreciated.
Best,
Victor

Hi @AdrianSM ,

I looked into the documentation and some related community threads, and I think this might help clarify things.

As Pam mentioned earlier, lastmodifieddate reflects the last update to a contact’s properties, while hs_lastmodifieddate is meant to capture any update at all (property changes, email/analytics/page view activity, workflow progress, etc.).

In a related community discussion about companies, HubSpot confirmed that hs_lastmodifieddate can also be updated by automated jobs HubSpot runs in the background. That helps explain why sometimes you’ll see different behaviors between objects, or even null values.

So in practice, for contacts you may need to rely on lastmodifieddate if hs_lastmodifieddate is inconsistent or null. If your main goal is to catch all updates, it could be worth adjusting your logic to check both properties and use whichever is populated.

I know that doesn’t fully solve the null behavior, but hopefully it gives a clearer picture of why the two fields differ and how to handle it when syncing data.

Best,
Victor