Push GitHub Leads to Totango

Push enriched GitHub developer leads to Totango in real time. Capture stargazer and keyword intent signals and sync them to Totango accounts and touchpoints automatically.

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

Why GitHub Signals Belong in Totango

Totango is a customer success platform — it tracks account health, product usage, and customer touchpoints. But it has a blind spot: what your customers and prospects are doing on GitHub. When a developer at an existing account stars a competitor repo, that is a churn signal. When a prospect keywords your product name in a GitHub issue, that is a buying signal. GitLeads captures both and pushes them into Totango as touchpoints, account properties, or SuccessBLOC triggers — giving your CS team GitHub context without any manual work.

Integration Architecture: GitLeads → Totango

Totango does not have a native GitHub webhook receiver, but it exposes a REST API for creating touchpoints and updating account/user attributes. GitLeads sends enriched lead payloads via webhook; you route them to Totango using n8n, Zapier, or a lightweight serverless function.

Option 1: GitLeads Webhook → n8n → Totango API

// n8n Function node: transform GitLeads payload → Totango touchpoint
const lead = $input.item.json;

// Map lead to Totango touchpoint
const touchpoint = {
  account_id: lead.company?.toLowerCase().replace(/\s+/g, '-') || 'unknown',
  touchpoint_type: 'GitHub Signal',
  subject: `GitHub signal: ${lead.signal.type} on ${lead.signal.repo}`,
  content: lead.signal.context || `New ${lead.signal.type} signal detected`,
  timestamp: new Date().toISOString(),
  source: 'GitLeads',
  attributes: {
    github_username: lead.github_username,
    github_followers: lead.followers,
    github_company: lead.company,
    signal_repo: lead.signal.repo,
    signal_keyword: lead.signal.keyword || null,
    top_languages: lead.top_languages?.join(', '),
  },
};

// POST to Totango Touchpoints API
return {
  method: 'POST',
  url: 'https://api.totango.com/api/v3/touchpoints',
  headers: {
    'app-token': `${$credentials.totangoApiKey}`,
    'Content-Type': 'application/json',
  },
  body: touchpoint,
};

Option 2: GitLeads Webhook → Zapier → Totango

  1. In GitLeads: create a webhook destination and copy the signing secret
  2. In Zapier: create a new Zap — trigger: Webhooks by Zapier (Catch Hook)
  3. Add a Formatter step to map lead fields (github_username, company, signal.repo, signal.type)
  4. Add a Totango action: "Create Touchpoint" or "Update Account Attribute"
  5. Map: Account ID → company name or domain, Touchpoint Subject → signal description, Content → signal context text
  6. Test with a live GitLeads signal, then activate the Zap

Totango Account Attribute Updates via GitLeads

// Direct Totango Attribute Update API call
// Run this in your serverless function receiving GitLeads webhooks

async function syncLeadToTotango(lead: GitLeadsPayload) {
  const accountId = extractDomain(lead.email) || lead.company;

  const payload = {
    account: {
      id: accountId,
      attributes: {
        last_github_signal_date: new Date().toISOString(),
        last_github_signal_type: lead.signal.type,
        last_github_signal_repo: lead.signal.repo,
        github_buyer_intent_score: calculateIntentScore(lead),
      },
    },
    user: {
      id: lead.github_username,
      account_id: accountId,
      attributes: {
        github_username: lead.github_username,
        github_followers: lead.followers,
        github_languages: lead.top_languages?.join(','),
        github_bio: lead.bio,
      },
    },
  };

  await fetch('https://api.totango.com/api/v1/attributes/update', {
    method: 'POST',
    headers: {
      'app-token': process.env.TOTANGO_API_KEY!,
      'Content-Type': 'application/json',
    },
    body: JSON.stringify(payload),
  });
}

function calculateIntentScore(lead: GitLeadsPayload): number {
  let score = 0;
  if (lead.signal.type === 'keyword') score += 30;
  if (lead.signal.type === 'stargazer') score += 20;
  if (lead.followers > 500) score += 20;
  if (lead.email) score += 30;
  return Math.min(score, 100);
}

Totango SuccessBLOC Triggers from GitHub Signals

Once GitHub signal attributes are flowing into Totango, you can create SuccessBLOC playbooks that trigger on them. For example: when last_github_signal_type equals "stargazer" on a competitor repo, trigger a CS check-in playbook. When github_buyer_intent_score exceeds 70 for a free-tier user, trigger an expansion outreach. When a prospect company shows a keyword signal, create a new touchpoint and alert the AE.

GitLeads captures GitHub intent signals from new repo stargazers and keyword mentions, enriches the lead profiles, and pushes them to Totango, HubSpot, Salesforce, and 12+ other tools. We do not send emails — we find the signal, you close the deal. Start free at [gitleads.app](https://gitleads.app). Related: [push GitHub leads to Gainsight](/blog/push-github-leads-to-gainsight), [push GitHub leads to HubSpot](/blog/push-github-leads-to-hubspot), [push GitHub leads to Intercom](/blog/push-github-leads-to-intercom).

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