lemlist_watchlist
Watch lists: standing alerts on buying signals (hiring, funding, job
change, tech move, website visit…), and the signals they catch.
oto_guide op=read slug="lemlist-playbook": build order, where each id comes from, and the doc↔API gaps.
⚠️ A list created with signal_processing_type="push_to_campaign" and
activate=True feeds a campaign ON ITS OWN — the one configuration
here that can end in messages being sent without a further call.
Args by op:
list:watch_type,status,page,limit.create:name+watch_type(companyIsHiring,companyRaisedFunds,jobChange,newHire,technologyChange,buyingIntent,companyEmployeeVisitedMyWebsite…), thenfilters. Readop="filters"for that type FIRST: each type has its own REQUIRED filters (companyIsHiringneedstitle,locationandmaxIdentificationsPerDay), the values must be the canonical onesop="filter_values"returns — a free string is rejected — and numbers travel as STRINGS ({"filterId": "maxIdentificationsPerDay", "in": ["5"]}). Optionalemoji,signal_processing_type(manual,create_opportunity,push_to_campaign),activate(default False — the list is created as a draft),segment_type,opportunity_template(whatcreate_opportunitybuilds: owner, channel, priority), and withpush_to_campaignonly:campaign_id(the campaign fed) andpersona_id(pdp_…, fromlemlist_database op="personas": who to push when a signal names a company and no person).update:watch_list_id+settings(raw PATCH body).delete:watch_list_id.filters(optionalwatch_type) /filter_values(filter_id, optionalquery) /library: what a list can be built from.history:watch_list_id.signals: the catches, filterable bywatch_list_id,watch_type,status,received_from/received_to(ISO bounds), and sorted bysort_by/sort_order.push_signals:watch_list_id+contact(needslinkedinUrl) +company(needsdomainandname), optionalcustom_fields— feed a signal detected OUTSIDE lemlist.
Website visitors (companyEmployeeVisitedMyWebsite), lemlist's own
visitor identification:
Needs lemlist's tracking script on the site, installed from the lemlist app (Signal agents ▸ Create ▸ Website visitors) — no API call installs it.
⚠️ An ACTIVE list spends 20 lemlist credits per visit caught: set the
maxIdentificationsPerDayfilter, and confirm beforeactivate.Filters:
website,pagesTracked,minVisitDuration,minPageViewed,visitLocation,internalTraffic,excludedVisitorIps,maxIdentificationsPerDay.Each signal carries
company(name, domain, linkedinUrl, industry) andsignalData(websiteVisited= the page,visitorWebsite,visitorCountry,visitorDurationin seconds);contactonly when lemlist could name the visitor (some US traffic).Read them on a schedule:
op="signals",watch_type="companyEmployeeVisitedMyWebsite",received_from. Or on each visit:lemlist_webhook op="add"withevent_type="signalRegistered"(fires for EVERY watch list — check the type).
Tool call template
Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.
{
"id": 1,
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"arguments": {
"op": "<op>"
},
"name": "lemlist_watchlist"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| op | Yes | ||
| _org | No | Org (id) de CET APPEL. `oto_list_orgs()`. | |
| name | No | ||
| page | No | ||
| emoji | No | ||
| limit | No | ||
| query | No | ||
| _group | No | Équipe (id) de CET APPEL, sous son org parente. | |
| status | No | ||
| _run_id | No | OBLIGATOIRE à chaque appel dès `run_start` ou `data_claim_next` : sans lui, l'écriture sur une ligne réservée est refusée. Hérité seulement si le serveur tient un run actif — n'y compte pas. | |
| company | No | ||
| contact | No | ||
| filters | No | ||
| sort_by | No | ||
| _project | No | Projet (id) de CET APPEL — jeton PRIMAIRE. `oto_project(op='list')`. | |
| activate | No | ||
| settings | No | ||
| _instance | No | Instance de connecteur PRÉCISE (un credential exact). `oto_instance(op='list')`. | |
| filter_id | No | ||
| persona_id | No | ||
| sort_order | No | ||
| watch_type | No | ||
| campaign_id | No | ||
| received_to | No | ||
| segment_type | No | ||
| custom_fields | No | ||
| received_from | No | ||
| watch_list_id | No | ||
| opportunity_template | No | ||
| signal_processing_type | No |