Key takeaways
- Posting new TikTok videos to a Discord channel does not need a custom bot: AyeWatch has a Discord integration on paid plans, and its webhook can be relayed to a Discord incoming webhook.
- AyeWatch webhooks are signed with HMAC-SHA256 in the X-AyeWatch-Signature header, must get a 2xx reply within 10 seconds, and carry an update_id for deduplicating retries.
- AyeWatch does not send TikTok LIVE alerts or read comments; it has a free preview, and paid plans start at $9 a month as of November 2026.
You may not need a Discord bot for TikTok notifications at all. If the goal is a message in a channel each time a creator posts, a webhook does the job: AyeWatch can post new TikTok videos to Discord on paid plans, or send you a signed webhook that a short handler of your own relays to Discord. Write a full bot only when you want commands, roles or logic of your own.
Three ways to get TikTok posts into a channel
| Approach | What you maintain | Pick it when |
|---|---|---|
| Your own bot | Reading TikTok on a schedule, remembering seen videos, retries, hosting | You need slash commands or custom behavior |
| AyeWatch's Discord integration | Nothing after setup | You want new videos in a channel, today |
| AyeWatch webhook relayed to a Discord webhook | One small HTTPS handler | You want your own message format or routing |
Why a home-made bot is more work than it looks
The Discord side is the easy part. The hard part is the TikTok side: fetching a profile, hashtag or search on a schedule, working out which videos are new, storing what you already posted, and repairing the reader when the source changes. That is a small service to run forever, for a feature most servers only need to fire a few times a week.
The no-code route
In AyeWatch, open Create a monitor, pick TikTok and choose a mode:
- Profile takes a full tiktok.com profile link and sends every new video from that creator.
- Search takes plain words and sends the newest videos whose captions match.
- Hashtag takes one tag and sends new videos that use it.
Add an Only alert me about rule if the channel should only see some videos, for example "tutorials, not memes". Then connect Discord. AyeWatch lists Slack, Discord and webhook integrations as paid-plan features; push and the in-app feed come with every plan. Each update carries the caption, view, like and comment counts, a cover image and a link to the video.
The relay route, for custom formatting
If you want embeds, per-channel routing or a filter of your own, point AyeWatch's webhook at a handler and forward to a Discord incoming webhook. The facts that shape the code, from AyeWatch's webhook docs and Discord's webhook reference:
- AyeWatch POSTs JSON to a public HTTPS URL, one webhook per account, only when a monitor finds something new.
- Your endpoint must answer with a 2xx within 10 seconds. Failed deliveries are retried, so deduplicate on
update_id. - Each request has an
X-AyeWatch-Signatureheader:sha256=plus an HMAC-SHA256 of the raw body, keyed with your webhook secret. - Discord's Execute Webhook call needs at least one of
content,embedsor a few other fields, andcontentholds up to 2,000 characters.
import express from "express";
import crypto from "node:crypto";
const app = express();
const seen = new Set();
app.post("/hooks/ayewatch", express.raw({ type: "application/json" }), async (req, res) => {
const expected = "sha256=" + crypto.createHmac("sha256", process.env.AYEWATCH_SECRET).update(req.body).digest("hex");
const given = req.get("x-ayewatch-signature") ?? "";
if (given.length !== expected.length || !crypto.timingSafeEqual(Buffer.from(given), Buffer.from(expected))) {
return res.sendStatus(401);
}
res.sendStatus(200); // reply fast, then forward
const update = JSON.parse(req.body);
if (seen.has(update.update_id)) return;
seen.add(update.update_id);
const content = `**${update.headline ?? update.topic_name}**\n${update.content ?? ""}`.slice(0, 2000);
await fetch(process.env.DISCORD_WEBHOOK_URL, {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ content }),
});
});
app.listen(3000);
Keep seen in Redis or a database once this runs on more than one instance. AyeWatch's docs also say events can arrive out of order and new fields may appear, so ignore fields you do not use.
What none of these routes cover
AyeWatch sends no TikTok LIVE alerts, does not read comments and works with public accounts only. If your server mainly wants "this creator is live now" pings, a stream-alert bot built for LIVE is the better fit. For new videos, hashtags and searches, the webhook route is less code to own than a bot.
Price
AyeWatch has a free preview with no card. As of November 2026, paid plans, which include the Discord and webhook integrations, start at $9 a month and are billed in monitoring credits.
Frequently asked questions
Do I need a bot to get TikTok notifications in Discord?
Not for new videos. AyeWatch can post to Discord directly on paid plans, and a Discord incoming webhook can take messages from your own relay. A bot makes sense when you want commands or custom behavior.
Can I point AyeWatch's webhook straight at a Discord webhook URL?
Not as is. AyeWatch sends its own JSON payload, while Discord's Execute Webhook call expects fields such as content or embeds. Use AyeWatch's Discord integration, or a small handler that verifies the signature and reformats the message.
Will this send TikTok LIVE notifications to Discord?
No. AyeWatch's TikTok monitors cover new videos from profiles, searches and hashtags, not LIVE streams. Use a stream-alert bot for LIVE.
Sources
- AyeWatch webhooks documentationAyeWatch
- AyeWatch for TikTok monitoringAyeWatch
- AyeWatch integrationsAyeWatch
- AyeWatch pricingAyeWatch
- Webhook resourceDiscord
