I’m encountering some strange behaviour attempting to get data from a custom property on the contact object. Using the hubspot developer api has suggested creating a community post. This is the only custom property I’ve been having issues with.
HubSpot Chat response:
Since the property works with get_by_id but not get_all/paginated requests, this is likely a platform-level bug rather than a configuration issue. The property definition looks valid — read_only_value: false, not archived, not sensitive.
I’d recommend contacting HubSpot support with the following details to help them investigate:
Problem:external_contact_id property returns data via GET /crm/objects/contacts/{id} but not via GET /crm/objects/contacts (list endpoint) even when explicitly requested in the properties parameter. This is also true when using a get request at the contacts “https://api.hubapi.com/crm/objects/2026-03/contacts”.
Expected: Property value returned in both endpoints.
Actual: Property value missing/null in list endpoint responses.
Account ID and a specific contact ID where the discrepancy is reproducible.
x-HubSpot-Correlation-ID from both the working and failing requests (found in the response headers).
It sounds like you’ve done some pre-work with the Doc Assist bot, so I’d love to tag in some Community experts to see what context we may be able to get for you! @coldrickjack, @zach_threadint, and @stefen - do any of you have insight here?
Thanks for getting back we ended up creating a new property to use which is working now. Still interested in seeing if there’s more to this issue or maybe developer error.
Glad to hear you got it sorted in the end. In terms of trying to understand what was happening with your first Contact property, external_contact_id, it’d be helpful to see some more information about the affected API requests. Please share as much info as possible (e.g. request method, request URL, request query parameters, response status, response body), while being sure to redact any sensitive data / PII.
Before treating this as a platform bug, I would run one controlled comparison on the stable v3 endpoint. Use the same private app token, request only external_contact_id in the properties parameter, and test a contact whose ID came from that same list call. Also fetch the property schema once and confirm the internal name, archive state, and sensitivity flags. If v3 get-by-ID and v3 list still disagree, send support both raw request URLs and both x-HubSpot-Correlation-ID values; that gives them a reproducible pair instead of two SDK code paths. For a production sync, I would also keep an explicit property allowlist and contract-test it, rather than relying on the default list response. I’m Ege, co-founder of Atlantic, based in SF; this kind of silent field drift is exactly what makes CRM integrations hard to trust.