Lead-to-Sales with Process Routing: From Marketing Lead to CRM Contact

Your marketing generates leads. Your sales team qualifies them. So far, so clear. But what happens in between? More precisely: What happens at the moment of lead-to-sales integration, when sales converts a lead in the CRM and a lead record suddenly becomes a contact, an account, and perhaps an opportunity?

If you use a marketing automation platform like Evalanche, Inxmail, or HubSpot Marketing Hub, and your sales team works in a CRM like Salesforce or Dynamics 365 Sales, you probably know the problem: The synchronization runs, leads flow dutifully from marketing into the CRM. But as soon as sales converts a lead, the assignment breaks. Updates go nowhere, duplicates arise, or worse: data disappears silently.

MARINI, the iPaaS platform for data integration and customer intelligence, solves exactly this problem with Process Routing: two MARINI HubEngine plans with mutually exclusive conditions that automatically recognize whether a lead is still a lead or already a contact. No manual reconfiguration, no duplicates, no data loss.

This cookbook article shows you step by step how to build this routing. In the end, your marketing leads synchronize cleanly into the CRM, and after conversion, the integration seamlessly switches to contact and account. Your marketing receives feedback about converted leads, your sales team works with complete context.

What You Need: Data Objects and MARINI Features

Before we start, here’s an overview of the building blocks you’ll work with in this cookbook article:

Data Objects:

  • Marketing Leads (Source System): Profiles or leads from your marketing automation platform that are synchronized into the CRM
  • CRM Leads: Unqualified contacts in the CRM, with a converted flag (e.g., IsConverted in Salesforce)
  • CRM Contacts: Qualified contacts in the CRM that are created after lead conversion
  • CRM Accounts: Company records in the CRM that are linked with the contact during conversion

MARINI Features:

All set? Then let’s start by understanding what actually happens during a lead conversion.

What Happens During a Lead Conversion in the CRM?

To properly set up process routing, you need to understand what structurally happens in the CRM during a conversion. This isn’t a simple status change, but an object change with far-reaching consequences.

Imagine two phases:

Phase 1: The lead lives. Your marketing system creates a lead. The integration synchronizes it as a lead record into the CRM. Sales sees the lead, qualifies it, processes it. Everything works. The Converted field is set to false (or 0).

Phase 2: The lead is converted. Sales clicks “Convert”. In the CRM, the following now happens: The lead record is closed (Converted = true). A new Contact record is created. An Account is assigned or newly created. Optionally, an Opportunity is created.

The problem: Your marketing system knows nothing about all this. It still only knows the one lead record. Without process routing, the synchronization tries to continue updating the closed lead in the CRM. This either fails, creates a duplicate, or overwrites data that sales has already maintained in the new contact.

The solution: Two MARINI HubEngine plans with data and process routing that automatically decide where to synchronize based on the converted field.

This principle works across systems: regardless of whether your CRM is Salesforce, Dynamics 365 Sales, or another system with lead-contact separation. What matters is that the CRM provides a converted field (or comparable flag) that reflects the lead’s status.

Plan 1: Synchronize Marketing Leads While Not Converted

The first plan is the standard case: Marketing leads flow into the CRM and are created and updated there as lead records. This plan runs as long as the lead in the CRM has not yet been converted.

Here’s how to proceed:

1. Create plan. Create a new plan in the MARINI HubEngine. Connect your marketing system (input) with the CRM lead object (output). Choose the synchronization direction: Typically, the marketing system is the input and the CRM is the output.

2. Configure mapping. In the Mapping Editor, you assign the fields: name, email, company, phone, and all other relevant fields. Make sure the field for the CRM lead ID and the converted field are present in the mapping, even if you don’t actively write to them. You need them for the condition and backpersist.

3. Set condition. Now comes the crucial step. Create a condition:

  • Field type: Target System Field
  • Field: Converted (or IsConverted)
  • Operator: Not Equals
  • Value: 1

Add a second rule:

  • Field: Deleted
  • Operator: Not Equals
  • Value: 1

