- No business verification required (Google Ads needs weeks of approval)
- Free account creation in 2 minutes
- Instant API access through simple OAuth2
- Rich CRM data that complements your GA4 analytics
- No developer tokens or special permissions needed
-
HubSpot.gs- Complete HubSpot API integration
-
DataSource.gs- Updated with HubSpot integration calls -
Reports.gs- Updated with HubSpot report templates -
DataSourceManager.html- Updated to show HubSpot as available -
Testing.gs- Added HubSpot testing functions
-
Main.gs- Already supports multi-data sources -
Sidebar.html- Already supports data source switching -
ReportBuilder.html- Already supports multiple sources -
Backend.gs- Already supports multi-source usage tracking - All GA4 files (Analytics.gs, Auth.gs, etc.) - No changes needed
- Go to hubspot.com
- Sign up for free account
- Complete basic onboarding
- Go to developers.hubspot.com
- Create new app
- Configure OAuth with redirect URI:
https://script.google.com/macros/d/YOUR_SCRIPT_ID/usercallback - Add required scopes:
contacts,content,crm.objects.companies.read,crm.objects.deals.read - Get Client ID and Client Secret
- Add to Script Properties:
HUBSPOT_CLIENT_ID = your_client_id HUBSPOT_CLIENT_SECRET = your_client_secret
- Deploy the new files
- Run
quickTestHubSpot()to verify setup
Run these functions in Apps Script:
function testBasicSetup() {
// Should show HubSpot as available
var config = getDataSourceConfig();
Logger.log('HubSpot config: ' + JSON.stringify(config.hubspot));
// Should load HubSpot metadata
var metadata = getDataSourceMetadata('hubspot');
Logger.log('HubSpot fields: ' + metadata.dimensions.length + '/' + metadata.metrics.length);
}function testHubSpotAuth() {
// Before auth - should be false
Logger.log('Auth before: ' + isHubSpotAuthenticated());
// Get auth URL - should return URL
var authResult = initiateHubSpotAuth({scopes: ['contacts', 'content']});
Logger.log('Auth URL: ' + authResult.authUrl);
}function testCompleteFlow() {
runAllTests(); // Runs all tests including HubSpot
}- Users see HubSpot as an available option
- Can switch between GA4 and HubSpot seamlessly
- Authentication status shows per data source
- Click "Connect to HubSpot"
- OAuth popup opens
- User logs into HubSpot and grants permissions
- Returns to app, now connected
- Select dimensions like "First Name", "Last Name", "Email"
- Select metrics like "Contact Notes", "Website Visits"
- Preview and import data to sheets
- Same familiar interface as GA4
Contact Reports:
- Basic info: Name, email, phone, company, job title
- Activity: Contact notes, website visits, email engagement
- Lifecycle: Create date, lifecycle stage, lead status
Company Reports:
- Company details: Name, domain, industry, location
- Business metrics: Employee count, annual revenue
Sales Reports:
- Deal information: Name, amount, stage, pipeline
- Sales metrics: Deal values, conversion events
If issues occur:
- Disable HubSpot in UI: Update DataSourceManager.html to mark HubSpot as "coming-soon"
- Remove Authentication: Delete HubSpot script properties
- Revert Code: Remove HubSpot.gs and revert DataSource.gs changes
All GA4 functionality remains unchanged, so users can continue using existing features.
Track these after deployment:
- HubSpot authentication success rate
- Number of HubSpot reports created vs GA4
- User adoption rate of HubSpot data source
- Error rates and common support issues
- Usage distribution: Contacts vs Companies vs Deals data
"New: Import your HubSpot CRM data! Connect your HubSpot account to import contacts, companies, and deals data directly into Google Sheets. Perfect for sales reporting and customer analysis alongside your GA4 analytics."
- Add "How to Connect HubSpot" guide
- Document available HubSpot fields and metrics
- Provide sample report templates
- Include troubleshooting for common HubSpot issues
With HubSpot working, the framework is proven for additional sources:
Next Priority Sources:
- Spotify - Creator/artist analytics (simple OAuth)
- Facebook Ads - Marketing analytics (needs business verification but simpler than Google Ads)
- Google Ads - When users need it and have approval
- Custom APIs - Any REST API with OAuth2
Framework Benefits:
- Each new source takes ~1-2 days instead of weeks
- Consistent user experience across all sources
- Shared authentication, usage tracking, and UI patterns
- Easy to maintain and extend
The HubSpot integration proves your multi-data source architecture works and provides immediate value to users who want CRM data alongside their analytics.