Unify and manage your data

Reltio to Salesforce

Learn about how the Salesforce Connector processes outbound data from Reltio and how to customize outbound logic using supported hooks.

The Reltio Integration for Salesforce supports outbound synchronization from the Reltio platform to Salesforce. As Reltio emits entity or relationship events — such as create, update, delete, or merge — the connector transforms them based on your mapping configuration and sends the resulting payloads to Salesforce.

To control what is sent and how it is processed, the connector supports several extension hooks that let you implement filtering, transformation, or custom routing logic before or after mapping.

Prevent timestamp updates for unchanged attributes

By default, the connector includes all mapped attributes when sending updates to Salesforce — even if a value hasn't changed. This can lead to unnecessary timestamp refreshes and potentially affect Last Update Date (LUD) based survivorship logic.

To avoid this behavior, you can enable the skipUnchangedAttributes flag in your connector profile configuration. When set to true, only changed attributes are included in outbound payloads. Unchanged values are excluded, which prevents them from triggering timestamp updates in Salesforce.

This setting is configured at the connector profile level in the reltio block. For more information, see Set Salesforce Connector Profile Configurations.

Filter events using tenantStreamingVerification

Use this hook to decide whether a Reltio event should be processed at all. The connector calls this function for each event received. If it returns false, the event is skipped.

Example:

tenantStreamingVerification(reltioObject) {
  this.logging(`Start process for ${reltioObject.uri}`);
  if (reltioObject.attributes.SFDCSync) {
    const vs = reltioObject.attributes.SFDCSync;
    if (Array.isArray(vs)) {
      for (let i = 0; i < vs.length; i++) {
        const v = vs[i];
        if (v && v['ov'] === true && v['value'] === 'true') {
          return true;
        }
      }
    }
  }
  return false;
}

Modify Reltio data before mapping using tenantRequestModification

This hook allows you to adjust Reltio data before it is transformed based on your mapping. It’s useful if you want to rewrite, normalize, or block specific values at the raw event level.

Example:

tenantRequestModification(reltioObject) {
  this.logging(`Start process ${reltioObject.uri}`);
  if (reltioObject && reltioObject['attributes']) {
    const fnAttr = reltioObject['attributes']['FirstName'];
    if (fnAttr && fnAttr[0].value === 'DEFAULT') {
      fnAttr[0].value = 'NOT_SET';
    }
  }
  return reltioObject;
}

Modify Salesforce data after mapping using sfdcDataModification

Use this hook to modify the object that will be sent to Salesforce after it has already been transformed from a Reltio event. This is helpful for applying logic that isn’t easily expressed in mapping syntax.

Example:

sfdcDataModification(sfdcRequest, entity, reltioAttribute) {
  this.logging(`Start process ${sfdcRequest.Name}`);
  if (sfdcRequest.attributes.type === 'Account') {
    if (sfdcRequest.Name && sfdcRequest.Name.startsWith('Test_')) {
      sfdcRequest.OrganizationType__c = 'QA';
    }
  }
  return sfdcRequest;
}

Modify callback data before updating Reltio crosswalks

The callbackModification hook lets you update data sent back to Reltio during callback processing. This is commonly used when updates to Salesforce also affect Reltio crosswalk-managed fields.

Example:

callbackModification(callback) {
  this.logging(`Start process ${callback.uri}`);
  if (callback.type === 'configuration/entityTypes/HCP') {
    callback.attributes['CallName'] = [{
      "value": callback.attributes['FirstName'][0]["value"] + '_' + callback.attributes['LastName'][0]["value"]
    }];
  }
  return callback;
}