Skip to main content
This event is triggered when a lead accepts your LinkedIn connection request. This is a key milestone indicating the lead is now a 1st-degree connection and can receive direct messages.

When This Event Fires

  • A lead clicks “Accept” on your connection request
  • The acceptance is detected by SendPilot
  • The lead’s status changes to CONNECTION_ACCEPTED

Payload

{
  "eventId": "evt_1708456789123_abc123def",
  "eventType": "connection.accepted",
  "timestamp": "2024-02-24T10:30:00.000Z",
  "workspaceId": "ws_abc123xyz",
  "data": {
    "leadId": "lead_abc123",
    "campaignId": "camp_xyz789",
    "linkedinUrl": "https://www.linkedin.com/in/john-doe",
    "senderId": "sender_def456",
    "acceptedAt": "2024-02-24T10:30:00.000Z"
  }
}

Payload Fields

FieldTypeDescription
eventIdstringUnique event identifier for idempotency
eventTypestringAlways connection.accepted
timestampstringISO 8601 timestamp when the event was detected
workspaceIdstringYour workspace ID
data.leadIdstringThe lead who accepted the connection
data.campaignIdstringThe campaign this lead belongs to
data.linkedinUrlstringLinkedIn profile URL of the lead
data.senderIdstringLinkedIn sender account whose request was accepted
data.acceptedAtstringISO 8601 timestamp when the connection was accepted

Use Cases

Warm Lead Alert

Notify sales team of new warm connections

CRM Update

Update lead status in your CRM

Acceptance Tracking

Track connection acceptance rates

Welcome Workflow

Trigger welcome message or nurture sequence

Example Handler

app.post('/webhooks/sendpilot', async (req, res) => {
  const event = req.body;
  
  if (event.eventType === 'connection.accepted') {
    const { leadId, campaignId, linkedinUrl, acceptedAt } = event.data;
    
    // Update CRM
    await crm.updateLead(leadId, {
      status: 'connected',
      connectionAcceptedAt: acceptedAt
    });
    
    // Notify sales team
    await slack.postMessage({
      channel: '#new-connections',
      text: `🤝 New connection accepted!\n` +
            `Profile: ${linkedinUrl}\n` +
            `Campaign: ${campaignId}`
    });
    
    // The lead is now a 1st-degree connection - follow-up messages
    // will be sent automatically by the campaign sequence
    
    console.log(`Connection accepted by ${linkedinUrl}`);
  }
  
  res.status(200).send('OK');
});
When a connection is accepted, the lead becomes a 1st-degree connection. The campaign will automatically proceed to send follow-up messages according to the sequence.