How I built a Notion Custom Agent to read my newsletters for me

Hero image for "How I built a Notion Custom Agent to read my newsletters for me" showing apple rolled up newspaper emoji

I had 177 newsletters sitting unread in February alone. So I built something to deal with that.


Summary: Notion's Custom Agents (currently in public beta, free until 3 May 2026) let you connect Gmail, run logic, and update your databases using plain English and no code. My first agent processed three months of unread newsletters into structured digests. Here's the output, and how to build your own.


My Gmail 'To read' folder which is full

The problem: 7,587 emails piled up in my reading backlog

I subscribe to more newsletters than I read. You probably do too.

The intent is good (stay informed, keep the ideas flowing) but the reality is a growing Gmail label called @Read that I visit approximately never. Even after a ruthless unsubscribe phase, without really noticing I'd signed up for a few more things, and a few more after that. By the time I ran this agent across three months of backlog, December had 62 items, January had 51, and February had 177.

The trickier issue is quality variance. Some newsletters are always useful. Others are worth reading maybe 25% of the time. I don't want to unsubscribe, but I also can't justify reviewing each one manually to find the good stuff.

There's also a practical angle: I pay for Notion already, and Gmail storage isn't free forever. Moving email content into a database where I can search, filter, and act on it makes more sense than letting it pile up in a label.

 
A woman speaking in front of a screen to a room full of people

Presenting an early custom agent idea at the Notion HQ in Sydney

A few weeks ago I was invited to the Notion office in Sydney as part of a small group of template creators getting an early preview of what was coming. Custom Agents are one of those features where I didn't really get what they'd feel like in practice until I had my hands on them. When they launched publicly, this was the first thing I built.


Custom Agents run without you β€” they're triggered, not prompted

Notion Custom Agents

Custom Agents launched in public beta on 25 February 2026. They're different from the AI features you might already use in Notion β€” like inline AI or meeting notes, which respond when you ask them to. Custom Agents run on instructions you write once, then get triggered by a time or event, connecting across tools like Gmail, Slack, Calendar, and Notion databases without manual prompting.

It's less like asking an AI a question and more like onboarding a literal-minded assistant who does exactly what you tell them, every time.

Custom Agents are on Business and Enterprise plans, including Business trials, and free to use through 3 May 2026.

What it does while you're not looking

My monthly newsletter summariser agent

When I ask it to process a particular month, it scans Gmail for emails with the label @Read that arrived in that month, using Melbourne time so nothing slips through timezone gaps. For each email, it checks whether a record with that Gmail Message ID already exists in my Notion database β€” and skips it if it does.

For new emails, it creates a record with the subject, sender, date, a one-to-two sentence summary, the most interesting idea in context of my work, any links mentioned, a relevance tag (PP, day job, both, personal learning, or low signal), and a concrete action if there is one. Then it relabels the email in Gmail from @Read to @Summarised.

Once all emails are processed, it creates or updates a monthly digest page with a summary, top five insights, three ideas for Producing Paradise, three for my day job, and two to four themes across the batch.

The instructions took about 20 minutes to write, but the first run wasn't quite right β€” it processed only 10 newsletters per month and stopped. I went back and was more explicit about processing the full month, not just a batch. I also added logic to update an existing digest rather than create a new one on re-runs. Then, once I'd been through a few months of output, I added a categorisation layer: the agent checks how previous newsletters from the same sender have been tagged and applies the same category automatically, or makes its best guess for new senders. Over time, insights cluster by category rather than sitting in a flat list.

Three rounds of refinement, all in plain English, no code. That's the thing about agents: the first version doesn't have to be perfect. You can see what it gets wrong and just tell it.

Three months of backlog, processed in one sitting β€” here's what it surfaced

A summary of ideas from newsletters I received in Feb 2026

A summary of ideas from newsletters I received in Feb 2026

I ran all three months on the same day. December and January were run in batches while I was still testing, so those figures don't reflect the full month.

