Skip to main content

Sync unsubscribes between lemlist and your CRM

Map lemlist's 4 unsubscribe fields — Do not contact, Email unsubscribed, Phone unsubscribed, LinkedIn unsubscribed — to boolean checkbox fields in HubSpot, Salesforce, or Pipedrive.

Once mapped, statuses sync both ways automatically. Do not contact acts as a master switch that unsubscribes all channels at once. Mapping is opt-in — nothing syncs until you map the fields.


Why this matters

Unsubscribe statuses can sync both ways between lemlist and supported CRMs, helping your team stay compliant and preventing outreach on channels a contact has opted out from.


Prerequisites

  • You should already have a supported CRM connected to lemlist: HubSpot, Salesforce, or Pipedrive.

  • You should already know how to access your team integration settings in lemlist.

  • Your CRM should have boolean checkbox fields available for mapping.


How unsubscribe sync works

lemlist now includes 4 default contact fields that can be mapped to CRM fields:

  • Do not contact (global)

  • Email unsubscribed

  • Phone unsubscribed

  • LinkedIn unsubscribed

These fields are boolean:

  • true = unsubscribed

  • false or empty = not unsubscribed

Once mapped, each field syncs both ways between lemlist and your CRM.


Phase 1: Open your CRM field mapping settings

  1. Open Settings from your lemlist workspace. Click your profile in the bottom-left corner, then select Settings. This is where team-wide CRM configuration lives.

    Profile menu in lemlist with Settings highlighted
  2. Go to your CRM integration settings. In the left sidebar, click Integrations, then on your connected CRM click Settings. This opens the integration configuration where field mappings are managed.

    Integrations page with CRM Settings button highlighted

Phase 2: Map the unsubscribe fields

  1. Open the Field Mapping tab and map each unsubscribe field. In your CRM settings, go to Field Mapping, search for the lemlist field you want to map, such as Do not contact, then select the matching CRM checkbox field from the dropdown. Repeat this for all unsubscribe fields you want to sync.

    CRM field mapping page showing Field Mapping tab, search box, and field selector for Do not contact

Important: mapping is opt-in. Nothing syncs until your team maps these fields.

What to map

  • Do not contact: Global unsubscribe status across all channels.

  • Email unsubscribed: Blocks email outreach.

  • Phone unsubscribed: Blocks calling and phone-based outreach.

  • LinkedIn unsubscribed: Blocks LinkedIn outreach.

CRM-specific setup notes

  • Salesforce

    • Email unsubscribed: Salesforce can suggest its native Email Opt Out (HasOptedOutOfEmail).

    • Phone unsubscribed: Salesforce can suggest its native Do Not Call (DoNotCall).

    • Do not contact and LinkedIn unsubscribed: create custom boolean fields.

  • HubSpot

    • HubSpot does not provide a native writable field suggestion for this setup.

    • Unsubscribed from all email (hs_email_optout) is read-only and calculated by HubSpot, so it cannot be written through the API and is not offered for mapping.

    • Create or map custom checkbox properties for all 4 fields.

  • Pipedrive

    • Create and map custom boolean fields for these statuses.

Use boolean fields only. If you map a field of another type, the sync will fail. After correcting the mapping, the unsubscribe values will sync on the next cycle.

Phase 3: Understand what syncs from lemlist to the CRM

When a contact is unsubscribed in lemlist, the mapped CRM field is updated automatically. This includes unsubscribes coming from:

  • the lemlist app

  • the browser extension

  • the API

  • bounces

  • abuse or spam reports

  • unsubscribe link clicks from the lead

Channel fields turn true as soon as at least one value for that channel is unsubscribed.

For example, if a contact has 3 email addresses and only 1 is unsubscribed, Email unsubscribed becomes true.

Phase 4: Understand what syncs from the CRM to lemlist

When someone checks a mapped unsubscribe field in the CRM, lemlist picks up that change during the next field-mapping sync cycle.

After that:

  • the contact is unsubscribed in lemlist for the relevant scope or channel

  • they stop being contacted in campaigns on that channel

  • the action is recorded in the contact history as coming from CRM sync

Note: CRM → lemlist is a polling sync, not instant. Changes made in the CRM are applied on the next sync cycle.

Phase 5: Master the “Do not contact” master switch

Do not contact is the most important field to understand because it acts as a master switch.

