Weekly
Back up a Slack channel every week
Each week you get a spreadsheet of everything said in a channel, by email.
- Runs
- Weekly
- Apps
- Slack
- AI
- Not needed
- Access
- channels:history, users:read
Send this to your assistant
Create a ClickRuntime automation: every Sunday, export last week's messages from #clients to a CSV with names and times, and email it to me.
First time? Adding ClickRuntime to your assistant takes about two minutes.
Why use it
Why teams use this automation
Some conversations in Slack turn out to matter later: a customer-support channel that a product manager wants to analyze, a vendor channel needed for a dispute, or a project channel that legal wants a copy of. Exporting messages from Slack by hand is awkward, since workspace exports require admin rights and cover everything, and copying text into a document loses author names and timestamps. By the time someone needs the history, nobody has been saving it.
Each week, ClickRuntime pages through a channel's message history, replaces user IDs with names, builds a CSV with date, author and text, and emails it to you. The file is a plain, searchable record that does not depend on the workspace's retention settings or on anyone remembering to download it.
It is useful for support analysis, project records and teams on Slack plans that delete or limit message history.
What you get out of it
Important conversations are preserved
A channel that becomes valuable later has weeks of history already saved in your mailbox, so you do not discover too late that older messages are gone or hard to retrieve.
Analysis is possible in a spreadsheet
With author, date and text in separate columns, a product manager can filter by customer or keyword, count requests, and share findings with the team without scrolling through Slack. Findings can then be shared with teammates as a chart or a short table.
Records survive retention limits
If your workspace deletes messages after a set time, the weekly files remain in email. That helps for disputes, compliance questions and projects that outlast the retention window. Storing a copy outside Slack also gives you a backup if a channel is deleted by mistake.
Names make the export readable
Raw Slack data lists user IDs that mean nothing to a reader. Replacing them with names means the CSV can be handed to a manager or a lawyer who has no access to the workspace. Nobody has to decode IDs against a user list before using the file.
No admin export is needed
Workspace-wide exports require owner-level permissions and produce nested JSON. A focused weekly CSV for one channel avoids that process and gives the right amount of data to the right person.
How it works
What happens, step by step
Once a week ClickRuntime reads every message from the past seven days in the Slack channel you chose.
It replaces user IDs with people's real names.
The messages are put into a spreadsheet file with the time, the person and the message, oldest first.
The file is emailed to you as a weekly backup, with the message count in the subject.
Before it runs live
- Connect Slack, then invite the app to the channel (type /invite @ClickRuntime there)
What you get
Build your own
Need it to work differently?
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 Google Sheets
- Combine it with other Slack steps into one automation
Under the hood
The code that runs this automation
import csv, io, time
from datetime import datetime, timezone
from slack_sdk import WebClient
from clickruntime import on_trigger, credentials, notify
CLIENTS = "C06CLIENTS"
@on_trigger
def run(event):
slack = WebClient(token=credentials.connection("slack", "work"))
msgs = slack.conversations_history(channel=CLIENTS, oldest=str(time.time() - 7 * 86400), limit=1000)["messages"]
names, buf = {}, io.StringIO()
writer = csv.writer(buf)
writer.writerow(["time (UTC)", "name", "message"])
for m in reversed(msgs):
uid = m.get("user")
if uid and uid not in names:
names[uid] = slack.users_info(user=uid)["user"]["real_name"]
when = datetime.fromtimestamp(float(m["ts"]), timezone.utc).strftime("%Y-%m-%d %H:%M")
writer.writerow([when, names.get(uid, "bot"), m.get("text", "")])
notify.email_me(f"#clients export: {len(msgs)} messages", buf.getvalue())
return {"messages": len(msgs)}FAQ
Common questions
Does the CSV include thread replies?
Can I export more than one channel?
Are files and images from messages included?
What permissions does it need?
Does it need AI?
How many runs does it use?
Can I change how it works?
Related
You might also like
Know the moment your website goes down
Your team hears in Slack when the site stops responding or slows down, and again when it's back.
See how it worksPost a morning briefing to Slack
Your team starts the day with the weather, a reminder or anything else you'd like in #general.
See how it worksFind Slack channels nobody uses anymore
Once a month you get a list of channels that have gone quiet, so you can archive them.
See how it worksKeep exploring
Set up “Back up a Slack channel every week” from your assistant
Copy the prompt above, or connect your assistant first. Free plan, no credit card.