# 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.

- Workflow type: code
- Services: HubSpot, Smartsheet, Google Calendar, Slack
- Categories: Sales, Operations
- Published: 2026-08-09

## What it does

- 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 you'll need

- 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

## Prompt

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.

## How to customize

- 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.

## FAQ

### Will this work on HubSpot Free?

Deals and pipelines exist on every HubSpot plan, but the instant handoff relies on HubSpot telling us the moment a deal stage changes, which is a paid HubSpot feature. On a free plan you can run the same workflow on a schedule instead, so it picks up deals shortly after they close rather than the same second.

### What happens if the deal has no company or contact attached?

The run still completes. Any field we cannot fill is left blank on the Smartsheet row, the kickoff meeting is created with whoever we do have, and the Slack announcement flags what was missing so someone can fill in the gap.

### Will it create duplicate rows if the deal gets updated again?

No. Stage changes other than the winning stage are ignored, and before writing anything we check the intake sheet for a row that already references that deal. Repeat notifications for the same deal are skipped.

### How is the kickoff date worked out?

We count five working days forward from the deal close date and skip weekends, so a Thursday close lands the kickoff the following Thursday rather than on a Saturday. The five day gap is easy to change.

### Do my Smartsheet columns need specific names?

No. You point each deal field at whichever column you already use, once, and the workflow matches your columns by their titles. You do not need to rebuild your intake sheet.

Use this prompt in General Input: https://www.generalinput.com/prompts/hubspot-closed-won-deals-to-smartsheet-kickoff-tracking