DM flows
Build the conversation the bot sends after a trigger fires — single messages, branching questions, and product cards.
A flow is the sequence of messages the bot sends after a trigger fires. Flows live in Flows and are reused across triggers.
Block types
| Block | What it does |
|---|---|
| Message | Sends a text DM. Supports emoji, line breaks, and one shop link rendered as a card. |
| Question | Sends a message and waits for the user's reply. The reply is captured to a field (e.g. shade, size, address). |
| Quick replies | Sends a message with up to four tappable buttons. User's tap is captured like a question answer. |
| Branch | Splits the flow based on a captured field or a previous quick-reply choice. |
| Shop link | Sends a tappable TikTok Shop product card. Picks from your catalog. |
| Handoff | Stops the bot and notifies the inbox that a human should take over. See Human handoff. |
| Wait | Pauses the flow for N seconds or minutes. Use sparingly — TikTok DMs feel fast. |
| Tag | Adds a tag to the contact (e.g. vip, shade-too-light). Used in analytics and future targeting. |
Anatomy of a good flow
A flow that actually closes orders usually looks like this:
- Acknowledge. One short line in the user's language confirming you heard them.
- Answer the obvious question first. If they commented
PRICE, give the price before anything else. Don't make them ask twice. - Qualify, only if needed. Ask one question to narrow the SKU (
What shade are you?/30ml or 50ml?). Skip if irrelevant. - Send the shop card. With a one-line nudge. Don't restate the price — the card shows it.
- Offer a human. A quick-reply button like
คุยกับแอดมินthat triggers a handoff.
Avoid: long opening greetings, multi-paragraph product descriptions, more than two qualifying questions, "Did that help?" follow-ups. Every extra message is an exit point.
Tone
ChatSparks is your brand's voice in the DM. The bot should:
- Sound like a human typing on their phone. Short sentences. Real emoji, not stickers. One emoji per message at most.
- Use the same language as the comment. Don't reply in English to a Thai comment.
- Be specific.
฿890 for 30ml, ฿1,490 for 50mllands better thanPricing varies — check our shop. - Never sound automated. Avoid
Thank you for your message!,Our team will get back to you shortly,Please find the link below.
When in doubt: read it out loud. If it sounds like a corporate auto-reply, rewrite it.
Branching example
A shade-match flow for a foundation product:
Trigger: keyword SHADE
└─ Message "Hi! ขอบคุณที่สนใจ Foundation ของเรานะคะ 🌿"
└─ Question "ปกติใช้สีอะไรของแบรนด์อื่นคะ?" → save to shade_reference
└─ Quick replies "หรือเลือกจากนี้เลย:"
├─ "Fair" → tag shade-fair → shop link (Fair SKU)
├─ "Light" → tag shade-light → shop link (Light SKU)
├─ "Medium" → tag shade-medium → shop link (Medium SKU)
└─ "ไม่แน่ใจ" → handoff to adminTesting a flow before you publish it
Every flow has a Preview button. It opens a chat window that runs the flow against you, with placeholder TikTok user metadata. You can step through every branch without spamming a real account.
If you want a real end-to-end test, comment on one of your own videos from a second account — the trigger will fire and you'll see the real DM.
Editing a live flow
You can edit a flow that's wired to an active trigger. ChatSparks:
- Applies your edits to new conversations immediately.
- Lets in-progress conversations finish on the version they started on.
You'll see a small v3 next to the flow name to track versions.