HubSpot Integration
Connect Automatum with HubSpot CRM for streamlined sales and marketing operations.
Overview
The HubSpot integration synchronizes your cloud marketplace data with HubSpot CRM, enabling your sales and marketing teams to work with unified customer data.
How it works
The integration has two parts:
- The HubSpot app (connector) — a settings page and the CRM cards you see on a Deal or Opportunity. It is a thin UI: it renders what the Automatum backend sends and collects your input. No marketplace logic runs in HubSpot.
- The Automatum backend — owns the OAuth tokens, the field mappings, and every call to AWS and Azure. All the logic lives here.
Portal-to-organization link
When you install the connector, Automatum stores your HubSpot portal's OAuth tokens against your Automatum organization. That link is one-to-one: each HubSpot portal maps to exactly one Automatum organization. Every request the app makes is scoped to that portal's organization, so one tenant can never read or write another tenant's data.
App-to-app authentication
The connector never sends your personal credentials to Automatum. Each request from the app to the backend is signed by HubSpot and identifies the calling portal. The backend trusts the portal identity from that signature — not any value the page supplies — and looks up the matching organization and tokens. Because the app is a trusted, signed caller, it does not log in as a user.
Setup and property bootstrap
In Settings you connect AWS or Azure and define a field mapping — which HubSpot Deal properties map to which marketplace fields, which values are fixed, and which are dropdowns (enums). The mapping is saved on the backend, not in HubSpot.
The first time you save a mapping, the backend creates the HubSpot custom properties it needs, grouped under an Automatum property group. You never create these by hand. HubSpot's API is called with the backend's stored token, so property creation is proxied through Automatum.
Outbound: Deal → marketplace
- You open a Deal and click Sync (co-sell / private offer).
- The backend resolves your mapping into a prefilled form — statics filled, Deal values looked up, enums constrained to the allowed list.
- You review, adjust, and submit.
- The backend submits to AWS or Azure and writes the response — opportunity or referral ID, status, timestamps — back into the HubSpot custom properties.
- The card renders that state directly from those properties.
Inbound: marketplace → HubSpot
Changes on the marketplace side — acceptance, information requests, stage and status transitions — flow back to Automatum by webhook or poll. The backend writes the new values into the HubSpot properties, and the card reflects them on next load. A reconciliation job links opportunities lodged directly in AWS Partner Central to the matching HubSpot Deal.
Because marketplace state lives as HubSpot custom properties under the Automatum group, it is filterable and reportable in HubSpot's own lists and reports.
Features
- Contact Sync: Sync marketplace customers to HubSpot Contacts
- Company Sync: Create and update HubSpot Companies
- Deal Pipeline: Manage private offers as HubSpot Deals
- Activity Tracking: Log all marketplace interactions
- Marketing Automation: Trigger workflows from marketplace events
- Revenue Attribution: Track marketplace revenue in HubSpot
Prerequisites
- HubSpot account (Professional or Enterprise)
- HubSpot API access
- Automatum Professional or Enterprise plan
- Admin access in HubSpot
Setup
Step 1: Connect HubSpot
- Navigate to Settings > Integrations > HubSpot
- Click Connect HubSpot
- Log in to your HubSpot account
- Review and grant permissions
- Click Connect App
Step 2: Grant Permissions
Automatum requests these HubSpot scopes:
crm.objects.contacts.readcrm.objects.contacts.writecrm.objects.companies.readcrm.objects.companies.writecrm.objects.deals.readcrm.objects.deals.writetimeline
Step 3: Configure Sync Settings
Sync Direction:
- Automatum → HubSpot (one-way)
- Bi-directional
Sync Frequency:
- Real-time
- Every 15 minutes
- Hourly
Step 4: Map Properties
Create custom properties in HubSpot:
Contact Properties:
marketplace_customer_id (Single-line text)
aws_account_id (Single-line text)
azure_tenant_id (Single-line text)
marketplace_source (Dropdown: AWS, Azure)
contract_status (Dropdown: Active, Expired, Pending)Company Properties:
marketplace_company_id (Single-line text)
total_contract_value (Number)
active_contracts (Number)
marketplace_vendor (Multiple checkboxes: AWS, Azure)Deal Properties:
private_offer_id (Single-line text)
marketplace (Dropdown: AWS, Azure)
contract_duration_months (Number)
marketplace_status (Dropdown: Created, Sent, Viewed, Accepted, Expired)Data Mapping
Contact Mapping
| Automatum Field | HubSpot Property | Direction |
|---|---|---|
| Bi-directional | ||
| First Name | firstname | Bi-directional |
| Last Name | lastname | Bi-directional |
| Company | company | Automatum → HubSpot |
| Customer ID | marketplace_customer_id | Automatum → HubSpot |
| AWS Account ID | aws_account_id | Automatum → HubSpot |
Company Mapping
| Automatum Field | HubSpot Property | Direction |
|---|---|---|
| Company Name | name | Bi-directional |
| Website | website | Bi-directional |
| Industry | industry | Bi-directional |
| Total Value | total_contract_value | Automatum → HubSpot |
Deal Mapping
| Automatum Field | HubSpot Property | Direction |
|---|---|---|
| Offer Name | dealname | Automatum → HubSpot |
| Value | amount | Automatum → HubSpot |
| Status | dealstage | Bi-directional |
| Close Date | closedate | Automatum → HubSpot |
| Offer ID | private_offer_id | Automatum → HubSpot |
Deal Pipeline
Configure Pipeline Stages
Map Automatum offer statuses to HubSpot deal stages:
Recommended Pipeline:
| Stage Name | Probability | Automatum Status |
|---|---|---|
| New Opportunity | 10% | - |
| Offer Created | 20% | Created |
| Offer Sent | 40% | Email Sent |
| Offer Viewed | 60% | Email Seen |
| Negotiation | 70% | - |
| Closed Won | 100% | Accepted |
| Closed Lost | 0% | Expired, Cancelled |
Create Pipeline in HubSpot
- Go to Settings > Objects > Deals
- Click Pipelines
- Create new pipeline: "Marketplace Deals"
- Add stages matching the mapping above
- Set as default for marketplace deals
Automation
HubSpot Workflows
Trigger HubSpot workflows from marketplace events:
Example: New Customer Workflow
Trigger: Contact property marketplace_customer_id is known
Actions:
- Add to "Marketplace Customers" list
- Send welcome email sequence
- Create task for account manager
- Add company to target account list
Example: Offer Accepted Workflow
Trigger: Deal stage changed to "Closed Won"
Actions:
- Send celebration notification to team
- Create onboarding tasks
- Add to "Active Customers" list
- Update contact lifecycle stage to "Customer"
Enrollment Triggers
Available marketplace triggers:
- Customer created
- Private offer created
- Private offer sent
- Private offer accepted
- Contract expiring (30/60/90 days)
- Contract renewed
Activity Timeline
Tracked Activities
Activities logged to HubSpot timeline:
| Event | Timeline Entry |
|---|---|
| Offer created | "Private offer created for [Product]" |
| Email sent | "Private offer email sent" |
| Email opened | "Customer viewed private offer" |
| Offer accepted | "Private offer accepted - $X" |
| Contract start | "Contract activated" |
| Usage reported | "Usage: X units reported" |
Custom Timeline Events
Create custom timeline events:
json
{
"eventType": "marketplace_offer_accepted",
"objectId": "hubspot_contact_id",
"tokens": {
"offerValue": "$50,000",
"productName": "Enterprise Plan",
"vendor": "AWS"
}
}Marketing Integration
List Segmentation
Create HubSpot lists based on marketplace data:
Static Lists:
- All marketplace customers
- AWS customers
- Azure customers
- High-value customers ($100K+)
Active Lists (auto-updating):
- Customers with expiring contracts
- Customers with high usage
- At-risk customers (low usage)
- Upsell candidates
Lead Scoring
Add marketplace signals to lead scoring:
Positive Signals:
| Signal | Points |
|---|---|
| Private offer viewed | +10 |
| Multiple offer views | +5 per view |
| Offer accepted | +50 |
| High usage | +20 |
Negative Signals:
| Signal | Points |
|---|---|
| Offer expired | -20 |
| Low usage | -10 |
| Contract cancelled | -50 |
Forms & CTAs
Capture marketplace leads:
- Create landing page for marketplace interest
- Add hidden field:
marketplace_source - Set up workflow to route to sales
- Track conversion from marketplace
Reporting
HubSpot Reports
Build reports with marketplace data:
Revenue Reports:
- Marketplace revenue by quarter
- Revenue by sales rep
- Revenue by cloud platform
Pipeline Reports:
- Offer conversion rates
- Average deal size
- Sales cycle length
Customer Reports:
- Customer acquisition by source
- Customer lifetime value
- Renewal rates
Attribution
Track marketplace influence:
- Enable revenue attribution in HubSpot
- Map deal revenue to contacts
- Include in attribution reports
- Measure marketing influence on marketplace deals
Sync Management
View Sync Status
- Go to Settings > Integrations > HubSpot
- View Sync Dashboard
- See recent sync activity
- Review errors and warnings
Manual Sync
Force sync specific records:
bash
POST /api/integrations/hubspot/sync
Authorization: Bearer YOUR_API_KEY
Content-Type: application/json
{
"objectType": "contact",
"automatumId": "cust_123",
"direction": "to_hubspot"
}Sync Logs
View detailed sync logs:
- Object type
- Sync direction
- Status (success/failed)
- Error details
- Timestamp
Troubleshooting
Connection Issues
"Authentication failed":
- Reconnect HubSpot integration
- Verify API access enabled
- Check user permissions
- Clear browser cache and retry
Sync Failures
"Contact not found":
- Check if contact exists in HubSpot
- Verify email address format
- Review matching criteria
"Property not found":
- Create missing custom property
- Check property internal name
- Verify property permissions
Duplicate Records
Prevent duplicates:
- Enable deduplication rules
- Set primary matching field (email)
- Configure duplicate handling
API Access
Query HubSpot
bash
GET /api/integrations/hubspot/contacts/:email
Authorization: Bearer YOUR_API_KEYCreate HubSpot Record
bash
POST /api/integrations/hubspot/contacts
Authorization: Bearer YOUR_API_KEY
Content-Type: application/json
{
"email": "customer@example.com",
"properties": {
"firstname": "John",
"lastname": "Doe",
"marketplace_customer_id": "cust_123"
}
}Security
Data Access
Automatum accesses:
- Contacts (read/write)
- Companies (read/write)
- Deals (read/write)
- Timeline (write)
- Properties (read)
Permission Management
- OAuth tokens stored encrypted
- Automatic token refresh
- Revoke access anytime
- Audit all API calls
Best Practices
- Map fields carefully - Ensure data types match
- Test in sandbox - Use HubSpot test portal first
- Clean data regularly - Remove duplicates
- Train your team - Document workflows
- Monitor sync health - Review logs weekly
Next Steps
Need Help?
Contact support@automatum.io for HubSpot integration assistance.