# Kick off new customers in Coda when a HubSpot deal closes won

> When a HubSpot deal closes won, draft a Coda kickoff brief, log it on your projects tracker, and post a Slack handoff to implementation.

- Workflow type: agent
- Services: HubSpot, Coda, Slack Bot
- Categories: Sales, Operations
- Published: 2026-06-29

## What it does

- The moment a deal moves to closed won in HubSpot, you get a kickoff brief in Coda built from the real deal notes, contacts, amount, close date, and owner.
- A new row lands on your projects tracker, keyed to the deal so re-runs update the same record instead of creating duplicates.
- Your handoff channel in Slack gets a clean win summary with a direct link to the kickoff doc, so implementation knows exactly what to pick up.
- No more AEs pasting half-written notes in a channel and tagging customer success to figure out the rest.

## What you'll need

- A HubSpot account with deals enabled and permission to read deals, companies, and contacts.
- A Coda doc you use as your customer projects workspace, with a projects tracker table inside it.
- A Slack workspace and the channel you want handoffs posted to, for example a customer handoffs channel.

## Prompt

Build me an agent workflow that turns every closed-won HubSpot deal into a ready-to-go customer kickoff in Coda, plus a handoff message in Slack for the implementation team.

Trigger: HubSpot webhook on deal property change. Only run when the deal's stage changes to closed won (in whichever pipeline I configure). Ignore other stage changes.

When the agent fires, it should:

1. Call HubSpot Get Deal for the deal id from the webhook, with associations to company and contacts and with the properties I care about (deal name, amount, close date, pipeline, stage, owner, deal notes / description, any custom scope fields). Resolve the company name and the primary contact's name, title, and email. Resolve the deal owner's name and email.

2. Synthesize a kickoff brief from the HubSpot data. Don't just field-map. Read the deal notes and infer scope and risk. The brief should have these sections: Background (what we sold and why they bought, in 2-4 sentences); Stakeholders (the company, the primary contacts with roles, and the AE who closed it); Scope (what implementation needs to deliver, inferred from the notes); Suggested first-week agenda (kickoff call agenda, intros, success criteria, technical discovery); Open questions for the AE (anything ambiguous in the notes that implementation will need clarified). Use plain prose, not JSON or code blocks. If a section has no signal, say so explicitly instead of inventing detail.

3. Call Coda Create Page inside my customer projects doc (I'll pick the doc id during setup). Page title should be "Kickoff: <Company Name> - <Deal Name>". Page body is the brief from step 2, formatted with markdown headings for each section.

4. Call Coda Insert or Upsert Rows on my projects tracker table inside that same doc. Use keyColumns set to the deal id column, so if the same deal fires again the row updates instead of duplicating. Columns to set: Deal ID, Company, Deal Name, Amount, Close Date, AE / Deal Owner, Primary Contact, Kickoff Doc (the URL of the page created in step 3), Status (set to "Kickoff scheduled").

5. Call Slack Bot Send a Message to my #customer-handoffs channel (I'll pick the channel at setup). Message should be short and scannable: a one-line win headline with the company, amount, and AE; a 2-3 bullet TL;DR of scope; and a link to the new Coda kickoff page. Use Slack mrkdwn formatting (single asterisks for bold, <url|text> for links).

Make the Coda doc id, the tracker table id, the closed-won stage id (or label) I want to watch for, and the Slack channel all configurable inputs so I can set them once during setup. The agent should be idempotent on re-fires for the same deal: same Coda page (update if it exists, otherwise create), same tracker row (upsert on deal id), and re-post the Slack message so the team sees the latest state.

## How to customize

- Point it at whichever Coda doc and tracker table your team already uses for customer projects.
- Change the Slack channel, or send to a private channel for sensitive or enterprise deals.
- Reshape the kickoff brief sections (background, stakeholders, scope, first-week agenda, open questions for the AE) to match how your implementation team likes to receive context.
- Add a filter so only deals above a certain amount, or in a specific pipeline, trigger the kickoff.

## FAQ

### Does this work with HubSpot Free, or do I need a paid tier?

It works on HubSpot Free and every paid tier. As long as you have deals enabled and the person connecting can view them, the workflow can read the deal, company, and contacts.

### What if a deal reopens and then closes won a second time?

The Coda tracker row is keyed by the HubSpot deal id, so the second run updates the existing row instead of creating a duplicate. The kickoff brief and Slack handoff still fire so the team sees the latest state.

### Can I post the handoff to more than one Slack channel?

Yes. Tell the workflow which channels you want and it will send the same handoff to each. Common setups post once to a public wins channel and once to a private implementation channel.

### What happens if the deal notes are thin or messy?

The brief leans on the structured fields it does have (company, contacts, amount, close date, owner) and explicitly lists open questions for the AE, so the gaps are surfaced instead of hidden.

### Do I have to use a specific Coda template for the projects doc?

No. Point it at any Coda doc and any tracker table, and the workflow will use your existing structure. It does not impose a template.

Use this prompt in General Input: https://www.generalinput.com/prompts/kick-off-new-customers-in-coda-when-a-hubspot-deal-closes-won