Evalanche to Salesforce: From Pool to Account-Based Marketing

Your marketing works with Evalanche, your sales team with the Salesforce Sales Cloud. Both systems do what they’re supposed to. But they don’t speak the same language.

Evalanche only knows profiles. A profile is a profile, whether it’s a newsletter subscriber, a qualified contact, or the CEO of a key account. Everything lands in a flat pool, a single table without relational connections. The Salesforce Sales Cloud, on the other hand, thinks in Leads, Contacts, and Accounts—cleanly separated, interconnected, with clear responsibilities. And it’s precisely in this gap between a flat pool structure and a relational data model that context, speed, and ultimately revenue get lost.

This cookbook article shows you how to set up the Evalanche Salesforce integration using MARINI, the iPaaS platform for data integration and customer intelligence, so that the flat pool becomes a clean relational model. You’ll build Golden Contacts via email lookup, assign them to Salesforce Accounts, and aggregate marketing interactions at the company level. The result: better data quality, faster sales response times, and the foundation for true Account-Based Marketing.

What you need for the Evalanche Salesforce integration

Before we get started, here’s a brief overview of the data objects and MARINI features used in this cookbook article:

Data Objects:

  • Evalanche Profiles (Pool): One-dimensional mixed entities from the Evalanche pool, without distinction between Leads, Contacts, and Accounts
  • Salesforce Leads: Unqualified contacts in the Salesforce Sales Cloud
  • Salesforce Contacts: Qualified contacts, linked to Accounts
  • Salesforce Accounts: Company records with relations to Contacts and Opportunities

MARINI Features:

  • MARINI DataEngine with Source Modules: Synchronize separate data sources from Evalanche and Salesforce into the DataEngine
  • Golden Record / Golden Contact (Lookup): Deduplication and consolidation via email-based lookup from three Source Modules
  • Account-Based Transformation: Assignment of Golden Contacts to Salesforce Accounts with aggregation of marketing interactions
  • HubEngine Mapping: Visual field mapping between Evalanche profiles and Salesforce objects
  • Monitoring and Logs: Monitoring of ongoing synchronization and transformation

Everything ready? Let’s get started.

Initial situation: Why a 1:1 sync doesn’t work

To understand why this integration needs more than simple field mapping, it’s worth looking at the two data models.

Evalanche works with a flat pool structure. Each profile sits in a pool, a kind of table. There’s no native distinction between a fresh newsletter subscriber and a long-standing customer. All information is stored in profile fields: email address, company, salutation, scoring values, campaign participation. But there are no relations, no hierarchy, no connection between people and companies.

The Salesforce Sales Cloud, on the other hand, is based on a relational data model with clearly separated objects:

Evalanche Salesforce Sales Cloud
Pool with profiles (one table) Lead: Unqualified contact, not yet assigned to an Account
No distinction by qualification Contact: Qualified contact, linked to an Account
No company level Account: Company record, 1:n relation to Contacts
Company name as text field Opportunity: Sales opportunity, linked to Account and Contact

If you now try to simply push Evalanche profiles 1:1 to Salesforce, here’s what happens: Every profile becomes a Lead. Or every profile becomes a Contact without Account assignment. Or even worse: Existing Salesforce Contacts get duplicated as new Leads because the system doesn’t recognize that this person already exists.

This isn’t an integration problem. It’s a transformation problem. And that’s exactly what the MARINI DataEngine is built for.

Loading data into the MARINI DataEngine: Setting up three Source Modules

The first real step: You pull the data from both systems into the MARINI DataEngine. Not to store it there, but to understand it, combine it, and transform it there.

For this, you set up three separate Source Modules. Modules are data containers in the MARINI DataEngine where you temporarily store data from external systems to process it in further steps. Each data source gets its own module:

  1. Evalanche Profiles: All profiles from the relevant Evalanche pool. Via the Evalanche API, profile data with all relevant fields (email, company, scoring, campaign history) is synchronized into the first Source Module.
  2. Salesforce Leads: All existing Salesforce Leads, so the DataEngine can recognize which Evalanche profiles already exist as Leads in the CRM.
  3. Salesforce Contacts: All existing Salesforce Contacts, so the DataEngine can recognize which Evalanche profiles already exist as qualified Contacts in the CRM.

Why three modules and not one? Because you need to keep the data separate in order to intelligently merge it in the next step. The consolidation doesn’t happen during import, but during lookup.

