Each step of LeadLift's work posts a short message in Slack. This page tells you what goes in each channel, when it goes there, and what to do when a post fails.
▸ The full walkthrough: 8 minutes 35 seconds, channel group by channel group
What this does
Every channel has one job. Client channels hold the talk with each client. The team channels follow onboarding, payments, edits, scripts, tasks and launches. Two channels catch failures. LeadLift's Slack bot posts each message, and it is in every channel that the system uses.
The one thing to remember: keep the bot in each channel, and do not archive a channel that the system uses. If the bot cannot post, posts to that channel stop until someone fixes it. #sentry tells you which channel and gives the steps.
Step 2 · HereSlack channel systemWhere the system posts
How it works
The channels fall into six groups. Read them in this order. A message to the team ends with [LINK], which opens the record in the app.
Client channels. When a new client pays, the server makes a private channel for that client.
The server invites each Active team member who has a Slack id. It also invites the bot and Viktor.
The client gets a Slack Connect invite by email.
Fidel's welcome message comes in, posted as Fidel. It asks the client to fill in the onboarding form and book the call.
The bot bookmarks the client's Raw Footage folder at the top of the channel. Clients put their raw footage there. The team can also keep saved static ads there.
At Client Review, the bot posts "your ads are ready to review" with a link. The client approves, or sends notes back.
From 12 Oct, a script moved to With Client also posts here, with its lead form questions.
Onboarding and payments. Three channels follow a new client.
#payments gets one line for each paid Whop payment. It names the person, the company and the billing type, with a link to the client.
#onboarding gets one launch message for each new client. Its thread is the running tally.
In that thread, each finished step adds a ✔ line. A blocked step adds a ✗ line with the reason.
#onboarding-forms gets each submitted onboarding form in full.
If a form matches no client, a "pick the client" menu comes in the thread. One pick links it.
Edits and scripts. Each stage move on the boards posts in one channel.
#new-creative: the Raw Footage scan, every 12 hours. Each client with new footage gets one thread reply.
#editor-updates: a card moved to To Edit. It names the creative, the footage, the due date and the editor.
#creative-review: a card at Internal Review. It tags the reviewer.
#amendments: a redo, client changes, or a script that needs changes. Each comment is a thread reply.
#approved-creative: ads at Ready To Launch, and approved scripts. It gives the launch date and the Ads Manager link.
#scripts-to-write tags the writer of a new script. #script-review tags Fidel when a script needs a check.
Creative management.#creative-management gets the board digest on Monday, Wednesday, Friday and Sunday at 3pm Central.
The digest is one page with three tabs.
The tabs show what changed, what to do today, and the same list for each client.
Tasks, launches and calls. These channels follow the other boards.
#new-tasks gets each new task. It tags the person who has it.
#task-updates gets a task move to Blocked, Amendments, In Review or Complete.
#campaign-launches gets each new launch with its open checks, and each launch that goes Live.
#call-transcripts gets one message for each Fathom call. The summary is in the thread.
Failures. Two channels tell a person that something did not work.
#pipeline-errors: a known failure on the editing and scripting line. It tags Fidel.
For example, a review link that did not post in a client channel goes here.
#sentry: every failure that nothing else reports, and every failure that only a person can fix.
Each #sentry post says what failed and where. The steps to fix it are in the thread.
#sentry is for the person who looks after the system. Today, that is Icarus Growth.
The moving parts
One server sends almost every message. Make sends one: Fidel's welcome.
Starts from
A payment, a form, a card move, a footage scan, a Fathom call or a timer
Runs on
LeadLift's server on Modal, through LeadLift's Slack app (the bot)
Keeps its data in
The server's settings hold each team channel's Slack id. The client record holds each client's channel.
Posts to
17 team channels, plus one private channel for each client
Shows in the app
Each team message ends with [LINK] to the card, script, task, launch or client
Timer
Footage scan at 6am and 6pm Central, every day. Board digest on Mon, Wed, Fri and Sun at 3pm Central.
Talks to
Slack (the bot, Slack Connect, the pick menus) · Make (Fidel's welcome) · Whop, the onboarding form, Fathom and the app (they start the posts)
Good to know (as of 12 Oct)
• The server finds each channel by its Slack id, not by its name. A new channel name does not stop the posts.
• The 50 clients added on 11 Oct have no channel saved in the app yet. The bot is not in their channels.
• For those clients, a script or a review link cannot reach the client. It goes to #pipeline-errors to send by hand.
• Sterlin has no Slack id on the Team page. The system cannot tag him or invite him to new client channels.
• The messages for scripts, tasks and launches have not run on real work yet.
• #sentry tags @here, because nobody is set as its person yet.
What you can safely change
Green: change it in the app. Amber: ask Claude in the LeadLift code folder, then check the result. Red: do not change it. Call us.
Green
A person's Slack id. Type it on the Team page. The system then tags that person and invites them to new client channels.
Green
A client's Slack channel. Type the channel's Slack id on the client record. Client review links and scripts go to this channel.
Green
"Send Edits To Client?" on the client record. It decides if new ads go to the client for review before launch.
Green
The Ads Manager link. Type it on the client record. #approved-creative shows it with each approved ad.
Amber
The words of a message, and who it tags. Sheni set these on 10 and 11 Oct. Claude changes the message and its test together. Then move a test card and read the post.
Amber
The footage scan times. The 10 Oct editing plan set 6am and 6pm Central. After a change, check the next post in #new-creative.
Amber
The board digest days and time. After a change, check the next post in #creative-management.
Amber
Fidel's welcome text. Sheni wrote it on 10 Oct. After a change, check it on a test client's channel.
Red
The channel settings on the server. Each one holds the Slack id of one channel. A wrong id stops every post to that channel.
Red
The bot's login and the Slack signing secret. Without them, nothing posts and the pick menus do nothing.
Red
The stage names on the boards. Each message looks for one exact stage name. A renamed stage stops its message, and nothing reports it.
Red
The people that the server tags by default. This means Viktor, the onboarding alert person and the #sentry person. These are server settings.
Red
The Slack app's button address. Slack sends each click on a pick menu to the server. If it changes, a pick does nothing.
What connects to this
This tab shows what makes the posts, and who reads them.
Onboarding The Whop payment, the onboarding form and each onboarding step post in the onboarding channels.
Editing Pipeline The footage scan and each stage move post in the editing channels.
Fathom Each recorded call posts in #call-transcripts.
Goes out to ▶
The team They read the team channels, then act in the app.
Each client They read their private channel, review ads and answer there.
The person who looks after the system They read #sentry and #pipeline-errors.
Fathom calls have no walkthrough yet. The System Map lists them.
If something looks wrong
A channel goes quiet. Look in #sentry for "not in channel" or "channel gone or archived". Add the bot back, or unarchive the channel. The thread has the steps.
A client did not get the review link or the script. #pipeline-errors gives the reason. Check that the client record has the channel, and that the bot is in it.
A stage message stopped after someone renamed a stage. Nothing reports this. Put the old stage name back, then call us.
A pick in the "pick the client" menu does nothing. The Slack app's button address or signing secret is wrong. Call us.
#sentry shows "seen 4 more times". The same failure came again within one hour. It keeps failing until someone fixes it. Follow the steps in the thread.
#call-transcripts is quiet after a call. The Fathom webhook may be gone. Nothing reports this. Call us.
You cannot break this for good. Each change to the code is a saved version. A developer can put back the last working version of the server with one command. If you archive a channel by mistake, unarchive it in Slack and check that the bot is still in it.
Call us if #sentry posts "needs a person" and the steps in the thread do not fix it.
Jargon buster
Bot
LeadLift's Slack app. It posts the messages. It must be in each channel that it posts to.
Slack id
The fixed code that Slack gives each person and each channel. It stays the same after a rename.
Slack Connect
The Slack invite that lets a client join a channel from their own workspace.
Thread
The replies under one message. Long details go there.
Running tally
The thread under a client's launch message in #onboarding. It lists each onboarding step.
Viktor
An AI assistant in Slack. It connects to a client's ad account.