Skip to content

Daily

Send birthday wishes and payment links on each person's preferred app

Each day, contacts due a message get a personal note on WhatsApp or Telegram, whichever they prefer, and every send is logged.

Runs
Daily
Apps
Telegram, WhatsApp Business
AI
Not needed
Access
whatsapp_business_messaging; bot token

Send this to your assistant

Create a ClickRuntime automation: every morning, check my contacts list for birthdays and payment reminders due today, send each person a message on their preferred app, and log what was sent.

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

Clubs, tutors and small service businesses keep in touch with their people through a mix of WhatsApp and Telegram. Birthday messages and payment reminders matter, but sending them one by one from a phone is easy to forget.

Keeping one contact list with each person's preferred app and letting the day's messages go out automatically means nobody is forgotten and nobody gets a message on an app they don't use.

What you get out of it

  • Nobody forgotten

    Everyone due a message today gets one.

  • The right app for each person

    Each contact is messaged where they prefer.

  • Personal touch

    Messages include the person's name and their own details, like the amount due.

  • A log of what was sent

    You can see who was messaged and when.

How it works

What happens, step by step

  1. Every morning it reads your contact list.

  2. It picks people with a birthday or payment due today.

  3. Each person gets a personal message on WhatsApp or Telegram, whichever they prefer.

  4. Each send is logged so nobody is messaged twice in a day.

Before it runs live

  • Connect Telegram
  • Connect WhatsApp Business

What you get

RunsDaily
Send birthday wishes and payment links on each person's preferred apptoday, 9:00Succeeded
WhatsApp · TemplateHi Casey, a reminder that £45 for October's Northwind Tennis Club fees is due today: pay link

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 Telegram and WhatsApp Business 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.
bulk_personal_messages_on_whatsapp_or_telegram.pyexample
import csv, io
from datetime import date
from clickruntime import on_trigger, credentials, http, state, log

CONTACTS_CSV = "https://example.com/contacts.csv"
WA = "https://graph.facebook.com/v20.0/your-phone-number-id/messages"

def wa_template(to, name, params):
    body = {"messaging_product": "whatsapp", "to": to, "type": "template", "template": {"name": name, "language": {"code": "en"},
            "components": [{"type": "body", "parameters": [{"type": "text", "text": str(p)} for p in params]}]}}
    return http.post(WA, headers={"Authorization": f"Bearer {credentials.secret('WHATSAPP_TOKEN')}"}, json=body).json()
TG = "https://api.telegram.org"

def tg(chat_id, text):
    http.post(f"{TG}/bot{credentials.secret('TELEGRAM_BOT_TOKEN')}/sendMessage", json={"chat_id": chat_id, "text": text})

@on_trigger
def run(event):
    today, sent = date.today(), 0
    for c in csv.DictReader(io.StringIO(http.get(CONTACTS_CSV).text)):
        birthday = c["birthday"][5:] == today.strftime("%m-%d")
        due = c.get("due_date") == today.isoformat()
        key = f"{today}:{c['name']}"
        if not (birthday or due) or state.get(key):
            continue
        text = f"Happy birthday, {c['name']}! 🎉" if birthday else f"Hi {c['name']}, a reminder that {c['amount']} is due today: {c['link']}"
        if c["channel"] == "telegram":
            tg(int(c["telegram_id"]), text)
        else:
            wa_template(c["phone"], "birthday" if birthday else "payment_due", [c["name"]] if birthday else [c["name"], c["amount"], c["link"]])
        state.set(key, True)
        log.info("sent", {"to": c["name"], "channel": c["channel"]})
        sent += 1
    return {"sent": sent}

FAQ

Common questions

Where does the contact list live?
At any web address that returns your contacts, such as a sheet published as CSV or your membership tool's export.
Can I include payment links?
Yes. Add a link column and it's included in the reminder.
Will someone get a message twice in one day?
No. Each send is logged and checked first.
What permissions does it need?
whatsapp_business_messaging; bot token. 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 (daily). 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 “Send birthday wishes and payment links on each person's preferred app” from your assistant

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