When you wire Instagram comments into private DMs, the keyword matcher is the whole product. Get it wrong and you spam strangers — or miss the people who asked for the link.
Exact vs contains
Exact means the whole comment is the keyword (plus optional punctuation). Good for short CTAs like LINK or GUIDE. Bad if people write "send me the link please" — they will never match.
Contains fires when the keyword appears anywhere in the comment. Better for natural language. Risk: short tokens like dm or yes match noise (random, yesterday). Prefer 4+ character keywords or multi-word phrases.
Case and punctuation
Treat matching as case-insensitive. Strip trailing emoji and !?. so Link! and link hit the same rule. Do not strip spaces inside multi-word keywords — free guide should not match freeguide.
One DM, not a thread
Day-one HitDM behavior is intentional: one private DM with the tracked link when the keyword hits. No chatbot tree, no follow-up spam. That keeps Meta messaging windows simpler and the user promise honest.
Deduping
Same person commenting the keyword twice on the same post should not get two DMs in a minute. Store (ig_user_id, media_id, automation_id) and skip duplicates for a cool-down window.
Test plan before you go live
- Post a test Reel with a clear CTA keyword.
- Comment from a second account with exact, contains, wrong case, and a near-miss.
- Confirm one DM lands with the tracked URL.
- Confirm a second identical comment does not double-send.
If you want the boring version of this job already shipped — keyword → one DM + tracked link — that is what HitDM does.

