Hello everyone,
Does anyone have experience with recording multiple touchpoints on HubSpot at scale? End goal is to have all touchpoints on HubSpot, to then be consumed by an external database via API.
I’m running B2B marketing campaigns across direct mail, email and outbound, but all of these run via external providers (not HubSpot). I’m planning to update HubSpot with their info by uploading via CSV and amending fields there to record which companies were enrolled in which campaigns, and which exact assets they were targeted with.
We’re targeting 100s of thousands of companies and create roughly 10–20 campaigns a year.
Plan is to keep it simple — two company object properties:
- Campaigns — high level and broad, as multiple checkbox
- Asset codes — which exact assets the company received as part of the campaign
The idea is to avoid complexity like custom objects, custom events and the Marketing Campaigns feature, and stick to objects already used by our data team.
Is this going to fall over at volume, or is it a reasonable place to start? Happy to hear if I’m missing something obvious.
Appreciate this is a complex question!
Hey @HRichthe2nd, Here, I’d avoid using the two multi-checkbox company properties as the actual touchpoint history.
At your volume, I’d structure it like this:
-
Keep Campaign/Asset as structured IDs - use stable campaign IDs and asset codes rather than free-text values.
-
Use a dedicated association-based record for each touchpoint - ideally a custom object if available in your HubSpot tier. One record = Company + Campaign + Asset + date/channel.
-
Bulk-load the records via Import/API rather than continuously updating the company property.
-
Keep the company properties only for roll-up/current-state reporting, if your data team needs them.
-
Expose the touchpoint records through the API for the external database, instead of trying to reconstruct history from multi-checkbox fields.
The main concern isn’t really the number of companies; it’s the loss of event-level history and queryability when multiple campaigns/assets get flattened into company properties.
If your external database only needs the latest/current campaign state, your two-property approach can work. If the requirement is a true historical touchpoint feed, I’d model the touchpoint separately from day one.