Done! Your three Source Modules are set up and data is flowing into the MARINI DataEngine. Now it gets exciting: We’ll build a Golden Contact from three separate data streams.

Building the Golden Contact: Three sources, one lookup

Now comes the crucial step. You have three Source Modules with data from Evalanche and Salesforce. Each module contains records that partially describe the same person: once as an Evalanche profile, once as a Salesforce Lead, once as a Salesforce Contact. The question is: How do you recognize that anna.mueller@example.com is the same person across all three sources?

The answer: Via Lookup. A lookup is a query that merges records from different modules via a common field. In this case, the common field is the email address.

The process looks like this:

  1. You create a new module in the MARINI DataEngine for the Golden Record, the so-called Golden Contact.
  2. For each Evalanche profile, the lookup checks: Is there a record in the Source Module “Salesforce Contacts” with the same email address?
  3. If yes: The Evalanche profile is merged with the Salesforce Contact. The Golden Contact then contains data from both sources, the marketing data from Evalanche and the CRM data from Salesforce.
  4. If no: Is there a record in the Source Module “Salesforce Leads” with the same email address?
  5. If yes: The Evalanche profile is merged with the Salesforce Lead.
  6. If no: The Evalanche profile is a new contact. It’s created as a new Golden Contact and can be synchronized to Salesforce as a new Lead in the next step.

The order is deliberately chosen: Contacts take precedence over Leads. If a person already exists as a qualified Contact in the CRM, no new Lead should be created. This way you avoid duplicates from the start.

The Golden Contact is not a new system and not a copy. It’s a consolidated view of a person across all data sources. Changes flow bidirectionally: If sales updates a phone number in Salesforce, it lands in the Golden Contact. If marketing calculates a new score in Evalanche, it does too.

Prioritization and field rules for the Golden Contact

When merging, an important question arises: What happens when the same field has different values in multiple sources? When Evalanche delivers Company = "Example GmbH" and Salesforce has Account.Name = "Example Group GmbH"?

For this, you define field rules in the Golden Record Module:

Field Priority Rationale
Email address Evalanche Marketing system has the most current opt-in status
Company name Salesforce Account CRM maintains the official company name
Phone number Salesforce Contact Sales maintains contact data directly
Lead score Evalanche Marketing scoring is Evalanche’s domain
Address data Salesforce Account Billing address from CRM is authoritative

These rules ensure that the Golden Contact always has the best possible data quality, regardless of which system was updated last. It’s not the latest date that wins, but the system that has the highest authority for that specific field.

Account-Based Transformation: Assigning Golden Contacts to Accounts

Up to this point, you have deduplicated Golden Contacts. Each Golden Contact represents exactly one person, enriched with data from Evalanche and Salesforce. That’s good. But for Account-Based Marketing, it’s not enough.

Account-Based Marketing doesn’t think in individual people, but in companies. The question isn’t “Did Anna Mueller open our newsletter?”, but “How active is Example GmbH overall with our marketing activities?” And for that, you need to assign Golden Contacts to their Salesforce Accounts.

The assignment works via Relation Lookup:

  1. For each Golden Contact that already exists as a Salesforce Contact, the Account assignment via the AccountId field is already present. This relation is directly adopted.
  2. For Golden Contacts that originate from Evalanche profiles without a Salesforce counterpart, the company name (Company) from the profile is matched against existing Salesforce Accounts. On a match, the assignment is created automatically.
  3. If no matching Account exists, a new Account can optionally be created in Salesforce, depending on your business rules.

Once the assignment is in place, it gets really interesting: You can aggregate marketing interactions at the Account level.

Aggregating marketing interactions at the Account level

Imagine Example GmbH has five contacts in your Evalanche pool: The marketing manager has downloaded three whitepapers, the CTO has attended a webinar, and the purchasing manager has subscribed to the pricing newsletter. Viewed individually, these are moderate interactions. Viewed together, this is a highly active Account that should be contacted urgently.

The aggregation works via ETL pipelines in the MARINI DataEngine:

  • Account Score: Sum of all individual lead scores of the assigned Golden Contacts
  • Campaign participation: Number and type of campaigns in which at least one contact of the Account has participated
  • Last interaction: Date of the most recent marketing activity across all contacts
  • Interaction breadth: Number of active contacts per Account (an Account with five active contacts is more relevant than one with a single newsletter reader)

