Plank help · updated 2026-09-19
Automations: schedules & triggers
Let your assistant act on its own — on a schedule, or in response to an incoming event like a Telegram or WhatsApp message. You set most of it up just by asking in chat.
Agents: fetch the raw markdown of this page at /en/help/automations.md
Automations
Most of the time you talk to your assistant and it does the work. Automations let it act on its own, without you starting the conversation. There are two kinds:
- Schedules — the assistant runs at a time you choose (every morning, every Monday, hourly).
- Triggers — the assistant runs when something happens — for example, a new message arrives in a Telegram chat.
Both live in Settings → Automations.
Schedules: run on a timer
A schedule runs your assistant at a time you pick — and you set it up just by asking in chat. Tell it what to do and when, in plain language:
"Every morning at 8:30, check my calendar for today and send me a summary on Telegram."
The assistant creates the schedule itself and confirms the next run time. You never fill in a form or pick settings by hand.
How often it can run
Say it however is natural — the assistant maps your words to one of these:
- Daily — "every morning at 8:30", "each day at 18:00"
- Weekly — "every Monday at 9am", "Fridays at 5pm"
- Hourly — "at the top of every hour", "every hour at :15"
- Monthly — "on the 1st of each month at 9am"
- One-time — "next Tuesday at 14:00", "on 2026-07-01 at noon"
It uses your timezone by default. If you want a different one, just say so ("…at 8:30 Almaty time").
Getting it right the first time
The assistant builds the schedule from what you say, so a clear request lands first try:
- Give an exact time and how often — "every weekday at 8:30", not "sometime in the mornings".
- Use a 24-hour time or am/pm — "18:00" or "6pm" both work.
- Say the timezone if it isn't your usual one.
If something's unclear it will ask, or read back what it set so you can confirm.
A scheduled run works alone
A scheduled run is the assistant working on its own, with no one to answer follow-up questions. Point it at things it can finish unattended: reading your files, calling a connected tool, writing a document, or sending a message through a channel you've connected. A good first one is a morning brief — "every day at 8:00, look at my calendar and my unread email and write me a short plan for the day."
How long a run may take
A run is not on a stopwatch. It keeps going for as long as it keeps making progress, so a task that legitimately takes half an hour — working through a folder of files, waiting on a slow tool — finishes instead of being cut off partway.
What ends a run early is going quiet. Each schedule has a Stop if stuck setting (10 minutes by default, 1–30): if the assistant makes no progress at all for that long, the run is stopped and recorded as timed out in the schedule's history. Raise it if a run does long stretches of silent work; lower it if you would rather hear about a wedged run sooner. One long command is not silence: a single tool call that says up front how long it may take — a build, a test suite, a wait — counts as working for as long as it declared, so the setting measures a run that is actually stuck rather than one that is busy. That also means Stop if stuck does not cut such a command short: a command that asked for an hour gets its hour, and the 90-minute ceiling below is what bounds it.
When a run is stopped this way, the chat says so. It ends with a note that the run made no progress for too long, and whatever it had already done stays in the transcript — nothing is undone. It is not restarted automatically: a run that went quiet may already have changed files or sent something, and repeating it would repeat that too. The next occurrence of the schedule runs as usual.
There is also a hard ceiling of 90 minutes that no run can pass, however busy it is. Hitting it usually means the task is too big for one run rather than that the limit is too low — splitting it across two schedules works better than waiting longer.
What a finished run says it did
Open a schedule in Settings → Automations and its recent runs are listed underneath, newest first. Each one shows whether it finished, and — if the assistant wrote one — a single line saying what it actually did: "sent the morning brief, 3 invoices still unpaid", or "no changes". That line is the point of the list: it is what lets you tell a run that did something from one that had nothing to do, without opening the chat.
It is the assistant's own sentence, not a summary we generate, so it only appears when the run wrote one. Ask for it in the schedule's own prompt — "finish by recording a one-line outcome" — and it will. Nothing is invented in its place: a blank line means the run said nothing, and a run that genuinely had nothing to do will say "no changes" rather than dress it up.
Runs that didn't work still explain themselves in the same place. A skipped or failed run shows the reason next to it — the chat stayed busy, the subscription lapsed, the run went quiet — so the list answers both "did it run?" and "was it worth running?".
A schedule never runs twice at once: if a schedule that opens a new chat each run is still running its previous occurrence when the next one comes due, the new one is skipped with the reason the previous run of this schedule is still in progress. A run that was cut off without finishing — the service restarted mid-run, say — no longer holds the schedule up: once it is past the 90-minute ceiling it is recorded as failed and the next occurrence runs as usual. If a schedule is skipped three or more times in a row, its history says so above the list, so a routine that has stopped is visible before it has been silent for weeks.
Coming back to the same chat
Mid-conversation, you can ask your assistant to check back in on this same chat — "give the deploy ten minutes, then let me know how it went." Instead of opening a new conversation for that follow-up, it continues the one you're in. A pill appears under the conversation with a way to cancel it right there, and a small clock badge shows next to the chat in your chat list too. The pill names the day whenever the follow-up is not today — "Continuing at 18:00" for later this evening, "Continuing tomorrow at 09:00" for the morning, "Continuing Sep 5 at 09:00" for anything further out — and the time is shown in your clock, which can be a different one from the schedule's own timezone.
If the chat is still busy with something else when the follow-up comes due, it waits — up to 15 minutes — instead of interrupting; the pill reads "Continuing as soon as this chat is free" while it waits. If the chat is still busy after those 15 minutes, the follow-up is skipped rather than arriving late, and it's recorded as a skipped run in the schedule's history in Settings → Automations, with the reason it was skipped written next to it.
Deleting the chat does not cancel a follow-up that's already been set. If you delete a conversation with a pending follow-up, cancel it first from the pill, or afterwards in Settings → Automations, where it's still listed.
There's one gap worth knowing: the very first message in a brand-new chat can't be bound this way yet — ask for the follow-up starting with your next message in that conversation instead, or set up an ordinary schedule (below), which isn't tied to any one conversation.
An ordinary schedule — one you ask for outside of an in-progress conversation, or set up from Settings → Automations — still opens a new chat on every run, exactly as before. Only a follow-up your assistant sets while it's already talking with you binds to that conversation. In Settings → Automations, a schedule that's continuing a chat says so and links to it, with a way to switch it back to opening a new chat each run.
What happens to a follow-up after it fires
A follow-up runs once, and once it has run it is finished — it isn't a schedule any more, so it drops out of the Automations list in the sidebar. That list is what is still going to happen.
It isn't lost. Open Settings → Automations and the finished ones are folded under "Past (N)" at the bottom of the list, each showing when it ran — or, if it never got the chance, that a later follow-up replaced it. That's where to look when you're wondering whether one came back at all: a follow-up that timed out waiting for a busy chat says so there, and nowhere else. Open it to read its prompt, its run history and the chat it belongs to, or to delete it.
Follow-ups your assistant bound to a chat are cleared out automatically 30 days after they run — the run itself is in the chat, so nothing is lost. A one-time task you set up yourself opens its own chat on its run, so it is kept. Schedules that repeat are never cleared out, whether they're running or paused — a paused weekly report is something you switched off and can switch back on, so it stays in both lists.
Asking twice won't give you two
If you ask for something you already have on a schedule, you get the one you already have — the assistant checks your existing schedules first, and Plank won't add a second one that does exactly the same work at exactly the same time. You'll be told it already exists rather than shown a new one.
You can still have the same work at two different times (a summary at 9:00 and again at 18:00) — that's two schedules, and both are kept. Editing an existing schedule is never blocked, so if you deliberately want two similar ones, set the second one up and then change it.
Changing or stopping a schedule
Just ask — "pause the morning digest", "move it to 9am", "delete the weekly report". Or open Settings → Automations, where every schedule is listed with its next run time and a switch to pause or delete it. The page also shows who changed it last, so nothing moves behind your back.
Triggers: respond to incoming events
A trigger wakes your assistant when an outside event arrives, hands it what happened, and lets it act — including replying. The most common use is messaging: connect a chat channel, and your assistant can read messages and answer for you.
You don't wire any of this up by hand. Just ask the assistant in chat — it creates the trigger itself and connects the channel. For example:
"Connect my Telegram bot so you can read and reply to my direct messages."
The assistant handles the setup end to end.
Connecting Telegram
The assistant sets up Telegram for you directly — you just paste it the bot token and it wires everything up; there's nothing to install. You also don't run any of the technical setup; the assistant does it. But here's exactly what's involved, so you know what to expect and can get your bot ready. (For the full step-by-step, see Connecting Telegram.)
Step 1 — Create a bot and get its token
- In Telegram, open a chat with @BotFather and send
/newbot. - Follow its prompts to name the bot. It takes about a minute.
- BotFather gives you a token — a long string like
123456:ABC-DEF…. Copy it.
Paste that token to the assistant and ask it to connect. That's everything it needs for direct messages — bots always receive DMs, so no other setup is required.
Step 2 (groups only) — let the bot read messages
If you want the assistant in a group chat, first add the bot to the group. Then decide how much it should see:
- Reply only when mentioned — no extra setup. Leave Telegram's default in place; the bot only receives messages that @mention it or reply to it.
- Read every message in the group — tell BotFather to turn off the bot's privacy mode: send
/setprivacy, pick your bot, and choose Disable. Making the bot a group admin also works.
Important gotcha: Telegram locks in the privacy setting at the moment the bot joins. If you disable privacy after the bot is already in the group, you must remove the bot and add it back for the change to take effect. The assistant will remind you of this.
What it works with
- Direct messages — it replies to every message you send the bot.
- Group chats — it replies when the bot is mentioned (or to every message, your choice — see when your assistant responds below).
- Group chats with topics (forum groups) — same, and it always replies in the same topic the message came from.
The assistant wires up the connection directly and confirms when it's live.
Connecting WhatsApp Business
The assistant sets up WhatsApp for you directly too — nothing to install. It connects a WhatsApp Business number through Meta's official Cloud API, so your assistant reads incoming messages and replies — one-to-one conversations, and it remembers each contact's thread. (For the full step-by-step, see Connecting WhatsApp.)
WhatsApp takes a bit more setup than Telegram because Meta requires a developer app. The assistant walks you through it, but you'll do these parts in Meta:
- Create a Meta app and add the WhatsApp product (a free test number works to start).
- Copy the Phone number ID and an access token, and paste the token to the assistant.
- The assistant sets up the connection and gives you a callback URL to paste into your Meta app's webhook settings — it tells you the exact clicks.
A few things worth knowing:
- It's one-to-one. WhatsApp's API has no group chats, so each conversation is with a single person.
- Replies are free within 24 hours of someone messaging you — which covers normal back-and-forth. Messaging someone outside that window (like an unprompted reminder) needs a pre-approved Meta template, which Meta bills for.
- Keep your number on your own phone too (Coexistence) — supported, though Meta's setup may ask you to scan a QR code and sync recent history.
- Tokens can expire. Meta's quick-start token lasts 24 hours; for always-on replies, the assistant will tell you to create a permanent one.
Choosing when your assistant responds
Open Settings → Automations to see each trigger and set when it responds:
- Every message, or
- Only when it's mentioned (or a message contains words you choose, like your bot's name).
If a trigger is limited to approved chats, this setting is shown as locked instead — the page tells you how many chats are approved, and the choice can't be changed here. That's deliberate: it's the setting keeping strangers out, and a stray tap shouldn't be able to open your assistant up to everyone. To add someone, ask your assistant in chat. To remove someone, remove the trigger here and set the channel up again.
If a messaging trigger has no approved-chats list, the page shows an amber warning on it: anyone who finds the bot can message your assistant. Ask your assistant to limit the trigger to approved chats and the warning goes away. (If the channel is deliberately public — a support line customers write to — tell your assistant so; it records that choice and the warning stops.)
You can also pause a trigger, change its standing instructions, or remove it — and you can ask your assistant to do any of that for you, including deleting a trigger you no longer want ("delete my old Telegram trigger"). Removing one is permanent: its webhook address stops working immediately, so reconnecting that channel later means setting it up from scratch. If you only want it to stop for now, pause it instead.
One exception: a trigger limited to approved chats can only be removed by you, here on this page. Ask your assistant to delete one and it will tell you so rather than do it — that list is what keeps strangers out, so removing it (or replacing it with a more open one) stays in your hands. Your assistant can still pause it for you.
The page always shows the current setting and who changed it last (you or your assistant), so nothing changes behind your back.
Good to know
- It remembers the conversation. Each chat stays one continuous thread — a Telegram direct message, or a single group — so your assistant remembers what was already said instead of starting blank on every message. One conversation is one place, not a new chat per message.
- Replies aren't instant. When an event arrives, your assistant takes a few seconds to wake up before it answers — normal for an assistant, not a live chat bot.
- Messages aren't kept unless you ask. Plank records that a message arrived and what your assistant did about it — you can see every run in Settings → Automations and in the chat thread itself — but nobody's messages are filed away for later by default. If you want a history you can look through ("show me September's enquiries", "how many people asked about delivery"), ask your assistant for one: it builds you a proper table you can query and put on a dashboard, rather than a text file that grows forever. One caveat either way: your assistant only ever sees messages that match the trigger's filter — so if you've set it to reply only when mentioned, messages that don't mention it never reach it and can't be recorded. To keep a record of every message, set the trigger to respond to every message.
- If a channel is just for you, say who may reach it. A Telegram bot's @username is public — anyone who finds it can write to your assistant, which can read your workspace. So for a bot meant for you and your colleagues, tell your assistant which chats, groups, and people it may answer; everything else is turned away before it ever reaches your assistant. Change that list any time in Settings → Automations → Triggers, or just by asking. (A deliberately public channel — a support line customers write to — is different: leave it open and instead keep its standing instructions tight about what it will discuss.)
- You're in control. A trigger only does what its standing instructions say, and you can pause or remove it any time.
- They pause when your subscription lapses, and resume when it's back. Schedules and triggers run only while your trial or subscription is active. If it lapses, they stop running — a schedule's history will show the run as skipped, and incoming events won't wake your assistant. Nothing is deleted or switched off: as soon as your subscription is current again, everything picks up on its own schedule with no setup to redo.
See also: Connecting Telegram and Connecting WhatsApp for the step-by-step channel setup, and Your assistant's environment for how it runs.