December was mostly end-of-year content. The agent correctly flagged deal roundups and tech emails as low signal and deprioritised them. The themes were accurate: manager fundamentals, end-of-year reflection, attention and distraction design. Top insights included things like "consistent management cadence beats heroic effort β€” set clear 1:1 rhythms and address issues early" and "disagree better by leading with curiosity, reflecting back what you heard, and naming shared goals." Genuinely useful.

January came out with four themes: confidence through exposure, execution quality and speed, kindness and emotional resonance in content, and systems that reduce relearning. The PP ideas were specific enough to use directly: test a kindness-first content concept, write the frame before the execution, build a swipe file of memorable brand moments.

February's 177 items were the fullest run. The summary noted "AI everywhere but with a more grounded tone: security and verification over hype, and judgment and review as the new bottleneck." One of the top insights β€” "if output becomes cheap, judgment becomes expensive: invest in review, critical thinking, and writing to clarify decisions" β€” came from a newsletter I wouldn't have gotten to otherwise.

There was also a small moment of recursion I enjoyed: the Notion "Custom Agent templates are here!" launch email appeared in the February digest, summarised and tagged as relevant. The agent processing a newsletter about itself on the day I built it felt appropriately 2026.

The PP vs day job split is the feature I'll use most. I run two things simultaneously β€” a 15-person studio during the week and Producing Paradise on Wednesdays β€” and context-switching between them is its own overhead. Having the agent pre-sort ideas into those two buckets saves a step I used to do manually, or more often, skip entirely. Different audience, different headspace, and it nailed the distinction.

What it doesn't do: catch emails that arrive outside the label, or tell me which senders are worth keeping. Over time, the relevance tags will start to tell that story. A sender who consistently tags as low signal is a candidate for unsubscribing, providing those tags are accurate.

Note: Notion flags prompt injection as a consideration β€” where hidden instructions in content the agent reads try to manipulate what it does. For a newsletter digest the risk is low, but keep agent scope tight. Notion logs every run, so you can see exactly what happened.

Notion calendar view with various newsletters on their date received

Bonus cool thing: newsletters plotted on calendar based on when received


Build your own

You'll need:

  • A Notion Business or Enterprise plan (including trials, free during beta until 3 May 2026)

  • Gmail connected to Notion via the integrations panel

  • Two Notion databases: one for individual newsletter items, one for monthly digests

  • A Gmail label system β€” I use @Read as the input and @Summarised as the output

The instructions I wrote are below. Copy and adapt freely. Key things to keep if you're modifying for a different setup: the duplicate-check logic using Gmail Message ID rather than subject line (subject lines aren't unique, Message IDs are), the timezone specification, and the explicit instruction not to proceed without a confirmed month. That last one sounds minor, but without it the agent will try to process your entire inbox history.


Full agent instructions

πŸ“– Overview

Summarise emails from the Gmail label @read into Notion without duplicates, then create or update a monthly digest you can review.

βœ… Before you start (required)

  1. Ask me which month to run, and accept any of these formats:

    • Dec 2025

    • December 2025

    • 2025-12

  2. Normalize the month internally to a year-month period.

  3. Confirm the time zone is Australia/Melbourne.

  4. Confirm you will only process emails currently in @read that fall within that month (based on Australia/Melbourne time).

  5. If I do not provide a month, do not proceed.

🧾 Inputs and outputs

Gmail

  • Input label: @read

  • Output label: @summarised

Notion databases

  • Newsletter items: πŸ“© Newsletter Items ()

  • Monthly digests: πŸ—“οΈ Monthly Newsletter Digests ()

πŸ” How to process emails (for the specified month)

1) Collect emails

  • Find all emails with Gmail label @read.

  • Filter to emails received within the specified month (Australia/Melbourne time).

2) Prevent duplicates (strict rule)

For each email:

  • Read its Gmail Message ID.

  • Search the πŸ“© Newsletter Items database for a row where Gmail Message ID exactly matches.

  • If a match exists: skip it. Do not create a new item.

  • If no match exists: create a new item and fill all fields below.

