Skip to main content

Person Engagement Signal

The person_engagement signal monitors LinkedIn for posts and/or mentions from specific people, extracts the users who liked or commented on that content, filters them against your Ideal Customer Profile (ICP), and scores each lead 1–3 based on fit and intent. Use this signal to capture your competitors’ audiences, track who engages with your champions, or monitor influencers in your market.
You can create multiple person_engagement signals — each targeting a different set of people or ICP. Each signal is identified by a signal_id returned on creation.

Create a person engagement signal

Request

string
required
Must be "person_engagement".
array
required
A list of LinkedIn profile URLs for the people to monitor. The system fetches each profile and extracts the LinkedIn member_id automatically. URLs that cannot be resolved are returned in unresolved_profile_urls and skipped.
Each URL must point to a valid public LinkedIn profile. The resolved full name and member_id are included in the response. Unresolvable URLs are reported but do not fail the request — as long as at least one URL resolves.
string
What type of content to monitor for each person.
object
Ideal Customer Profile filter. If omitted, every engaging lead passes through unfiltered. See the ICP Filter Reference section below.
string
Only surface leads who engaged with content published within this window.Valid values: "past-24h" · "past-week" · "past-month"
array
Extra email addresses to receive the lead digest. Your registered account email is always included.
string
URL to receive qualified leads via POST after each run. See Webhooks.
string
HMAC secret for signing webhook payloads.

Response

Response
string
Unique identifier for this signal. Save this — required for update and delete operations.
string
Always "person_engagement".
string
"active" after creation.
array
The resolved people — one entry per successfully fetched profile, each with the LinkedIn member_id and the person’s full name as the label.
array
Only present if one or more profile_urls could not be resolved. These profiles are not being monitored. The profile may be private, deleted, or the URL may be incorrect.
string
The tracking mode in effect: "posts", "mentions", or "both".
object
The ICP configuration, if provided.

ICP filter reference

All fields are optional. If no ICP is provided, every lead passes with a score of 1.0.

Hard filters — reject leads that don’t match

array
Accepted location strings (country names, cities, or regions). A lead passes if any value appears in their LinkedIn location.
array
Job titles to exclude. Seniority-aware — "Intern" excludes "Marketing Intern" but not "VP Sales".
array
At least one keyword must appear in the lead’s profile text.
array
Target job titles. Matching is seniority- and function-aware. Leads with confidence below 0.6 are hard-rejected.
array
Restrict to specific seniority bands. Leads with unclassified seniority ("unknown") always pass.Valid values: "intern" "entry" "ic" "manager" "director" "vp" "c_level" "founder" "unknown"

Soft filters — affect score but don’t reject

array
Target company industries. Uses semantic matching. Non-matches lower the ICP score rather than hard-rejecting.
array
Target LinkedIn company size bands. Non-matches lower the ICP score. Must match LinkedIn’s exact size band strings:"" · "2 - 10" · "11 - 50" · "51 - 200" · "201 - 500" · "501 - 1000" · "1001 - 5000" · "5001 - 10000" · "10001+"
array
Keywords that reduce or eliminate a lead’s score if found in their profile text.

Lead scoring

Each lead that passes the hard filters is scored on two dimensions: ICP Score (0.0–1.0) — average of all soft-filter scores (industries, company_size, negative_keywords). Leads with no ICP configured receive 1.0. Signal Score — based on:
  • Engagement type: comment = 1.0, like = 0.7
  • Recency: decays linearly over 14 days
Lead Score (1–3)composite = 0.5 × icp_score + 0.5 × signal_score Leads are delivered via email digest and/or webhook after each daily run.