Why Route Developer Leads to PandaDoc
PandaDoc is a document automation platform used by sales teams to create proposals, contracts, and e-signature workflows. When you connect GitLeads to PandaDoc, you automatically create a contact and can trigger a proposal the moment a developer shows a buying signal on GitHub — before they fill out a form or request a demo.
How the GitLeads + PandaDoc Integration Works
GitLeads monitors GitHub for developer buying signals and pushes enriched developer profiles to your webhook endpoint. You then use the PandaDoc REST API to create a contact and optionally trigger a document from a template.
// Push GitHub developer signal to PandaDoc
import axios from 'axios';
interface GitLeadsDeveloper {
name: string;
email?: string;
company?: string;
github_username: string;
top_languages: string[];
}
async function createPandaDocContact(developer: GitLeadsDeveloper) {
if (!developer.email) return; // PandaDoc requires email
return axios.post(
'https://api.pandadoc.com/public/v1/contacts',
{
email: developer.email,
first_name: developer.name?.split(' ')[0] ?? developer.github_username,
last_name: developer.name?.split(' ').slice(1).join(' ') ?? '',
company: developer.company ?? '',
metadata: {
github_username: developer.github_username,
top_languages: developer.top_languages.join(', '),
source: 'gitleads',
},
},
{ headers: { Authorization: `API-Key ${process.env.PANDADOC_API_KEY}` } }
);
}
// GitLeads webhook handler
app.post('/webhook/gitleads', async (req, res) => {
const { developer, signal_type, repo } = req.body;
await createPandaDocContact(developer);
// Optionally trigger a proposal template for stargazer signals
if (signal_type === 'stargazer' && developer.email) {
await axios.post(
'https://api.pandadoc.com/public/v1/documents',
{
name: `Developer Proposal — ${developer.name ?? developer.github_username}`,
template_uuid: process.env.PANDADOC_TEMPLATE_UUID,
recipients: [{
email: developer.email,
first_name: developer.name?.split(' ')[0],
role: 'Developer',
}],
tokens: [
{ name: 'Developer.Name', value: developer.name ?? developer.github_username },
{ name: 'Developer.Company', value: developer.company ?? '' },
{ name: 'Signal.Repo', value: repo ?? '' },
],
},
{ headers: { Authorization: `API-Key ${process.env.PANDADOC_API_KEY}` } }
);
}
res.sendStatus(200);
});Connecting GitLeads to PandaDoc via Zapier
If you prefer a no-code approach, use Zapier to connect GitLeads to PandaDoc:
- In GitLeads, go to Integrations and select Zapier. Copy the GitLeads Zapier webhook URL.
- In Zapier, create a new Zap. Choose "Webhooks by Zapier" as the trigger and paste the GitLeads URL.
- Add a Filter step to only proceed when developer.email is not empty.
- Add a PandaDoc action: "Create Contact" — map developer.name, developer.email, and developer.company.
- Optionally add a second PandaDoc action: "Create Document from Template" to auto-generate a proposal.
- Test with a live GitLeads signal and activate the Zap.
Best Practices for PandaDoc Developer Lead Workflows
- Filter for email presence before creating PandaDoc contacts — leads without emails cannot receive documents
- Use signal context (starred repo or keyword match) to select the right proposal template
- Route to HubSpot or Pipedrive first, then trigger PandaDoc only for sales-qualified leads
- Set document expiry to 7 days to create urgency without being pushy
- Track PandaDoc document open events and notify your sales team via Slack