Four LeadGrid API integrations your team will actually use

LeadGrid exposes every pipeline action as a REST endpoint. Here are four integrations teams build in an afternoon, with real code examples.

apiproductguidesBy Ralf Klein · 4 min read
Hand typing on a laptop keyboard in a sleek modern office workspace
Photo by Jakub Zerdzicki on Pexels

LeadGrid is built API-first. Every action you can take in the UI - create a dossier, move a lead through a stage, add a note, assign an owner - is a documented REST call. That's a design choice, not a side feature.

According to the Postman 2025 State of the API Report, 82% of organizations have adopted some level of an API-first approach. The teams that build on top of their pipeline tool rather than around it are the ones that stop doing the same manual task twice a week.

Here are four integrations teams actually ship, with the code to prove it.

1. Web form submission creates a dossier automatically

This is the most common one. You have a contact form, a landing page, or a partner referral link. Someone fills it in. Right now, someone on your team manually copies that data into LeadGrid. That's the first thing to kill.

The LeadGrid API lets you POST /dossiers to create a new record in any pipeline. A simple webhook receiver in Node handles the rest:

// Triggered by your form provider (Typeform, Tally, native form - doesn't matter)
app.post('/webhook/new-lead', async (req, res) => {
  const { name, email, company } = req.body;
 
  await fetch('https://api.leadgrid.io/v1/dossiers', {
    method: 'POST',
    headers: {
      'Authorization': `Bearer ${process.env.LEADGRID_API_KEY}`,
      'Content-Type': 'application/json',
    },
    body: JSON.stringify({
      pipelineId: 'your-pipeline-id',
      title: `${name} - ${company}`,
      fields: { email, company },
    }),
  });
 
  res.sendStatus(200);
});

New lead in. No copy-paste. No one forgets.

2. Stage change fires a Slack notification

Sales managers check LeadGrid. The rest of the team checks Slack. If a deal moves to "Negotiation" or a candidate reaches "Final interview", your Slack channel should know before anyone has to ask.

LeadGrid webhooks let you subscribe to dossier.stage_changed events. When that fires, forward to your Slack incoming webhook:

app.post('/webhook/leadgrid-events', async (req, res) => {
  const { event, data } = req.body;
 
  if (event === 'dossier.stage_changed') {
    const { title, stage, pipelineId } = data;
 
    await fetch(process.env.SLACK_WEBHOOK_URL, {
      method: 'POST',
      headers: { 'Content-Type': 'application/json' },
      body: JSON.stringify({
        text: `Pipeline update: *${title}* moved to *${stage}*`,
      }),
    });
  }
 
  res.sendStatus(200);
});

Thirty lines. Your team stops asking "where is that deal right now?"

3. Closed deal pushes a record to your HR or ERP system

When a recruitment placement closes or a sales contract is signed, your back-office needs to know. Manually exporting from LeadGrid and importing into your HR platform or ERP is the kind of busywork that turns into errors by Thursday afternoon.

Subscribe to dossier.closed events and push the structured data directly:

if (event === 'dossier.closed') {
  const { id, title, fields } = data;
 
  // Push to your HR system - swap for your vendor's API
  await fetch('https://api.your-hr-tool.com/employees', {
    method: 'POST',
    headers: {
      'Authorization': `Bearer ${process.env.HR_API_KEY}`,
      'Content-Type': 'application/json',
    },
    body: JSON.stringify({
      name: fields.candidateName,
      email: fields.email,
      startDate: fields.startDate,
      role: fields.jobTitle,
    }),
  });
}

LeadGrid becomes the trigger. Your HR system receives clean, structured data. No CSV in sight.

4. Nightly pipeline report sent to your inbox

Management wants a snapshot every morning. Who moved yesterday? What is stalled? What needs attention?

A simple cron job that calls GET /dossiers?filter=updated_since=yesterday and formats the result covers this entirely:

// Run every morning at 07:00 via cron or a scheduled function
const yesterday = new Date(Date.now() - 86400000).toISOString();
 
const response = await fetch(
  `https://api.leadgrid.io/v1/dossiers?updated_since=${yesterday}`,
  { headers: { 'Authorization': `Bearer ${process.env.LEADGRID_API_KEY}` } }
);
 
const { dossiers } = await response.json();
const summary = dossiers.map(d => `- ${d.title}: ${d.stage}`).join('\n');
 
// Send via Resend, Postmark, or any transactional email provider
await sendEmail({
  to: 'team@yourcompany.com',
  subject: `Pipeline update - ${new Date().toLocaleDateString()}`,
  text: summary || 'No changes since yesterday.',
});

The Postman 2025 State of the API Report also found that 52% of developers faced breaking changes from external vendors in 2024. LeadGrid maintains versioned endpoints (/v1/) so your integrations don't quietly break on a Tuesday.

The pattern behind all four

Each of these follows the same structure: listen for a trigger (webhook or schedule), call the LeadGrid API to read or write data, push the result somewhere else. The API surface is consistent, authenticated with a single bearer token, and returns predictable JSON.

That's what API-first actually means in practice. You don't build workflows inside LeadGrid. You build workflows on top of it.

Full API reference, authentication docs, and webhook event catalog are at leadgrid.io/docs.

Start free →

Share:
Free forever. No credit card.
Sales + recruitment in one grid
Start free