3) Create the Notion record (one per new email)

Create a new row in πŸ“© Newsletter Items with:

  • Subject (title)

  • Sender

  • Sender Email

  • Date received

  • Exec summary (1 to 2 sentences, plain language)

  • Most interesting idea (focus on relevance to Producing Paradise and/or day job)

  • Links mentioned (list URLs found in the email, one per line if possible)

  • Relevance: PP, Day job, Both, Personal learning, or Low signal

  • Category:

    • If there are existing Newsletter Items from the same sender: apply the same Category they use.

    • Otherwise: make your best guess and select the most relevant Category.

  • Action to take: a concrete next step if there is one, otherwise None

  • Gmail Message ID

  • Gmail Thread ID

  • Summarised: checked

4) Relabel in Gmail (new emails only)

After creating the Notion row for a new email:

  • Remove label @read

  • Add label @summarised

Never relabel emails that were skipped due to deduping unless I explicitly ask.

πŸ—“οΈ Create or update the monthly digest

In πŸ—“οΈ Monthly Newsletter Digests ():

  1. Find the digest page where Month matches the specified month.

    • The digest page title must be formatted as MMM YYYY (example: Dec 2025).

    • If the user input is YYYY-MM or Month YYYY, still create/find the digest using MMM YYYY format.

    • If an older digest exists with title YYYY-MM, update its title to MMM YYYY rather than creating a duplicate.

  2. Always update:

    • Run date = today (Australia/Melbourne)

    • Period start = first day of the month

    • Period end = last day of the month

  3. Update Items as follows:

    • Include all Newsletter Items created in this run (the new ones).

    • If the digest already exists (re-run), keep the existing related items and add any new ones from this run.

  4. CEO mode:

    • Do not include low-signal content in Summary, Themes, Top insights, PP ideas, or Day job ideas.

    • Prioritize sharp, actionable cutthrough that is useful for running a small business and being an effective knowledge worker.

  5. Category interpretation:

    • Fashion: dressing for work and your personal brand

    • Business career and leadership: running a small business, freelance work, professional development, knowledge work

    • Health and personal growth: being a better human, better member of society, life skills, work-adjacent skills

  6. Always refresh these fields (even on re-run) so the digest reflects the latest set of included items:

    • Summary: 3 to 5 bullets covering what the month contained

      • Only include a Category if something meaningful surfaced in that Category.

      • Formatting: Use Category headings with bullets underneath.

      • Do not format as β€œCategory: item” bullet lines.

      • Example:
        Business career and leadership:

        • …

        • …

    • Top insights: top 5 actionable takeaways

      • Only include a Category if something meaningful surfaced in that Category.

      • Formatting: Use Category headings with bullets underneath.

    • PP ideas: 3 ideas to apply to Producing Paradise

      • Tag each bullet with the Category.

      • Formatting: Use Category headings with bullets underneath.

    • Day job ideas: 3 ideas to apply to day job

      • Tag each bullet with the Category.

      • Formatting: Use Category headings with bullets underneath.

    • Themes: 2 to 4 themes noticed across emails

      • Group by Category when possible.

      • Formatting: Use Category headings with bullets underneath.

      • Example:
        Business career and leadership:

        • AI adoption, verification, and governance

        • Judgment, definition of done, and strategic friction

        • Delegation, buy-in, and manager fundamentals

      • Health and personal growth:

        • Creative flow and attention design

        • Energy management and recovery

    • Other (role-relevant):

      • If an insight does not fit neatly into one of the three Categories but is still relevant, call it out separately here.

πŸ“€ Output to the user (in chat)

When finished, report:

  • The month processed

  • How many emails were added

  • How many emails were skipped due to duplicates

  • A link to the monthly digest page


From inception to completion

My very first prompt for this agent

Starting idea: build an agent that takes newsletters already triaged in Gmail, turns each email into a structured item in Notion, and produces a monthly digest you can skim for decisions and actions.

