Building a Developer Morning Briefing with Zapier Agents (Calendar, PRs, and Priorities in One Slack Message)
How I built a Zapier Agent that pulls my calendar, PRs, Linear tickets, and overnight Slack noise into one ranked morning brief.

I used to start every morning the same way: open Slack, scan for fires, switch to GitHub to check overnight PRs, jump to Google Calendar to see what was about to eat my afternoon, and then open Linear to remember what I'd promised yesterday. Twenty minutes gone before I'd written a line of code. So I built a Zapier Agent that runs at 7:30 AM, pulls all four sources, and posts a single triaged message into a private Slack channel. It's not glamorous, but it's the most useful piece of automation I've shipped this quarter.
If you're picturing one of those generic "good morning digest" templates that just dumps your calendar into a DM, that's not what this is. The trick is using Zapier's new agent Activities model, where the agent reasons across tools instead of running a fixed sequence of steps.
Why a Zapier Agent Beats a Plain Zap for This
A traditional Zap is a fixed pipeline: trigger fires, steps run in order, output gets posted. That works for "when a PR is opened, ping Slack." It doesn't work for "look at the next 8 hours of my calendar, cross-reference open PRs assigned to me, and tell me what to focus on first." That second one needs reasoning.
Zapier Agents handle that by giving the LLM a goal and a set of tools, then letting it decide which tools to call and in what order. Per Zapier's docs, agents now consume Activities rather than tasks. One activity counts every time the agent uses a tool, runs a search, or queries a knowledge source. The Free plan gives you 400 activities per month and the Pro Agent add-on bumps that to 1,500 for $33.33/month billed annually. A morning briefing that calls 5–6 tools per run lands at roughly 130 activities a month, which fits comfortably in the free tier.
One detail nobody mentions: there's a hard cap of 40 activities per individual run. If your agent gets stuck in a loop calling the same tool repeatedly, it pauses and asks for permission before burning more credits. That's saved me from a 3 AM runaway loop more than once.
The Setup: Five Tools, One Goal, One Schedule
Here's the actual configuration I run. The agent has access to four data tools and one output tool:
- Google Calendar — Find Events action, scoped to today's calendar
- GitHub — Find Pull Request action, filtered to
review-requested:@me OR assignee:@me - Linear — Find Issues action, filtered to my assigned active sprint tickets
- Slack — Find Messages action, scoped to two channels I care about
- Slack — Send Channel Message action (this is the only write)
The trigger is Schedule by Zapier set to 7:30 AM weekdays. The agent's instruction is roughly:
"Pull my calendar for the next 8 hours, the PRs that need my review or are assigned to me, my active Linear tickets in the current sprint, and any messages in #incidents or #on-call from the last 12 hours. Then post a single Slack message to #morning-brief in this format: a 1-line summary of what today looks like, the top 3 priorities ranked by what unblocks others first, then sections for PRs, calendar, and any overnight noise. Skip empty sections. If there's nothing in #incidents, don't mention it."
That last sentence is the one that took me three iterations to get right. Without it, the agent would happily generate a "✅ No incidents overnight!" line every single day, which is exactly the kind of empty-calorie output that makes you start ignoring the briefing after a week.
The Prompt Tricks That Made the Output Actually Useful
The first version of this agent was useless. It posted a 600-word brain dump that read like a status report nobody asked for. Three changes fixed it.
First, I added an explicit ranking criterion: "prioritize work that unblocks other people." Without that, the agent ranked things by my own deadline pressure, which meant it constantly buried the 30-second PR review that was holding up a teammate's deploy. Now those float to the top.
Second, I told it to skip the meta-commentary. AI agents love to explain what they did ("I checked your calendar and found 4 events..."). I added the line "do not narrate your reasoning, just deliver the brief" and the message got 40% shorter.
Third, I gave it a hard length budget: 250 words max. Zapier's agents respect length constraints reasonably well as long as you state them as a hard limit rather than a suggestion. "Keep it under 250 words" gets ignored. "Maximum 250 words. Cut detail to fit." gets respected.
One more trick: I added a Linear knowledge source containing my team's sprint goals as plain text. The agent uses it to color-code priorities: anything tagged with the current sprint goal gets a 🎯 emoji. Small thing, but it makes the brief feel like it understands the work, not just the list.
For reference, here's roughly what a real morning brief looks like in #morning-brief:
"Light morning, heavy afternoon. 2 reviews blocking other people, then 3 hrs of meetings starting 1 PM.
🎯 TOP 3: (1) Review PR #4421 — Sam is blocked. (2) Reply to Maya's design doc by 11. (3) Push the auth refactor before the 1 PM sync.
PRs (3): #4421 Sam (review), #4408 yours (1 comment), #4395 Renovate (auto-mergeable).
Calendar: 1 PM auth sync, 2 PM 1:1 with Priya, 4 PM design review.
#incidents: payment service flapped 3:14 AM, self-recovered, see thread."
Where This Falls Short and What I'd Use Instead for Bigger Workflows
Zapier Agents are great for this specific shape of problem: a scheduled, read-heavy task with one write at the end and a small number of tools. They start to wobble when you push past that.
I tried extending the same agent to also act on the brief — auto-approve trivial dependency PRs, snooze meetings I had conflicts with, draft a reply to overnight pings. It worked maybe 70% of the time, which is not good enough when the failure mode is "auto-merged a PR that broke prod." Reviews from 2026 confirm what I saw: simple single-task agents are reliable, but complex multi-app chains with multiple writes fail more often than expected.
For the read-and-summarize part, Zapier is the right tool. For the act-on-it part, I moved to n8n with explicit human-in-the-loop gates on every write action. n8n shipped a Guardrails node and a Chat node action specifically for "send a message to the user and pause the workflow until they respond." That's the right shape for anything that touches production. Reclaim.ai handles the calendar-rescheduling piece better than any agent I've tried, because it's purpose-built for it and respects your focus blocks. And if you're publishing the brief somewhere persistent (a team status page, an internal blog), Ghost with its Admin API makes that a 3-line addition.
The honest take: build the morning brief in Zapier Agents. Give it a week. If you find yourself wanting it to do things rather than just tell you things, that's the signal to move the action layer to n8n and keep Zapier as the read/summarize side. Don't try to make one tool do both.
Try the Good Morning Digest template as a starting point and customize it from there. Or subscribe for the next post in this series, where I'll walk through the n8n side of the same workflow.