Both rules are linked with AND. This means: This plan only synchronizes when the lead in the CRM is not converted and not deleted.

4. Configure backpersist. Enable the backpersist creation field so that the CRM lead ID is automatically written back to the source system after creating a new lead record. This is the basis for the MARINI HubEngine to recognize the record during subsequent updates.

Done! Plan 1 is set up. New marketing leads are created as CRM leads, the ID is written back, and the plan automatically ignores all leads that have already been converted. If you’re looking for an existing blog article on the topic: Our article on marketing automation without CRM data shows why this connection is so crucial.

Plan 2: Synchronize Converted Leads as Contacts

Now it gets interesting. Plan 2 takes over exactly where Plan 1 stops: As soon as sales converts a lead, the synchronization switches to the contact record.

1. Create second plan. Create a new plan in the MARINI HubEngine. Connect the same marketing system (input) with the CRM Contact object (output). The input is identical to Plan 1, only the target object changes.

2. Set condition (counterpart to Plan 1). The condition is the exact opposite:

  • Field: Converted, Operator: Equals, Value: 1
  • Field: Deleted, Operator: Not Equals, Value: 1

This ensures that Plan 2 only applies to converted leads and Plan 1 only to non-converted ones. At any point in time, exactly one plan is active per record.

3. Enable Not Use Relation Store. This is a detail that’s easily overlooked, but crucial. Set the Not Use Relation Store setting to True in the plan’s advanced options. Why? Because the MARINI HubEngine normally manages the assignment via the relation store, which stores the connection between source and target ID. After conversion, however, there’s a new record (the contact) with a new ID. The old lead relation entry points nowhere. Instead, you use the Relation Identifier.

4. Configure Relation Identifier. Configure the relation identifier to the field that contains the contact ID in the CRM. During conversion, the CRM writes the new contact ID (and often also the original lead ID) into the contact record. The MARINI HubEngine uses this field to assign the converted contact to the existing marketing lead.

5. Adjust mapping. Contact fields can differ from lead fields. A contact typically has a link to the account (AccountId) that a lead doesn’t have. Adjust the mapping in the Mapping Editor accordingly.

The Not Use Relation Store setting is the most common error when configuring Plan 2. If you forget it, the MARINI HubEngine tries to find the old lead record in the CRM, which is already closed. The result: Updates go nowhere or duplicates are created. When in doubt: Check the instructions for lead-contact conversion in the Help Center.

Conditions in Detail: Mutually Exclusive Conditions

Let’s look at the conditions again in detail, because they are the heart of process routing.

You configure the conditions in the Connection tab of each plan. Under the mapped fields, you’ll find the option to create a New Rule. There you select:

Setting Plan 1 (Lead) Plan 2 (Contact)
Field type Target System Field Target System Field
Field Converted / IsConverted Converted / IsConverted
Operator Not Equals Equals
Value 1 1
Second rule Deleted Not Equals 1 Deleted Not Equals 1
Link AND AND

The result is a switch: For each record, exactly one plan always applies. As long as Converted != 1, Plan 1 synchronizes to the lead. As soon as Converted = 1, Plan 2 takes over and synchronizes to the contact. There’s no state where both plans are active simultaneously, and no state where neither applies (assuming Deleted != 1).

What happens during the switchover? Imagine the sequence:

  1. Marketing lead is created. Plan 1 synchronizes it as a CRM lead. The lead ID is written back to the marketing system via backpersist.
  2. Sales converts the lead in the CRM. Converted changes to 1. A contact record is created.
  3. During the next synchronization cycle, the MARINI HubEngine checks the conditions: Plan 1 no longer applies (Converted = 1). Plan 2 applies (Converted = 1). Plan 2 uses the relation identifier, finds the new contact, and synchronizes there from now on.

Clean, automatic, without manual intervention.

Testing and Going Live

You’ve configured both plans, set the conditions, set up the relation identifier. Before you unleash the routing on your entire data set, test it with a few records. Here’s your checklist:

