Save your real Gmail conversations to Google Contacts every Monday
Every Monday morning, an agent finds the people you actually email back and forth with, adds them to Google Contacts, and posts a tidy summary to Slack.
Every Monday at 9am local time, sweep my Gmail for people I have been emailing back and forth with who are not yet in my Google Contacts, add the real humans, and post a summary to Slack.
Trigger: cron, every Monday at 9am.
Step 1. Use Gmail List Messages with a query that covers the last 30 days in both Sent and Inbox (something like newer_than:30d in:sent OR newer_than:30d in:inbox). Page through results and pull headers with Gmail Get a Message (metadata format is enough for the grouping pass) so you have From, To, Cc, and Date for each message.
Step 2. Group messages by the counterparty email address (the non-me side). Keep only addresses where I sent them at least 2 messages AND they sent me at least 2 messages in the window. This is the real-conversation filter. One-off blasts in either direction do not count.
Step 3. For each surviving candidate, check whether the address is already saved using Google Contacts. Note: the People API requires a warmup call to Search Contacts with an empty query before the first real search will return results, so do that once at the start of this step. Then for each candidate, call Search Contacts with the email, and also call Search Other Contacts (the auto-saved bucket Gmail populates) with the email. If either returns a match, drop the candidate.
Step 4. Judge the remainder. Skip no-reply patterns (noreply, no-reply, donotreply, mailer-daemon, postmaster, notifications@, alerts@, etc.), newsletter and marketing senders, transactional/receipt senders, and obvious automated mail like calendar invites and shipping notifications. Use the From display name, the sender domain, and one sample message body via Gmail Get a Message (full format) to make the call. When in doubt, skip and explain why in the summary.
Step 5. For each survivor, extract a best-guess full name. Prefer a clean name from the From header (strip quotes and any address). If the From name looks like an email or is missing, parse the most recent signature block from a sample message body for a likely first and last name. Keep it to ONE name entry per contact: Google Contacts treats names as a singleton field and will reject a create with multiple.
Step 6. Make sure a contact group called "Auto-Saved from Gmail" exists. List Contact Groups first to check; if it is not there, Create Contact Group with that name. Hold on to its resource name for the next step.
Step 7. Use Google Contacts Batch Create Contacts to add all the survivors in one call (cap at 200 per batch, page if needed). Each contact gets one name entry, the email address, and membership in the Auto-Saved from Gmail group.
Step 8. Post a single Slack message to the channel I pick when setting this up. Format it as a short readable summary: a header like "Saved N new contacts from Gmail this week", then a list of who got added with their name, email, and how many back-and-forth exchanges I had with them in the window, then a short "Skipped (borderline)" section listing any candidates the agent deliberately dropped along with the reason (looked like a newsletter, no real name found, etc.). Use Slack mrkdwn (single asterisks for bold). If nothing was saved, post a brief note saying so instead of nothing.
Ask me for: the Slack channel to post the summary in, and confirm the timezone for the Monday 9am trigger. Default everything else (30-day window, 2-and-2 threshold, group name).
Additional information
What does this prompt do?
- Once a week, scans your last 30 days of Gmail to find the people you genuinely email back and forth with, at least twice in each direction.
- Skips no-reply addresses, newsletters, receipts, calendar invites, and anyone already saved in your contacts.
- Pulls a clean full name from the email signature and adds the survivors to Google Contacts under a dedicated Auto-Saved from Gmail group.
- Posts a Slack summary showing who got added, how many exchanges you had with them, and a short note on anyone borderline it deliberately skipped.
What do I need to use this?
- A Gmail account the agent can read messages from.
- A Google Contacts account the agent can add contacts to (same Google account is fine).
- A Slack workspace and the channel you want the weekly summary posted in.
How can I customize it?
- Change the schedule. Run it daily, on Fridays, or once a month instead of Monday morning.
- Tighten or loosen the threshold. Require more than two exchanges, or look back 60 or 90 days instead of 30.
- Rename the contact group, point the Slack summary at a private channel or DM, or add extra filters like only saving people from outside your own company domain.
Frequently asked questions
Will it flood my address book with newsletters and no-reply addresses?
Will it create duplicates of people I already have?
Where do the new contacts end up?
Can I run it more or less often than weekly?
Does it post the summary anywhere besides Slack?
Stop losing track of people you actually email.
Connect Gmail, Google Contacts, and Slack once, and Geni quietly saves the humans worth remembering every Monday.