Keywords that actually fire
How Tuku matches keywords across Thai, English, Indonesian, and Vietnamese — and what to do about spelling, slang, and abbreviations.
By default, a keyword matches anywhere it appears in the comment — price fires on whats the price? (and even inside pricey). Here's exactly how matching works, plus the stricter Exact and Starts with conditions for when you need them.
How matching works
Tuku matches against the comment text using these rules:
- Case-insensitive.
PRICE,price,Priceare equivalent. - Whitespace is trimmed from the ends of the message and each keyword before matching.
- Multiple keywords on a trigger are OR. Any one match fires the trigger.
- Match condition decides where the keyword has to appear — anywhere in the message, at the start, or as the whole message. See Match condition below. The default,
Contains, matches the keyword anywhere — sopricematches bothwhats the price?andpricey.
Thai, Indonesian, and Vietnamese all follow the same rules, with locale-aware normalization for Thai combining marks.
Match condition
Each keyword trigger has a Match condition dropdown in the trigger editor that decides where the keyword has to appear in the message. It applies to both Comment keyword and DM keyword triggers.
| Condition | Fires when | Example (keyword price) |
|---|---|---|
| Contains (default) | The keyword appears anywhere in the message. | whats the price?, pricey, price pls all match. |
| Exact match | The whole message equals the keyword. | Only price matches — price? does not. |
| Starts with | The message begins with the keyword. | price please matches; whats the price does not. |
All three conditions are case-insensitive and ignore leading/trailing whitespace.
- Contains is the default and what every trigger created before this option existed uses. It's the right choice for the messy, real-world comments most keyword lists target.
- Exact match is for tightly controlled keywords — a Live host telling viewers to comment one specific word, where you don't want
priceyorprice is too highto fire. - Starts with is a middle ground: the comment has to lead with the keyword.
When a trigger uses Exact match or Starts with, the flow editor shows a small badge on the trigger card so you can see the condition at a glance. Contains shows no badge (it's the default).
Exact match and Starts with are strict. If real comments say price?, how much is the price, or price ka and you're on Exact match, none of those fire. When in doubt, stay on Contains and lean on a well-built keyword list instead.
Building a strong keyword list
A good list usually has three rings:
1. The literal word
The most common form. PRICE, ราคา, harga, giá.
2. Common typos and shortforms
Real comments are messy. Add the variants you see:
prc,pricw,pirceราคาเท่าไร,ราคาเทาไหร่,เท่าไร,เท่าไหร่brp,brapa,berapabnhieu,bao nhiêu
3. The implicit ask
People don't always say "price." They say "how much" or "available?" Add these as their own keywords if the volume justifies it.
how muchกี่บาท,ขายเท่าไรada stok,still available
Tip: Say the ask out loud as a question — "how much?", "is it available?", "ada stok?". The question form is the fastest way to surface the exact phrases people actually type. Leave the ? off your keyword: matching looks for the keyword anywhere in the comment, so how much still catches how much? — but a keyword typed as how much? would then need the literal ? to be present.
What not to put in your list
- Single-letter or single-syllable words like
a,is,ม. They'll fire on everything. - Brand or product names, unless you genuinely want to DM everyone who mentions them.
- Negative-context words like
bad,แพง(expensive), unless you've thought through the reply.
Overlapping keywords across automations
Only the first matching automation fires per message, and matching is case-insensitive — so two active automations that share a keyword (say one with LINK and another with link, on overlapping posts) collide, and which one wins isn't predictable.
When you publish, Tuku checks your other active automations for this kind of overlap (same channel, overlapping post scope) and shows a warning if it finds one. It's non-blocking — you can publish anyway — but it's a strong hint to either merge the two automations or give them distinct keywords.
Multilingual tips
If your audience is mixed:
- Create one trigger with all-language keywords. The same DM flow can be written to detect locale (see DM flows → branching).
- Or create one trigger per language, each pointing to a flow written in that language. Cleaner analytics, slightly more setup.
We recommend per-language triggers once you're past 50 DMs/day in any single language.