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-Signature header: 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, embeds or a few other fields, and content holds 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

  1. AyeWatch webhooks documentationAyeWatch
  2. AyeWatch for TikTok monitoringAyeWatch
  3. AyeWatch integrationsAyeWatch
  4. AyeWatch pricingAyeWatch
  5. Webhook resourceDiscord

Add ClaudeGPT Si as a preferred source on Google