# Weekly contract renewal radar from Deel to Asana and Slack

> Every Monday, catch contractor and EOR contracts ending in the next 60 days, open an Asana decision task for each, and post one grouped Slack digest.

- Workflow type: agent
- Services: Deel, Asana, Slack Bot
- Categories: HR & People, Operations
- Published: 2026-08-14

## What it does

- Checks your Deel contracts every Monday morning and flags contractor and EOR agreements that end within the next 60 days, so renewals never sneak up on you
- Sorts everything it finds into urgency buckets: ending within 14 days, in 15 to 30 days, and in 31 to 60 days
- Opens one Asana task per expiring contract, framed as a clear renew or end decision, with a due date about two weeks before the contract actually ends
- Posts a single grouped digest to your people ops Slack channel showing the worker, team, end date and rate, with a link to the task that owns each decision
- Skips open ended agreements and checks for an existing task before creating one, so the project never fills up with weekly duplicates

## What you'll need

- A Deel account with permission to view contracts
- An Asana account and a project where renewal tasks should live
- A Slack workspace and the channel your people ops team watches
- A rough idea of how far ahead you want to be warned, if 60 days is not the right window for you

## Prompt

Every Monday at 8:30am, check Deel for contractor and EOR contracts that are approaching their end date, open an Asana decision task for each one, and post a single grouped digest to our people ops channel in Slack. Run this on a cron schedule: every Monday at 8:30am.

Start by pulling active contracts from Deel with the List Contracts operation, focusing on the contractor and EOR hiring types since those are the agreements with meaningful fixed end dates. The contracts list uses cursor pagination, so keep passing the cursor from each response back as after_cursor until the cursor comes back null. Do not read only the first page: in an organization with any real tenure, that will silently miss expiring contracts sitting further down the list.

Skip any contract that has no end date. Open ended EOR and permanent agreements never expire, and including them would flood this digest with the same names every single week until people stop reading it.

For every contract whose end date falls inside the next 60 days, call Retrieve a Single Contract to get the full detail we need: worker name, team, exact end date, and rate with its currency.

Sort what you find into three urgency buckets: ending within 14 days, ending in 15 to 30 days, and ending in 31 to 60 days.

Before creating anything in Asana, check whether we already opened a task for that contract. Use Get Tasks from a Project against our renewals project and ignore completed tasks. Match on the Deel contract ID, and always write that contract ID into the task description so this check stays reliable week over week even if someone edits the task title. Prefer this over Asana's workspace task search, which requires a paid plan. If an open task already exists for a contract, reuse it and do not create a second one. A contract ending in 45 days will legitimately appear in the digest several weeks in a row, but it should only ever own one task.

For contracts that do not already have an open task, use Create a Task in the renewals project. Title it as a clear renew or end decision naming the worker and the end date, for example "Renew or end: Priya Raman, contract ends 2026-09-12". Put the contract ID, team, rate and currency in the description. Set the due date to roughly two weeks before the contract actually ends so there is time to act, and if that date has already passed, set the due date to today instead.

Finally, post one grouped digest to our people ops channel with the Slack Bot Send a Message operation. Lead with the most urgent bucket and work down, and under each bucket list the worker, team, end date, and rate with currency, plus a link to the Asana task that owns that decision. Send one single message covering everything, not one message per contract.

If nothing is expiring in the next 60 days, still post a short note saying there is nothing expiring, so the team knows the check ran rather than wondering whether it quietly broke.

## How to customize

- Change the look ahead window from 60 days, or reshape the urgency buckets to match how much notice your team actually needs
- Move the reminder date closer to or further from the contract end date than the default two weeks
- Point it at a different Slack channel, or narrow it to one team, country or currency
- Include or exclude worker types beyond contractors and EOR employees

## FAQ

### Why does it skip contracts with no end date?

Open ended EOR and permanent agreements never expire, so they would show up in every single digest and quickly train people to ignore the message. Only contracts with a real end date are worth a renewal decision, so those are the only ones included.

### Will it create a duplicate task every Monday for the same contract?

No. Before creating anything, it looks through your renewals project for an open task already tied to that contract and reuses it instead. A contract ending in 45 days will be mentioned in the digest for several weeks running, but it only ever gets one task.

### What happens if nothing is expiring?

It still posts a short note saying nothing is expiring in the next 60 days. That way silence never leaves you wondering whether the check ran or quietly broke.

### Do I need a paid Asana plan?

No. The duplicate check reads tasks directly from your renewals project rather than using Asana's advanced search, which is a paid feature, so this works on a free Asana plan.

### Why 60 days of warning?

Contract management guidance generally recommends starting renewal conversations 60 to 90 days before expiry, since there is often notice period, negotiation and paperwork to get through. The 60 day window plus a task due two weeks before the end date leaves room to act rather than react.

### Can it cover employees as well as contractors?

Yes. It focuses on contractors and EOR employees by default because those are the agreements with meaningful fixed end dates, but you can widen it to other worker types when you set it up.

Use this prompt in General Input: https://www.generalinput.com/prompts/weekly-contract-renewal-radar-from-deel-to-asana-and-slack