Skip to main content

Salesforce Integration Overview

This article explains how Alsona integrates with Salesforce, what data flows between the two systems, and important limitations to understand when syncing Leads, Contacts, and LinkedIn conversations.

Jaclyn Curtis avatar
Written by Jaclyn Curtis
Updated over a month ago

Overview

Alsona’s Salesforce integration is designed to keep outbound activity and CRM data aligned without adding manual work for your team.

The integration focuses on three core areas:

  • Creating and managing Salesforce records generated by Alsona campaigns

  • Pulling existing Salesforce Leads or Contacts into Alsona campaigns

  • Logging LinkedIn conversations back to Salesforce for visibility and reporting

Because Salesforce environments vary widely, some behaviors are intentionally conservative to prevent accidental overwrites or corruption of existing CRM data.


Record Creation and Duplicate Handling

Fields Alsona Creates in Salesforce

When Alsona creates or updates a Lead or Contact in Salesforce, it populates the following fields when data is available from LinkedIn or enrichment sources:

  • First Name

  • Last Name

  • Company (Lead only; required by Salesforce)

  • Title

  • Email (when available)

  • Phone (when available)

  • LinkedIn URL (stored in a user-selected field; see below)

  • ln_campaigns_id__c (LinkedIn Campaigns ID)

These fields create a standard Salesforce Lead or Contact that can be routed, assigned, and worked like any other CRM record.

LinkedIn URL field selection
During Salesforce setup in Alsona, users choose which Salesforce field stores the LinkedIn profile URL. If no suitable field exists, Alsona can create a default custom field named linkedin_url__c.

Contact creation strategy
If Contact is selected as the entry strategy, Alsona will:

  • Upsert an Account by Company Name (and Website, when available)

  • Set Contact.AccountId to associate the Contact with the Account


How Alsona Prevents Duplicates

Alsona can only reliably prevent duplicates for records that it creates.

When Alsona creates a Lead, it assigns a persistent external identifier:

  • External key field: ln_profile_id__c (LinkedIn Profile ID)

This field uniquely identifies a LinkedIn profile. If the same profile appears in a future Alsona campaign, this key is used to prevent duplicate record creation.

When syncing prospects, Alsona attempts to match existing Salesforce records using the following conservative order:

  1. Match by ln_profile_id__c (highest confidence)

  2. If not present, match by LinkedIn URL (using the configured LinkedIn URL field)

If a match is found, Alsona:

  • Attaches ln_profile_id__c if it is missing

  • Fills only empty fields on the Salesforce record

If no match is found, a new Lead or Contact is created.


Overwrite Safety

To avoid overwriting existing CRM data, Alsona uses a fill-only strategy for common fields such as Title, Email, and Phone.

If a Salesforce record already contains a value, Alsona will not replace it.


Why Existing Salesforce Records Aren’t Fully De-duplicated

Leads or Contacts that already exist in Salesforce typically do not contain Alsona’s external key (ln_profile_id__c). Without a shared identifier, Alsona cannot reliably match new prospects to preexisting records.

To enforce cross-system duplicate prevention, both systems would need to agree on a shared matching field.

The most common option is email address, but this has limitations:

  • Alsona does not always have an email address for every LinkedIn profile

  • Email addresses may vary (aliases, personal vs. work, enrichment differences)

  • Many LinkedIn-first workflows begin without email data

Because of these constraints, Alsona does not enforce cross-system duplicate checks by default. This avoids false matches and unintended overwrites.

For teams that rely heavily on CSV imports or maintain strict email hygiene, using email as a shared matching field can be viable—but it is not guaranteed to be 100% accurate.


Pulling Salesforce Leads and Contacts Into Alsona

Alsona can also pull existing Salesforce Leads or Contacts into Alsona for use in campaigns.

How the Integration Source Works

When creating a campaign in Alsona, you can select Integration as the source type. This triggers a Salesforce sync that:

  • Pulls records in batches of 100 using pagination

  • Includes only Leads or Contacts that contain a LinkedIn profile URL

Currently, this integration logic is used only during campaign creation.

At setup time, Alsona pulls the first 100 eligible Salesforce records and makes them available as campaign prospects.


Why the 100-Record Limit Exists

The 100-record limit is intentional and tied to how Salesforce data is currently used inside Alsona.

While Alsona can technically retrieve all matching records, open questions remain around how larger datasets should be handled, including:

  • Creating campaigns with more than 100 Salesforce-sourced prospects

  • Segmenting or filtering Salesforce data inside Alsona

  • Supporting Salesforce-driven workflows beyond campaign creation

As these use cases are clarified and validated, the limit can be expanded safely without introducing performance or UX issues.


Logging LinkedIn Conversations to Salesforce

Alsona supports logging LinkedIn conversations directly to the corresponding Salesforce Lead or Contact, providing visibility into outbound and inbound activity.

Current Status

This functionality exists as draft code and has not yet been fully tested in production. This is primarily because real-world usage scenarios have not been clearly defined.

Once specific use cases are confirmed—such as reporting, automations, or sales workflows driven by LinkedIn replies—the feature can be fully validated and released.


How Message Logging Works

When a LinkedIn conversation is pushed from Alsona to Salesforce:

  • One Salesforce record is created per message

  • Each message is linked to the associated Lead or Contact


Option 1: Custom LinkedIn Message Object (Recommended)

If your Salesforce org includes Alsona’s custom object (linkedin_message__c), which is created automatically when Salesforce is connected, Alsona logs each message as a structured record with fields such as:

  • Message direction (incoming or outgoing)

  • Sent timestamp

  • Message body

  • Labels and metadata

These records are linked directly to the Lead or Contact, creating a clean, chronological conversation history.


Option 2: Standard Salesforce Tasks (Fallback)

If the custom object is unavailable—or if your team prefers native Salesforce objects—Alsona falls back to standard Salesforce Tasks:

  • Tasks are attached to the Lead or Contact

  • Message content is stored in the task description

This ensures conversation history is still captured even without custom objects.


Conversation Context on the Parent Record

In addition to logging individual messages, Alsona aggregates conversation labels and updates them on the parent Lead or Contact record. This allows reps and managers to quickly understand conversation status without opening each message.


Current Limitations

Some Salesforce logging features have not yet been implemented across all real-world workflows.

If you have a specific scenario in mind—such as:

  • Triggering automations based on LinkedIn replies

  • Reporting on message direction or engagement

  • Syncing conversation activity with opportunity stages

—sharing those details helps the team validate and test the behavior properly.


Summary

Alsona’s Salesforce integration is designed to be safe, flexible, and CRM-friendly:

  • Duplicate prevention applies only to records created by Alsona

  • Salesforce Leads and Contacts can be pulled into Alsona campaigns via the Integration source

  • LinkedIn conversations can be logged using structured custom objects or standard Salesforce Tasks

  • Conversation context is surfaced directly on the Lead or Contact record

As usage expands and more real-world workflows are validated, additional enhancements and higher data limits will continue to roll out.

Did this answer your question?