What changed along the way:

  • Defined a clear pipeline: Gmail @Read β†’ one Notion item per email β†’ move to Gmail @Summarised β†’ update a monthly digest page

  • Made it safe to re-run by enforcing strict deduplication on Gmail Message ID before creating any new rows

  • Added a second database layer so summaries are generated from a traceable source set

  • Added a Category field and made the agent reuse the same category for returning senders, or make a best-guess for new ones

  • Shifted the digest to "CEO cut-through": removed low-signal content from outputs, redefined categories around real roles

  • Standardised month handling: digest titles formatted as MMM YYYY, agent accepts multiple input formats and normalises internally

  • Added a daily 5am Melbourne trigger so ingestion can happen before I'm online, while keeping month-by-month runs available for backlog catch-up

It's a small change, but that's usually the kind worth making

Running three months of backlog in one sitting and ending up with three coherent digests, pre-sorted by context, with ideas I can use β€” that's not magic. The agent doesn't decide what's worth subscribing to, and it doesn't make you act on what it surfaces. What it does is reduce the distance between "I should read that" and "I have a structured view of what I've been consuming this month." For me, with limited weekly hours and two contexts to manage, that gap was where ideas went to die.

Five other workflows worth building the same way

The newsletter digest is a contained use case, which made it a good first build. The thing that makes it work is tight scope β€” and the same applies to all of these.

  • A repeat questions agent that monitors a Slack channel and answers recurring questions from your documentation β€” useful for onboarding, IT, or any team that fields the same five questions on rotation

  • A task routing agent that triggers from an emoji reaction and creates, prioritises, and assigns a task without anyone touching Notion manually

  • A weekly status report that compiles a digest from your project databases every Monday morning so team leads start the week with context, not admin

  • A meeting note processor that picks up transcripts as they land, extracts action items, and links everything to the right project and person

  • A knowledge base auditor that flags documentation older than 90 days and checks whether it still reflects current practice

Freestyle your own agent

Answering these questions will help shape an accurate result off the bat.

  • Pain point:

  • Agent idea:

  • Who is involved?

  • What are all the steps?

  • Where does the work currently live (Notion pages, databases, Slack channels, other tools)?

  • When does it need to be completed?

  • Why is it important? What happens if it’s late?


FAQ

Do I need to know how to code to set this up?
No. The agent instructions are written in plain English. You'll need to set up the Notion databases with the right fields, but there's no coding involved.

Do I need a paid Notion plan?
Custom Agents are available on Business and Enterprise plans, including Business trials. They're free to use through 3 May 2026. After that, they run on Notion Credits as an add-on at $10 per 1,000 credits. Your base seat price doesn't change, and other AI features stay included.

What if I want to process emails from a different label?
Update the instructions to reference your label name. The logic stays the same.

Will it work with email providers other than Gmail?
Currently Notion's Mail integration supports Gmail. Other providers may come later as the feature matures out of beta.

What happens if I run it twice for the same month?
It skips any emails already in your database (matched by Gmail Message ID) and only adds new ones. The monthly digest updates to include any new items from the second run.

Can I add more fields to the newsletter items?
Yes. Add the field to your Notion database and update the agent instructions to describe what you want it to populate. The more specific you are, the better the output.

How long does it take to run?
Depends on volume. A smaller batch of 20–30 emails takes a few minutes. For a large backlog, expect to re-run it in stages.

What happens to my credits if I run out after 3 May?
All Custom Agents pause until the next monthly reset or until a workspace admin purchases more credits. Scheduled runs during that window are skipped and don't run retroactively.

What's prompt injection and should I be worried?
It's when hidden instructions in content the agent reads try to manipulate its behaviour. For newsletters the risk is low, but keep agent scope tight and don't point agents at unfamiliar external content without reviewing it first. Notion has detection built in and logs every run.

Next
Next

The SPACE framework: 5 questions for a (more) organised life