This transformation marks leads whether they are qualified leads or not
For a lead to qualify, it has to satisfy two aspects
Intent to buy (e.g. event == 'Clicked on product detail page')
Their company metrics match ideal customer profile (e.g. )
Adds a trait isQualifiedLead and set to appropriate value(emoji for now)
Code Block
/**
* Tag leads whether they are qualified leads or not
* For a lead to qualify, it has to satisfy two aspects
* 1. Intent to buy (e.g. event == 'Clicked on product detail page')
* 2. Their company metrics match ideal customer profile (e.g. US company with more than 250 employees)
*/
const CLEARBIT_API_KEY = "<your Clearbit API key>";
/**
* Criterias for qualified lead
*/
const EVENTS_WITH_INTENT_TO_BUY = ["Request Quote", "Product Clicked"]
const MIN_EMPLOYEE_COUNT = 250;
const QUALIFIED_BUSINESS_LOCATIONS = ['US'];
export async function transformEvent(event) {
const email = event.context?.traits?.email;
const domain = email.split("@")[1];
if(!EVENTS_WITH_INTENT_TO_BUY.includes(event.event) || !domain){
// This is not the event with intent to buy or has an invalid email
return event;
}
try{
// Get company info
const companyInfo = await fetch("https://company.clearbit.com/v2/companies/find?domain=" + domain, {
headers: {
"Authorization": "Bearer "+CLEARBIT_API_KEY
}
});
log(JSON.stringify(companyInfo, null, 4))
if(!companyInfo.metrics || !companyInfo.metrics.employees || !companyInfo.geo){
// Can't say anything if there's not enough info about the company
event.context.traits.isQualifiedLead = "🤷";
} else if(isQualifiedCompany(companyMetrics)) {
// This is a qualified lead
event.context.traits.isQualifiedLead = "👍";
} else {
event.context.traits.isQualifiedLead = "👎";
}
} catch(err){
log("Error in finding company info via Clearbit APIs")
log(err)
}
return event;
}
/**
* Function that returns true if company metrics match qualified lead criteria
*/
function isQualifiedCompany(companyInfo){
if(companyInfo.metrics.employees < MIN_EMPLOYEE_COUNT){
return false;
}
if(!QUALIFIED_BUSINESS_LOCATIONS.includes(companyInfo.geo.countryCode)){
return false;
}
return true;
}
Contact Details
psharma@rudderstack.com
Language
Javascript
Category
Data Security & Governance
Description
This transformation marks leads whether they are qualified leads or not
isQualifiedLead
and set to appropriate value(emoji for now)Code Block
Input Payload for testing
License