Skip to content

On a schedule

Get Asana tasks and an email for contracts renewing soon

Every contract renewing within 60 days gets one Asana task, and each morning's new renewals arrive in your inbox.

Runs
On a schedule
Apps
Asana, Gmail
AI
Not needed
Access
Asana write; gmail.send

Send this to your assistant

Create a ClickRuntime automation: every morning, find contracts renewing in the next 60 days, create an Asana task for each one that doesn't have one yet, and email me the list.

Paste it into your assistant. It tells you what it will send or change before it runs live.

First time? Adding ClickRuntime to your assistant takes about two minutes.

Why use it

Why teams use this automation

An account manager at a services firm looks after forty client contracts, each with its own renewal date and notice period. The dates live in a spreadsheet nobody opens until something goes wrong. A contract auto-renews at the old price, or a client's notice window closes before anyone has spoken to them about expanding the work.

This automation checks the renewal dates every morning and creates an Asana task for each contract that renews within 60 days, plus an email listing the new ones, so every renewal conversation starts on time.

What you get out of it

  • Every renewal gets a conversation

    Sixty days is enough time to review the account, prepare a proposal and talk to the client. Nothing renews silently at the old terms. Price increases and scope changes can be agreed in good time.

  • Notice periods are not missed

    Many contracts need notice weeks before the renewal date. An early task makes sure that window is not lost. That protects you from being locked into terms you wanted to change.

  • Renewals become assignable work

    Each Asana task can be given an owner and a due date and tracked to completion. Managers can see which renewals are in hand. Holidays and handovers no longer drop a renewal.

  • One task per contract

    Contracts that already have a task are skipped, so a renewal is not repeated every morning. The project shows a clean list of upcoming renewals. Your inbox only hears about new ones.

  • A morning heads-up

    The email lists the renewals that just came into range. You can plan the week around them without opening another tool. Quiet days send nothing.

How it works

What happens, step by step

  1. Every morning, ClickRuntime reads the contracts and renewal dates from your sheet.

  2. It picks out any contract renewing within the next 60 days.

  3. It remembers which renewals already have a task, so each one is only created once.

  4. A task is created in your Asana project for each new renewal.

  5. You get an email listing the renewals that were added that morning.

Before it runs live

  • Connect Asana
  • Connect Google through your own Google app (a one-time, 10-minute setup), so it works with your own Gmail

What you get

RunsOn a schedule
Get Asana tasks and an email for contracts renewing soontoday, 9:00Succeeded
Email · 2 contract renewals coming upAcme Logistics renews on 2026-12-01. Contoso Retail renews on 2026-12-09.

Build your own

Need it to work differently?

This template is a starting point. Copy the prompt and change it, or describe a different automation from scratch, with your own conditions, more apps or an AI step. Your assistant writes it, tests it and runs it on ClickRuntime.
  • Your own rules

    Conditions, thresholds, filters and exceptions, written the way you'd explain them to a colleague.

  • Any number of apps

    One automation can read from one app and update several others. Over 248 apps are ready, and anything with an API works too.

  • AI where it helps

    Summaries, classification, extraction and drafts use ClickRuntime's built-in AI, with no extra key.

  • On a schedule or on each event

    Runs as often as every 5 minutes, or the moment an app sends an event, and keeps track of what it already handled.

Changes you can ask for

  • Run it at a different time, more or less often, or only on weekdays
  • Add an AI step, for example to summarize, sort or draft a reply
  • Add another app, for example also send it to Slack
  • Combine it with other Asana and Gmail steps into one automation

Under the hood

The code that runs this automation

This is the Python script that runs each time the automation starts. Your AI assistant writes it for you when you send the prompt, and you allow each step in your assistant. To change how the automation works, describe the change to your assistant and it updates the script for you. For every function it can use, see the script reference.
contract_renewal_reminders_asana_gmail.pyexample
from datetime import date, timedelta
from google.oauth2.credentials import Credentials
from googleapiclient.discovery import build
from clickruntime import on_trigger, credentials, http, state, notify

SHEET_ID = "your-spreadsheet-id"
PROJECT_ID = "your-asana-project-id"

@on_trigger
def run(event):
    sheets = build("sheets", "v4", credentials=Credentials(credentials.connection("google", "work")), cache_discovery=False)
    rows = sheets.spreadsheets().values().get(spreadsheetId=SHEET_ID, range="Contracts!A2:B").execute().get("values", [])
    done, new = state.get("done") or [], []
    limit = date.today() + timedelta(days=60)
    for client, renews in (r[:2] for r in rows if len(r) >= 2):
        key = f"{client}|{renews}"
        if key in done or not (date.today() <= date.fromisoformat(renews) <= limit):
            continue
        http.post("https://app.asana.com/api/1.0/tasks", headers={"Authorization": f"Bearer {credentials.secret('ASANA_TOKEN')}"},
                  json={"data": {"name": f"Renewal: {client}", "due_on": renews, "projects": [PROJECT_ID]}})
        done.append(key)
        new.append(f"{client} renews on {renews}")
    state.set("done", done[-1000:])
    if new:
        notify.email_me(f"{len(new)} contract renewals coming up", "\n".join(new))
    return {"new_tasks": len(new)}

FAQ

Common questions

Where do the renewal dates come from?
From a Google Sheet with one row per contract, including the client name and the renewal date. If your dates live in a CRM, they can be read from there instead.
Can I use a different lead time than 60 days?
Yes. Some teams use 90 days for larger accounts and 30 for smaller ones. The window can also come from a notice-period column in your sheet.
What if a contract is renewed and the date changes?
Update the date in your sheet. The next renewal is treated as a new one, so a fresh task is created when it comes within range.
What permissions does it need?
Asana write; gmail.send. Nothing else in your accounts is used.
Does it need AI?
No. It runs without AI, so it doesn't use your plan's AI allowance.
How many runs does it use?
One run each time it runs (on a schedule). Checks that find nothing to do and stop right away aren't counted.
Can I change how it works?
Yes. Describe the change to your AI assistant, for example a different schedule, channel or filter. It updates the automation, tests it and tells you what changed.

Set up “Get Asana tasks and an email for contracts renewing soon” from your assistant

Copy the prompt above, or connect your assistant first. Free plan, no credit card.