If you tick “Do not contact” in the CRM

  • The contact is unsubscribed globally in lemlist.

  • Every email address, phone number, and LinkedIn URL on that contact is unsubscribed.

  • Because those channels are now unsubscribed in lemlist, lemlist pushes the related channel fields back to the CRM.

  • That means Email unsubscribed, Phone unsubscribed, and LinkedIn unsubscribed will also become true for whichever of those fields are mapped.

In practice, checking one box in the CRM can result in all 3 channel fields being checked too.

If you untick “Do not contact” in the CRM

  • The contact is re-subscribed globally in lemlist.

  • Their email, phone, and LinkedIn unsubscribe statuses are also cleared.

  • The 3 channel fields can return to false in the CRM.

  • This only works if none of the unsubscribes are protected.

If you untick only one channel field

For example, if you set Email unsubscribed to false:

  • email is re-enabled in lemlist

  • Do not contact is released

  • phone and LinkedIn remain unsubscribed if they were still opted out

This is useful when you want to reopen only one communication channel without changing the others.

The same logic applies from the lemlist side

If you mark a contact as Do not contact in lemlist, all 3 channels are unsubscribed and the 4 mapped fields are pushed back to the CRM.

Important: “Do not contact” is not just a label. It triggers a full global unsubscribe across email, phone, and LinkedIn, and that status propagates back to mapped CRM fields.

Phase 6: Know which unsubscribes cannot be reversed

Some unsubscribe states are protected and cannot be removed from the CRM.

This includes unsubscribes caused by:

  • hard bounces

  • abuse or spam complaints

  • unsubscribe link clicks from the lead

  • domain-level unsubscribe entries

  • team-level unsubscribe entries

If a CRM change tries to set one of these protected unsubscribes to false, lemlist rejects the change as a whole.

That means:

  • nothing is re-subscribed

  • the change is logged as a field rejection: crm_sync_unsub_state_protected

  • the sync stops retrying that same rejected update

For example, if an email hard-bounced, unticking a CRM checkbox will not make that address contactable again.


Practical example

Here’s a common workflow:

  1. Your team maps Do not contact, Email unsubscribed, Phone unsubscribed, and LinkedIn unsubscribed to CRM checkbox fields.

  2. A rep marks a contact as Do not contact in the CRM.

  3. On the next sync cycle, lemlist globally unsubscribes the contact and unsubscribes all email, phone, and LinkedIn values.

  4. lemlist then pushes the channel fields back to the CRM as true.

  5. Campaigns stop contacting that lead across all mapped channels.


Push existing unsubscribe data to your CRM

If you already have unsubscribe data stored in lemlist, mapping the fields does not automatically backfill all historical statuses into the CRM.

To push existing unsubscribe stock:

  • map the unsubscribe fields first

  • run a bulk Search & connect on the relevant contacts

This allows the unsubscribe statuses already stored in lemlist to be pushed to your CRM records.


Troubleshooting and common pitfalls

Issue: The unsubscribe field does not sync

Root cause: The mapped CRM field is not boolean.

  • Check the field type in your CRM.

  • Replace it with a checkbox/boolean field.

  • Update the mapping in lemlist.

  • Wait for the next sync cycle.

Issue: A contact stays unsubscribed even after unticking the CRM field

Root cause: The unsubscribe is protected.

  • Review whether the contact had a bounce, spam complaint, unsubscribe-link action, or a domain/team-level unsubscribe.

  • Check the contact for the rejection log crm_sync_unsub_state_protected.

  • Do not expect CRM unticks to override protected states.

Issue: The CRM was updated, but lemlist did not change immediately

Root cause: CRM → lemlist sync is polling-based, not real time.

  • Wait for the next field-mapping sync cycle.

  • Recheck the contact after the sync runs.

  • If needed, confirm the mapping is still active.

Issue: Checking “Do not contact” also checked all channel fields

Root cause: This is expected behavior.

  • Do not contact globally unsubscribes the contact.

  • That global unsubscribe also unsubscribes email, phone, and LinkedIn values.

  • lemlist then pushes those channel states back to the CRM as true.

Issue: I changed the contact in both lemlist and the CRM

Root cause: Both systems changed before the next sync cycle.

  • In this case, the most recent change wins.

  • Review timestamps if the final result seems unexpected.


Additional behavior to know

  • The 4 unsubscribe fields are computed and visible on contacts for all teams, even if CRM sync is not enabled.

  • The CRM push/pull behavior is gated by the unsubsCrmSync beta flag.

  • Both sync directions are protected against loops, so a value pulled from the CRM is not immediately pushed back, and vice versa.

  • Field rejections self-heal once the CRM value changes again.

Did this answer your question?