New You can now run your Gelee campaigns from Claude, ChatGPT or Cursor. Read the docs →

Switching from another tool

From lemlist

lemlist's API calls, webhooks, terms and message variables, each mapped to its Gelee equivalent.

Last updated 25 October 2026

Deciding whether to switch?

The plain-English guide covers what you gain, what you give up and when to stay on lemlist: Switching from lemlist to Gelee.

What lemlist offers

lemlist has a developer API and webhooks. Webhooks can subscribe to single activities (for example linkedinReplied) or lead-state groups (contacted, warmed, interested). lemlist is moving its unsubscribe endpoints to a v2 API; its help center says the old /unsubscribes routes stop working on November 1, 2026.

Their words, our words

lemlistGeleeNotes
Campaign with LinkedIn stepsCampaignGelee campaigns are LinkedIn only.
LeadLead
Custom variableCustom field{{custom.key}}
UnsubscribeBlacklist
Sender's LinkedInSeat

API calls

Every lemlist call we found in its docs, and the Gelee call that does the same job. Gelee's base URL, keys and limits are in Keys and limits.

lemlistGeleeNotes
Add lead to campaignPOST /campaigns/{id}/leadsCustom variables become custom_fields.
UnsubscribesPOST /blacklist, GET /blacklist
Webhooks (add, list, delete)POST, GET, DELETE /webhooksSigned, with a timestamp.
ActivitiesGET /prospects/{id}/activityEvery invite, accept, message and reply with the seat and campaign.

Webhooks

Gelee signs every delivery and retries failures. Setup and signature checks are in Webhooks.

lemlistGelee webhookNotes
linkedinRepliedreply_receivedPlus reply_positive / reply_negative.
LinkedIn invite acceptedconnection_accepted
LinkedIn invite / message sentinvite_sent, message_sentPick by name.
interested (lead state)reply_positive, lead_updated
Email eventsStay in lemlistGelee does not send email.

Message variables

lemlistGelee
{{firstName}}{{firstName}}
{{companyName}}{{company}}
A custom variable{{custom.variable_name}}

Every Gelee variable:

ValueGelee variable
First name{{firstName}}
Full name{{fullName}}
Company{{company}}
Job title{{role}}
Industry{{industry}}
Your own per-lead field{{custom.your_field}}
A fallback when empty{{custom.your_field|default text}}
Sender's name{{senderName}}

Code from the guide

Push the blocklist
curl -X POST "https://www.gelee.ai/api/v1/blacklist" \
  -H "Authorization: Bearer gk_your_key" \
  -H "Content-Type: application/json" \
  -d '{"entries":[
        {"value":"https://www.linkedin.com/in/janedoe","type":"account"},
        {"value":"Acme Corp","type":"company"}
      ]}'
Push leads with your own fields
curl -X POST "https://www.gelee.ai/api/v1/campaigns/CAMPAIGN_ID/leads" \
  -H "Authorization: Bearer gk_your_key" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: import-batch-1" \
  -d '{"leads":[{"linkedin_url":"https://www.linkedin.com/in/janedoe",
                "first_name":"Jane","company":"Acme","title":"VP Sales",
                "custom_fields":{"report_link":"https://acme.example/r/5d70"},
                "tags":["imported"]}]}'

lemlist's docs