Sales · n8n

Automatically Log Lemlist Email Opens as Pipedrive Activities for Instant Follow-Up

When a prospect opens your Lemlist email, this workflow instantly creates a follow-up activity in Pipedrive so your sales team never misses a hot lead. No manual logging required — every open is tracked automatically.

difficulty Intermediatesetup 45 minresult A Pipedrive activity is created automatically every time a prospect opens a Lemlist email, giving sales reps a real-time prompt to follow up.
  1. 1

    Receive the Lemlist email-opened webhook

    Add a Webhook node as the trigger. Set the HTTP method to POST and copy the generated webhook URL. In your Lemlist account, go to Settings > Integrations > Webhooks, paste the URL, and select the emailOpened event. This node fires every time a prospect opens one of your emails.

  2. 2

    Extract the key fields from the Lemlist payload

    Add a Set node connected to the webhook. Create three fields: prospectEmail mapped to {{ $json.body.email }}, campaignName mapped to {{ $json.body.campaignName }}, and firstName mapped to {{ $json.body.firstName }}. These values will be used in the Pipedrive search and activity creation steps.

  3. 3

    Find the matching person in Pipedrive

    Add an HTTP Request node. Set the method to GET and the URL to https://api.pipedrive.com/v1/persons/search. Under Query Parameters, add term as {{ $json.prospectEmail }}, fields as email, and api_token as your Pipedrive API token (found in Pipedrive under Settings > Personal Preferences > API). This returns the Pipedrive person record matching the prospect's email.

  4. 4

    Create the follow-up activity in Pipedrive

    Add a second HTTP Request node. Set the method to POST and the URL to https://api.pipedrive.com/v1/activities. In the Body (JSON), include subject as Follow up - {{ $json.firstName }} opened email in {{ $json.campaignName }}, type as email, due_date as today's date using {{ $now.toFormat('yyyy-MM-dd') }}, person_id as {{ $('HTTP Request').item.json.data.items[0].item.id }}, and api_token as your Pipedrive API token. This creates a visible task reminding the rep to follow up.

  5. 5

    Confirm the activity was created

    Add an If node to verify success. Set the condition to check that {{ $json.success }} equals the boolean true. The true branch confirms the activity was logged correctly. The false branch can be connected to a Slack or email alert node later if you want failure notifications. For now, leaving the false branch unconnected is fine for basic setup.

Frequently asked questions

What if the prospect does not exist in Pipedrive yet?

The search node will return an empty items array, and the activity creation will fail silently. To handle this, you can add an If node after the search step to check whether a person was found, and if not, create the person first using a POST to /v1/persons before creating the activity.

Will this trigger every single time the same person opens the email?

Yes — Lemlist fires the emailOpened webhook on every open event, including repeat opens. If you only want one activity per prospect, add an If node that checks whether an activity with the same subject already exists in Pipedrive before creating a new one.

Where do I find my Pipedrive API token?

Log in to Pipedrive, click your profile icon in the top right, go to Personal Preferences, then click the API tab. Copy the personal API token and paste it into the `api_token` query parameter in both HTTP Request nodes.

About this recipe. Recipes on FlowRecipesHub are written for business owners, not developers, and are tested before publishing — how recipes get made. Some ingredient links are affiliate links that cost you nothing — full disclosure.