Create a CompanyCam jobsite when a HubSpot deal closes
The moment a deal is marked Closed Won, we set up the matching jobsite in CompanyCam, label it by job type, and link it back on the HubSpot deal.
When a deal is marked Closed Won in HubSpot, I want a matching jobsite project created in CompanyCam automatically, so the crew never has to set one up by hand and job photos never land in the wrong place. Trigger this from a HubSpot webhook that fires when a deal's stage changes, and only continue when the new stage is Closed Won. Ignore every other property change.
Start by calling Get Deal with the deal ID from the webhook payload, requesting the deal properties along with its associated contacts. Then call Get Contact for the associated homeowner. Between the two records, collect the customer name, the full street address, and the job type, for example Roofing, Siding, or Insurance Claim. If the deal carries its own address or job type properties, prefer those over what is on the contact.
Before creating anything, call List Projects in CompanyCam and check whether a project for that address already exists. Match addresses loosely rather than exactly, because CRM addresses are messy: treat "123 Main St" and "123 Main Street Unit B" as the same jobsite, and ignore differences in casing, punctuation, and abbreviations like St and Street, Ave and Avenue, or Rd and Road. If you find a convincing match, do not create a second project. Reuse the existing one for the remaining steps and mention in the Slack message that the jobsite already existed.
If nothing matches, call Create Project. Name the project with the customer name and street address. Create Project expects a structured address, so split the HubSpot address into separate street, city, state, and postal code fields rather than passing one combined string. If the city, state, or postal code is missing in HubSpot, fill in what you have and still create the project rather than failing outright.
Then call Add Labels to Project to tag the project based on the job type on the deal, using labels such as Roofing, Siding, or Insurance Claim, so the project lands in the right filter for the field crew. If the job type does not map cleanly onto one of those labels, pick the closest match and call out the ambiguity in the Slack message. If there is no job type at all, skip labeling rather than guessing.
Write the new CompanyCam project link back onto the HubSpot deal with Update Deal, storing it in the deal property the team uses for the jobsite link. Then call Create Note, associated with that deal, recording that the jobsite was created along with the project name, address, any labels applied, and the link, so the sales rep can jump straight from the CRM record to the jobsite photos.
Finish by sending a Slack message to the operations channel with the customer name, street address, job type, labels applied, and the project link, so whoever handles scheduling knows the site is ready to document. Keep it to a few lines and put the link on its own line so it is easy to tap from a phone in the field.
One guardrail: if the deal has no usable street address, do not create a project at all. Post a Slack message naming the deal, with a link to it, so someone can fix the record, then stop. Never create a jobsite that would later have to be merged or deleted.
What does this prompt do?
- Watches your sales pipeline and reacts the moment a deal is marked Closed Won, with no one having to remember to set the job up.
- Checks CompanyCam first and matches messy addresses loosely, so you never end up with two jobsites for the same house.
- Creates the jobsite with the customer name and full street address, then labels it by job type so it lands in the right filter for the field crew.
- Puts the jobsite link back on the deal and logs a note, then tells your operations channel the site is ready to document.
What do I need to use this?
- A HubSpot account where deals move through a Closed Won stage
- A CompanyCam account on a Pro, Premium, or Elite plan, plus an admin login (CompanyCam only allows outside connections on those plans)
- A Slack workspace with a channel your operations or scheduling team watches
- Deals that record the job address and job type, either on the deal itself or on the homeowner's contact record
- A place on the deal to store the jobsite link, such as a custom field your team already uses
How can I customize it?
- Change the job type to label mapping so it matches the labels your crews already filter by, such as Roofing, Siding, Gutters, or Insurance Claim
- Point the notification at a different Slack channel, or split it so each crew gets only their own jobs
- Loosen or tighten how closely addresses have to match before an existing jobsite counts as a duplicate
- Trigger on a different pipeline stage, such as Contract Signed, if your crews mobilize before the deal is formally closed
FAQs
What happens if the jobsite already exists in CompanyCam?
Our addresses are entered inconsistently. Will it still match?
Do we need a paid CompanyCam plan for this?
Will this work on HubSpot Free?
What if a deal is missing the address or job type?
Related templates
Stop buying stale lists. Reps run a saved search, work the results like an inbox, and only the accounts they approve ever reach your CRM.
Pick a date, a starting point and a radius, then build a sequenced day of customer visits that lands straight on your calendar.
One screen where reps filter for companies that fit, see who is actually reachable at each account, and save only the addresses that verify.
Search creators for free, shortlist the best with your team, and spend an audit credit only when you decide someone is worth a closer look.
One screen showing invited, completed, and shortlisted counts for every open role, plus the stalled invites that have quietly gone nowhere.
See every competitor battlecard next to the number of open deals that name that competitor, so the cards carrying real pipeline get refreshed first.
Stop setting up jobsites by hand.
Let every closed deal create its own CompanyCam project, labeled and linked, before the crew ever pulls up to the site.