> ## Documentation Index
> Fetch the complete documentation index at: https://docs.stackone.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Lemlist Webhook Setup Guide

> Configure Lemlist to deliver events to StackOne.

## Prerequisites

Before continuing, you should have already completed the following for this connector:

<Steps>
  <Step title="Configure the Connector">
    Enable the connector and set up its connector profile in your project. See <a href="/connect/managing-connectors/overview">Managing Connectors</a>.

    <Columns cols={2}>
      <Card title="Connector Profile" href="/connectors/lemlist/guides/connector-profile/api-key" icon="https://stackone-logos.com/api/lemlist/filled/png" horizontal>
        Lemlist - API Key
      </Card>
    </Columns>
  </Step>

  <Step title="Link an Account">
    Connect an account using <a href="/embed/account-linking/overview">StackOne Hub</a> or <a href="/embed/account-linking/auth-link">Auth Link</a>.

    <Columns cols={2}>
      <Card title="Link Account" href="/connectors/lemlist/guides/link-account/api-key" icon="https://stackone-logos.com/api/lemlist/filled/png" horizontal>
        Lemlist - API Key
      </Card>
    </Columns>
  </Step>
</Steps>

<section data-guide-section data-guide-scopes="">
  <h2>How webhooks are set up</h2>

  <p>Lemlist delivers events through a webhook subscription, and StackOne provisions it for you on connection — there is nothing to configure in Lemlist and no URL to paste. StackOne registers a single Lemlist webhook subscribed to all event types; only the events you enable in StackOne are dispatched onward. When you disconnect the account, StackOne removes the subscription automatically.</p>

  <Steps>
    <Step title="Connect with your API key">
      <div data-guide-step data-guide-scopes="" data-guide-display-scopes-list="">
        <p>Authorize the connection with your Lemlist API key (Settings → Integrations → API & Webhooks → Generate key). StackOne uses it to create and delete the webhook subscription on your behalf — no further setup is needed in Lemlist.</p>
      </div>
    </Step>

    <Step title="Enable the events you need">
      <div data-guide-step data-guide-scopes="" data-guide-display-scopes-list="">
        <p>Enable the Lemlist events you want in StackOne. The provisioned webhook already covers every event type; StackOne dispatches only the events you have enabled.</p>
      </div>
    </Step>
  </Steps>
</section>

<section data-guide-section data-guide-scopes="">
  <h2>Delivery format & verification</h2>

  <p>Each delivery is a JSON body whose event type is in the `type` field. The record identifier is in `_id` for most events, `data[0].id` for enrichment events, and `campaignId` for campaign events. Lemlist sends no signature header; StackOne verifies deliveries via a shared secret echoed back in the payload and the per-account callback URL token, so no manual verification is required.</p>
</section>

