unity
6/1/2018 - 7:07 PM

Map Datanyze technologies to Custom Categories

const mappings = {
  crm: [
    'Salesforce',
    'Microsoft Dynamics',
    'Microsoft Dynamics 365 for Sales',
    'Microsoft Dynamics 365',
    'Pipedrive',
    'Close.io'
  ],
  marketingauto_email: [
    'HubSpot',
    'Marketo',
    'Autopilot',
    'Drip',
    'Salesforce Pardot',
    'Act-On',
    'Customer.IO',
    'Vero',
    'Campaign Monitor',
    'Constant Contact',
    'GetResponse',
    'MailChimp'
  ],
  live_chat: ['Intercom', 'Drift', 'LiveChat', 'Olark'],
  ad_retargeting: [
    'AdRoll',
    'Facebook Web Custom Audiences',
    'Perfect Audience'
  ],
  web_product_tracking: ['Amplitude', 'Heap', 'Mixpanel', 'Kissmetrics']
};

const techAliases = {
  'Salesforce Pardot': 'Pardot',
  'Facebook Web Custom Audiences': 'Facebook Custom Audiences',
  'Microsoft Dynamics Marketing': 'Microsoft Dynamics',
  'Microsoft Dynamics 365 for Sales': 'Microsoft Dynamics',
  'Microsoft Dynamics 365': 'Microsoft Dynamics',
  'HubSpot CRM': 'HubSpot',
  'HubSpot Sales': 'HubSpot'
};

const datanyzeTechs = _.get(account, 'datanyze.technologies', []);

const userTraits = {};

// Determine tech based on priority for all categories
if (datanyzeTechs.length > 0) {
  mappings.map((val, key) => {
    val.map(v => {
      if (_.includes(datanyzeTechs, v)) {
        userTraits[key] = v;
      }
    });
  });
}

// Alias the tech if appropriate
userTraits.map((val, key) => {
  if (techAliases[val] !== null) {
    userTraits[key] = techAliases[val];
  }
});


//Write the results back in the Hull profile
hull.traits(userTraits, { source: "primary_tools" });