Log every external Google Calendar meeting in HubSpot automatically
When a new external meeting hits your Google Calendar, Geni files a HubSpot note on the contact and deal, then posts a Slack confirmation to the deal owner.
Build me an agent workflow that keeps HubSpot up to date with every external sales meeting on my Google Calendar, with no manual logging.
Trigger: Google Calendar, poll trigger, event type new_event on my primary calendar. Ask me for my own company email domain on first run so the agent knows what counts as internal versus external.
When a new event fires, inspect the attendee list. If every attendee email shares my own company domain, ignore the event and stop. This keeps internal standups and 1:1s out of the CRM.
Otherwise, for each external attendee on the event, run HubSpot Search Contacts filtered by email. If a contact exists, use that contact. If no contact exists, call HubSpot Create Contact first, parsing first name, last name, and email from the calendar attendee, then continue with the new contact.
For the matched or newly created contact, also run HubSpot Search Deals scoped to the contact's associated company, sorted by most recently updated, to find the active deal if there is one.
Then call HubSpot Create Note associated with the contact (and the deal if one was found) with a body that contains a Meeting scheduled header, the meeting title, the start time in the calendar's time zone, the organizer email, the attendee list, and the agenda copied from the event description. Keep the note short and scannable.
Finally, post a Slack Send a Message confirmation to the deal owner. Resolve the owner from the HubSpot deal record (fall back to the contact owner if there is no deal). Use a per-owner channel if one is configured, otherwise DM the owner. The message should summarize what was logged in one or two sentences, name the contact and company, and link to the HubSpot note so the rep can jump in.
Be defensive: skip attendees with obviously invalid emails, do not create duplicate contacts within a single run, and if the HubSpot or Slack call fails, log the error and continue with the remaining attendees rather than aborting the whole event.
What does this prompt do?
- Watches your Google Calendar for new events and ignores any meeting where every attendee shares your own email domain.
- For each external attendee, looks them up in HubSpot by email and creates the contact if they do not exist yet.
- Files a Create Note on the contact (and any associated deal found via Search Deals) capturing meeting title, time, organizer, agenda from the event description, and a Meeting scheduled header.
- Posts a short Slack confirmation to the deal owner so reps can see exactly what was logged without opening HubSpot.
What do I need to use this?
- A Google Calendar account connected to General Input with read access to the calendar that holds your sales meetings.
- A HubSpot account with permission to read contacts and deals and to write contacts and notes.
- A Slack workspace connected with permission to send messages on the deal owner channel.
- Your own company email domain so the agent knows which attendees count as external.
How can I customize it?
- Swap the Slack target from a per-owner channel to a shared #sales-activity channel if leadership wants one feed.
- Tighten or widen the external filter, for example treat partner domains as internal so partner syncs do not pollute the CRM.
- Change the note body template, add fields like meeting link, location, or a one-line AI summary of the agenda.
FAQs
How does the agent decide whether a meeting is external?
What happens if the attendee does not exist in HubSpot yet?
Does it associate the note with the deal too?
Will it log the same meeting twice if the event gets edited?
Can I route the Slack confirmation somewhere other than the deal owner?
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 letting external meetings disappear from your CRM.
Connect Google Calendar, HubSpot, and Slack once, and Geni logs every external sales meeting the moment it lands on your calendar.