Connected Battle Cards in HubSpot
How annotating competitors on a deal publishes tracked battle card links into the HubSpot deal record and activity timeline
Overview
When you annotate competitors on a HubSpot deal in Steve, Steve publishes the matching battle cards straight back into HubSpot β as a deal property and as a note on the deal's activity timeline. Reps who live in HubSpot get the competitive intel where they already are, without opening Steve.
Every link is deal-specific and tracked, so you can see which deals actually drove battle card opens.
Who it's for: π― Sales Rep reading the links in HubSpot Β· π£ PMM setting it up and watching the numbers.
What it looks like in HubSpot
Two places on the deal:
| Where | What appears |
|---|---|
Deal sidebar β the steve_connected_battle_cards property | One line per competitor, formatted CompetitorName: URL |
| Deal activity timeline β a Steve note | A header (Steve Battle Card Links, or γγγ«γ«γΌγγͺγ³γ― in Japanese organizations) followed by the same lines |
The note is the reason the links show up in the deal preview, not just the sidebar.
How to trigger it
- Open the deals table.
- Assign a project to the deal. The competitor selector is disabled until you do β "Assign a project first to annotate competitors."
- Open the Competitors cell and select one or more competitors from that project.
- That's it. A toast confirms "Competitors updated successfully", and the links appear in HubSpot.
Bulk-assigning competitors from the bulk action bar runs the same sync for every selected deal.
What happens behind that one click
- Steve resolves each competitor name to its competitor record within the deal's project. Competitors that don't belong to that project are ignored.
- For each one, Steve gets or creates a deal-specific share UUID β so the same competitor on two different deals gets two different links.
- It builds a public URL of the form
https://app.hiresteve.ai/shared/<uuid>/competitor. - Where short links are configured, the URL is shortened. If shortening fails, Steve falls back to the full URL rather than dropping the link.
- The
CompetitorName: URLlines are joined and written to thesteve_connected_battle_cardsdeal property. - A note is created on the deal's activity timeline with the same content. If a Steve note already exists on that deal, it's updated in place instead of duplicated. If the note was deleted in HubSpot, Steve creates a fresh one.
Clearing competitors
Remove all competitors from the deal, or unassign the project, and Steve deletes the battle card note from the HubSpot timeline and clears its reference. The property is left for HubSpot's own history.
Tracking opens
Because each link carries a deal-specific UUID, opens are attributed server-side to the exact deal β there are no tracking query parameters in the URL for anyone to strip.
In the deals table, the BC Views column shows how many times that deal's battle card links have been opened. It displays 99+ above ninety-nine and a dash when there are none. Turn the column on from the Columns menu.
The Connected Battle Cards column shows the links themselves, one clickable entry per competitor.
Requirements
| Requirement | Why |
|---|---|
steve_connected_battle_cards exists in HubSpot | Created automatically at connect time. If it's missing, the HubSpot dashboard shows an amber banner with a Create missing fields button. |
The crm.objects.contacts.write scope | HubSpot requires it for creating Notes. Without it, the property is still written but no timeline note is created. Steve shows a "Re-integrate to enable deal activity notes" banner in settings β one click fixes it, and existing data is untouched. |
| A project on the deal | Competitor annotation is project-scoped. |
| Competitors in that project | The selector only offers competitors belonging to the deal's project. |
Troubleshooting
| Symptom | Cause | Fix |
|---|---|---|
| The property fills but no note appears | Missing the contacts-write scope | Click Re-integrate in Settings β HubSpot. |
| Neither the property nor the note appears | steve_connected_battle_cards doesn't exist in HubSpot | Use Create missing fields on the HubSpot dashboard. |
| Only some competitors got links | Those competitors don't belong to the deal's project | Reassign the deal to the right project, or add the competitors to it. |
| A link opens the wrong competitor | The competitor was renamed after annotation | Re-select the competitors on the deal to regenerate the links. |
| BC Views stays at zero | Nobody has opened the links yet, or the column is hidden | Check the Columns menu; otherwise it's genuinely zero. |
Next Steps
- The Deals Table β where annotation happens.
- Deal Suggestions β let AI propose the competitors first.
- Field Mapping β mapping the competitor property.