Auto-save family photo emails to Google Photos albums

Every two hours, grab photos that family and close friends emailed you and file them into the right Google Photos album by sender or event.

Agentic Task
GmailGoogle PhotosPersonal ProductivityOperationsEmail AutomationData Sync
PromptCreate

Build me an agent workflow that automatically archives photo attachments my family and close friends email me, sorted into a Google Photos album per sender (or per event when the subject names one).

Trigger: cron, every 2 hours.

Each run:

1. Use the Gmail List Messages operation with a query like `has:attachment newer_than:1d (from:mom@example.com OR from:dad@example.com OR label:family)` to find new image-bearing emails since the last run. Leave the sender list and label as workflow inputs the user can edit.

2. For each message, call Gmail Get a Message (format: full) to read headers (Subject, From, Date) and walk the payload parts to find image attachments (mimeType starts with image/, e.g. JPG, PNG, HEIC). For each image part, call Gmail Get Attachment to download the bytes (it returns base64url-encoded data; decode before uploading).

3. Reason about which album each set of photos belongs in. Default rule: one album per sender, named after the sender's display name (e.g. "Photos from Mom"). Override: if the subject line clearly names an event ("Hawaii 2026", "Emma's Birthday", "Wedding Weekend"), use that as the album title instead. Group attachments from the same thread together so a single trip lands in a single album.

4. Call Google Photos List Albums to find an existing album with that title. If none exists, call Create Album to make it. Remember: Google Photos only lets us see and edit albums this app created, so first-time users will start with fresh app-created albums.

5. Dedup before uploading: call Google Photos Search Media Items with an album filter on the target album, and skip any incoming attachment whose filename plus creationTime (the email's Date header) already exists in the album.

6. For each remaining image, call Google Photos Upload Bytes to get an upload token, then call Batch Create Media Items with the album id to attach the new items in one batch. Upload tokens expire after 24 hours, so do the batchCreate call promptly after uploading bytes (don't queue them up across runs).

7. For each newly created media item, call Update Media Item to set a short description derived from the email's subject line and sent date, e.g. "From Mom — \"Hawaii sunset\" — Mar 14, 2026".

Workflow inputs (so the user can edit without touching the prompt):

- senders: list of email addresses to watch

- label: optional Gmail label that also qualifies a message (e.g. "family")

- album_strategy: "per_sender" (default) or "single_album" with a single album name

- min_attachment_size_kb: optional, to ignore tiny tracking-pixel images

Be quiet on success. Only surface output when something needs the user's attention (e.g. an album hit its 20,000-item cap, or an attachment failed to upload). Do not re-process messages from previous runs; key off the email's internalDate and only handle messages newer than the last successful run timestamp.

What does this prompt do?

  • Checks your inbox every two hours for new emails from a list of people you care about that have photos attached.
  • Decides which album each photo belongs in. By default it groups by sender, or by event when the subject line names one like Hawaii 2026.
  • Creates the album if it does not exist yet, adds the new photos, and writes a short caption with the email subject and date.
  • Skips photos that are already in the album so the same picture never gets saved twice.

What do I need to use this?

  • A Gmail account where the photos arrive.
  • A Google Photos account where albums should be created.
  • A short list of senders to watch, like mom and dad, plus any Gmail labels you use to mark family mail.

How can I customize it?

  • Change the list of people whose photos you want to archive, or swap in a Gmail label like Family or Friends.
  • Adjust how often it runs. Every two hours is the default, but every morning or every Sunday works too.
  • Tell it to file everything under one shared album instead of one album per sender, or to always use the email subject as the album name.

FAQs

Will this touch photos that are already in my Google Photos library?
No. It only creates new albums and adds new photos from the emails it processes. Existing albums and photos in your library are not modified.
What happens if the same photo gets emailed twice?
Before adding a photo, the workflow checks whether one with the same filename and date is already in the destination album, so duplicates are skipped.
What kinds of attachments will it save?
Common photo formats like JPG, PNG, and HEIC. Files that are not images, like PDFs or documents, are ignored.
Can I limit it to just a few senders instead of my whole inbox?
Yes. You give it a list of email addresses or a Gmail label, and it only looks at messages that match. Everything else is left alone.
How does it pick which album to use?
By default it files photos under an album named after the sender. If the email subject describes an event, like Hawaii 2026 or Wedding Weekend, it uses that as the album name instead.

Related templates

Trace phishing emails to the sending IP and report abuse

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.

AbuseIPDB
Gmail
Slack
Agentic Task
Weekly flight risk brief for trips your team already booked

Every Thursday, rank your team's upcoming flights by how likely they are to run late, and email the fixes while changes are still cheap.

AeroDataBox
Airtable
Gmail
Agentic Task
Warn customers before their saved card expires and billing fails

Each month, spot the saved cards about to expire, email the customers still on recurring billing, and rank the revenue at risk in Slack.

Authorize.Net
Gmail
Slack Bot
Agentic Task
Auto-correct address typos and hold the orders you can't fix

Every weekday morning, harmless address typos get fixed on unshipped orders, and anything undeliverable is held while the customer confirms it.

Shippo
Shopify
Gmail
+1
Agentic Task
Catch bad shipping addresses before you buy the label

Every weekday morning, unfulfilled orders get an address check: harmless typos fixed automatically, risky addresses held with a note to the customer.

Shippo
Shopify
Gmail
+1
Agentic Task
Turn emailed vendor invoices into draft Zoho Books bills

When an invoice lands in your inbox, we read it, match the vendor, and file a draft bill in Zoho Books for someone to approve in Slack.

Gmail
Zoho Books
Slack
Agentic Task

Stop losing family photos in your inbox.

Connect Gmail and Google Photos once, and Geni quietly files every new photo from the people you love into the right album.