Intercom is built for real-time conversations with users and prospects. GitHub is where developers signal intent before they ever visit your website. GitLeads bridges these two systems: when a developer stars your tracked repo or mentions a keyword in a GitHub issue, GitLeads enriches that lead and pushes it to Intercom as a contact or event — triggering your existing automation.
Why Intercom for GitHub Developer Leads
- Intercom excels at product-led and conversation-led sales — exactly what developer tools need
- Inbound leads from GitHub are warm: they already know the problem your product solves
- Intercom workflows can auto-assign conversations to the right rep or bot sequence
- GitHub lead data (bio, languages, followers) enriches contact records for personalized messaging
- Event-based triggers in Intercom fire the right message at the right time
Option A: Webhook → Intercom Contacts API
// GitLeads webhook handler → Intercom Contacts API
import type { NextApiRequest, NextApiResponse } from 'next';
const INTERCOM_TOKEN = process.env.INTERCOM_ACCESS_TOKEN!;
interface GitLeadsLead {
github_username: string;
name: string | null;
email: string | null;
bio: string | null;
company: string | null;
location: string | null;
followers: number;
top_languages: string[];
signal_type: 'stargazer' | 'keyword';
signal_context: string;
profile_url: string;
}
export default async function handler(req: NextApiRequest, res: NextApiResponse) {
if (req.method !== 'POST') return res.status(405).end();
const lead: GitLeadsLead = req.body;
const contactPayload: Record<string, unknown> = {
role: 'lead',
external_id: `github-${lead.github_username}`,
name: lead.name ?? lead.github_username,
avatar: `https://github.com/${lead.github_username}.png`,
custom_attributes: {
github_username: lead.github_username,
github_url: lead.profile_url,
github_followers: lead.followers,
github_bio: lead.bio ?? '',
github_languages: lead.top_languages.join(', '),
signal_type: lead.signal_type,
signal_context: lead.signal_context,
},
};
if (lead.email) contactPayload.email = lead.email;
if (lead.company) contactPayload.company = { name: lead.company };
const response = await fetch('https://api.intercom.io/contacts', {
method: 'POST',
headers: {
Authorization: `Bearer ${INTERCOM_TOKEN}`,
'Content-Type': 'application/json',
'Intercom-Version': '2.10',
},
body: JSON.stringify(contactPayload),
});
if (!response.ok) {
const error = await response.text();
return res.status(500).json({ error });
}
const contact = await response.json();
await fetch('https://api.intercom.io/events', {
method: 'POST',
headers: {
Authorization: `Bearer ${INTERCOM_TOKEN}`,
'Content-Type': 'application/json',
'Intercom-Version': '2.10',
},
body: JSON.stringify({
type: 'event',
event_name: 'github_signal_captured',
created_at: Math.floor(Date.now() / 1000),
id: contact.id,
metadata: {
signal_type: lead.signal_type,
context: lead.signal_context,
followers: lead.followers,
languages: lead.top_languages.join(', '),
},
}),
});
res.status(200).json({ contact_id: contact.id });
}Option B: GitLeads Webhook → Zapier → Intercom
- In GitLeads dashboard, go to Integrations → Webhook and copy your webhook URL
- In Zapier, create a new Zap: Trigger = Webhooks by Zapier (Catch Hook)
- Action = Intercom → Create or Update Contact
- Map fields: email → Email, github_username → External ID, bio → Notes, top_languages → Custom attribute
- Add a second action: Intercom → Create Event ("github_signal_captured") on the new contact
- Turn on the Zap and test with a real GitLeads signal
Intercom Workflow Triggers
- Trigger on "github_signal_captured" event → send in-app message or email sequence
- Branch on signal_type = "keyword" → route to sales rep for high-intent conversations
- Branch on followers > 500 → flag as influencer, notify DevRel team via Slack
- Branch on email present → enroll in email sequence; else → LinkedIn outreach reminder
- Set lead score in Intercom custom attribute for prioritization in Inbox
Lead Quality Filtering
- Minimum followers threshold (e.g., > 10) — eliminates bot accounts
- Signal type priority: keyword mentions > stargazer signals for intent
- Language filter: match your ICP stack (Go, Rust, TypeScript, Python, etc.)
- Email required: some teams only push leads with a public email to reduce noise
- Deduplicate by external_id (github-{username}) — Intercom upserts handle this natively
GitLeads captures GitHub stargazer signals and keyword mentions, enriches developer profiles, and pushes them to Intercom, HubSpot, Slack, Clay, and 15+ other tools in real time. Start free with 50 leads/month. Related: push GitHub leads to HubSpot, push GitHub leads to Slack, GitHub intent data for B2B sales.