Automate project updates and reporting with Custom Agents
Learn how to build a Custom Agent that handles the busywork of weekly project updates, from triaging new bugs and requests to drafting a report that's ready to share.
A Custom Agent that handles two recurring jobs. First, it watches your feedback channel and files new bugs and feature requests as tasks in your project database. Then each week, it drafts a project update from that same database, saves it to your Weekly Updates database, and posts a short Slack summary. You spend less time stitching together updates and more time moving the project forward.
Who this is for
Project and program managers, product leads, and team leads who own a recurring status update.

مهمة
Try this prompt
Use this example to get started, and feel free to adapt it to your project and workflow:
Create a weekly project update for my team, add each report to the Weekly Updates database, and post a short Slack summary to #project-bolt whenever a new report is published. Each update should include highlights, progress, risks and blockers, next week priorities, and any relevant links.
In this step, you'll set the agent's foundation: where to watch for incoming requests, what to do with them, and the guardrails that keep things consistent.
In your sidebar, open
Agentsand clickNew agentto start a new chat.Describe what you want the agent to do (the Try this prompt callout above is a good starting point). @-mention your project database and your #user-feedback Slack channel so the agent knows where to read from and where to file new tasks.
Answer any follow-up questions the agent asks in chat, like confirming which database is your project tracker.
The agent will draft
Instructions, suggestTriggers, and flag theTools and accessit needs. You'll fine-tune each of these in the next steps.

Helpful tips
If your #user-feedback channel isn't connected to Notion yet, the agent will flag it and walk you through adding Slack permissions. Approve the prompt to keep going.
The agent works best when you describe the outcome you want, not the steps. "Send a weekly project update" beats "every Friday at 9am, query the database and..."
The agent will keep what you @-mention in mind for the rest of the chat. Front-loading your sources here saves you from re-explaining them later.
In this step, you’ll teach the agent what to do with each new task: who owns it and what status it lands in.
In the same chat, tell the agent to set you as the assignee on any new task it files from #user-feedback.
Then tell it to move the status from
NewtoAssignedso the rest of the team knows the task has been picked up.Click
Saveonce the agent has updated its instructions. This way when you post a new message in #user-feedback, a matching task appears in your project database, assigned to you, with status set toAssigned.

Helpful tips
If your database uses different status names (e.g., Triaged, In review), swap them in. The agent will use whatever names exist in your status property.
If the owner isn't getting set, say in chat: "Set the owner of any new bug report to me." Then click
Saveagain.The activity log on your agent's homepage shows each run, what the agent did, and whether anything failed. Check it first when something looks off.
With triage handled, the next part is the weekly update itself: where the agent drafts it, where it saves it, and when it shares it.
In the same chat, tell the agent to draft a weekly project update for your team using the work in your project database.
Tell it to save each draft to the Weekly Updates database as a new page.
Tell it to post a short summary to #project-bolt when a report’s status changes to
Published, so you can review and edit each draft before it goes out.Click
Saveonce the agent has updated its instructions. From now on, the agent will draft a new report each week and post a Slack summary to #project-bolt the moment you change its status toPublished.

Helpful tips
If the agent asks for edit access to your Weekly Updates database or read access to your project sources, approve it. It can't read or write to anything it doesn't have permission for.
The
Publishedstatus is your release valve. Anything still in draft stays private to you, so you can edit freely before sharing.
Without a set structure, the agent may improvise and every weekly update will look a little different. Define the sections once so each report comes out predictable and easy to skim.
In the same chat, tell the agent to format each weekly report with these sections:
Current status so your team can quickly see where things stand.
Open action items to call out what's still in flight.
Blockers so risks don't get buried.
Next milestones to keep everyone looking ahead.
Then tell it to format each Slack summary as 2–3 highlights with a link back to the full update in Notion.
Click
Saveonce the agent has updated its instructions.

Helpful tips
Swap in section names that match how your team already talks about the work, like
Wins,Risks,Help needed, orSources.Ask the agent to draft a sample report in chat so you can sanity-check the structure before the first real one goes out.
Expect a few follow-up questions from the agent. It may ask which property to pull Current status from, or how to phrase Next milestones. Answer in chat and it will update its instructions.
Before going live, run a quick end-to-end test on both workflows: bug-to-task and weekly update. This way you catch any wiring issues before the agent runs on its own schedule.
Open your agent's
Triggerspanel and confirm both triggers are toggledon. If either is off, turn it on now. A saved agent won't run if its triggers are disabled.Test the bug-to-task workflow:
Post a test message in #user-feedback (e.g., "Bug: settings page won't load on mobile").
Open your project database and confirm a matching task appears, assigned to you, with status
Assigned.
Test the weekly update workflow:
Open your Weekly Updates database and find a draft the agent has created. (If there isn't one yet, ask the agent in chat to generate one.)
Change its status to
Published.Check #project-bolt for a Slack summary with a link back to the full update.

Helpful tips
Use clearly fake test data (e.g., "Bug: test test test") so it's easy to clean up afterward and won't confuse your team if anyone sees it.
Give the bug-to-task trigger a minute or two before assuming it failed. Slack-driven triggers aren't always instantaneous.
Throw an unrelated message into #user-feedback (something that isn't a bug or feature request) to confirm the agent doesn't file random chatter as tasks.
Here are a few best practices to keep your agent reliable as your project evolves:
Share access intentionally: Sharing the agent can also share what it has access to. Review the
Tools and accesspanel before adding new viewers.Set expectations with your team: Let stakeholders know when to expect updates and where to find them.
Layer in new behavior: Add to the agent's setup instead of swapping pieces out. If your execs sit in a different Slack channel, add a second posting destination alongside the existing one.
Refine instructions over time: The agent gets better through conversation, not rewrites. If bug reports lose detail, ask it to tighten its instructions rather than starting over.
Re-test after database changes: A renamed property or new status option can quietly break the agent's logic. Run a quick test on both triggers before the next real run.

More resources
For tips on keeping your agent sharp over time, check out our Custom Agent best practices guide.
For a deeper dive into Custom Agents, take our course on Notion Academy.
هل هناك شيء لم نتناوله؟