Why Send GitHub Signals to Pendo
Pendo is one of the most widely deployed product analytics and user feedback platforms for SaaS companies. It tracks in-app behavior, surfaces NPS, and powers guided onboarding. But Pendo only knows about users after they sign up. GitLeads fills the gap before signup — capturing developers who starred your repo, mentioned your keywords in a GitHub issue, or interacted with a competitor project — and can push those signals into Pendo as pre-signup visitor or account context.
The integration pattern: GitLeads captures GitHub intent signals → enriches the lead with name, email, company, bio, top languages → routes the payload via webhook or Zapier into your Pendo pipeline so PMs and growth teams have developer context before a user activates.
What GitLeads Sends to Pendo
- Visitor identity: GitHub username, name, email (when public), company
- Enrichment metadata: bio, location, followers, top programming languages
- Signal context: which repo was starred, which keyword was matched in an issue/PR
- Behavioral tags: "competitor_stargazer", "keyword_mention", "high_follower_count"
- Account-level data: company domain for Pendo account grouping
Integration Pattern: GitLeads → Webhook → Pendo
// Receive GitLeads webhook and upsert Pendo visitor
import express from 'express';
const app = express();
app.use(express.json());
app.post('/gitleads-webhook', async (req, res) => {
const lead = req.body.developer;
// Build Pendo visitor payload
const pendoVisitor = {
visitorId: lead.github_username,
metadata: {
name: lead.name,
email: lead.email,
company: lead.company,
bio: lead.bio,
location: lead.location,
topLanguages: lead.top_languages?.join(', '),
githubFollowers: lead.followers,
signalType: req.body.signal_type,
signalRepo: req.body.repo,
signalContext: lead.signal_context,
capturedAt: new Date().toISOString(),
},
};
// POST to Pendo Metadata API
await fetch('https://app.pendo.io/api/v1/metadata/visitor/custom/value', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'x-pendo-integration-key': process.env.PENDO_INTEGRATION_KEY!,
},
body: JSON.stringify({ values: { [pendoVisitor.visitorId]: pendoVisitor.metadata } }),
});
// Also upsert Pendo account if company domain is available
if (lead.email) {
const domain = lead.email.split('@')[1];
await fetch('https://app.pendo.io/api/v1/metadata/account/custom/value', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'x-pendo-integration-key': process.env.PENDO_INTEGRATION_KEY!,
},
body: JSON.stringify({
values: {
[domain]: {
githubLeadSource: 'gitleads',
topLanguages: lead.top_languages?.join(', '),
},
},
}),
});
}
res.json({ ok: true });
});Zapier Alternative: No-Code Routing to Pendo
- In GitLeads, configure a webhook destination pointing to Zapier Webhook trigger
- In Zapier, create a Zap: "Catch Hook" → "Pendo: Create or Update Visitor"
- Map GitLeads fields: github_username → visitorId, email → email, company → accountId
- Add a Filter step: only continue if signal_type = "stargazer" AND followers > 100
- Enable the Zap — enriched leads flow into Pendo automatically
Use Cases for GitLeads + Pendo
- PM insight: see which GitHub repos a new user starred before they signed up
- Onboarding personalization: show "We noticed you starred our repo" welcome flow
- Account enrichment: tag accounts by programming language before first login
- NPS targeting: send NPS surveys to developers who starred competitor repos
- Funnel attribution: correlate GitHub stargazer events with Pendo activation funnels
- Guide targeting: show relevant onboarding guides based on GitHub tech stack signal