<section data-guide-section data-guide-scopes="">
  <h2>Available webhook events</h2>

  <p>The events below can be enabled for this connection.</p>

  <Steps>
    <Step title="Lead state events">
      <div data-guide-step data-guide-scopes="" data-guide-display-scopes-list="">
        <p>Fired when a lead's lifecycle or interest status changes in a sequence.</p>

        <ul>
          <li><strong>Contacted</strong> (`contacted`) — the lead was contacted.</li>
          <li><strong>Hooked</strong> (`hooked`) / <strong>Attracted</strong> (`attracted`) / <strong>Warmed</strong> (`warmed`) — engagement milestones.</li>
          <li><strong>Interested</strong> (`interested`) / <strong>Not Interested</strong> (`notInterested`) — interest status changed.</li>
          <li><strong>Paused</strong> (`paused`) / <strong>Resumed</strong> (`resumed`) — the lead was paused or resumed.</li>
          <li><strong>Stopped</strong> (`stopped`) / <strong>Skipped</strong> (`skipped`) — the lead was stopped or skipped.</li>
        </ul>
      </div>
    </Step>

    <Step title="Email events">
      <div data-guide-step data-guide-scopes="" data-guide-display-scopes-list="">
        <p>Fired for email-channel activity (requires a connected sending mailbox).</p>

        <ul>
          <li><strong>Sent</strong> (`emailsSent`) / <strong>Opened</strong> (`emailsOpened`) / <strong>Clicked</strong> (`emailsClicked`) / <strong>Replied</strong> (`emailsReplied`).</li>
          <li><strong>Bounced</strong> (`emailsBounced`) / <strong>Failed</strong> (`emailsFailed`) / <strong>Send Failed</strong> (`emailsSendFailed`).</li>
          <li><strong>Unsubscribed</strong> (`emailsUnsubscribed`) / <strong>Interested</strong> (`emailsInterested`) / <strong>Not Interested</strong> (`emailsNotInterested`).</li>
        </ul>
      </div>
    </Step>

    <Step title="LinkedIn events">
      <div data-guide-step data-guide-scopes="" data-guide-display-scopes-list="">
        <p>Fired for LinkedIn-channel activity (requires a connected LinkedIn account).</p>

        <ul>
          <li><strong>Sent</strong> (`linkedinSent`) / <strong>Opened</strong> (`linkedinOpened`) / <strong>Replied</strong> (`linkedinReplied`) / <strong>Send Failed</strong> (`linkedinSendFailed`).</li>
          <li><strong>Interested</strong> (`linkedinInterested`) / <strong>Not Interested</strong> (`linkedinNotInterested`).</li>
          <li><strong>Invite</strong> done/failed/accepted (`linkedinInviteDone`, `linkedinInviteFailed`, `linkedinInviteAccepted`).</li>
          <li><strong>Visit</strong> done/failed (`linkedinVisitDone`, `linkedinVisitFailed`).</li>
          <li><strong>Voice note</strong>, <strong>follow</strong>, <strong>endorse</strong>, <strong>like last post</strong>, <strong>withdraw invitation</strong> — done/failed/skipped variants.</li>
        </ul>
      </div>
    </Step>

    <Step title="WhatsApp & SMS events">
      <div data-guide-step data-guide-scopes="" data-guide-display-scopes-list="">
        <p>Fired for WhatsApp and SMS channel activity (requires the respective channel connected).</p>

        <ul>
          <li><strong>WhatsApp</strong> (`whatsappMessageSent`, `whatsappMessageDelivered`, `whatsappMessageOpened`, `whatsappReplied`, `whatsappMessageFailed`).</li>
          <li><strong>SMS</strong> (`smsSent`, `smsDelivered`, `smsReplied`, `smsFailed`).</li>
        </ul>
      </div>
    </Step>

    <Step title="Call events">
      <div data-guide-step data-guide-scopes="" data-guide-display-scopes-list="">
        <p>Fired for Aircall calls and call processing (requires Aircall connected).</p>

        <ul>
          <li><strong>Aircall</strong> created/ended/done/interested/not-interested (`aircallCreated`, `aircallEnded`, `aircallDone`, `aircallInterested`, `aircallNotInterested`).</li>
          <li><strong>Call recording / transcript</strong> done (`callRecordingDone`, `callTranscriptDone`).</li>
        </ul>
      </div>
    </Step>

    <Step title="API & manual events">
      <div data-guide-step data-guide-scopes="" data-guide-display-scopes-list="">
        <p>Fired for API-step and manual actions on a lead.</p>

        <ul>
          <li><strong>API</strong> done/interested/not-interested/failed (`apiDone`, `apiInterested`, `apiNotInterested`, `apiFailed`).</li>
          <li><strong>Manual Interested</strong> (`manualInterested`) / <strong>Manual Not Interested</strong> (`manualNotInterested`).</li>
          <li><strong>Annotated</strong> (`annotated`) / <strong>Opportunities Done</strong> (`opportunitiesDone`).</li>
        </ul>
      </div>
    </Step>

    <Step title="Campaign, enrichment & system events">
      <div data-guide-step data-guide-scopes="" data-guide-display-scopes-list="">
        <p>Fired for campaign completion, lead enrichment, and workspace-level system alerts.</p>

        <ul>
          <li><strong>Campaign Complete</strong> (`campaignComplete`) — a campaign finished processing all leads.</li>
          <li><strong>Enrichment</strong> done/error (`enrichmentDone`, `enrichmentError`).</li>
          <li><strong>System</strong> — custom-domain errors, connection issues, send-limit reached, lemwarm paused, inbox-label updated, signal registered, deliverability alert (`customDomainErrors`, `connectionIssue`, `sendLimitReached`, `lemwarmPaused`, `inboxLabelUpdated`, `signalRegistered`, `deliverabilityAlertTriggered`).</li>
        </ul>
      </div>
    </Step>
  </Steps>
</section>

## Verify

Your Connector should now be able to receive and process events. Try triggering an event and you should see an Event appear in the Connector logs.
