Prerequisites
- An Attio plan on the Plus tier or higher.
- An Accounts object, or your equivalent customer object. It needs a
renewal_datedate attribute that is filled in on active contracts. - An
ownerattribute on the account. It must point to a workspace member who can receive tasks, such as Priya Sharma. - A
renewal_notified_windowattribute on the account. This records which window has already fired. Use a single-select or text attribute that stores a value like90,60, or30. Create this attribute before you build, because the workflow reads and writes it on every match. - The Slack integration connected, if you want the digest posted to a channel. Without it, the built-in Broadcast message block notifies in-app instead.
- No API keys or scopes are needed, because every block in this workflow runs inside Attio.
How it works
The workflow runs once a day. It loads every account that has a renewal date, then checks each account against three fixed windows: 90, 60, and 30 days out. A window is a single target date, today plus that many days. An account matches when its renewal lands in a window it has not been told about yet. When that happens, three things follow. The owner gets a task. The record gets a stamp so the same window never fires twice. The account also gets a line in the daily digest. The flow runs in this order:- Recurring schedule fires daily at a fixed time.
- Find records loads accounts where
renewal_dateis not empty. - Loop iterates each matched account.
- Adjust time computes the 90-, 60-, and 30-day boundary dates from today.
- If checks that the renewal falls inside a window and that the window has not been notified yet.
- Create task assigns a renewal task to the account owner.
- Update record sets
renewal_notified_windowso the window fires once. - Broadcast message posts the daily digest of flagged accounts.
Build steps
1
Add the recurring schedule trigger
Add a Recurring schedule trigger and set it to run once per day. Pick a time early enough that owners see their tasks before the morning standup. Set the team’s primary timezone so the windows line up with how people read dates.
2
Find accounts with a renewal date
Add a Find records block on the Accounts object. Filter to accounts that actually have a renewal date. That way the loop never walks the whole book of accounts.
3
Loop the matched accounts
Add a Loop block over the output of the Find records block. Every step inside the loop runs once per account.
4
Compute the window boundaries
Add an Adjust time block inside the loop. It computes the 90-, 60-, and 30-day boundary dates from today. Add the block once per window, or compute all three and compare them in the next step. Each window is today plus N days. An account matches when its
renewal_date equals that boundary date.5
Gate on the window and the notified flag
Add an If block so the run continues only for the right accounts. An account passes when its renewal lands in a window it has not been notified about. This gate stops duplicate tasks across days. It is free, and it does the real hygiene work.
6
Create the renewal task
Add a Create task block. It assigns the work to the account owner when the If block passes. Name the window in the task text so the owner reads the urgency at a glance.
7
Stamp the notified window
Add an Update record block right after the task. It stamps the matched window so the window cannot fire again tomorrow. This single write guarantees that each window fires once.
8
Post the daily digest
Add a Broadcast message block after the loop to summarize the accounts flagged on this run. A Slack block works too, as shown in Variations. Reference the loop’s collected matches so the digest lists every account, not just the last one.
Variable mapping
Credit cost worked example
The schedule, Find records, Loop, Adjust time, and the If condition are all free. They are logic and lookup blocks, so they consume no credits, even across hundreds of loop iterations. A condition that stops a run is also free. Accounts that do not match cost nothing. You only pay on a matched window. Two writes run per account there. One is the Create task and one is the Update record, at 1 credit each, for 2 credits per matched window. The Broadcast message digest is free, so the daily post adds nothing. Suppose 25 accounts cross a window in a typical month. The writes cost 25 × 2 = 50 credits. The daily schedule, the lookups, the loop, and the digest all add nothing. So the workflow costs about 50 credits a month. Check your plan’s monthly allowance on Credits & pricing explained before you scale the volume of accounts you watch.Test plan
- Set the Find records limit and the Loop max iterations to 5 so a test run stays small.
- Pick one account, set its
renewal_dateto exactly today plus 90 days, and clear itsrenewal_notified_window. - Open the workflow and click the Run test button to fire the schedule manually.
- Confirm the output of each block. Find records returns your test account. Loop iterates it. Adjust time produces a 90-day boundary equal to the account’s renewal date. If passes. Create task creates one task for the owner. Update record sets
renewal_notified_windowto90. Broadcast message posts a digest naming the account. - Open run history to confirm the task was created and the flag was stamped. Run the test again on the same day and confirm no second task appears, because the If block now skips the account.
- Send a deliberately failing input. Set the account’s
renewal_dateto 45 days out, which falls between windows, and run the test. The If block fails, the loop skips the account with zero credits spent, and no task is created.
Failure modes
Variations
Per-window message
Branch the task text and digest copy by window so a 30-day renewal reads more urgently than a 90-day one. Add a Switch block after the If block to route to three Create task configurations, each with its own wording and due date. Everything else stays the same, and the Switch block is free.Customer success versus account executive owner
Route the task to a customer success manager for existing-customer renewals and to an account executive for expansion-eligible accounts. Add a Filter or Switch block on an account segment attribute, then set the Create task assignee accordingly. Only the assignee mapping changes. The windows and the notified flag are untouched.See also
- Stale-deal sweep
- Loops & processing many records
- Adjust time
- Create task
- Attio Help Center: Workflows
Source: Attio Help Center: Workflows. Last reviewed against the Attio Help Center, June 2026.