---
title: "Choosing keywords"
description: "How a keyword matches a post, how to pick terms that find what you want, and what you pay for."
canonical: https://docs.mentio.dev/guides/keywords
markdown: https://docs.mentio.dev/guides/keywords.mdx
---

# Choosing keywords

How a keyword matches a post, how to pick terms that find what you want, and what you pay for.

A keyword is the words Mentio looks for in posts. Pick them well and the feed fills with the conversations you care about; pick a sentence and it may stay empty. This page covers how matching works and how to choose terms that work.

## How a keyword matches

Matching is case-insensitive, on every platform the keyword tracks. A post can match in two ways.

**The phrase.** The post holds the keyword as written, or as one word the way a hashtag writes it: `social listening` matches `#SocialListening`, and `fundraising for nonprofits` matches `#fundraisingnonprofits`.

**Close words.** For a keyword of two words or more, the post holds every meaningful word of it a few words apart, in any order. Plurals count, and so do joined, hyphenated and spaced spellings. Filler words like *for*, *to*, *the* and *a* are not required. For a keyword of three meaningful words or more, a post that holds all of them but one generic word (*api*, *tool*, *app*, *software*, *platform*, *agency*, *best*, *free* and the like) also counts: `social listening api` matches "Social listening software usually costs thousands". Any other word is always required, so `notion project management` never matches without *notion*.

| Keyword                                  | Post                                                           | Matches?                                     |
| ---------------------------------------- | -------------------------------------------------------------- | -------------------------------------------- |
| `social media api`                       | "We launched our social media API today"                       | Yes, the phrase                              |
| `social media api`                       | "The best API for social media scheduling"                     | Yes, close words                             |
| `social listening`                       | "#SocialListening con #IA"                                     | Yes, the phrase (as a hashtag)               |
| `social listening api`                   | "Social listening software usually costs thousands"            | Yes, close words (all but the generic *api*) |
| `fundraising for nonprofit organization` | "...their fundraising efforts. For nonprofit organizations..." | Yes, close words (plural)                    |
| `nonprofit fundraising`                  | "Fundraising tips for a non-profit"                            | Yes, close words (spelling)                  |
| `social inbox`                           | "Our social app emailed my whole inbox, again and again"       | No, the words are too far apart              |
| `buffer`                                 | "Buffers and queues in Go"                                     | No, a single word matches as written         |

A close-words post is kept only when the classifier scores it relevant to the keyword. If it is not, it is dropped and you pay nothing for it. Close words apply to the posts a platform returns when Mentio searches for your keyword; Bluesky's live stream and the Hacker News, DEV and news feeds match the phrase only.

### The exact phrase only

Wrap the keyword in double quotes when you create it (`"social media api"`), or set `matching.exactPhrase` on [`POST`](/api/keywords/create-keyword) or [`PATCH /v1/keywords/{id}`](/api/keywords/update-keyword). Single words and case-sensitive keywords always match as written.

Every mention reads `keyword.matchedAs`: `phrase` (a hashtag spelling the keyword included) or `close_words` (all but a generic word included), and `keyword.matchedIn`: `text`, or `speech` when the keyword is only in what a TikTok video says.

## Choose terms people actually write

Mentio finds posts that contain your words. A keyword works when it is something people write, not a description of the post you hope to find.

| Instead of                                   | Track                                                                | Why                                                                                            |
| -------------------------------------------- | -------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- |
| `looking for a corporate fundraising agency` | `fundraising agency`, `corporate sponsors`                           | Nobody writes your sentence word for word. The classifier picks out the posts asking for help. |
| `best tool to monitor reddit mentions`       | `reddit monitoring`, `reddit mentions`                               | Two or three words people use, not a search query.                                             |
| `Acme, the project management app`           | `Acme` with a [context](#tell-the-classifier-what-you-mean) sentence | The context tells the classifier which Acme you mean.                                          |
| `ai`                                         | `ai agents`, `ai marketing`                                          | A word this common matches millions of posts.                                                  |

Some rules of thumb:

* **Two or three words** is the sweet spot for a topic. One common word is too broad; five words is a sentence.
* **Track your brand by its name**, plus your domain (`acme.dev`) and handle if people use them.
* **Track competitors by name** as `competitor` keywords, so share of voice can compare you.
* **Intent belongs to the classifier, not the keyword.** "Looking for", "need help with", "recommend" are what the classifier tags as `buy_intent` and `question`. Filter on those instead of writing them into the term.
* **A new keyword reads back 30 days at once.** If it finds nothing in that look-back, the term is probably too narrow: shorten it.

## Narrow a broad keyword

When a keyword matches too much, narrow it with its `matching` rules on [`PATCH /v1/keywords/{id}`](/api/keywords/update-keyword). A post a rule rejects is never stored or billed.

| Rule              | Example                                | Effect                                                                          |
| ----------------- | -------------------------------------- | ------------------------------------------------------------------------------- |
| `requiredTerms`   | `notion` with `["api", "integration"]` | The post must also contain one of them (`requiredMode: "any"`) or all (`"all"`) |
| `excludedTerms`   | `cursor` with `["mouse", "pointer"]`   | A post containing one is dropped; `*` at an end is a wildcard (`beta.*`)        |
| `excludedAuthors` | your own team's accounts               | Their posts are dropped                                                         |
| `caseSensitive`   | `RAG`                                  | Only `RAG`, never `rag`                                                         |

[Keyword health](/guides/keyword-health) tells you when a keyword is noisy and which rule would fix it.

## Tell the classifier what you mean

Every match is scored 0 to 100 for relevance. The score is what decides delivery, and for a close-words match, whether it is kept at all. Give a keyword one `context` sentence for what the term means to you ("Arc is our browser; ignore the geometry word"), and your workspace profile for what your company does. Both change the score, not what is matched.

## What you pay for

| Match                                   | Billed                                      |
| --------------------------------------- | ------------------------------------------- |
| The phrase                              | Always, $0.008, relevant or not             |
| Close words                             | Only when the classifier scores it relevant |
| Rejected by a rule, or dropped as noise | Never                                       |

Each keyword also costs $5 a month, charged per day. See [Billing](/billing).
