Log new Cap recordings to HubSpot and recap to Slack
Every weekday at 9am, attach yesterday's Cap walkthroughs to the right HubSpot contact and deal, and send your sales team a tidy Slack recap.
Every weekday at 9am, I want an agent that pulls the new Cap recordings my team made in the last 24 hours, files them on the right HubSpot record, and posts a single recap to Slack.
Trigger: cron, every weekday at 9am in the workspace's local time. Cap does not support webhooks, so polling on a schedule is the right approach.
Step 1. Pull recent recordings from Cap. Use Cap's List Videos to fetch videos whose createdAt is within the last 24 hours (page through results until the next page is older than that). For each new video, call Get Video to grab full metadata, including id, name, externalUserId, duration, transcriptionStatus, and createdAt. The public share URL follows the pattern https://cap.so/s/{id}.
Step 2. Filter out internal recordings. Skip any video whose name contains words like "test", "debug", "demo for team", "internal", or "scratch" (case-insensitive). I want to be able to edit that skip list later.
Step 3. Match each remaining recording to a HubSpot contact. For each video, use HubSpot's Search Contacts to find a confident match by trying, in order: the externalUserId (treat it as an email if it looks like one), then full names extracted from the video name, then email fragments in the video name, then company names in the video name. Only accept the match when there is a single high-confidence hit. If there is no match or multiple plausible matches, mark the recording as unmatched and move on.
Step 4. Find the contact's most recent open deal. When there is a confident contact match, use HubSpot's Search Deals to find the contact's most recently created deal whose dealstage is not closedwon or closedlost. It is fine if there is no open deal; just skip the deal association in that case.
Step 5. File a Note in HubSpot. Use Create Note with a body containing the recording title, the duration in minutes (rounded), and the cap.so share link. Associate the note with the matched contact and (when found) the most recent open deal.
Step 6. Post one Slack digest. After processing all recordings, use Slack Bot's Send a Message to post a single message to a sales channel I will pick at setup time. The message should have two sections: a Logged section listing each matched recording as "contact name — deal name — share link", and a Needs Routing section listing any unmatched recordings with their title and share link so a human can route them. If there were zero recordings to report at all, do not post the digest.
Edge cases to handle: if a video's transcriptionStatus is PROCESSING, skip it for this run so we pick it up tomorrow once it finishes. If HubSpot returns a 429, back off and retry. If the same recording somehow shows up across two runs, the 24-hour window should prevent re-filing, but de-dupe defensively on Cap video id before writing notes.
Inputs I want to set when I install this: the Slack channel for the digest, the time of day to run, and the list of words that mark a recording as internal and should be skipped.
Additional information
What does this prompt do?
- Pulls every Cap recording your team made in the last 24 hours when the workflow runs.
- Matches each recording to the right HubSpot contact and their newest open deal.
- Files a Note on the contact with the recording's title, length, and share link.
- Posts one Slack digest with matched recordings and any that still need a human to route.
- Skips recordings whose names look internal, like test, debug, or team demo runs.
What do I need to use this?
- A Cap account where you can create a developer Secret Key.
- A HubSpot login that can read contacts and deals and create notes.
- A Slack workspace and the name of the sales channel you want the digest in.
How can I customize it?
- Change when it runs or how far back to look for new recordings.
- Pick a different Slack channel, or post to more than one.
- Edit the words and phrases that mark a recording as internal and skip it.
- Decide whether to skip recordings that haven't finished processing yet, or include them anyway.
Frequently asked questions
What happens to recordings it cannot match to a contact?
Will it post a Slack message if nothing happened overnight?
Does it create duplicate notes if the same recording shows up twice?
Can I change when it runs?
What if a recording isn't tied to a deal?
Related templates
Stop hand-logging every sales walkthrough you record.
Connect Cap, HubSpot, and Slack once, and Geni files yesterday's recordings on the right contact every weekday morning.