Field Mapping Tool for converting sales leads

Does anyone know of a field mapping tool available for SuiteCRM like they have for ZOHO and VTiger that allows you to map which fields get moved to contacts, accounts and opportunities when converting a lead? That is a major feature that is essential is our decision of which CRM to go with. SUITE was what we were focusing on until I noticed that is missing.

We would love to use Suite CRM but we have many custom fields that we capture when creating a lead and track throughout our sales process. We need to have those fields move to opportunities once the lead is “converted”. We would also like to be able (from time to time) add or change additional fields so hard coding this in PHP does not seem realistic.

I have been thinking that maybe we just bypass the “lead” phase and go straight to creating an account/contact with the opportunity and that way we are only entering the data there once. Any thoughts on the foregoing


I am sure that when you convert a Lead in Suite if the custom fields exist in both the Lead and module you converting it to it will copy over the custom fields also as long as the field names are identical.


Thank you I tried it and you are indeed correct. If the custom field is there then the field is automatically copied when the lead is converted. Perfect!

1 Like

hey folks, this is definitely great to know about so thanks for posting.
My needs are slightly different, though. This link summarizes my problem:

I was hoping SuiteCRM would have a solution to this. Essentially, at the point when you are converting a lead and I click ‘create opportunity’ the default options appear. I want to customize what details appear there on a global level but I cannot figure out how to do it. According to the sugar post above it seems as though I may have to actually edit the PHP.

Is there a way to accomplish this without editing no php? I’m a php clutz… :frowning:


ps. Suite CRM rocks


What if the fields aren’t matching? What if I want to transfer custom field in SuiteCRM to a field with different name? E.G. I have first and last name of Leads module ( first_name and last_name) and I want to transfer them to custom created field of “first_name_c” in Accounts and default system field “name” in Accounts.

Best Regards,


This is so far that I have reached.

I have found the file where only make sense that mappings could be for Leads conversion so I:

Copied modules/Leads/views/view.convertlead.php

Edited file on that copied location and altered the code where possible default field mapping occurs, in this example it’s Leads to Accounts and where “name” fields gets it’s value from “account_name” field.

if ($module == “Accounts” && $field == ‘name’)
$focus->name = $this->focus->account_name;

Now, I have tried to remap this and to alter it, I wanted that Accounts “name” gets it’s value from “last_name” field of Leads. Also I added additional field check for “first_name_c”, since I need my first name to be filled in from Leads to Accounts as well on a conversion:

if ($module == “Accounts” && $field == ‘name’)
$focus->name = $this->focus->last_name;


if ($module == “Accounts” && $field == ‘first_name_c’)
$focus->name = $this->focus->first_name;


Problem is, when I alter this code, “Convert Lead” button breaks and empty white screen is shown, so I guess I am missing some coding and php knowledge to do more.

I have found that when I convert a lead into a new contact, the custom fields are added to the new contact, but when I convert a lead into an existing contact, the same custom fields do not copy over. Is there anything I can do to ensure the data is always copied over?

I’m trying to figure out why an existing contact would be there if you are converting a lead. A lead is typically a new contact (ie. an account with a person).

So you are saying that you added someone as a contact, without thinking that they may be a future lead and then one day you realized the contact was a lead?

What I typically do is abandon a contact and start fresh with a lead and force myself to walk through the conversion process to make sure everything is in the sales cycle the way that it should be. In my case, I would manually copy and paste over any of the contact info into the new lead module and then resave it, and then convert it. This may be a waste of time, but it forces me to make sure the new account, contact, and opportunity happen correctly. I would then go and delete the original ‘contact’.

Anyway, as far as a solution, my only best guess would be to make absolutely that field names (not the display names) are identical to the tee. If they are and it still doesn’t work, not sure. If it’s not a lot of work, my method might work for you.

To be honest, i didn’t know that the conversion process was able to put data into existing records, but this is good to know.

Hopefully I didn’t confuse you as I’m not a programmer, obviously. I’m just trying to give you some things to consider whilst you await more technical help.

I know this is an old thread but still an open issue with the latest SuiteCRM.
The convert lead process is handled by custom/modules/Leads/views/view.convertlead.php with the definitions (what gets mapped from lead to other objects) in custom/modules/Leads/metadata/convertdefs.php.
Currently (other than hard-coded special cases) you can only easily map stuff from lead to other objects if the field_name exactly matches on both objects…which is a bit silly of course.

The code (view.convertlead.php) has a LOT of hard-coded special cases.
Bit of a nightmare if you get into it.
An elegant way to handle this would be to expand the meta-data definitions in convertdefs.php to allow the current case (same field_name on both objects) but also to allow a from_field_name and to_field_name to allow custom mappings. For same-type fields (e.g. text field) this should be super easy. Mapping text field to drop-down values of course is more complex and likely requires custom code (hard coded special cases).

I want this as well and would patch view.convertlead.php to support this…but given the amount of special cases in there I am not really comfortable touching that code.