GitLeads + Outplay: GitHub Signals into Sales Sequences
GitLeads monitors GitHub for developer buying signals — new stargazers on tracked repos, keyword mentions in Issues and PRs — and Outplay enrolls those developers into personalized multi-channel sequences. Together they form a fully automated developer-first pipeline: GitHub signal → enriched lead → Outplay sequence.
What GitLeads Sends to Outplay
Each lead GitLeads captures includes:
- Name and email (when public on GitHub profile)
- GitHub username and profile URL
- Company from bio field
- Location (city/country)
- Top programming languages
- Follower count and bio text
- Signal context: which repo was starred, or which keyword was matched and in what PR/Issue
Integration Architecture
GitLeads does not have a native Outplay connector yet, but the webhook integration takes under 10 minutes. Use GitLeads' outbound webhook to call Outplay's REST API and create or update prospects automatically.
// GitLeads webhook → Outplay prospect creation
// Deploy as Cloudflare Worker, Vercel Edge Function, or n8n webhook
export default {
async fetch(request: Request): Promise<Response> {
const lead = await request.json() as {
github_username: string;
name: string;
email: string;
company: string;
location: string;
signal_type: string;
signal_context: string;
};
// Skip leads without email — Outplay requires email
if (!lead.email) {
return new Response('skipped: no email', { status: 200 });
}
const outplayApiKey = process.env.OUTPLAY_API_KEY!;
// Create prospect in Outplay
const res = await fetch('https://api.outplayhq.com/api/v1/prospects', {
method: 'POST',
headers: {
'Authorization': `Bearer ${outplayApiKey}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
email: lead.email,
first_name: lead.name?.split(' ')[0] ?? lead.github_username,
last_name: lead.name?.split(' ').slice(1).join(' ') ?? '',
company: lead.company ?? '',
city: lead.location ?? '',
custom_fields: {
github_username: lead.github_username,
signal_type: lead.signal_type,
signal_context: lead.signal_context,
},
}),
});
return new Response(JSON.stringify({ status: res.status }), { status: 200 });
},
};Enroll Directly into a Sequence
Once a prospect is created in Outplay, use Outplay's sequence enrollment API to add them to the right cadence based on the signal type. Stargazer leads and keyword leads often warrant different sequences:
// Enroll new prospect into a sequence by signal type
async function enrollInSequence(
prospectId: string,
signalType: 'stargazer' | 'keyword',
outplayApiKey: string
): Promise<void> {
const sequenceId = signalType === 'stargazer'
? process.env.OUTPLAY_STARGAZER_SEQUENCE_ID
: process.env.OUTPLAY_KEYWORD_SEQUENCE_ID;
await fetch(`https://api.outplayhq.com/api/v1/sequences/${sequenceId}/enroll`, {
method: 'POST',
headers: {
'Authorization': `Bearer ${outplayApiKey}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({ prospect_id: prospectId }),
});
}Outplay Sequence Tips for Developer Leads
- Step 1 (day 0): LinkedIn view — developers check who viewed them; this warms up the touchpoint
- Step 2 (day 2): Email referencing the specific GitHub signal ("noticed you starred X" or "saw your PR about Y")
- Step 3 (day 5): LinkedIn connection request with a short technical note
- Step 4 (day 10): Follow-up email with a relevant technical resource (docs, benchmark, case study)
- Keep sequences short (4–5 steps) — developers disengage from long, generic cadences quickly