mirror of
https://github.com/n8n-io/n8n.git
synced 2024-12-29 06:29:42 -08:00
2913e676e6
* 🎨 Change current defualt ressource to contact * Change display name for list membership * 🎨 Change display name for ressource properties * 🔥 Remove Name & ID in Display name * 🐛 Fix simplify data where behavior was wrong * 🎨 Move simplfy output to additional fields * Change data type from string to number for IDs * Add tooltip for contact ID * 🎨 Change tooltip for list of Id's * Change name of fields and reorgaized options * 🥅 Add clearer errors for some specific cases * 🎨 changed filters in Deal get all * Deprecate form ressource * ✨ add pipeline dropdown to auto fetch * 🎨 Change direction's name * 🎨 Change description of filter groups * 🎨 Add validation and errors for maximum filters * ✨ Add ressource locator to all ressources * 🎨 add tooltip for timestamp when using expressions * ✨add versioning * 🐛 fixes small bugs and ui problems * remove show options that was breaking custom prop * ✨ add ownership to deals * ✨ add notice for credential depreciation * 🎨 Refactor names for RLC * 🎨 Fixes to Deal * ✨ Inprove delete confirmation message * 🎨 Fixe titles of fields * 🎨 Fixe correct ressource hint * 🎨 Improve error when requesting non existing ressource * ⚡️ Improve get deal * ✨ Improve search by domain for companies * ✨ Improve getting recently created deals * 🎨 Improve versioning file structure * 🥅 Improve error for unknown ids * ✨ Add filters to recently search for companies * ✨ Uniformize including properties for contact * ✨ Improve get all operation for Companies * 🎨 Change filters name * 🎨 Remove useless descriptions * 🎨Improve description * ✨ Dynamically retrieve the correct operator for the properties * 🥅 Improve error handeling * 🥅 improve error when not finding the id * ⚡️Add searchable feature to Deal and contacts * 🚨 Fix linting issues * 🚨 Fix linting issues for V1 Hubspot * 🐛 Fix pairedItem for v2 hubspot * 🚨 Fix linting in HubSpot Description * 🚨 More linting fixes * Fix error handling * Update endpoint for deleting object * Fix label for recent actions * 🐛 fix listMemberships typo in V1 and V2 * docs: Stop assuming the user's gender in code comments (after merge)c87262a312
* fixing V1 GenericFunctions.ts api query limit as number * Update description for ticket * Add type to RLC * Revert "Add type to RLC" This reverts commit578dacfb97
. * Add type to RLC engagement --------- Co-authored-by: Marcus <marcus@n8n.io>
2024 lines
41 KiB
TypeScript
2024 lines
41 KiB
TypeScript
import type { OptionsWithUri } from 'request';
|
|
|
|
import type {
|
|
IExecuteFunctions,
|
|
IExecuteSingleFunctions,
|
|
IHookFunctions,
|
|
ILoadOptionsFunctions,
|
|
} from 'n8n-core';
|
|
|
|
import type {
|
|
ICredentialDataDecryptedObject,
|
|
ICredentialTestFunctions,
|
|
IDataObject,
|
|
JsonObject,
|
|
} from 'n8n-workflow';
|
|
import { NodeApiError } from 'n8n-workflow';
|
|
|
|
import moment from 'moment';
|
|
|
|
export async function hubspotApiRequest(
|
|
this: IHookFunctions | IExecuteFunctions | IExecuteSingleFunctions | ILoadOptionsFunctions,
|
|
method: string,
|
|
endpoint: string,
|
|
// tslint:disable-next-line:no-any
|
|
body: any = {},
|
|
query: IDataObject = {},
|
|
uri?: string,
|
|
// tslint:disable-next-line:no-any
|
|
): Promise<any> {
|
|
let authenticationMethod = this.getNodeParameter('authentication', 0);
|
|
|
|
if (this.getNode().type.includes('Trigger')) {
|
|
authenticationMethod = 'developerApi';
|
|
}
|
|
|
|
const options: OptionsWithUri = {
|
|
method,
|
|
qs: query,
|
|
headers: {},
|
|
uri: uri || `https://api.hubapi.com${endpoint}`,
|
|
body,
|
|
json: true,
|
|
useQuerystring: true,
|
|
};
|
|
|
|
try {
|
|
if (authenticationMethod === 'apiKey') {
|
|
const credentials = await this.getCredentials('hubspotApi');
|
|
|
|
options.qs.hapikey = credentials.apiKey as string;
|
|
return await this.helpers.request(options);
|
|
} else if (authenticationMethod === 'appToken') {
|
|
const credentials = await this.getCredentials('hubspotAppToken');
|
|
|
|
options.headers!.Authorization = `Bearer ${credentials.appToken}`;
|
|
return await this.helpers.request(options);
|
|
} else if (authenticationMethod === 'developerApi') {
|
|
if (endpoint.includes('webhooks')) {
|
|
const credentials = await this.getCredentials('hubspotDeveloperApi');
|
|
options.qs.hapikey = credentials.apiKey as string;
|
|
return await this.helpers.request(options);
|
|
} else {
|
|
return await this.helpers.requestOAuth2.call(this, 'hubspotDeveloperApi', options, {
|
|
tokenType: 'Bearer',
|
|
includeCredentialsOnRefreshOnBody: true,
|
|
});
|
|
}
|
|
} else {
|
|
return await this.helpers.requestOAuth2.call(this, 'hubspotOAuth2Api', options, {
|
|
tokenType: 'Bearer',
|
|
includeCredentialsOnRefreshOnBody: true,
|
|
});
|
|
}
|
|
} catch (error) {
|
|
throw new NodeApiError(this.getNode(), error as JsonObject);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Make an API request to paginated hubspot endpoint
|
|
* and return all results
|
|
*/
|
|
export async function hubspotApiRequestAllItems(
|
|
this: IHookFunctions | IExecuteFunctions | ILoadOptionsFunctions,
|
|
propertyName: string,
|
|
method: string,
|
|
endpoint: string,
|
|
// tslint:disable-next-line:no-any
|
|
body: any = {},
|
|
query: IDataObject = {},
|
|
// tslint:disable-next-line:no-any
|
|
): Promise<any> {
|
|
const returnData: IDataObject[] = [];
|
|
|
|
let responseData;
|
|
|
|
query.limit = (query.limit as number) || 250;
|
|
query.count = 100;
|
|
body.limit = body.limit || 100;
|
|
|
|
do {
|
|
responseData = await hubspotApiRequest.call(this, method, endpoint, body, query);
|
|
query.offset = responseData.offset;
|
|
query.vidOffset = responseData['vid-offset'];
|
|
//Used by Search endpoints
|
|
if (responseData.paging) {
|
|
body.after = responseData.paging.next.after;
|
|
}
|
|
returnData.push.apply(returnData, responseData.propertyName as IDataObject[]);
|
|
//ticket:getAll endpoint does not support setting a limit, so return once the limit is reached
|
|
if (query.limit && query.limit <= returnData.length && endpoint.includes('/tickets/paged')) {
|
|
return returnData;
|
|
}
|
|
} while (responseData.hasMore || responseData['has-more'] || responseData.paging);
|
|
return returnData;
|
|
}
|
|
|
|
// tslint:disable-next-line:no-any
|
|
export function validateJSON(json: string | undefined): any {
|
|
let result;
|
|
try {
|
|
result = JSON.parse(json!);
|
|
} catch (exception) {
|
|
result = '';
|
|
}
|
|
return result;
|
|
}
|
|
|
|
// tslint:disable-next-line: no-any
|
|
export function clean(obj: any) {
|
|
for (const propName in obj) {
|
|
if (obj[propName] === null || obj[propName] === undefined || obj[propName] === '') {
|
|
delete obj[propName];
|
|
}
|
|
}
|
|
return obj;
|
|
}
|
|
|
|
export const propertyEvents = [
|
|
'contact.propertyChange',
|
|
'company.propertyChange',
|
|
'deal.propertyChange',
|
|
];
|
|
|
|
export const contactFields = [
|
|
{
|
|
id: 'company_size',
|
|
label: 'testingricardo',
|
|
},
|
|
{
|
|
id: 'date',
|
|
label: 'Date',
|
|
},
|
|
{
|
|
id: 'date_of_birth',
|
|
label: 'Date of birth',
|
|
},
|
|
{
|
|
id: 'days_to_close',
|
|
label: 'Days To Close',
|
|
},
|
|
{
|
|
id: 'degree',
|
|
label: 'Degree',
|
|
},
|
|
{
|
|
id: 'field_of_study',
|
|
label: 'Field of study',
|
|
},
|
|
{
|
|
id: 'first_conversion_date',
|
|
label: 'First Conversion Date',
|
|
},
|
|
{
|
|
id: 'first_conversion_event_name',
|
|
label: 'First Conversion',
|
|
},
|
|
{
|
|
id: 'first_deal_created_date',
|
|
label: 'First Deal Created Date',
|
|
},
|
|
{
|
|
id: 'gender',
|
|
label: 'Gender',
|
|
},
|
|
{
|
|
id: 'graduation_date',
|
|
label: 'Graduation date',
|
|
},
|
|
{
|
|
id: 'hs_additional_emails',
|
|
label: 'Additional email addresses',
|
|
},
|
|
{
|
|
id: 'hs_all_contact_vids',
|
|
label: 'All vids for a contact',
|
|
},
|
|
{
|
|
id: 'hs_analytics_first_touch_converting_campaign',
|
|
label: 'First Touch Converting Campaign',
|
|
},
|
|
{
|
|
id: 'hs_analytics_last_touch_converting_campaign',
|
|
label: 'Last Touch Converting Campaign',
|
|
},
|
|
{
|
|
id: 'hs_avatar_filemanager_key',
|
|
label: 'Avatar FileManager key',
|
|
},
|
|
{
|
|
id: 'hs_buying_role',
|
|
label: 'Buying Role',
|
|
},
|
|
{
|
|
id: 'hs_calculated_form_submissions',
|
|
label: 'All form submissions for a contact',
|
|
},
|
|
{
|
|
id: 'hs_calculated_merged_vids',
|
|
label: 'Merged vids with timestamps of a contact',
|
|
},
|
|
{
|
|
id: 'hs_calculated_mobile_number',
|
|
label: 'Calculated Mobile Number in International Format',
|
|
},
|
|
{
|
|
id: 'hs_calculated_phone_number',
|
|
label: 'Calculated Phone Number in International Format',
|
|
},
|
|
{
|
|
id: 'hs_calculated_phone_number_area_code',
|
|
label: 'Calculated Phone Number Area Code',
|
|
},
|
|
{
|
|
id: 'hs_calculated_phone_number_country_code',
|
|
label: 'Calculated Phone Number Country Code',
|
|
},
|
|
{
|
|
id: 'hs_calculated_phone_number_region_code',
|
|
label: 'Calculated Phone Number Region',
|
|
},
|
|
{
|
|
id: 'hs_content_membership_email_confirmed',
|
|
label: 'Email Confirmed',
|
|
},
|
|
{
|
|
id: 'hs_content_membership_notes',
|
|
label: 'Membership Notes',
|
|
},
|
|
{
|
|
id: 'hs_content_membership_registered_at',
|
|
label: 'Registered At',
|
|
},
|
|
{
|
|
id: 'hs_content_membership_registration_domain_sent_to',
|
|
label: 'Domain to which registration email was sent',
|
|
},
|
|
{
|
|
id: 'hs_content_membership_registration_email_sent_at',
|
|
label: 'Time registration email was sent',
|
|
},
|
|
{
|
|
id: 'hs_content_membership_status',
|
|
label: 'Status',
|
|
},
|
|
{
|
|
id: 'hs_conversations_visitor_email',
|
|
label: 'Conversations visitor email',
|
|
},
|
|
{
|
|
id: 'hs_count_is_unworked',
|
|
label: 'Count of unengaged contacts',
|
|
},
|
|
{
|
|
id: 'hs_count_is_worked',
|
|
label: 'Count of engaged contacts',
|
|
},
|
|
{
|
|
id: 'hs_created_by_conversations',
|
|
label: 'Created By Conversations',
|
|
},
|
|
{
|
|
id: 'hs_created_by_user_id',
|
|
label: 'Created by user ID',
|
|
},
|
|
{
|
|
id: 'hs_createdate',
|
|
label: 'Object create date/time',
|
|
},
|
|
{
|
|
id: 'hs_document_last_revisited',
|
|
label: 'Recent Document Revisit Date',
|
|
},
|
|
{
|
|
id: 'hs_email_bad_address',
|
|
label: 'Invalid email address',
|
|
},
|
|
{
|
|
id: 'hs_email_customer_quarantined_reason',
|
|
label: 'Email address quarantine reason',
|
|
},
|
|
{
|
|
id: 'hs_email_domain',
|
|
label: 'Email Domain',
|
|
},
|
|
{
|
|
id: 'hs_email_hard_bounce_reason',
|
|
label: 'Email hard bounce reason',
|
|
},
|
|
{
|
|
id: 'hs_email_hard_bounce_reason_enum',
|
|
label: 'Email hard bounce reason',
|
|
},
|
|
{
|
|
id: 'hs_email_quarantined',
|
|
label: 'Email Address Quarantined',
|
|
},
|
|
{
|
|
id: 'hs_email_quarantined_reason',
|
|
label: 'Email address internal quarantine reason',
|
|
},
|
|
{
|
|
id: 'hs_email_recipient_fatigue_recovery_time',
|
|
label: 'Email Address Recipient Fatigue Next Available Sending Time',
|
|
},
|
|
{
|
|
id: 'hs_email_sends_since_last_engagement',
|
|
label: 'Sends Since Last Engagement',
|
|
},
|
|
{
|
|
id: 'hs_emailconfirmationstatus',
|
|
label: 'Marketing email confirmation status',
|
|
},
|
|
{
|
|
id: 'hs_facebook_ad_clicked',
|
|
label: 'Clicked Facebook ad',
|
|
},
|
|
{
|
|
id: 'hs_facebook_click_id',
|
|
label: 'Facebook click id',
|
|
},
|
|
{
|
|
id: 'hs_facebookid',
|
|
label: 'Facebook ID',
|
|
},
|
|
{
|
|
id: 'hs_feedback_last_nps_follow_up',
|
|
label: 'Last NPS survey comment',
|
|
},
|
|
{
|
|
id: 'hs_feedback_last_nps_rating',
|
|
label: 'Last NPS survey rating',
|
|
},
|
|
{
|
|
id: 'hs_feedback_last_survey_date',
|
|
label: 'Last NPS survey date',
|
|
},
|
|
{
|
|
id: 'hs_feedback_show_nps_web_survey',
|
|
label: 'Should be shown an NPS web survey',
|
|
},
|
|
{
|
|
id: 'hs_first_engagement_object_id',
|
|
label: 'ID of first engagement',
|
|
},
|
|
{
|
|
id: 'hs_google_click_id',
|
|
label: 'Google ad click id',
|
|
},
|
|
{
|
|
id: 'hs_googleplusid',
|
|
label: 'googleplus ID',
|
|
},
|
|
{
|
|
id: 'hs_ip_timezone',
|
|
label: 'IP Timezone',
|
|
},
|
|
{
|
|
id: 'hs_is_contact',
|
|
label: 'Is a contact',
|
|
},
|
|
{
|
|
id: 'hs_is_unworked',
|
|
label: 'Contact unworked',
|
|
},
|
|
{
|
|
id: 'hs_last_sales_activity_date',
|
|
label: 'last sales activity date old',
|
|
},
|
|
{
|
|
id: 'hs_last_sales_activity_timestamp',
|
|
label: 'Last Engagement Date',
|
|
},
|
|
{
|
|
id: 'hs_lastmodifieddate',
|
|
label: 'Object last modified date/time',
|
|
},
|
|
{
|
|
id: 'hs_lead_status',
|
|
label: 'Lead Status',
|
|
},
|
|
{
|
|
id: 'hs_legal_basis',
|
|
label: "Legal basis for processing contact's data",
|
|
},
|
|
{
|
|
id: 'hs_linkedinid',
|
|
label: 'Linkedin ID',
|
|
},
|
|
{
|
|
id: 'hs_marketable_reason_id',
|
|
label: 'Marketing contact status source name',
|
|
},
|
|
{
|
|
id: 'hs_marketable_reason_type',
|
|
label: 'Marketing contact status source type',
|
|
},
|
|
{
|
|
id: 'hs_marketable_status',
|
|
label: 'Marketing contact status',
|
|
},
|
|
{
|
|
id: 'hs_marketable_until_renewal',
|
|
label: 'Marketing contact until next update',
|
|
},
|
|
{
|
|
id: 'hs_merged_object_ids',
|
|
label: 'Merged object IDs',
|
|
},
|
|
{
|
|
id: 'hs_object_id',
|
|
label: 'Contact ID',
|
|
},
|
|
{
|
|
id: 'hs_predictivecontactscore_v2',
|
|
label: 'Likelihood to close',
|
|
},
|
|
{
|
|
id: 'hs_predictivescoringtier',
|
|
label: 'Contact priority',
|
|
},
|
|
{
|
|
id: 'hs_sa_first_engagement_date',
|
|
label: 'Date of first engagement',
|
|
},
|
|
{
|
|
id: 'hs_sa_first_engagement_descr',
|
|
label: 'Description of first engagement',
|
|
},
|
|
{
|
|
id: 'hs_sa_first_engagement_object_type',
|
|
label: 'Type of first engagement',
|
|
},
|
|
{
|
|
id: 'hs_sales_email_last_clicked',
|
|
label: 'Recent Sales Email Clicked Date',
|
|
},
|
|
{
|
|
id: 'hs_sales_email_last_opened',
|
|
label: 'Recent Sales Email Opened Date',
|
|
},
|
|
{
|
|
id: 'hs_searchable_calculated_international_mobile_number',
|
|
label: 'Calculated Mobile Number with country code',
|
|
},
|
|
{
|
|
id: 'hs_searchable_calculated_international_phone_number',
|
|
label: 'Calculated Phone Number with country code',
|
|
},
|
|
{
|
|
id: 'hs_searchable_calculated_mobile_number',
|
|
label: 'Calculated Mobile Number without country code',
|
|
},
|
|
{
|
|
id: 'hs_searchable_calculated_phone_number',
|
|
label: 'Calculated Phone Number without country code',
|
|
},
|
|
{
|
|
id: 'hs_sequences_is_enrolled',
|
|
label: 'Currently in Sequence',
|
|
},
|
|
{
|
|
id: 'hs_testpurge',
|
|
label: 'testpurge',
|
|
},
|
|
{
|
|
id: 'hs_testrollback',
|
|
label: 'testrollback',
|
|
},
|
|
{
|
|
id: 'hs_time_between_contact_creation_and_deal_close',
|
|
label: 'Time between contact creation and deal close',
|
|
},
|
|
{
|
|
id: 'hs_time_between_contact_creation_and_deal_creation',
|
|
label: 'Time between contact creation and deal creation',
|
|
},
|
|
{
|
|
id: 'hs_time_to_first_engagement',
|
|
label: 'Lead response time',
|
|
},
|
|
{
|
|
id: 'hs_time_to_move_from_lead_to_customer',
|
|
label: 'Time to move from lead to customer',
|
|
},
|
|
{
|
|
id: 'hs_time_to_move_from_marketingqualifiedlead_to_customer',
|
|
label: 'Time to move from marketing qualified lead to customer',
|
|
},
|
|
{
|
|
id: 'hs_time_to_move_from_opportunity_to_customer',
|
|
label: 'Time to move from opportunity to customer',
|
|
},
|
|
{
|
|
id: 'hs_time_to_move_from_salesqualifiedlead_to_customer',
|
|
label: 'Time to move from sales qualified lead to customer',
|
|
},
|
|
{
|
|
id: 'hs_time_to_move_from_subscriber_to_customer',
|
|
label: 'Time to move from subscriber to customer',
|
|
},
|
|
{
|
|
id: 'hs_twitterid',
|
|
label: 'Twitter ID',
|
|
},
|
|
{
|
|
id: 'hs_updated_by_user_id',
|
|
label: 'Updated by user ID',
|
|
},
|
|
{
|
|
id: 'hs_user_ids_of_all_owners',
|
|
label: 'User IDs of all owners',
|
|
},
|
|
{
|
|
id: 'hubspot_owner_assigneddate',
|
|
label: 'Owner Assigned Date',
|
|
},
|
|
{
|
|
id: 'ip_city',
|
|
label: 'IP City',
|
|
},
|
|
{
|
|
id: 'ip_country',
|
|
label: 'IP Country',
|
|
},
|
|
{
|
|
id: 'ip_country_code',
|
|
label: 'IP Country Code',
|
|
},
|
|
{
|
|
id: 'ip_latlon',
|
|
label: 'IP Latitude & Longitude',
|
|
},
|
|
{
|
|
id: 'ip_state',
|
|
label: 'IP State/Region',
|
|
},
|
|
{
|
|
id: 'ip_state_code',
|
|
label: 'IP State Code/Region Code',
|
|
},
|
|
{
|
|
id: 'ip_zipcode',
|
|
label: 'IP Zipcode',
|
|
},
|
|
{
|
|
id: 'job_function',
|
|
label: 'Job function',
|
|
},
|
|
{
|
|
id: 'lastmodifieddate',
|
|
label: 'Last Modified Date',
|
|
},
|
|
{
|
|
id: 'marital_status',
|
|
label: 'Marital Status',
|
|
},
|
|
{
|
|
id: 'military_status',
|
|
label: 'Military status',
|
|
},
|
|
{
|
|
id: 'num_associated_deals',
|
|
label: 'Associated Deals',
|
|
},
|
|
{
|
|
id: 'num_conversion_events',
|
|
label: 'Number of Form Submissions',
|
|
},
|
|
{
|
|
id: 'num_unique_conversion_events',
|
|
label: 'Number of Unique Forms Submitted',
|
|
},
|
|
{
|
|
id: 'recent_conversion_date',
|
|
label: 'Recent Conversion Date',
|
|
},
|
|
{
|
|
id: 'recent_conversion_event_name',
|
|
label: 'Recent Conversion',
|
|
},
|
|
{
|
|
id: 'recent_deal_amount',
|
|
label: 'Recent Deal Amount',
|
|
},
|
|
{
|
|
id: 'recent_deal_close_date',
|
|
label: 'Recent Deal Close Date',
|
|
},
|
|
{
|
|
id: 'relationship_status',
|
|
label: 'Relationship Status',
|
|
},
|
|
{
|
|
id: 'school',
|
|
label: 'School',
|
|
},
|
|
{
|
|
id: 'seniority',
|
|
label: 'Seniority',
|
|
},
|
|
{
|
|
id: 'start_date',
|
|
label: 'Start date',
|
|
},
|
|
{
|
|
id: 'testing',
|
|
label: 'testing',
|
|
},
|
|
{
|
|
id: 'total_revenue',
|
|
label: 'Total Revenue',
|
|
},
|
|
{
|
|
id: 'work_email',
|
|
label: 'Work email',
|
|
},
|
|
{
|
|
id: 'firstname',
|
|
label: 'First Name',
|
|
},
|
|
{
|
|
id: 'hs_analytics_first_url',
|
|
label: 'First Page Seen',
|
|
},
|
|
{
|
|
id: 'hs_email_delivered',
|
|
label: 'Marketing emails delivered',
|
|
},
|
|
{
|
|
id: 'hs_email_optout_6871816',
|
|
label: 'Opted out of email: Marketing Information',
|
|
},
|
|
{
|
|
id: 'hs_email_optout_8363428',
|
|
label: 'Opted out of email: One to One',
|
|
},
|
|
{
|
|
id: 'twitterhandle',
|
|
label: 'Twitter Username',
|
|
},
|
|
{
|
|
id: 'currentlyinworkflow',
|
|
label: 'Currently in workflow',
|
|
},
|
|
{
|
|
id: 'followercount',
|
|
label: 'Follower Count',
|
|
},
|
|
{
|
|
id: 'hs_analytics_last_url',
|
|
label: 'Last Page Seen',
|
|
},
|
|
{
|
|
id: 'hs_email_open',
|
|
label: 'Marketing emails opened',
|
|
},
|
|
{
|
|
id: 'lastname',
|
|
label: 'Last Name',
|
|
},
|
|
{
|
|
id: 'hs_analytics_num_page_views',
|
|
label: 'Number of Pageviews',
|
|
},
|
|
{
|
|
id: 'hs_email_click',
|
|
label: 'Marketing emails clicked',
|
|
},
|
|
{
|
|
id: 'salutation',
|
|
label: 'Salutation',
|
|
},
|
|
{
|
|
id: 'twitterprofilephoto',
|
|
label: 'Twitter Profile Photo',
|
|
},
|
|
{
|
|
id: 'email',
|
|
label: 'Email',
|
|
},
|
|
{
|
|
id: 'hs_analytics_num_visits',
|
|
label: 'Number of Sessions',
|
|
},
|
|
{
|
|
id: 'hs_email_bounce',
|
|
label: 'Marketing emails bounced',
|
|
},
|
|
{
|
|
id: 'hs_persona',
|
|
label: 'Persona',
|
|
},
|
|
{
|
|
id: 'hs_social_last_engagement',
|
|
label: 'Most Recent Social Click',
|
|
},
|
|
{
|
|
id: 'hs_analytics_num_event_completions',
|
|
label: 'Number of event completions',
|
|
},
|
|
{
|
|
id: 'hs_email_optout',
|
|
label: 'Unsubscribed from all email',
|
|
},
|
|
{
|
|
id: 'hs_social_twitter_clicks',
|
|
label: 'Twitter Clicks',
|
|
},
|
|
{
|
|
id: 'mobilephone',
|
|
label: 'Mobile Phone Number',
|
|
},
|
|
{
|
|
id: 'phone',
|
|
label: 'Phone Number',
|
|
},
|
|
{
|
|
id: 'fax',
|
|
label: 'Fax Number',
|
|
},
|
|
{
|
|
id: 'hs_analytics_first_timestamp',
|
|
label: 'Time First Seen',
|
|
},
|
|
{
|
|
id: 'hs_email_last_email_name',
|
|
label: 'Last marketing email name',
|
|
},
|
|
{
|
|
id: 'hs_email_last_send_date',
|
|
label: 'Last marketing email send date',
|
|
},
|
|
{
|
|
id: 'hs_social_facebook_clicks',
|
|
label: 'Facebook Clicks',
|
|
},
|
|
{
|
|
id: 'address',
|
|
label: 'Street Address',
|
|
},
|
|
{
|
|
id: 'engagements_last_meeting_booked',
|
|
label: 'Date of last meeting booked in meetings tool',
|
|
},
|
|
{
|
|
id: 'engagements_last_meeting_booked_campaign',
|
|
label: 'Campaign of last booking in meetings tool',
|
|
},
|
|
{
|
|
id: 'engagements_last_meeting_booked_medium',
|
|
label: 'Medium of last booking in meetings tool',
|
|
},
|
|
{
|
|
id: 'engagements_last_meeting_booked_source',
|
|
label: 'Source of last booking in meetings tool',
|
|
},
|
|
{
|
|
id: 'hs_analytics_first_visit_timestamp',
|
|
label: 'Time of First Session',
|
|
},
|
|
{
|
|
id: 'hs_email_last_open_date',
|
|
label: 'Last marketing email open date',
|
|
},
|
|
{
|
|
id: 'hs_latest_meeting_activity',
|
|
label: 'Latest meeting activity',
|
|
},
|
|
{
|
|
id: 'hs_sales_email_last_replied',
|
|
label: 'Recent Sales Email Replied Date',
|
|
},
|
|
{
|
|
id: 'hs_social_linkedin_clicks',
|
|
label: 'LinkedIn Clicks',
|
|
},
|
|
{
|
|
id: 'hubspot_owner_id',
|
|
label: 'Contact owner',
|
|
},
|
|
{
|
|
id: 'notes_last_contacted',
|
|
label: 'Last Contacted',
|
|
},
|
|
{
|
|
id: 'notes_last_updated',
|
|
label: 'Last Activity Date',
|
|
},
|
|
{
|
|
id: 'notes_next_activity_date',
|
|
label: 'Next Activity Date',
|
|
},
|
|
{
|
|
id: 'num_contacted_notes',
|
|
label: 'Number of times contacted',
|
|
},
|
|
{
|
|
id: 'num_notes',
|
|
label: 'Number of Sales Activities',
|
|
},
|
|
{
|
|
id: 'owneremail',
|
|
label: 'HubSpot Owner Email (legacy)',
|
|
},
|
|
{
|
|
id: 'ownername',
|
|
label: 'HubSpot Owner Name (legacy)',
|
|
},
|
|
{
|
|
id: 'surveymonkeyeventlastupdated',
|
|
label: 'SurveyMonkey Event Last Updated',
|
|
},
|
|
{
|
|
id: 'webinareventlastupdated',
|
|
label: 'Webinar Event Last Updated',
|
|
},
|
|
{
|
|
id: 'city',
|
|
label: 'City',
|
|
},
|
|
{
|
|
id: 'hs_analytics_last_timestamp',
|
|
label: 'Time Last Seen',
|
|
},
|
|
{
|
|
id: 'hs_email_last_click_date',
|
|
label: 'Last marketing email click date',
|
|
},
|
|
{
|
|
id: 'hs_social_google_plus_clicks',
|
|
label: 'Google Plus Clicks',
|
|
},
|
|
{
|
|
id: 'hubspot_team_id',
|
|
label: 'HubSpot Team',
|
|
},
|
|
{
|
|
id: 'linkedinbio',
|
|
label: 'LinkedIn Bio',
|
|
},
|
|
{
|
|
id: 'twitterbio',
|
|
label: 'Twitter Bio',
|
|
},
|
|
{
|
|
id: 'hs_all_owner_ids',
|
|
label: 'All owner ids',
|
|
},
|
|
{
|
|
id: 'hs_analytics_last_visit_timestamp',
|
|
label: 'Time of Last Session',
|
|
},
|
|
{
|
|
id: 'hs_email_first_send_date',
|
|
label: 'First marketing email send date',
|
|
},
|
|
{
|
|
id: 'hs_social_num_broadcast_clicks',
|
|
label: 'Broadcast Clicks',
|
|
},
|
|
{
|
|
id: 'state',
|
|
label: 'State/Region',
|
|
},
|
|
{
|
|
id: 'hs_all_team_ids',
|
|
label: 'All team ids',
|
|
},
|
|
{
|
|
id: 'hs_analytics_source',
|
|
label: 'Original Source',
|
|
},
|
|
{
|
|
id: 'hs_email_first_open_date',
|
|
label: 'First marketing email open date',
|
|
},
|
|
{
|
|
id: 'zip',
|
|
label: 'Postal Code',
|
|
},
|
|
{
|
|
id: 'country',
|
|
label: 'Country/Region',
|
|
},
|
|
{
|
|
id: 'hs_all_accessible_team_ids',
|
|
label: 'All accessible team ids',
|
|
},
|
|
{
|
|
id: 'hs_analytics_source_data_1',
|
|
label: 'Original Source Drill-Down 1',
|
|
},
|
|
{
|
|
id: 'hs_email_first_click_date',
|
|
label: 'First marketing email click date',
|
|
},
|
|
{
|
|
id: 'linkedinconnections',
|
|
label: 'LinkedIn Connections',
|
|
},
|
|
{
|
|
id: 'hs_analytics_source_data_2',
|
|
label: 'Original Source Drill-Down 2',
|
|
},
|
|
{
|
|
id: 'hs_email_is_ineligible',
|
|
label: 'Is globally ineligible',
|
|
},
|
|
{
|
|
id: 'hs_language',
|
|
label: 'Preferred language',
|
|
},
|
|
{
|
|
id: 'kloutscoregeneral',
|
|
label: 'Klout Score',
|
|
},
|
|
{
|
|
id: 'hs_analytics_first_referrer',
|
|
label: 'First Referring Site',
|
|
},
|
|
{
|
|
id: 'hs_email_first_reply_date',
|
|
label: 'First marketing email reply date',
|
|
},
|
|
{
|
|
id: 'jobtitle',
|
|
label: 'Job Title',
|
|
},
|
|
{
|
|
id: 'photo',
|
|
label: 'Photo',
|
|
},
|
|
{
|
|
id: 'hs_analytics_last_referrer',
|
|
label: 'Last Referring Site',
|
|
},
|
|
{
|
|
id: 'hs_email_last_reply_date',
|
|
label: 'Last marketing email reply date',
|
|
},
|
|
{
|
|
id: 'message',
|
|
label: 'Message',
|
|
},
|
|
{
|
|
id: 'closedate',
|
|
label: 'Close Date',
|
|
},
|
|
{
|
|
id: 'hs_analytics_average_page_views',
|
|
label: 'Average Pageviews',
|
|
},
|
|
{
|
|
id: 'hs_email_replied',
|
|
label: 'Marketing emails replied',
|
|
},
|
|
{
|
|
id: 'hs_analytics_revenue',
|
|
label: 'Event Revenue',
|
|
},
|
|
{
|
|
id: 'hs_lifecyclestage_lead_date',
|
|
label: 'Became a Lead Date',
|
|
},
|
|
{
|
|
id: 'hs_lifecyclestage_marketingqualifiedlead_date',
|
|
label: 'Became a Marketing Qualified Lead Date',
|
|
},
|
|
{
|
|
id: 'hs_lifecyclestage_opportunity_date',
|
|
label: 'Became an Opportunity Date',
|
|
},
|
|
{
|
|
id: 'lifecyclestage',
|
|
label: 'Lifecycle Stage',
|
|
},
|
|
{
|
|
id: 'hs_lifecyclestage_salesqualifiedlead_date',
|
|
label: 'Became a Sales Qualified Lead Date',
|
|
},
|
|
{
|
|
id: 'createdate',
|
|
label: 'Create Date',
|
|
},
|
|
{
|
|
id: 'hs_lifecyclestage_evangelist_date',
|
|
label: 'Became an Evangelist Date',
|
|
},
|
|
{
|
|
id: 'hs_lifecyclestage_customer_date',
|
|
label: 'Became a Customer Date',
|
|
},
|
|
{
|
|
id: 'hubspotscore',
|
|
label: 'HubSpot Score',
|
|
},
|
|
{
|
|
id: 'company',
|
|
label: 'Company Name',
|
|
},
|
|
{
|
|
id: 'hs_lifecyclestage_subscriber_date',
|
|
label: 'Became a Subscriber Date',
|
|
},
|
|
{
|
|
id: 'hs_lifecyclestage_other_date',
|
|
label: 'Became an Other Lifecycle Date',
|
|
},
|
|
{
|
|
id: 'website',
|
|
label: 'Website URL',
|
|
},
|
|
{
|
|
id: 'numemployees',
|
|
label: 'Number of Employees',
|
|
},
|
|
{
|
|
id: 'annualrevenue',
|
|
label: 'Annual Revenue',
|
|
},
|
|
{
|
|
id: 'industry',
|
|
label: 'Industry',
|
|
},
|
|
{
|
|
id: 'associatedcompanyid',
|
|
label: 'Associated Company ID',
|
|
},
|
|
{
|
|
id: 'associatedcompanylastupdated',
|
|
label: 'Associated Company Last Updated',
|
|
},
|
|
{
|
|
id: 'hs_predictivecontactscorebucket',
|
|
label: 'Lead Rating',
|
|
},
|
|
{
|
|
id: 'hs_predictivecontactscore',
|
|
label: 'Predictive Lead Score',
|
|
},
|
|
];
|
|
|
|
export const companyFields = [
|
|
{
|
|
id: 'about_us',
|
|
label: 'About Us',
|
|
},
|
|
{
|
|
id: 'closedate_timestamp_earliest_value_a2a17e6e',
|
|
label: 'closedate_timestamp_earliest_value_a2a17e6e',
|
|
},
|
|
{
|
|
id: 'facebookfans',
|
|
label: 'Facebook Fans',
|
|
},
|
|
{
|
|
id: 'first_contact_createdate_timestamp_earliest_value_78b50eea',
|
|
label: 'first_contact_createdate_timestamp_earliest_value_78b50eea',
|
|
},
|
|
{
|
|
id: 'first_conversion_date',
|
|
label: 'First Conversion Date',
|
|
},
|
|
{
|
|
id: 'first_conversion_date_timestamp_earliest_value_61f58f2c',
|
|
label: 'first_conversion_date_timestamp_earliest_value_61f58f2c',
|
|
},
|
|
{
|
|
id: 'first_conversion_event_name',
|
|
label: 'First Conversion',
|
|
},
|
|
{
|
|
id: 'first_conversion_event_name_timestamp_earliest_value_68ddae0a',
|
|
label: 'first_conversion_event_name_timestamp_earliest_value_68ddae0a',
|
|
},
|
|
{
|
|
id: 'first_deal_created_date',
|
|
label: 'First Deal Created Date',
|
|
},
|
|
{
|
|
id: 'founded_year',
|
|
label: 'Year Founded',
|
|
},
|
|
{
|
|
id: 'hs_additional_domains',
|
|
label: 'Additional Domains',
|
|
},
|
|
{
|
|
id: 'hs_analytics_first_timestamp',
|
|
label: 'Time First Seen',
|
|
},
|
|
{
|
|
id: 'hs_analytics_first_timestamp_timestamp_earliest_value_11e3a63a',
|
|
label: 'hs_analytics_first_timestamp_timestamp_earliest_value_11e3a63a',
|
|
},
|
|
{
|
|
id: 'hs_analytics_first_touch_converting_campaign',
|
|
label: 'First Touch Converting Campaign',
|
|
},
|
|
{
|
|
id: 'hs_analytics_first_touch_converting_campaign_timestamp_earliest_value_4757fe10',
|
|
label: 'hs_analytics_first_touch_converting_campaign_timestamp_earliest_value_4757fe10',
|
|
},
|
|
{
|
|
id: 'hs_analytics_first_visit_timestamp',
|
|
label: 'Time of First Session',
|
|
},
|
|
{
|
|
id: 'hs_analytics_first_visit_timestamp_timestamp_earliest_value_accc17ae',
|
|
label: 'hs_analytics_first_visit_timestamp_timestamp_earliest_value_accc17ae',
|
|
},
|
|
{
|
|
id: 'hs_analytics_last_timestamp',
|
|
label: 'Time Last Seen',
|
|
},
|
|
{
|
|
id: 'hs_analytics_last_timestamp_timestamp_latest_value_4e16365a',
|
|
label: 'hs_analytics_last_timestamp_timestamp_latest_value_4e16365a',
|
|
},
|
|
{
|
|
id: 'hs_analytics_last_touch_converting_campaign',
|
|
label: 'Last Touch Converting Campaign',
|
|
},
|
|
{
|
|
id: 'hs_analytics_last_touch_converting_campaign_timestamp_latest_value_81a64e30',
|
|
label: 'hs_analytics_last_touch_converting_campaign_timestamp_latest_value_81a64e30',
|
|
},
|
|
{
|
|
id: 'hs_analytics_last_visit_timestamp',
|
|
label: 'Time of Last Session',
|
|
},
|
|
{
|
|
id: 'hs_analytics_last_visit_timestamp_timestamp_latest_value_999a0fce',
|
|
label: 'hs_analytics_last_visit_timestamp_timestamp_latest_value_999a0fce',
|
|
},
|
|
{
|
|
id: 'hs_analytics_num_page_views',
|
|
label: 'Number of Pageviews',
|
|
},
|
|
{
|
|
id: 'hs_analytics_num_page_views_cardinality_sum_e46e85b0',
|
|
label: 'hs_analytics_num_page_views_cardinality_sum_e46e85b0',
|
|
},
|
|
{
|
|
id: 'hs_analytics_num_visits',
|
|
label: 'Number of Sessions',
|
|
},
|
|
{
|
|
id: 'hs_analytics_num_visits_cardinality_sum_53d952a6',
|
|
label: 'hs_analytics_num_visits_cardinality_sum_53d952a6',
|
|
},
|
|
{
|
|
id: 'hs_analytics_source',
|
|
label: 'Original Source Type',
|
|
},
|
|
{
|
|
id: 'hs_analytics_source_data_1',
|
|
label: 'Original Source Data 1',
|
|
},
|
|
{
|
|
id: 'hs_analytics_source_data_1_timestamp_earliest_value_9b2f1fa1',
|
|
label: 'hs_analytics_source_data_1_timestamp_earliest_value_9b2f1fa1',
|
|
},
|
|
{
|
|
id: 'hs_analytics_source_data_2',
|
|
label: 'Original Source Data 2',
|
|
},
|
|
{
|
|
id: 'hs_analytics_source_data_2_timestamp_earliest_value_9b2f9400',
|
|
label: 'hs_analytics_source_data_2_timestamp_earliest_value_9b2f9400',
|
|
},
|
|
{
|
|
id: 'hs_analytics_source_timestamp_earliest_value_25a3a52c',
|
|
label: 'hs_analytics_source_timestamp_earliest_value_25a3a52c',
|
|
},
|
|
{
|
|
id: 'hs_avatar_filemanager_key',
|
|
label: 'Avatar FileManager key',
|
|
},
|
|
{
|
|
id: 'hs_created_by_user_id',
|
|
label: 'Created by user ID',
|
|
},
|
|
{
|
|
id: 'hs_createdate',
|
|
label: 'Object create date/time',
|
|
},
|
|
{
|
|
id: 'hs_ideal_customer_profile',
|
|
label: 'Ideal Customer Profile Tier',
|
|
},
|
|
{
|
|
id: 'hs_is_target_account',
|
|
label: 'Target Account',
|
|
},
|
|
{
|
|
id: 'hs_last_booked_meeting_date',
|
|
label: 'Last Booked Meeting Date',
|
|
},
|
|
{
|
|
id: 'hs_last_logged_call_date',
|
|
label: 'Last Logged Call Date',
|
|
},
|
|
{
|
|
id: 'hs_last_open_task_date',
|
|
label: 'Last Open Task Date',
|
|
},
|
|
{
|
|
id: 'hs_last_sales_activity_date',
|
|
label: 'last sales activity date old',
|
|
},
|
|
{
|
|
id: 'hs_last_sales_activity_timestamp',
|
|
label: 'Last Engagement Date',
|
|
},
|
|
{
|
|
id: 'hs_lastmodifieddate',
|
|
label: 'Last Modified Date',
|
|
},
|
|
{
|
|
id: 'hs_merged_object_ids',
|
|
label: 'Merged object IDs',
|
|
},
|
|
{
|
|
id: 'hs_num_blockers',
|
|
label: 'Number of blockers',
|
|
},
|
|
{
|
|
id: 'hs_num_contacts_with_buying_roles',
|
|
label: 'Number of contacts with a buying role',
|
|
},
|
|
{
|
|
id: 'hs_num_decision_makers',
|
|
label: 'Number of decision makers',
|
|
},
|
|
{
|
|
id: 'hs_num_open_deals',
|
|
label: 'Number of open deals',
|
|
},
|
|
{
|
|
id: 'hs_object_id',
|
|
label: 'Company ID',
|
|
},
|
|
{
|
|
id: 'hs_predictivecontactscore_v2',
|
|
label: 'Likelihood to close',
|
|
},
|
|
{
|
|
id: 'hs_predictivecontactscore_v2_next_max_max_d4e58c1e',
|
|
label: 'hs_predictivecontactscore_v2_next_max_max_d4e58c1e',
|
|
},
|
|
{
|
|
id: 'hs_target_account',
|
|
label: 'Target Account',
|
|
},
|
|
{
|
|
id: 'hs_target_account_probability',
|
|
label: 'Target Account Probability',
|
|
},
|
|
{
|
|
id: 'hs_target_account_recommendation_snooze_time',
|
|
label: 'Target Account Recommendation Snooze Time',
|
|
},
|
|
{
|
|
id: 'hs_target_account_recommendation_state',
|
|
label: 'Target Account Recommendation State',
|
|
},
|
|
{
|
|
id: 'hs_total_deal_value',
|
|
label: 'Total open deal value',
|
|
},
|
|
{
|
|
id: 'hs_updated_by_user_id',
|
|
label: 'Updated by user ID',
|
|
},
|
|
{
|
|
id: 'hs_user_ids_of_all_owners',
|
|
label: 'User IDs of all owners',
|
|
},
|
|
{
|
|
id: 'hubspot_owner_assigneddate',
|
|
label: 'Owner Assigned Date',
|
|
},
|
|
{
|
|
id: 'is_public',
|
|
label: 'Is Public',
|
|
},
|
|
{
|
|
id: 'num_associated_contacts',
|
|
label: 'Associated Contacts',
|
|
},
|
|
{
|
|
id: 'num_associated_deals',
|
|
label: 'Associated Deals',
|
|
},
|
|
{
|
|
id: 'num_conversion_events',
|
|
label: 'Number of Form Submissions',
|
|
},
|
|
{
|
|
id: 'num_conversion_events_cardinality_sum_d095f14b',
|
|
label: 'num_conversion_events_cardinality_sum_d095f14b',
|
|
},
|
|
{
|
|
id: 'recent_conversion_date',
|
|
label: 'Recent Conversion Date',
|
|
},
|
|
{
|
|
id: 'recent_conversion_date_timestamp_latest_value_72856da1',
|
|
label: 'recent_conversion_date_timestamp_latest_value_72856da1',
|
|
},
|
|
{
|
|
id: 'recent_conversion_event_name',
|
|
label: 'Recent Conversion',
|
|
},
|
|
{
|
|
id: 'recent_conversion_event_name_timestamp_latest_value_66c820bf',
|
|
label: 'recent_conversion_event_name_timestamp_latest_value_66c820bf',
|
|
},
|
|
{
|
|
id: 'recent_deal_amount',
|
|
label: 'Recent Deal Amount',
|
|
},
|
|
{
|
|
id: 'recent_deal_close_date',
|
|
label: 'Recent Deal Close Date',
|
|
},
|
|
{
|
|
id: 'timezone',
|
|
label: 'Time Zone',
|
|
},
|
|
{
|
|
id: 'total_money_raised',
|
|
label: 'Total Money Raised',
|
|
},
|
|
{
|
|
id: 'total_revenue',
|
|
label: 'Total Revenue',
|
|
},
|
|
{
|
|
id: 'name',
|
|
label: 'Name',
|
|
},
|
|
{
|
|
id: 'owneremail',
|
|
label: 'HubSpot Owner Email',
|
|
},
|
|
{
|
|
id: 'twitterhandle',
|
|
label: 'Twitter Handle',
|
|
},
|
|
{
|
|
id: 'ownername',
|
|
label: 'HubSpot Owner Name',
|
|
},
|
|
{
|
|
id: 'phone',
|
|
label: 'Phone Number',
|
|
},
|
|
{
|
|
id: 'twitterbio',
|
|
label: 'Twitter Bio',
|
|
},
|
|
{
|
|
id: 'twitterfollowers',
|
|
label: 'Twitter Followers',
|
|
},
|
|
{
|
|
id: 'address',
|
|
label: 'Street Address',
|
|
},
|
|
{
|
|
id: 'address2',
|
|
label: 'Street Address 2',
|
|
},
|
|
{
|
|
id: 'facebook_company_page',
|
|
label: 'Facebook Company Page',
|
|
},
|
|
{
|
|
id: 'city',
|
|
label: 'City',
|
|
},
|
|
{
|
|
id: 'linkedin_company_page',
|
|
label: 'LinkedIn Company Page',
|
|
},
|
|
{
|
|
id: 'linkedinbio',
|
|
label: 'LinkedIn Bio',
|
|
},
|
|
{
|
|
id: 'state',
|
|
label: 'State/Region',
|
|
},
|
|
{
|
|
id: 'googleplus_page',
|
|
label: 'Google Plus Page',
|
|
},
|
|
{
|
|
id: 'engagements_last_meeting_booked',
|
|
label: 'Date of last meeting booked in meetings tool',
|
|
},
|
|
{
|
|
id: 'engagements_last_meeting_booked_campaign',
|
|
label: 'Campaign of last booking in meetings tool',
|
|
},
|
|
{
|
|
id: 'engagements_last_meeting_booked_medium',
|
|
label: 'Medium of last booking in meetings tool',
|
|
},
|
|
{
|
|
id: 'engagements_last_meeting_booked_source',
|
|
label: 'Source of last booking in meetings tool',
|
|
},
|
|
{
|
|
id: 'hs_latest_meeting_activity',
|
|
label: 'Latest meeting activity',
|
|
},
|
|
{
|
|
id: 'hs_sales_email_last_replied',
|
|
label: 'Recent Sales Email Replied Date',
|
|
},
|
|
{
|
|
id: 'hubspot_owner_id',
|
|
label: 'Company owner',
|
|
},
|
|
{
|
|
id: 'notes_last_contacted',
|
|
label: 'Last Contacted',
|
|
},
|
|
{
|
|
id: 'notes_last_updated',
|
|
label: 'Last Activity Date',
|
|
},
|
|
{
|
|
id: 'notes_next_activity_date',
|
|
label: 'Next Activity Date',
|
|
},
|
|
{
|
|
id: 'num_contacted_notes',
|
|
label: 'Number of times contacted',
|
|
},
|
|
{
|
|
id: 'num_notes',
|
|
label: 'Number of Sales Activities',
|
|
},
|
|
{
|
|
id: 'zip',
|
|
label: 'Postal Code',
|
|
},
|
|
{
|
|
id: 'country',
|
|
label: 'Country/Region',
|
|
},
|
|
{
|
|
id: 'hubspot_team_id',
|
|
label: 'HubSpot Team',
|
|
},
|
|
{
|
|
id: 'hs_all_owner_ids',
|
|
label: 'All owner ids',
|
|
},
|
|
{
|
|
id: 'website',
|
|
label: 'Website URL',
|
|
},
|
|
{
|
|
id: 'domain',
|
|
label: 'Company Domain Name',
|
|
},
|
|
{
|
|
id: 'hs_all_team_ids',
|
|
label: 'All team ids',
|
|
},
|
|
{
|
|
id: 'hs_all_accessible_team_ids',
|
|
label: 'All accessible team ids',
|
|
},
|
|
{
|
|
id: 'numberofemployees',
|
|
label: 'Number of Employees',
|
|
},
|
|
{
|
|
id: 'industry',
|
|
label: 'Industry',
|
|
},
|
|
{
|
|
id: 'annualrevenue',
|
|
label: 'Annual Revenue',
|
|
},
|
|
{
|
|
id: 'lifecyclestage',
|
|
label: 'Lifecycle Stage',
|
|
},
|
|
{
|
|
id: 'hs_lead_status',
|
|
label: 'Lead Status',
|
|
},
|
|
{
|
|
id: 'hs_parent_company_id',
|
|
label: 'Parent Company',
|
|
},
|
|
{
|
|
id: 'type',
|
|
label: 'Type',
|
|
},
|
|
{
|
|
id: 'description',
|
|
label: 'Description',
|
|
},
|
|
{
|
|
id: 'hs_num_child_companies',
|
|
label: 'Number of child companies',
|
|
},
|
|
{
|
|
id: 'hubspotscore',
|
|
label: 'HubSpot Score',
|
|
},
|
|
{
|
|
id: 'createdate',
|
|
label: 'Create Date',
|
|
},
|
|
{
|
|
id: 'closedate',
|
|
label: 'Close Date',
|
|
},
|
|
{
|
|
id: 'first_contact_createdate',
|
|
label: 'First Contact Create Date',
|
|
},
|
|
{
|
|
id: 'days_to_close',
|
|
label: 'Days to Close',
|
|
},
|
|
{
|
|
id: 'web_technologies',
|
|
label: 'Web Technologies',
|
|
},
|
|
];
|
|
|
|
export const dealFields = [
|
|
{
|
|
id: 'amount_in_home_currency',
|
|
label: 'Amount in company currency',
|
|
},
|
|
{
|
|
id: 'days_to_close',
|
|
label: 'Days to close',
|
|
},
|
|
{
|
|
id: 'deal_currency_code',
|
|
label: 'Currency',
|
|
},
|
|
{
|
|
id: 'hs_acv',
|
|
label: 'Annual contract value',
|
|
},
|
|
{
|
|
id: 'hs_analytics_source',
|
|
label: 'Original Source Type',
|
|
},
|
|
{
|
|
id: 'hs_analytics_source_data_1',
|
|
label: 'Original Source Data 1',
|
|
},
|
|
{
|
|
id: 'hs_analytics_source_data_2',
|
|
label: 'Original Source Data 2',
|
|
},
|
|
{
|
|
id: 'hs_arr',
|
|
label: 'Annual recurring revenue',
|
|
},
|
|
{
|
|
id: 'hs_campaign',
|
|
label: 'HubSpot Campaign',
|
|
},
|
|
{
|
|
id: 'hs_closed_amount',
|
|
label: 'Closed Deal Amount',
|
|
},
|
|
{
|
|
id: 'hs_closed_amount_in_home_currency',
|
|
label: 'Closed Deal Amount In Home Currency',
|
|
},
|
|
{
|
|
id: 'hs_created_by_user_id',
|
|
label: 'Created by user ID',
|
|
},
|
|
{
|
|
id: 'hs_date_entered_appointmentscheduled',
|
|
label: "Date entered 'Appointment Scheduled (Sales Pipeline)'",
|
|
},
|
|
{
|
|
id: 'hs_date_entered_closedlost',
|
|
label: "Date entered 'Closed Lost (Sales Pipeline)'",
|
|
},
|
|
{
|
|
id: 'hs_date_entered_closedwon',
|
|
label: "Date entered 'Closed Won (Sales Pipeline)'",
|
|
},
|
|
{
|
|
id: 'hs_date_entered_contractsent',
|
|
label: "Date entered 'Contract Sent (Sales Pipeline)'",
|
|
},
|
|
{
|
|
id: 'hs_date_entered_decisionmakerboughtin',
|
|
label: "Date entered 'Decision Maker Bought-In (Sales Pipeline)'",
|
|
},
|
|
{
|
|
id: 'hs_date_entered_presentationscheduled',
|
|
label: "Date entered 'Presentation Scheduled (Sales Pipeline)'",
|
|
},
|
|
{
|
|
id: 'hs_date_entered_qualifiedtobuy',
|
|
label: "Date entered 'Qualified To Buy (Sales Pipeline)'",
|
|
},
|
|
{
|
|
id: 'hs_date_exited_appointmentscheduled',
|
|
label: "Date exited 'Appointment Scheduled (Sales Pipeline)'",
|
|
},
|
|
{
|
|
id: 'hs_date_exited_closedlost',
|
|
label: "Date exited 'Closed Lost (Sales Pipeline)'",
|
|
},
|
|
{
|
|
id: 'hs_date_exited_closedwon',
|
|
label: "Date exited 'Closed Won (Sales Pipeline)'",
|
|
},
|
|
{
|
|
id: 'hs_date_exited_contractsent',
|
|
label: "Date exited 'Contract Sent (Sales Pipeline)'",
|
|
},
|
|
{
|
|
id: 'hs_date_exited_decisionmakerboughtin',
|
|
label: "Date exited 'Decision Maker Bought-In (Sales Pipeline)'",
|
|
},
|
|
{
|
|
id: 'hs_date_exited_presentationscheduled',
|
|
label: "Date exited 'Presentation Scheduled (Sales Pipeline)'",
|
|
},
|
|
{
|
|
id: 'hs_date_exited_qualifiedtobuy',
|
|
label: "Date exited 'Qualified To Buy (Sales Pipeline)'",
|
|
},
|
|
{
|
|
id: 'hs_deal_amount_calculation_preference',
|
|
label: 'Deal amount calculation preference',
|
|
},
|
|
{
|
|
id: 'hs_deal_stage_probability',
|
|
label: 'Deal Stage Probability',
|
|
},
|
|
{
|
|
id: 'hs_forecast_amount',
|
|
label: 'Forecast Amount',
|
|
},
|
|
{
|
|
id: 'hs_forecast_probability',
|
|
label: 'Forecast Probability',
|
|
},
|
|
{
|
|
id: 'hs_is_closed',
|
|
label: 'Is Deal Closed?',
|
|
},
|
|
{
|
|
id: 'hs_lastmodifieddate',
|
|
label: 'Last Modified Date',
|
|
},
|
|
{
|
|
id: 'hs_likelihood_to_close',
|
|
label: 'Likelihood to close by the close date',
|
|
},
|
|
{
|
|
id: 'hs_line_item_global_term_hs_discount_percentage',
|
|
label: 'Global Term Line Item Discount Percentage',
|
|
},
|
|
{
|
|
id: 'hs_line_item_global_term_hs_discount_percentage_enabled',
|
|
label: 'Global Term Line Item Discount Percentage Enabled',
|
|
},
|
|
{
|
|
id: 'hs_line_item_global_term_hs_recurring_billing_period',
|
|
label: 'Global Term Line Item Recurring Billing Period',
|
|
},
|
|
{
|
|
id: 'hs_line_item_global_term_hs_recurring_billing_period_enabled',
|
|
label: 'Global Term Line Item Recurring Billing Period Enabled',
|
|
},
|
|
{
|
|
id: 'hs_line_item_global_term_hs_recurring_billing_start_date',
|
|
label: 'Global Term Line Item Recurring Billing Start Date',
|
|
},
|
|
{
|
|
id: 'hs_line_item_global_term_hs_recurring_billing_start_date_enabled',
|
|
label: 'Global Term Line Item Recurring Billing Start Date Enabled',
|
|
},
|
|
{
|
|
id: 'hs_line_item_global_term_recurringbillingfrequency',
|
|
label: 'Global Term Line Item Recurring Billing Frequency',
|
|
},
|
|
{
|
|
id: 'hs_line_item_global_term_recurringbillingfrequency_enabled',
|
|
label: 'Global Term Line Item Recurring Billing Frequency Enabled',
|
|
},
|
|
{
|
|
id: 'hs_manual_forecast_category',
|
|
label: 'Forecast category',
|
|
},
|
|
{
|
|
id: 'hs_merged_object_ids',
|
|
label: 'Merged object IDs',
|
|
},
|
|
{
|
|
id: 'hs_mrr',
|
|
label: 'Monthly recurring revenue',
|
|
},
|
|
{
|
|
id: 'hs_next_step',
|
|
label: 'Next step',
|
|
},
|
|
{
|
|
id: 'hs_object_id',
|
|
label: 'Deal ID',
|
|
},
|
|
{
|
|
id: 'hs_predicted_amount',
|
|
label: 'The predicted deal amount',
|
|
},
|
|
{
|
|
id: 'hs_predicted_amount_in_home_currency',
|
|
label: "The predicted deal amount in your company's currency",
|
|
},
|
|
{
|
|
id: 'hs_projected_amount',
|
|
label: 'Projected Deal Amount',
|
|
},
|
|
{
|
|
id: 'hs_projected_amount_in_home_currency',
|
|
label: 'Projected Deal Amount in Home Currency',
|
|
},
|
|
{
|
|
id: 'hs_tcv',
|
|
label: 'Total contract value',
|
|
},
|
|
{
|
|
id: 'hs_time_in_appointmentscheduled',
|
|
label: "Time in 'Appointment Scheduled (Sales Pipeline)'",
|
|
},
|
|
{
|
|
id: 'hs_time_in_closedlost',
|
|
label: "Time in 'Closed Lost (Sales Pipeline)'",
|
|
},
|
|
{
|
|
id: 'hs_time_in_closedwon',
|
|
label: "Time in 'Closed Won (Sales Pipeline)'",
|
|
},
|
|
{
|
|
id: 'hs_time_in_contractsent',
|
|
label: "Time in 'Contract Sent (Sales Pipeline)'",
|
|
},
|
|
{
|
|
id: 'hs_time_in_decisionmakerboughtin',
|
|
label: "Time in 'Decision Maker Bought-In (Sales Pipeline)'",
|
|
},
|
|
{
|
|
id: 'hs_time_in_presentationscheduled',
|
|
label: "Time in 'Presentation Scheduled (Sales Pipeline)'",
|
|
},
|
|
{
|
|
id: 'hs_time_in_qualifiedtobuy',
|
|
label: "Time in 'Qualified To Buy (Sales Pipeline)'",
|
|
},
|
|
{
|
|
id: 'hs_updated_by_user_id',
|
|
label: 'Updated by user ID',
|
|
},
|
|
{
|
|
id: 'hs_user_ids_of_all_owners',
|
|
label: 'User IDs of all owners',
|
|
},
|
|
{
|
|
id: 'hubspot_owner_assigneddate',
|
|
label: 'Owner Assigned Date',
|
|
},
|
|
{
|
|
id: 'testing',
|
|
label: 'testing',
|
|
},
|
|
{
|
|
id: 'dealname',
|
|
label: 'Deal Name',
|
|
},
|
|
{
|
|
id: 'amount',
|
|
label: 'Amount',
|
|
},
|
|
{
|
|
id: 'dealstage',
|
|
label: 'Deal Stage',
|
|
},
|
|
{
|
|
id: 'pipeline',
|
|
label: 'Pipeline',
|
|
},
|
|
{
|
|
id: 'closedate',
|
|
label: 'Close Date',
|
|
},
|
|
{
|
|
id: 'createdate',
|
|
label: 'Create Date',
|
|
},
|
|
{
|
|
id: 'engagements_last_meeting_booked',
|
|
label: 'Date of last meeting booked in meetings tool',
|
|
},
|
|
{
|
|
id: 'engagements_last_meeting_booked_campaign',
|
|
label: 'Campaign of last booking in meetings tool',
|
|
},
|
|
{
|
|
id: 'engagements_last_meeting_booked_medium',
|
|
label: 'Medium of last booking in meetings tool',
|
|
},
|
|
{
|
|
id: 'engagements_last_meeting_booked_source',
|
|
label: 'Source of last booking in meetings tool',
|
|
},
|
|
{
|
|
id: 'hs_latest_meeting_activity',
|
|
label: 'Latest meeting activity',
|
|
},
|
|
{
|
|
id: 'hs_sales_email_last_replied',
|
|
label: 'Recent Sales Email Replied Date',
|
|
},
|
|
{
|
|
id: 'hubspot_owner_id',
|
|
label: 'Deal owner',
|
|
},
|
|
{
|
|
id: 'notes_last_contacted',
|
|
label: 'Last Contacted',
|
|
},
|
|
{
|
|
id: 'notes_last_updated',
|
|
label: 'Last Activity Date',
|
|
},
|
|
{
|
|
id: 'notes_next_activity_date',
|
|
label: 'Next Activity Date',
|
|
},
|
|
{
|
|
id: 'num_contacted_notes',
|
|
label: 'Number of times contacted',
|
|
},
|
|
{
|
|
id: 'num_notes',
|
|
label: 'Number of Sales Activities',
|
|
},
|
|
{
|
|
id: 'hs_createdate',
|
|
label: 'HubSpot Create Date',
|
|
},
|
|
{
|
|
id: 'hubspot_team_id',
|
|
label: 'HubSpot Team',
|
|
},
|
|
{
|
|
id: 'dealtype',
|
|
label: 'Deal Type',
|
|
},
|
|
{
|
|
id: 'hs_all_owner_ids',
|
|
label: 'All owner ids',
|
|
},
|
|
{
|
|
id: 'description',
|
|
label: 'Deal Description',
|
|
},
|
|
{
|
|
id: 'hs_all_team_ids',
|
|
label: 'All team ids',
|
|
},
|
|
{
|
|
id: 'hs_all_accessible_team_ids',
|
|
label: 'All accessible team ids',
|
|
},
|
|
{
|
|
id: 'num_associated_contacts',
|
|
label: 'Number of Contacts',
|
|
},
|
|
{
|
|
id: 'closed_lost_reason',
|
|
label: 'Closed Lost Reason',
|
|
},
|
|
{
|
|
id: 'closed_won_reason',
|
|
label: 'Closed Won Reason',
|
|
},
|
|
];
|
|
|
|
const reduceMetadatFields = (data: string[]) => {
|
|
return data
|
|
.reduce((a, v) => {
|
|
//@ts-ignore
|
|
a.push(...v.split(','));
|
|
return a;
|
|
}, [])
|
|
.map((email) => ({ email }));
|
|
};
|
|
|
|
export const getEmailMetadata = (meta: IDataObject) => {
|
|
return {
|
|
from: {
|
|
...(meta.fromEmail && { email: meta.fromEmail }),
|
|
...(meta.firstName && { firstName: meta.firstName }),
|
|
...(meta.lastName && { lastName: meta.lastName }),
|
|
},
|
|
cc: reduceMetadatFields((meta.cc as string[]) || []),
|
|
bcc: reduceMetadatFields((meta.bcc as string[]) || []),
|
|
...(meta.subject && { subject: meta.subject }),
|
|
...(meta.html && { html: meta.html }),
|
|
...(meta.text && { text: meta.text }),
|
|
};
|
|
};
|
|
|
|
export const getTaskMetadata = (meta: IDataObject) => {
|
|
return {
|
|
...(meta.body && { body: meta.body }),
|
|
...(meta.subject && { subject: meta.subject }),
|
|
...(meta.status && { status: meta.status }),
|
|
...(meta.forObjectType && { forObjectType: meta.forObjectType }),
|
|
};
|
|
};
|
|
|
|
export const getMeetingMetadata = (meta: IDataObject) => {
|
|
return {
|
|
...(meta.body && { body: meta.body }),
|
|
...(meta.startTime && { startTime: moment(meta.startTime as string).unix() }),
|
|
...(meta.endTime && { endTime: moment(meta.endTime as string).unix() }),
|
|
...(meta.title && { title: meta.title }),
|
|
...(meta.internalMeetingNotes && { internalMeetingNotes: meta.internalMeetingNotes }),
|
|
};
|
|
};
|
|
|
|
export const getCallMetadata = (meta: IDataObject) => {
|
|
return {
|
|
...(meta.toNumber && { toNumber: meta.toNumber }),
|
|
...(meta.fromNumber && { fromNumber: meta.fromNumber }),
|
|
...(meta.status && { status: meta.status }),
|
|
...(meta.durationMilliseconds && { durationMilliseconds: meta.durationMilliseconds }),
|
|
...(meta.recordingUrl && { recordingUrl: meta.recordingUrl }),
|
|
...(meta.body && { body: meta.body }),
|
|
};
|
|
};
|
|
|
|
export const getAssociations = (associations: {
|
|
companyIds: string;
|
|
dealIds: string;
|
|
ownerIds: string;
|
|
contactIds: string;
|
|
ticketIds: string;
|
|
}) => {
|
|
return {
|
|
...(associations.companyIds && { companyIds: associations.companyIds.toString().split(',') }),
|
|
...(associations.contactIds && { contactIds: associations.contactIds.toString().split(',') }),
|
|
...(associations.dealIds && { dealIds: associations.dealIds.toString().split(',') }),
|
|
...(associations.ownerIds && { ownerIds: associations.ownerIds.toString().split(',') }),
|
|
...(associations.ticketIds && { ticketIds: associations.ticketIds.toString().split(',') }),
|
|
};
|
|
};
|
|
|
|
export async function validateCredentials(
|
|
this: ICredentialTestFunctions,
|
|
decryptedCredentials: ICredentialDataDecryptedObject,
|
|
// tslint:disable-next-line:no-any
|
|
): Promise<any> {
|
|
const credentials = decryptedCredentials;
|
|
|
|
const { apiKey, appToken } = credentials as {
|
|
appToken: string;
|
|
apiKey: string;
|
|
};
|
|
|
|
const options: OptionsWithUri = {
|
|
method: 'GET',
|
|
headers: {},
|
|
uri: 'https://api.hubapi.com/deals/v1/deal/paged',
|
|
json: true,
|
|
};
|
|
|
|
if (apiKey) {
|
|
options.qs = { hapikey: apiKey };
|
|
} else {
|
|
options.headers = { Authorization: `Bearer ${appToken}` };
|
|
}
|
|
|
|
return this.helpers.request(options);
|
|
}
|