Skip to main content

Follow Graph

Follow graph conditions trigger on new X follow edges Elfa detects. Three sources ask three questions about the same data:

SourceWatchFires when
x_follow_receivedone accountsomeone starts following it
x_follow_madeone accountit starts following someone
x_follow_overlap2-25 accountsseveral of them follow the same account

x_follow_overlap is the convergence signal: three funds I track all followed the same new project this week.

Follow conditions use the full EQL condition form and obey the standard limits: they can be combined with other sources inside AND/OR groups, up to depth 3 and 10 leaf conditions. See Triggers.

API only

Follow conditions are available through the Auto API. The in-app chat assistant cannot author them today, so build these plans by calling Create Query directly.

Account Routing​

x_follow_received and x_follow_made take a single args.account. x_follow_overlap takes args.accounts, an array of 2 to 25 usernames.

Rules:

  • Usernames, not numeric ids and not URLs.
  • A leading @ is stripped and surrounding whitespace trimmed.
  • Lowercased for routing, so @Elfa_AI, Elfa_AI, and elfa_ai are the same account. Duplicates in accounts collapse to one.
  • 1 to 15 characters of letters, digits, or underscores.
  • Validate/Create rejects accounts that could never match — see Validation Notes.

The watched account is always the one you name. What the condition measures differs by source, so read the Methods table before setting a threshold.

Methods​

SourceMethodArgumentsOperatorsMeasures
x_follow_receivedfollower_countaccount, window?, period?>, >=Follower count of the account that followed you
x_follow_madefollowee_follower_countaccount, window?, period?>, >=Follower count of the account it followed
x_follow_overlapdistinct_followersaccounts, window?, period?>, >=How many watched accounts followed the same account

Only > and >= are accepted. Results are capped at 500 rows ranked by distinct watchers then follower count, so a downward comparison could silently miss qualifying rows. crosses_above / crosses_below and dynamic field-vs-field values are not supported.

Use the threshold to control noise. On x_follow_received and x_follow_made, >= 0 matches every detected follow and a higher value narrows to accounts with a real audience. On x_follow_overlap the floor is 2 — a threshold below that, or above what the watched set can reach, is rejected at create time.

Window And Period​

ArgumentValuesDefault
window6h, 12h, 24h, 48h, 72h, 7d24h, or 72h for x_follow_overlap
period1h, 2h, 4h, 8h, 12h, 24h, 1d, 7d1h

window is the lookback over detection time. period is the minimum interval between reads. A period longer than window is silently clamped down to window at evaluation time rather than rejected — reading less often than the window would let follows age out unseen.

Coverage And Limits​

Read this before building a plan. Follow data is collected periodically rather than streamed from X, so coverage is deliberately bounded.

LimitDetail
Which follows are visibleOnly accounts Elfa monitors are checked. A follow by an account outside that set is not detected, and the plan stays silent.
TimingFollows are picked up on a recurring check rather than streamed, so alerts are not real time.
Event timestamplastDetectedAt is when the follow was detected, not when it happened on X. window filters on detection time.
Newly added accountsAn account's pre-existing follows are not replayed as new when Elfa starts monitoring it.
Result capAt most 500 matches per evaluation. A watched account with more new edges than that inside one window is reported partially.
UnfollowsNot detected. There is no condition for an account being unfollowed.
Inactive edgesOnly edges still marked active are counted.
Re-followsIf an account unfollows and later follows again, the repeat follow is not re-emitted.

The first row is the one to plan around. A quiet plan means no tracked account made that follow — it does not prove nobody did.

x_follow_made and x_follow_overlap read the watched account's own following list, so those accounts must themselves be ones Elfa monitors. x_follow_received has no such requirement: it is the followers that must be monitored, and those can be any account Elfa tracks.

Runtime Semantics​

Each matched account is a distinct event.

  • Without repeat, the first match triggers the plan once and moves it to a terminal state.
  • With repeat, the plan fires once per distinct matched account.
  • Use repeat.cooldown: "0" for "notify me about every one" plans.
  • A matched account will not fire again while it stays inside window. For x_follow_overlap, an account fires again only if a further watched account follows it inside the same window.
  • Preview is not available before execution: a follow condition reports no value until its first scheduled evaluation.

Trigger Payload​

All three sources carry the same shape:

{
"condition": {
"source": "x_follow_overlap",
"method": "distinct_followers",
"args": { "accounts": ["pantheracapital", "a16z", "paradigm"] },
"operator": ">=",
"value": 2
},
"match": {
"observedValue": 3,
"matchedUsername": "newprotocol",
"matchedFollowerCount": 1163,
"watchedUsernames": ["pantheracapital", "a16z", "paradigm"],
"distinctWatched": 3,
"lastDetectedAt": "2026-09-09T10:48:08.636Z"
}
}
  • matchedUsername — the account the condition matched on. The new follower for x_follow_received; the newly followed account for the other two.
  • matchedFollowerCount — that account's own follower count at detection time.
  • watchedUsernames — which of your watched accounts were involved.
  • distinctWatched — how many. Always 1 except for x_follow_overlap.
  • lastDetectedAt — when the newest edge in the match was detected.
  • observedValue — the value the operator compared against.

Examples​

Convergence Across A Watched Set​

Fires when at least 2 of the tracked funds follow the same account within 72 hours.

{
"title": "Fund convergence",
"description": "Notify when 2+ tracked funds follow the same new account.",
"conditions": {
"AND": [
{
"source": "x_follow_overlap",
"method": "distinct_followers",
"args": {
"accounts": ["pantheracapital", "a16z", "paradigm"],
"window": "72h"
},
"operator": ">=",
"value": 2
}
]
},
"actions": [
{
"stepId": "step_1",
"type": "notify",
"params": { "message": "2+ tracked funds followed the same account" }
}
],
"expiresIn": "168h",
"repeat": { "cooldown": "0", "maxTriggers": 50 }
}

For HTTP calls, wrap conditions, actions, expiresIn, and repeat under a top-level query key. See HTTP Request Wrapper.

Any New Follower On A Watched Account​

{
"source": "x_follow_received",
"method": "follower_count",
"args": { "account": "elfa_ai" },
"operator": ">=",
"value": 0
}

Only Notable New Followers​

{
"source": "x_follow_received",
"method": "follower_count",
"args": { "account": "elfa_ai" },
"operator": ">",
"value": 50000
}

What A Tracked Account Starts Following​

{
"source": "x_follow_made",
"method": "followee_follower_count",
"args": { "account": "cobie", "window": "24h" },
"operator": ">",
"value": 10000
}

Validation Notes​

Common errors:

Error signalWhat it meansNext action
EQL_INVALID_ARG_VALUE with "expected an X username"The handle is not 1 to 15 letters, digits, or underscores.Pass the handle only — no URL, no numeric id. A leading @ is fine.
EQL_INVALID_ARG_VALUE with "X account was not found"The handle does not resolve to an X account.Check the spelling and re-validate.
EQL_INVALID_ARG_VALUE with "Elfa does not index this account"The account exists on X but Elfa holds no record of it, so no follow edge can ever match it.Watch an account Elfa tracks.
EQL_INVALID_ARG_VALUE with "Elfa does not track this account's follows"x_follow_made / x_follow_overlap on an account Elfa does not monitor for follows.Use x_follow_received, or watch a monitored account.
Invalid operatorAnything other than > or >=.Use > or >=.
Threshold rejectedvalue on x_follow_overlap is below 2, or above what the set can reach — >= N can reach the number of watched accounts, > N only one below it.Lower the threshold or widen accounts.
Plan is active but never firesNo tracked account made a matching follow.See Coverage And Limits.