Skip to main content
A daily pipeline digest posts new and stalled deals, plus the new pipeline total, to your sales channel every weekday morning for zero AI credits. A stalled deal is one that no rep has touched in a while. The workflow fires on a Recurring schedule at the start of each business day. It reads fresh deals with Find records, then totals them with Aggregate values. A second Find records lists the deals that have gone quiet. Finally, Broadcast message posts the whole picture inside Attio. The team starts the day knowing what is new and what is slipping. Nobody has to run a report.

Prerequisites

  • A workspace on the Plus plan or higher.
  • A Deals object with a Stage status attribute that has a Closed won option and a Closed lost option.
  • An Amount number attribute on Deals, so the digest can total new pipeline.
  • A Created at system timestamp on Deals, which marks when each deal was added.
  • A Last activity date attribute on Deals, which marks the last time a rep touched the deal.
  • An Owner attribute on Deals if you plan to scope or attribute the digest by rep.
  • A workspace audience for Broadcast message, for example a Sales team broadcast that everyone watches.
No API key or external integration is required. Every block in this recipe is native. Broadcast message posts inside Attio rather than to Slack’s API.

How it works

The workflow wakes on a fixed schedule and does three free reads. First it counts and totals the deals created since yesterday. Then it lists the deals that have stalled. Finally it assembles a single in-app broadcast from those results. Nothing writes to a record, so the whole run costs zero credits. The one thing you must get right is the schedule’s timezone. “Since yesterday” has to mean yesterday for your team, not for a server in another hemisphere. The blocks run in this order:
  1. Recurring schedule fires on weekday mornings in a fixed timezone.
  2. Find records returns deals created since yesterday.
  3. Aggregate values counts those deals and sums their Amount.
  4. Find records returns open deals with no activity in seven or more days.
  5. Broadcast message posts the formatted digest.

Build steps

1

Add the recurring schedule trigger

Create a new workflow and add the Recurring schedule trigger. Set it to run on weekday mornings. Then pin the timezone to where your team works. People often skip the timezone. Without it, the schedule runs in coordinated universal time (UTC), the global time standard. Your “yesterday” window then drifts by hours.
2

Find deals created since yesterday

Add a Find records block on the Deals object. Filter to deals created in the last day, so the digest covers exactly the fresh pipeline.
3

Aggregate the new deals

Add an Aggregate values block and feed it the records from step 2. Produce two outputs so the digest leads with hard numbers: a count of new deals, and the sum of their Amount.
4

Find stalled deals

Add a second Find records block on Deals. Filter to open deals that have not moved in a week. Now the team sees what is slipping, not only what is new.
5

Broadcast the digest

Add a Broadcast message block and compose the digest from the variables you produced. Keep it scannable: counts first, then a short stalled list. Owners then know exactly what to chase.

Variable mapping

A variable is a piece of data that one block produces and a later block reuses. For the exact reference syntax that pulls a block’s output into a later step, see Variables & data passing.

Credit cost worked example

This recipe is a favorite when you watch your credits, because it costs 0 credits per run. Here is why every block is free. The Recurring schedule trigger is free. Both Find records blocks are free reads. Aggregate values is free math. Broadcast message is a free workspace block. There are no data writes, no external calls, and no AI blocks anywhere in the run. At a realistic 22 business days per month, the digest runs 22 times. That is a total of 22 × 0 = 0 credits per month. The whole workflow stays comfortably inside any plan’s allowance. See Credits & pricing explained for the canonical model. The math only changes if you add a write. Say you later stamp a “last digested” date on each stalled deal inside a Loop. The cost then becomes the per-iteration write multiplied by the number of stalled deals. Until then, this workflow is genuinely free to run forever.

Test plan

  1. Open the workflow and use Run now, a Manual run, to fire it on demand instead of waiting for tomorrow’s schedule. Keep the run viewer open in a second tab.
  2. Confirm that step 2’s Find records returns only deals created in the last day. Check the record count in run history.
  3. Confirm that Aggregate values outputs a new_count and a new_value that match those records. A count of 0 and a value of 0 is a valid result on a quiet day.
  4. Confirm that step 4’s Find records returns open deals last touched seven or more days ago, oldest first.
  5. Confirm that Broadcast message posts to the Sales audience with the counts and stalled list filled in from the variables, with no empty {{ }} placeholders.
  6. Run one deliberately failing input. Leave the trigger timezone unset, or on UTC, while your team is on Europe/London. Then run the workflow at 08:00 local time. The “since yesterday” window is now off by your UTC offset. As a result, deals created late last evening get missed or double-counted. Fix it by pinning the timezone in step 1 and re-running. The count then matches what you see in the Deals view.

Failure modes

Variations

Per-team digests

When pipeline is split by team or region, duplicate the workflow once per segment. Add an Owner or Region filter to each Find records block. For example, Owner is in the EMEA team. Point each Broadcast message at that team’s audience. Each team then gets a digest about its own deals instead of one long combined list.

Weekly exec rollup

Change the Recurring schedule to Monday mornings only and widen step 2’s window to now - 7 days. Add a third Find records for deals that hit Closed won in the same window. The exec digest then reports new, won, and stalled for the week. Everything stays free, because it is the same blocks on a longer cadence.

See also


Source: Attio Help Center: Workflows overview. Last reviewed against the Attio Help Center, June 2026.