These aggregated values are stored as custom fields on the Salesforce Account. Sales can see at a glance how active a company is interacting with marketing, without having to click through individual contacts.

At this point, you have something many companies never achieve: a complete view of marketing activities per Account. Not as an Excel export, not as a manual report, but as an automatic, continuously updated data flow.

Setting up synchronization: From Golden Contact to Salesforce

The transformation in the DataEngine is the core. But the data also needs to flow back to Salesforce. For this, you set up integration plans in the MARINI HubEngine, the integration and synchronization engine.

You need separate plans for different scenarios, controlled via HubEngine Conditions:

Plan 1: Create new Leads

  • Condition: Golden Contact has no match in Salesforce Leads and no match in Salesforce Contacts
  • Action: Create new Lead in Salesforce
  • Mapping: Evalanche profile fields are mapped to Salesforce Lead fields (Name, Email, Company, Score)

Plan 2: Update existing Leads

  • Condition: Golden Contact has a match in Salesforce Leads
  • Action: Update Lead data (Score, campaign status, last interaction)

Plan 3: Update existing Contacts

  • Condition: Golden Contact has a match in Salesforce Contacts
  • Action: Update Contact data, especially marketing interaction data

Plan 4: Sync back Account aggregations

  • Action: Write aggregated values (Account Score, campaign participation, last interaction) to the Salesforce Account

In the HubEngine Mapping, you visually assign the fields for each plan. Golden Contact fields are on the left, Salesforce fields on the right. Drag and drop, no code.

When mapping fields, note that Salesforce Leads and Contacts use different field names for seemingly identical information. The Company field on a Lead doesn’t automatically correspond to Account.Name on a Contact. In HubEngine Mapping, you define these assignments explicitly so nothing goes wrong.

Using the results: Account-Based Marketing and Lead-to-Sales

When everything is in place, you have an end-to-end data flow that turns Evalanche’s flat pool structure into a clean, relational model in Salesforce. But what do you do with it?

For sales:

  • Each Salesforce Account shows at a glance how actively the company is interacting with marketing
  • New Leads arrive with full context: not just name and email, but scoring, campaign history, and Account assignment
  • No more manual research about whether a contact already exists or which company they belong to

For marketing:

  • Account-Based campaigns in Evalanche based on Salesforce Account data: company-specific content, controlled by industry, company size, or Account Score
  • Feedback loop: When a Lead is converted in the CRM, this information flows back to Evalanche. Marketing automation without CRM data is now a thing of the past.
  • Closed-loop reporting: Which campaigns generate not just leads, but revenue?

For data quality:

  • No more duplicates between Evalanche and Salesforce
  • One Golden Record per person, automatically deduplicated and enriched
  • Clear field authorities: Each data point has exactly one authoritative source

Summary and next steps

In this cookbook article, you learned how to close the structural gap between Evalanche’s flat pool structure and the relational data model of the Salesforce Sales Cloud. The steps in overview:

  1. Understanding data models: Why a 1:1 sync doesn’t work
  2. Setting up three Source Modules in the MARINI DataEngine: Evalanche Profiles, Salesforce Leads, Salesforce Contacts
  3. Building Golden Contacts via email lookup: Deduplication across three sources
  4. Assigning Golden Contacts to Salesforce Accounts and aggregating marketing interactions
  5. Setting up integration plans in the MARINI HubEngine for synchronization to Salesforce

Inspiration for next steps:

  • Opportunity tracking back to marketing for true closed-loop reporting
  • D&B firmographic data for Account enrichment: industry, employee count, revenue directly on the Account
  • Lead Scoring based on aggregated Account interactions instead of just individual scores
  • Connect additional marketing channels to the same Golden Contact, such as Inxmail or Oracle Eloqua

For a deeper look at the challenge of flat lead pools and their transformation, check out the blog post Lead Pool, CRM Data Model and ABM. And if you want to understand the basic lead-to-sales handover process with MARINI, take a look at the cookbook article Lead-to-Sales: From Marketing Lead to CRM Contact.

Further details about the platform can be found in the HubEngine Handbook and the DataEngine Quickstart.

Stuck on a step? No problem. Contact us and we’ll help you. Whether it’s the lookup logic, the field rules, or the Account aggregation: That’s what we’re here for.

Marini Systems GmbH | Website | Datenschutz­erklärung | Impressum