Saltearse al contenido

Social Listener

Esta página aún no está disponible en tu idioma.

Social Listener turns X (Twitter) into a live signal source. Track mentions of your brand, monitor keywords your buyers use, and surface high-intent posts (“just launched”, “looking for a CRM”, etc.) inside a daily inbox. Author handles are resolved to contacts in your CDP so signals flow into My Desk decisions and Sequencer drafts.

How It Works

  1. Open Signals → Social - no setup needed, graph8’s shared X API works out of the box
  2. Create one or more listeners (Brand / Keyword / Competitor / Engagement / User)
  3. The worker polls X every 10-30 minutes, classifies posts, and routes matches into the right tab
  4. Optionally connect your own X Developer App in Settings → Integrations for a higher quota (see BYO below)

Listener Types

TypeWhat It DoesDefault Poll
BrandTracks mentions of your brand, product names, and domain. Auto-builds the query from your brand snapshot.10 min
KeywordFree-form X query syntax with filters (language, min followers, exclude replies).10 min
CompetitorTracks mentions and activity around a named competitor so you can spot their customers and prospects.10 min
EngagementKeyword listener with intent operators baked in (“just launched”, “looking for”, “frustrated with”). Routes matches to the Engagement Inbox sorted by classifier score.15 min
UserPolls a specific X user’s timeline. Useful for tracking key prospects, partners, or competitors.30 min

Shared mode vs BYO mode

graph8 supports two auth models for the X API and picks the right one automatically per org:

ModeWho pays XWhen to use
Shared (default)graph8 pays X, bills you graph8 credits per post-readOut-of-the-box for every org. No setup required. Capped per-month at the graph8 shared quota.
BYO (opt-in)You pay X directlyHigher quota, no graph8 markup on X usage. Recommended once you exceed the shared cap or want X billing in your own account.

Both modes are TOS-safe: tweet text is stored only within your org row, never indexed cross-tenant.

Setup: Use graph8’s shared X API (default)

There is nothing to set up. Just visit Signals → Social Listener and create your first listener. graph8 polls X using its shared Developer App and bills your org graph8 credits per post-read (see Pricing below).

Setup: Connect your own X Developer App (BYO upgrade)

When you want the full per-app quota or want X to bill you directly:

  1. Go to developer.x.com and create a Developer Project + App
  2. In the App’s Keys and Tokens tab, copy the API Key and API Secret (graph8 derives the Bearer Token automatically via the OAuth2 Client Credentials grant)
  3. In graph8, go to Settings → Integrations and find the X API card
  4. Click Connect your own X Developer App, paste API Key + API Secret, click Test connection
  5. Once verified, click Connect to save

graph8 stores the credentials encrypted (Fernet) and uses them only for Social Listener polling. If you later disconnect your BYO app, graph8 automatically falls back to shared mode and re-activates any listeners that were paused.

Your First Listeners (auto-seed)

If you have no listeners yet, the page shows a first-run hero with one-click auto-seed. graph8 reads your Studio docs (brand snapshot, competitors, ICP keywords) and proposes a starter set:

  • One Brand listener from your brand name, product names, and domain
  • A Competitor listener for each competitor it finds
  • Keyword listeners for your tracked terms
  • A couple of Engagement listeners with intent operators baked in

Review the proposed listeners, then create them in one click. You can refine any query, filter, or poll cadence afterward, or create listeners manually instead.

The Engagement Inbox

The Engagement Inbox is the daily-action surface. It shows matched posts from all your engagement-type listeners, sorted by classifier score (highest intent first).

Social Listener matched-post inbox — each row shows the author profile (avatar, handle, verified badge, follower count), the post, engagement metrics, and per-row actions (mark reviewed / dismiss / save as contact)

Each match shows:

  • Author info (avatar, handle, verified, follower count)
  • The full post text
  • Engagement metrics (likes / replies / reposts / views)
  • A classifier badge (showcasing / asking / complaining / announcing) and a 0-100 intent score
  • Resolved contact link if the author is already in your CDP

Actions per row:

ActionWhat It Does
Mark reviewedAcknowledges the post; removes from “New” filter
DismissHides the post from future runs of the same query
Reply on XOpens a pre-filled reply to the post on x.com
Save as contactCreates a contact from the author profile if not already in your CDP
Add to listAdds the author (resolving or creating the contact) to a list
Enroll in sequenceEnqueues the resolved contact into a Sequencer sequence
Open in XOpens the post on x.com

Source Lists

The Lists tab turns a graph8 list into a tracked source: graph8 watches the X handles of the contacts on that list and pulls their posts. The list grid shows each list’s status, contact count, how many handles are being tracked, how many contacts have no X URL, whether the list is dynamic, and when it last synced. You can add a list even before any of its contacts have X handles - tracking starts as soon as handles are filled in.

Signals from Every Matched Author

Social Listener now creates a signal for every matched author, not just authors already in your CRM. When a post matches a listener:

  • If the author is a known contact, the signal attaches to them directly.
  • If not, graph8 stub-creates a contact, adds them to a per-org Social Signals list (which kicks off auto-enrichment), and still fires an org-level signal.

This means broad listeners surface intent even from accounts you have never seen before.

Contact Capture Settings (admin)

Admins control this from Studio Settings → Signals → Social. The Contact capture panel has:

  • A master Auto-create contacts toggle
  • Per-listener-type rules: enable/disable capture, a minimum follower floor, and an only when classified option (only capture authors whose post the classifier scored as intent)

Use these to keep low-quality or high-noise listeners from flooding your CDP with stub contacts.

The Contact Social Tab

When a contact has an X (Twitter) URL, a Social tab appears on their detail panel showing a read-only feed of the matched posts graph8 has captured for them. You can add or edit a contact’s Twitter / X URL from the contact overview, and Twitter URL columns are available on the contacts and companies grids.

Pricing Model

Costs differ by auth mode:

ChargeShared modeBYO mode
Post read (/2/tweets/search/recent, /2/users/:id/tweets)7 credits per post returned0 graph8 credits - your X bill
User lookup (/2/users/by/username/:name)14 credits per lookup0 graph8 credits - your X bill
Post classification (per matched post)1 credit1 credit
Brand-query auto-build (one-off, cached)5 credits5 credits

Under shared mode, graph8 pays X ($0.005 per read, $0.010 per lookup) and bills your org graph8 credits at a 40% margin. Under BYO mode, you pay X directly at the same rates and graph8 only bills for classifier + brand-query passes.

The X Spend Banner inside the Social Listener page shows your running monthly X spend alongside graph8 credit burn. When usage crosses 80% of your configured cap, the banner turns into a warning; at 100%, listeners auto-pause until the next cycle. Shared-mode listeners also auto-pause when either graph8’s global shared quota or your per-org shared cap is reached - upgrade to BYO to lift those caps.

TOS-Safe Storage

graph8 keeps tweet text strictly scoped to your org row. We never index post text cross-tenant, never redistribute it, and never share it between customers. See the internal compliance doc for the full row-scoping architecture.