Test step 1: New lead. Create a new lead in the marketing system. Check whether Plan 1 creates it as a CRM lead. Check whether the lead ID is written back via backpersist.

Test step 2: Update lead. Change a field in the marketing lead (e.g., the phone number). Check whether the change arrives in the CRM lead.

Test step 3: Convert lead. Convert the lead in the CRM. Check whether a contact and an account are created. Check whether Converted = 1 is set.

Test step 4: Update after conversion. Change a field in the marketing lead again. Check whether the change now arrives in the Contact (not in the old lead). This is the crucial moment: If Plan 2 applies correctly, the update lands at the contact.

Test step 5: Monitoring. Check the logs in the MARINI HubEngine. You should see that Plan 1 no longer performs any action for the record and Plan 2 has taken over. More details on monitoring can be found in the HubEngine Handbook.

Common error sources: Forgotten Not Use Relation Store setting in Plan 2. Wrong relation identifier (lead ID instead of contact ID). Missing backpersist configuration in Plan 1, so the assignment doesn’t work during updates. When in doubt: Check logs, the MARINI HubEngine logs every step.

The Data Model Overview: Marketing System vs. CRM

One reason why process routing is necessary at all: Marketing systems and CRM systems model contact data fundamentally differently. The following table shows the typical difference:

Property Marketing Automation CRM (e.g., Salesforce, Dynamics)
Contact model One object (profile, contact, subscriber) Lead + Contact + Account (separated)
Lifecycle Linear status (e.g., scoring) Object change during conversion
Company reference Field on contact (company name) Independent account object
After conversion No concept, lead remains lead Lead closed, contact + account new

This structural asymmetry is the core of the problem. The marketing system has a flat data model, the CRM has a hierarchical one. The MARINI HubEngine bridges this asymmetry through process routing: One marketing record, two CRM target objects, controlled by conditions. The same principle applies to modules in the MARINI DataEngine: You can create data containers for each object type and cache the data there if you want to transform or enrich it before synchronization.

Thinking Further: From Process Routing to Lead-to-Sales Process

The process routing you’ve just built is the technical foundation. But it’s also a springboard for advanced scenarios:

  • Build Golden Contact: Enrich the converted contacts in the MARINI DataEngine with data from other systems. Combine CRM data, ERP data, and external sources into a complete customer picture. Learn how to configure a Golden Record in the Help Center.
  • Activate Account-Based Marketing: Aggregate marketing interactions at the account level. If you’re already working with Evalanche and Salesforce, our cookbook article Evalanche-Salesforce: From Pool to Account-Based Marketing shows you how to move from lead pool to ABM approach.
  • Closed-Loop Reporting: Play opportunity status and revenue data back into the marketing system. This way, you measure which campaigns actually generate revenue, not just leads.
  • Upstream ETL Pipelines: If data needs to be transformed, deduplicated, or enriched before synchronization, you place the MARINI DataEngine as an ETL layer between the marketing system and CRM.

Process routing isn’t an isolated feature. It’s the first building block in a comprehensive Customer 360 approach that puts marketing and sales on the same data foundation.

Summary and Next Steps

What you’ve built in this cookbook article:

  1. Plan 1 synchronizes marketing leads as CRM leads as long as Converted != 1. The CRM lead ID is written back to the source system via backpersist.
  2. Plan 2 takes over after conversion and synchronizes the same marketing leads as CRM contacts. The relation identifier ensures correct assignment to the new contact record.
  3. Conditions control as mutually exclusive conditions which plan is active per record. No manual intervention needed.

The result: A clean lead-to-sales process that automatically leads from marketing lead through CRM lead to qualified contact and account. Your marketing receives feedback about converted leads, your sales team works with complete context. No duplicates, no data loss.

Can’t get any further or does your scenario have a special feature that isn’t covered here? No problem. Contact us, we’ll help you. Whether it’s about condition logic, special fields during conversion, or connecting a system not mentioned here: Together we’ll find the right configuration.

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