Community signals to warm leads: active community members at ICP accounts, flagged in the CRM
Common Room + HubSpot
Who it's for
SDRs and community or marketing teams who want to know which people active in their community work at accounts that fit the ICP, and get them flagged as warm in the CRM without stepping on account owners. HubSpot can be swapped for Salesforce, Attio or Pipedrive. There is no other community tool in this directory, so Common Room is the fixed piece.
What you get
Warm community leads, HubSpot check and the flag waiting for approval. Sample output: every company and person in it is fictional.
Common Room: 212 members with activity in the last 30 days in segment 'Community Slack'. Excluded 9 of our own employees. ICP: B2B software, 100–1,000 employees, US or UK. Fit: 7 yes, 3 unknown (blank fields), the rest no. | Person | Organization | Fit | Activity, last 30 days | HubSpot | |---|---|---|---|---| | Priya Raman | Mossgate Labs (fictional), 340 employees | Yes | 4 posts in #forecasting, attended office hours Oct 8 | Contact exists, no company owner, no open deal | | Dana Okafor | Fernhill Software (fictional), 140 employees | Yes | 2 questions in #integrations | Owner Alex Rivera, open deal 'Fernhill expansion'. Flagged for Alex, not tagged | | Tomas Elling | Org unknown (personal email) | Unknown | 6 posts | No match. Skipped | | Sam Whitlock | Larkspur Freightworks (fictional), 2,400 employees | No, over 1,000 | 1 reaction | Skipped | ...6 more Why Priya is warm: asked twice how other teams handle multi-region forecasts, and joined the Oct 8 office hours. Waiting for approval: set 'Community signal' to 'Warm' on 5 HubSpot contacts (current value blank on all 5). Owners and lifecycle stages won't change. Nothing has been updated yet.
Time and cost
Estimate About 15–25 minutes a week, most of it reading the activity and fit table.
Assumptions: A weekly run over about 200 active community members, about 10 at ICP-fit organizations, with one HubSpot property set per approved contact.
- Common Room: One catalog read, then queries for recent activity, the active contacts and their organizations. Nothing is written to Common Room. Credit use not confirmed by Common Room.
- HubSpot: One company search by domain and one contact search by email per fit person (about 10), then one property update per approved contact, plus one property create the first time, after you approve them. Credit use not confirmed by HubSpot.
Exact credit costs depend on your plan with each vendor. Check the tool pages before a large run.
MCP servers
Every server is confirmed in: ClaudeChatGPT
-
ClaudeChatGPTClaude CodeCursorCopilotRead + writeCredits not confirmed
https://mcp.commonroom.io/mcp -
ClaudeChatGPTRead + writeCredits not confirmedNeeds admin or IT
https://mcp.hubspot.com
Set up in a chat app
Every server in this recipe is confirmed for Claude and ChatGPT. Connect each one, then paste the prompts below into one conversation.
- Connect Common Room without code (Claude, ChatGPT)
- Connect HubSpot without code (Claude, ChatGPT)
Developer setup
Auth setup and mcp.json for Claude Code and Cursor
- Common Room: Sign in with OAuth in your client (run
/mcpin Claude Code). Do it once interactively, and the client stores and refreshes the token. - HubSpot: Sign in with OAuth in your client (run
/mcpin Claude Code). Do it once interactively, and the client stores and refreshes the token.
Put this in .mcp.json (Claude Code, project root) or ~/.cursor/mcp.json (Cursor). Swap the example keys for your own, and don't commit real ones. Remove the // comment lines if your client requires strict JSON.
{
"mcpServers": {
"common-room": {
"url": "https://mcp.commonroom.io/mcp"
},
"hubspot": {
"url": "https://mcp.hubspot.com"
}
}
}
Step-by-step prompts
- In Common Room, show me my catalog: the segments, activity types and organization fields I can query. Don't change anything.
- Find contacts in Common Room with activity in the last {days} days in {segment or channels}. Show name, organization, each activity with type and date, and an activity count. Skip anyone at {our domain} and anyone below {minimum activity}.
- Check each organization against my ICP: {ICP, e.g. B2B software, 100–1,000 employees, US or UK}. Use only the organization fields Common Room returns, and mark fit as unknown where a field is blank. Show me a table with person, organization, fit, the reason and an activity summary.
- For each person with a fit of yes, search HubSpot for the company by domain and the contact by email. Show the company owner, lifecycle stage, open deals and whether the contact exists. Flag customers and open deals. Don't change any records.
- Write one line on why each remaining person is warm, without quoting their posts. After I approve it, set {property name} to 'Warm' on those HubSpot contacts, and create that property first only if it doesn't exist and I approve that too. Show me the current values first and skip any that aren't blank.
Run it on a schedule (optional)
- Run it weekly. A question asked in the community this week is a better opener than one from last quarter.
- In a scheduled run, stop at the fit table and the HubSpot check. Approve the property updates yourself.
- Do a manual run first to settle your activity threshold, so a normal week gives a short list and not 200 names.
Where this goes wrong
- Light activity counted as a buying signal. A single reaction or a join event isn't much. Set a minimum (for example two posts or one event in {days} days), show every activity behind each person, and drop anyone below it.
- Wrong or missing organization. Members often join with a personal email, so the organization can be blank or wrong. Show where the organization came from, mark blank fields as unknown instead of guessing fit, and check HubSpot by name plus company for those.
- Stepping on an account owner. Some active members work at customers or accounts with an open deal. List the HubSpot owner and open deals for each, don't tag those contacts, and pass them to the owner instead.
- Outreach that quotes someone's community posts. Quoting a member's messages back to them feels like surveillance. Use activity to decide who to contact, and refer to the topic, not their words. Read every opener for quoted posts before it goes anywhere.
Gotchas
- HubSpot's setup needs an admin: non-admin users need a Super Admin to approve the connector before anyone can connect.
- Common Room's listed tools query contacts, organizations, activities and segments. There's no separate signals tool in the listing, so this recipe treats recent activity as the signal. Check which organization fields your instance returns before relying on fit.
- In Claude, a Claude admin may need to install Common Room at org level first, and Common Room admins can turn off MCP for the instance under Settings → MCP Server. In ChatGPT it isn't on the Free plan, and you enable it per chat from the + menu.
- Common Room can also write (create static segments, log activities, update contacts and organizations). This recipe writes only to HubSpot. If you'd rather keep the flag in Common Room, a static segment works, but ask for it separately and approve it.
- Using Salesforce instead? Its MCP server needs Enterprise Edition or above (Developer Edition also works) and an admin-created External Client App, and ChatGPT needs developer mode. Use SOQL queries to find accounts and contacts, and the platform/sobject-all server to update a field (platform/sobject-reads is read-only). Every tool call counts against the org's daily API request quota.
Download
Get the prompts, guardrails and expected output as one Markdown file. Paste it into a Claude Project or ChatGPT project's instructions, or save it as CLAUDE.md for Claude Code.
Download community-signal-leads.md
New recipe and breakage notes every week
Vendor sites: HubSpot. If we join an affiliate program, these links will be labeled as affiliate links.