Skip to main content

Configure your Salesforce integration

To configure the Salesforce integration, you must first connect Eventmaker to your Salesforce instance by creating a connected app.

Updated over a week ago

Key points before you begin

Our connector only communicates with the following standard Marketing objects in Salesforce :

  • Contacts

  • Accounts

  • Leads

  • Campaign Members

In addition, it will never delete objects from your instance. Indeed, our connector's purpose is to push your event registration data, and for this purpose it will only create or update the entities listed above.

Main information

Salesforce campaign ID

Participants will be pushed to Salesforce as campaign members. You therefore need to indicate the Salesforce campaign to which they will be associated.

This is the campaign identifier Eventmaker needs. You can retrieve it by copying the 18 characters that make it up from your browser's URL bar when you are on the campaign page.

Then you can paste it into the dedicated field in the form.

Using Person Accounts in Salesforce

Person Accounts store information about individual people by combining certain Account and Contact fields into a single record in Salesforce. Check the box below if your Salesforce instance uses this option so the data flow between the two platforms adapts to this use case.

Once enabled, you can specify a record type for Account creation.

Reconciliation of participants with Salesforce data

Reconciliation consists of checking whether a participant already exists in your Salesforce instance, either as a Contact, as a Lead, or as a Person Account, in order to avoid creating duplicates. This reconciliation is done using uniqueness keys.

You have two possible choices:

  • Check only in the Contacts table (or Person Accounts if enabled)

  • First check in the Contacts table (or Person Accounts if enabled) and, if not found, check in the Leads table

Table for people unknown to Salesforce

When a participant does not yet exist in your CRM, they will be created as a Contact, or as a Person Account if enabled, or as a Lead.

If participant reconciliation is performed only on the Contacts table, a participant unknown to the CRM will necessarily be created as a Contact (or Person Account if enabled).

Participant categories to be sent to Salesforce

It is not required to send all event participants to Salesforce. Simply indicate the participant categories concerned via the dropdown list.

Processes

The pushing of participants to Salesforce is handled by our Automation tool; four processes are configured automatically for you and can be accessed in read-only mode.

However, you can disable them individually. For example, if you do not wish to push participant attendance information, you can disable the process triggered when a participant attends.

Campaign member status

The campaign member status indicates the progress of the guest in their participation in the event. Initially, the guest is not registered, then they can be registered, and finally they can be attended. Each of these three states must be mapped to a Status value in Salesforce.

By default we use the native Status field. But you can use a custom field you have created previously on your instance.

And for each of the three states, specify the corresponding value in Salesforce.

Warning: when you specify references to Salesforce fields or field values, you must always enter the API Names.

It should also be noted that the information that a participant is not registered is only sent to Salesforce when the participant is deleted. Indeed, the participant is only pushed to Salesforce for the first time when they reach the Registered status on Eventmaker.

Mapping tables between Eventmaker and Salesforce fields

In order to update data in Salesforce, we must determine which participant information needs to be pushed to the CRM and where.

For example, you will typically want the Eventmaker field first_name to populate the FirstName field in the Contacts or Leads table. Or the company's country to populate the BillingCountry field in the Accounts table.

Therefore you must set up four mapping tables (three if you do not use Leads).

The user interface offers two input modes :

  • a classic mode for non-technical users

  • an advanced mode for more experienced users which allows entering the mapping in YAML format

Regardless of the selected mode, for each field to map you must provide 4 pieces of information :

  • the API Name of the Salesforce field you want to populate (salesforce_key in the YAML)

  • the type of source of the information: either the value of a participant field, or a custom static value (source_type with value guest_field or custom in the YAML)

  • the custom value or the name of the participant field (source_value in the YAML)

  • when the Salesforce field will be populated: either only on creation of the entity in Salesforce, only on update, or always on creation or update (only in the YAML with one of the values always, create, update) ; by default the field will always be populated in Salesforce.

When the connector analyzes a participant's data, each mapping table will allow it to construct the API request bodies according to what has been defined.

It is entirely possible for the connector to populate Salesforce custom fields (whose API Name typically ends with __c) in addition to native fields.

In addition, it supports Text fields, Picklist fields, Checkbox fields, and Date/Time fields.

⚠️ Thanks to the 4th parameter, you can define the mapping so that an existing entity is never updated: simply choose the "Populate on create" option for each field. This can be useful if you do not want certain types of entities to be updated, for which you prefer to prioritize the existing CRM data rather than the registration data.

Uniqueness keys

Before pushing data to Salesforce, we must be able to determine whether it is a creation or an update of an entity.

To perform this reconciliation, we use a uniqueness key (or deduplication key) that uniquely represents the entity in Salesforce. If the connector finds a record in Salesforce matching the key it calculated, then it will update that record, otherwise it will create a new one.

There is a uniqueness key for Contacts and Leads, for which the default field is Email, and for Accounts, for which the default field is Name.

💡 If you do not want reconciliation at the Accounts level, i.e. you do not want any modification to the Account associated with an existing Contact, you can leave the API Name of the Salesforce field representing the uniqueness key empty.

However, this option is only possible if you have configured the connector to only create Leads (because when creating a Contact, an Account must necessarily be associated with it).

Let's continue with an example.

Assume there is in Salesforce a Contact 1 and a Contact 2 with respective email addresses contact_1@mail.com and contact_2@mail.com. A participant registers on Eventmaker with the email contact_2@mail.com; they will therefore be linked to Contact 2, which will be updated. Now another participant registers with the email contact_3@mail.com: since no contact record exists in Salesforce with that address, a new contact is created.

However, you may want to define a finer deduplication. For this you can use a Merge Field which will consist of a set of participant information concatenated and normalized. In that case, you must create a new custom field in Salesforce whose value will come from a formula that is evaluated at each update of the entity; you must also enable uniqueness for this field to ensure the absence of duplicates in the CRM beyond the scope of this integration.

Several things must be defined :

  • the API name of the custom merge field representing the uniqueness key

  • the fields composing this uniqueness key

  • the separator character between components (which also replaces empty characters like space) (can remain empty)

  • special characters to remove from the uniqueness key

  • special characters to replace with a value in the uniqueness key

  • whether or not to remove accented characters (we recommend always enabling this option)

It should also be noted that the resulting value will necessarily be lowercase and that leading and trailing spaces of component values will be removed before any potential replacement.

Typically, we recommend a uniqueness key composed of Name and Email for Contacts and Leads, and composed of Name and Postal Code for Accounts.

Let's finish with an example that will probably be clearer.

A participant Inès du Pré with the email ines-du-pre@mail.com has just registered. The Contact uniqueness key is composed of the email and the name in that order, the separator is the hyphen (-), accents must be removed, no special characters are to be removed, and the dot character (.) is to be replaced by the word dot.

For reconciliation, we will search in Salesforce for a Contact whose uniqueness key is: ines-du-pre@maildotcom-du-pre.

If a Contact is found, it will be updated; otherwise, depending on the configuration, either we will search for a Lead using a (potentially different) uniqueness key, or a new Contact will be created.

Here are the steps to arrive at this result :

Action

Output values

Remove leading and trailing spaces from component

Lowercase

Replace spaces with the separator (-)

Removal of characters (none)

Replacement of characters (. -> dot)

du-pré ines-du-pre@maildotcom

Removal of accents

du-pre ines-du-pre@maildotcom

Concatenation of components with the separator (-)

ines-du-pre@maildotcom-du-pre

Did this answer your question?