HubSpot closed-won deals to Smartsheet kickoff tracking
When a deal is marked closed won, we set up the Smartsheet row, book the kickoff meeting, and tell the delivery team in Slack.
When a deal in HubSpot moves into the Closed Won stage, stand up the delivery tracking for it automatically so nobody has to retype the deal into Smartsheet. Build this as a deterministic code workflow. Every step is a fixed field mapping with no judgement involved.
Trigger it from a HubSpot webhook that fires on deal property change, watching the deal stage. Treat the deal as won only when the new stage is the Closed Won stage of my sales pipeline, and ignore every other stage change. Keep the pipeline ID and the winning stage ID in config at the top of the workflow so I can change which pipeline and which stage counts as won without touching the rest of the code.
Use HubSpot Get Deal with the deal ID from the webhook payload to pull dealname, amount, closedate, hubspot_owner_id, pipeline and dealstage, and request the associated companies and contacts. Associations come back as IDs, so resolve them: HubSpot Get Company for the associated company to get its name, HubSpot Get Contact for the first associated contact to get firstname, lastname and email, and HubSpot Get Owner for hubspot_owner_id to get the deal owner's name and email.
Before writing anything, guard against duplicates, because HubSpot can deliver the same stage change more than once. Read the intake sheet and skip the entire run if a row already carries this HubSpot deal ID.
Create the kickoff row with Smartsheet Add Rows in my project intake sheet, appended to the bottom. Call Smartsheet List Columns first and map column titles to column IDs rather than hardcoding IDs. Map the deal name into the project name column, amount into the contract value column, close date into the close date column, the owner name into the delivery owner column, the company name into the account column, the contact name and email into the client contact column, and the HubSpot deal ID into a reference column so the duplicate check above has something to match on. If the deal has no associated company or contact, leave those cells blank instead of failing the run.
Then use Google Calendar Create Event to put a kickoff meeting on the delivery team calendar. The start date is five business days after the deal close date, counting weekdays only and skipping Saturday and Sunday. Make it a one hour meeting at 10am in the team's timezone, title it Kickoff followed by the deal name, invite the deal owner and the client contact as attendees, and put the company name, the contract value and a link to the Smartsheet row in the description. If the contact has no email address, create the event with the deal owner as the only attendee.
Finally use Slack Send a Message to announce the new project in my delivery channel. Include the deal name, the company, the contract value formatted as currency, the kickoff meeting date and a link to the new Smartsheet row, which Add Rows returns as the row permalink. If the row or the calendar event could not be created, say so in the message rather than failing silently.
Keep the intake sheet ID, the delivery calendar ID, the Slack channel, the kickoff offset of five business days and the column title mapping in that same config block at the top, so all of the tuning happens in one place.
What does this prompt do?
- Watches for deals that reach closed won in HubSpot and picks up the deal name, value, close date, owner, company and main contact.
- Adds a kickoff row to your Smartsheet project intake sheet, with every field dropped into the matching column.
- Books a kickoff meeting on the delivery team calendar five working days after the close date and invites the deal owner and the client contact.
- Announces the new project in your delivery Slack channel with the contract value and a link straight to the new Smartsheet row.
What do I need to use this?
- A HubSpot account where deals move through a closed won stage
- A Smartsheet project intake sheet with columns for the deal details you want tracked
- A Google Calendar that the delivery team uses for kickoff meetings
- A Slack workspace and the channel where you announce new projects
How can I customize it?
- Change which pipeline and which stage counts as won, so only the deals you care about start a delivery project.
- Move the kickoff meeting nearer or further out than five working days, or change the meeting length and time of day.
- Swap the Slack channel, the invite list, or which Smartsheet column each deal field lands in.
FAQs
Will this work on HubSpot Free?
What happens if the deal has no company or contact attached?
Will it create duplicate rows if the deal gets updated again?
How is the kickoff date worked out?
Do my Smartsheet columns need specific names?
Related templates
When your flight moves, your calendar times get corrected automatically and you get a Slack note naming the meetings you're about to miss.
Every 15 minutes, forwarded phishing reports get traced back to the server that really sent them, with a verdict in Slack and the worst senders reported.
Twice every weekday, the conversations from your social inbox land on the right HubSpot contact timelines, with a Slack recap for sales.
Every weekday at 7am, sign in to the tender portals you track, filter new notices against your bid criteria, and open a deal for the ones worth chasing.
Every morning, find the addresses that hard bounced or filed a spam complaint, update the matching HubSpot contacts, and post a short Slack recap.
When a HubSpot deal hits Closed Won, the customer's plan, seats and renewal dates land in your DynamoDB accounts table, with a Slack note showing what changed.
Stop retyping closed deals into Smartsheet.
Let every closed won deal open its own delivery row, kickoff meeting and Slack announcement without anyone copying fields across.