Push GitHub Leads to Intercom: Developer Signal Routing Guide

Connect GitLeads to Intercom to route GitHub developer signals — new stargazers and keyword mentions — directly into your Intercom contacts and conversations.

Published: May 5, 2026Updated: May 5, 20267 min read

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

  1. In GitLeads dashboard, go to Integrations → Webhook and copy your webhook URL
  2. In Zapier, create a new Zap: Trigger = Webhooks by Zapier (Catch Hook)
  3. Action = Intercom → Create or Update Contact
  4. Map fields: email → Email, github_username → External ID, bio → Notes, top_languages → Custom attribute
  5. Add a second action: Intercom → Create Event ("github_signal_captured") on the new contact
  6. 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.

Want more like this? Get the weekly developer lead playbook.

No spam. 5 emails over 2 weeks. Unsubscribe anytime.

Related Articles

How to Find Leads on GitHub: The Complete Guide (2026)
10 min read
GitHub Leads vs LinkedIn Leads: When to Use Which (2026)
9 min read
GDPR Compliance for GitHub Lead Scraping: What You Must Know
8 min read