Skip to main content
Someone who likes a post about your category, or a competitor’s post, is shopping in that category right now. That is a sharper buying signal than most firmographics, and it names a person rather than a company. An engagement watch is a standing subscription: you describe what to watch once, and TAMTAM keeps collecting the people who engage with it.

How it fits together

1

Create a watch

Create an engagement watch with either a keyword query or a competitor’s LinkedIn company ID.
2

Point it at your personas

Pass persona_ids from List personas to say who counts as a lead. Sharpen a persona later and every watch using it sharpens too.
3

Poll the feed

List engagement signals returns who has engaged. Save next_cursor and pass it back to pick up where you left off.

The two kinds of watch

A topic query is passed to LinkedIn exactly as you write it, boolean operators included:
A watch’s kind and its target are fixed once created. Repointing one would leave the people it has already collected describing something it no longer watches, so create a second watch instead.

Who counts as a lead

persona_ids decides. Each engager’s job title is matched against those personas using the same rules the rest of TAMTAM uses, including their seniority bands and country constraints. Two behaviours are worth knowing because they are deliberate:
  • Engagers who match nothing are still collected, with an empty matched_persona_ids. Widening a persona later therefore surfaces people you had already collected, rather than only affecting future sweeps.
  • Filtering happens when you read. Pass persona_id to List engagement signals for matched people only. Reading unfiltered is how you tell nobody relevant engaged from my personas are too narrow — if every engager comes back unmatched, the personas are usually the problem.
A watch with no persona_ids filters nobody and collects everyone who engaged.

A new watch starts from now, not from history

A watch collects people who engage after you create it, plus whatever is still inside LinkedIn’s most recent window at its first sweep. It cannot reach back further, because LinkedIn’s content search only serves recent posts — there is no way to ask it for last quarter. So a brand-new watch looks thin for a day or two and then fills in. That is the one place our provider’s limits are visible to you, and it is worth knowing before you conclude a query is wrong: judge a watch on its second week, not its first afternoon.

Polling the feed

Identical to ICP signals: call with no cursor, process the events, save next_cursor, pass it back next time.
next_cursor comes back on every non-empty page including the last, and has_more: false means you are caught up rather than finished. Delivery is at-least-once. Every event carries a stable id. Store the ids you have processed and skip repeats; do not assume an event arrives exactly once. Events are ordered by detected_at, oldest first. occurred_at is when the engagement happened — LinkedIn does not timestamp a reaction, so it is when we saw it, and it is not a field to sort or deduplicate on.

What an engager gives you

job_title and company_name come from LinkedIn as free text, alongside the reaction. They are not resolved records: company_name carries no LinkedIn company ID, and neither field is guaranteed present. country_code appears only when we actually observed it — it is never filled in from the watch’s own countries filter, so its absence means unknown rather than “outside your filter”. To turn an engager into something richer, take profile_url to Enrich people.

Controlling cost

You are billed 1 credit per person collected, on the same line as enrichment and research (MaxCompanyEnrichments). Managing watches and reading the feed are free, however often you poll. See Credits. Your ceiling per sweep is max_posts_per_sweep × max_engagers_per_post, and nothing else. Both default conservatively. Raise them once a watch is producing what you expect rather than up front, and prefer several narrow watches over one broad one: a precise query at a low cap returns better leads than a vague query at a high one. People who match none of your personas are collected too, and cost the same. That is what makes widening a persona later surface the people already waiting — narrow the caps rather than the collection if you want to spend less. A sweep re-reads a fixed recent window rather than everything since your last poll, so it always overlaps with the previous run. That overlap costs you nothing — repeated people are recognised and not re-collected — and it is what makes a missed or failed sweep harmless. If a watch goes quiet, ask the watch why. List engagement watches reports what each one’s last run did: That distinction is the whole reason the field exists — an empty feed looks identical whether nobody engaged, the account ran dry, or the watch is simply new. To stop a watch without losing what it has collected, set is_enabled: false. A disabled watch is not swept and costs nothing. Deleting it discards every person it ever surfaced.