The challenge
Campaign data and performance lived in GroundTruth; account teams needed it next to their CRM records.
What I built
- Workflow 1 runs daily, fetches all campaigns and creates new records with full configuration and performance data.
- Workflow 2 runs 30 minutes later, enrolls each campaign and updates impressions, clicks, spend, CTR, visits and pacing.
- Computes campaign status, including Expired detection.
- Built with HubSpot Custom Code Actions and the CRM API.
Under the hood
Outcome
- Campaign data refreshed daily, automatically.
- Status kept accurate, including expired campaigns.



