TukuManual

Campaigns (bulk DM)

Send a one-time DM to a filtered set of contacts at once — the manual counterpart to your automated flows.

A campaign sends one DM to a filtered set of contacts in a single batch — now, or at a time you schedule. It's the one-time counterpart to automations: a flow reacts to each buyer automatically, while a campaign is a deliberate, one-off message you send to many contacts yourself.

Use it to re-engage warm conversations — announce a restock, a flash sale, or a new drop to people who already messaged you.

You'll find Campaigns in the left sidebar, between Automations and Posts.

A campaign is not a broadcast to all your followers, and it can't cold-message anyone. TikTok only lets you DM a contact who already has an open messaging window with your account — someone who messaged you (or whom you comment-replied to) recently enough. See Who you can actually reach.

Campaigns are a Pro feature. On the Free plan the section is visible but locked — upgrade to send. See Plans and pricing.

Who you can actually reach

A campaign reaches contacts on the currently selected TikTok account who have an open 48-hour messaging window — the same messaging limits that apply everywhere else in Tuku. In practice that means people who:

  • DM'd your account recently, or
  • came in through a comment-to-DM flow, a tiktok.me link, or a DM ad,

and whose window hasn't closed yet. A contact who only follows you but never messaged can't be reached — TikTok forbids cold outreach.

Because windows open and close on their own, the audience is always a moving target. The number you see while building a campaign is an estimate, not a guarantee — see Estimate vs. reality.

Creating a campaign

  1. Open Campaigns and click New campaign.
  2. Confirm the TikTok account — a campaign is scoped to the account selected in your workspace switcher.
  3. Give it an optional name (just for your own reference).
  4. Write the message (plain text, up to 6,000 characters).
  5. Build the audience with filters (below). The estimate updates as you change them.
  6. Choose Send now or Schedule for later.
  7. Click Send campaign / Schedule campaign.

Audience filters

FilterOptionsWhat it does
FollowersEveryone · Followers only · Non-followers onlyNarrow by whether the contact follows your account.
SourceAny source · From comments · From DMsWhere the contact first came from.
TagsComma-separated listMatches a contact who has any of the tags you list (e.g. vip, quiz_completed).

Filters stack — a contact must match all of them to be included. Leave a filter on its default to ignore it.

Only contacts who already have a conversation on the account are ever counted — that's the reachable pool the filters narrow down.

The message

A campaign sends one text message. Write it for the whole audience — there are no per-contact variables. Keep it short and natural; a re-engagement DM that reads like a personal note lands better than a broadcast blast.

Scheduling

  • Send now starts the campaign as soon as you confirm.
  • Schedule lets you pick a start time and a timezone. Times are shown and entered in the timezone you choose, so what you set is what your audience experiences.

Available timezones cover the markets Tuku serves — Asia/Bangkok (default), Jakarta, Ho Chi Minh, Manila, Singapore, Kuala Lumpur, and UTC.

If you pick a late-night hour (roughly 10 PM – 7 AM), Tuku shows a gentle warning — it won't block you, but a daytime send usually gets more replies.

When a scheduled campaign comes due, Tuku works through the recipients in paced batches. There's nothing to keep open — close the tab and the send continues.

Estimate vs. reality

The audience number shown while you build the campaign — ≈ N estimated — is computed from your own contacts. It is not a delivery guarantee. Between the estimate and the actual send:

  • a contact's messaging window can close, and
  • TikTok can still reject an individual send.

The truth is the per-contact result after the run, which you see on the campaign's page.

Reading the results

Open any campaign to watch it run. While it's sending, a progress bar fills and the counters tick live. Each contact ends in exactly one outcome:

OutcomeWhat it means
SentTikTok accepted the message.
UnconfirmedTikTok's response was ambiguous — the message likely went out and is confirmed later.
Skipped (window/quota)No open messaging window, or sending would exceed your plan's contact limit. No message was sent.
BlockedTikTok rejected the send (window or policy).
ErroredA genuine failure (e.g. a token or system problem).

"Skipped" is normal and expected — it's the campaign protecting your account by not attempting a send that TikTok would refuse.

Read rate

Once a campaign has left draft/scheduled and at least one message reached someone, the progress card also shows a Read rate — how many of the delivered messages have been read, as {read} of {sent} delivered ({pct}%) (e.g. 42 of 150 delivered (28%)). The denominator is the delivered set (Sent + Unconfirmed); the numerator is the recipients who have since read up to at least this message.

Read rate is approximate, not a per-message receipt. TikTok only tells Tuku when a contact marks a whole conversation as read, giving a single "last read" timestamp — not which individual messages they saw. Tuku counts a recipient as having read your campaign message when their conversation's last-read time is at or after the moment your message was sent.

A few things follow from that:

  • It keeps rising after the run finishes. Tuku recalculates the rate fresh on every page load, so a contact who opens the conversation hours or days later starts counting then — check back rather than treating the first number as final.
  • A contact who opens the thread to read any recent message counts as having read your campaign message too, since it sits earlier in the same conversation.
  • The denominator includes Unconfirmed recipients, whose delivery TikTok never confirmed — so the rate is a directional signal, not an exact measurement.

Canceling

You can cancel a campaign while it's still scheduled (or a draft) — open it and click Cancel. Once a campaign is running, it can't be canceled; let it finish and read the breakdown.

Billing

Each contact you actually message counts toward your Monthly Active Contacts (MAC) the same way an inbound DM or an automation does — at most once per billing period. Most campaign recipients were already counted this period (they had to message you recently to be reachable), so a campaign usually adds little or no new MAC. If sending to a contact would push you over your plan's limit, that contact is skipped (quota) rather than failing the whole campaign.

Campaigns vs. automations

CampaignAutomation (flow)
TriggerYou send it, onceFires automatically per buyer
AudienceA filtered batch you chooseWhoever matches the trigger
TimingNow or scheduledThe moment the trigger fires
Best forRestocks, sales, announcementsAlways-on comment/DM replies, lead capture

Reach for a campaign when you have something to say now to people you've already talked to. Reach for an automation when you want Tuku to handle every new buyer for you, hands-off.

On this page