Skip to content

Freshsales + CustomerLabs 1PD Ops

Freshsales is a cloud-based CRM that helps businesses manage interactions with existing and potential customers. It offers features such as one-click calling, lead tracking, sales pipeline management, and event tracking.

CustomerLabs 1PD Ops is a first-party data operations platform that unifies customer data from multiple sources, resolves identities, and syncs enriched profiles to your marketing stack.


By connecting Freshsales to CustomerLabs 1PD Ops, you create a real-time data bridge between your sales team and your marketing tools. Every time a contact is created, a lead moves stages, or a deal is updated in Freshsales — that data flows into CustomerLabs automatically.

With this integration, marketing teams can:

  • Enrich user profiles — Combine CRM data (name, email, lifecycle stage, job title) with behavioral data already in CustomerLabs to build 360° customer profiles.
  • Build precise audience segments — Create segments based on CRM lifecycle stages (e.g., “All contacts marked as MQL in the last 7 days”) for targeted campaigns.
  • Sync data to downstream tools — Push enriched profiles to ad platforms (Google, Meta, LinkedIn), email tools (Klaviyo, Brevo), and analytics destinations in real time.

Before you begin, ensure you have the following:

RequirementDetails
Freshsales AccountAdmin-level access to create workflows.
CustomerLabs AccountAn active CustomerLabs 1PD Ops account.
Webhook URLGenerated during setup in CustomerLabs (Step 1 below).

The integration uses a webhook-based approach:

  1. Freshsales fires a webhook whenever a configured event occurs (e.g., contact created or updated).
  2. CustomerLabs receives the webhook payload at a unique endpoint URL.
  3. Workflows in CustomerLabs process, filter, and map the incoming data into user profiles and events.
  4. Destinations receive the enriched data (ad platforms, email tools, analytics, etc.).

Freshsales CRM → (webhook) → CustomerLabs Source → (workflow) → Destinations


Step 1: Create a Custom Source in CustomerLabs

Section titled “Step 1: Create a Custom Source in CustomerLabs”
  1. Log in to your CustomerLabs 1PD Ops account.

  2. Navigate to Sources → click Connect Source.

    Connect Source in CustomerLabs
  3. Select Custom Source from the source list.

  4. Name the source with a clear, descriptive label.

  5. After saving, copy the Webhook URL displayed on screen. You will need this in the next step.

    Copy Webhook URL

Step 2: Create a Webhook Workflow in Freshsales

Section titled “Step 2: Create a Webhook Workflow in Freshsales”
  1. Log in to your Freshsales account (Admin access required).
  2. Navigate to: Admin SettingsTeams & TerritoriesWorkflows.
  3. Click Create Workflow.

You will create two separate workflows — one for contact creation and one for contact updates.

Freshsales Workflows section

This workflow fires every time a new contact is created in Freshsales.

  1. Inside Workflows, name it descriptively (e.g., CL – Contact Created).

  2. Set the Module to Contacts.

    Workflow Name and Module
  1. Set the trigger to: When a contact is created.

  2. Ensure the workflow is configured to run for every contact.

    Trigger Condition: Contact Created
  1. Choose Trigger Webhook as the action type.

  2. Paste the Webhook URL you copied from CustomerLabs (Step 1).

  3. Set Encoding Format to JSON and Content to Select All Fields.

  4. Click Test Webhook to verify the connection.

  5. Click Save to activate the workflow.

    Webhook Action Configuration

This workflow fires every time an existing contact is updated (e.g., lifecycle stage change, phone number updated).

  1. Click Create Workflow.

  2. Name it: CL – Contact Updated.

  3. Set the Module to Contacts.

    Workflow #2 Configuration
  1. Set the trigger to: When a contact is updated.

  2. Ensure the workflow runs for every contact update.

    Trigger Condition: Contact Updated
  1. Choose Trigger Webhook as the action type.

  2. Paste the same Webhook URL from CustomerLabs.

  3. Set Encoding Format to JSON and Content to Select All Fields.

  4. Click Test Webhook to verify and then Save.

    Webhook #2 Action

Step 5: Verify Incoming Data in CustomerLabs

Section titled “Step 5: Verify Incoming Data in CustomerLabs”
  1. Go to CustomerLabsSources.

  2. Select your Freshsales source.

  3. Click Fetch New Data.

  4. You should see incoming webhook payloads in the Source Logs.

    Fetch New Data in CustomerLabs

Now that data is flowing in, create workflows to process the events.

Inside your Freshsales source, click Create New Workflow.

ScenarioRecommended Name
Contact created in CRMcontact_created
Contact updated / stage changedcontact_updated
Lead lifecycle stage changedlead_stage_updated

Best Practice: Set a delay of 5 seconds for the second workflow, 10 seconds for the third, and so on.

Workflow Delay Configuration

Perform the corresponding action in Freshsales to generate data:

  • Contact Created: Create a new test contact.
  • Contact Updated: Update a field (e.g., change lifecycle stage) on a test contact.
  1. In CustomerLabs, click Fetch New Data.

  2. Review the samples and select the most complete one.

    Select Sample Data

7.3 Critical: Validate Sample Data (No Null Values)

Section titled “7.3 Critical: Validate Sample Data (No Null Values)”

Best Practice: Populate all fields on the test contact in Freshsales before triggering the event to ensure a clean sample.


  1. Click the Event Name dropdown.
  2. Select Custom Event.
  3. Enter a name (e.g., cl_contact_created).
  1. Select your primary identifier (recommended: identify_by_email).

  2. You can add up to 3 identifiers.

    Validating Sample Data

Map the Freshsales fields to CustomerLabs traits.

Freshsales FieldCustomerLabs TraitCategory
contact_first_nameFirst NameUser Trait
contact_last_nameLast NameUser Trait
contact_emailEmailUser Trait
contact_mobile_numberPhoneUser Trait
contact_companyCompanyUser Trait
contact_job_titleJob TitleUser Trait
contact_lifecycle_stage_nameLifecycle StageUser Trait
contact_cityCityUser Trait
contact_countryCountryUser Trait
contact_addressAddressUser Trait
User Identity Mapping
  1. Once configured, click Save and Activate.

For Workflow #2 (Contact Updated):

  1. Select Dynamic Event.

  2. Map it to the contact_lifecycle_stage_name field.

    Attribute Mapping Screen

Follow the same process as step 8.2 to ensure the update enriches the existing profile.

Ensure all relevant traits (Lifecycle Stage, Phone, etc.) are mapped so updates are captured.

Dynamic Event Configuration
  1. Click Save and Activate the workflow.