summ
Activities Dashboard : Freshsales
if (!window.performance) { window.performance = { mark: function () { return false; }, measure: function () { return false; }, getEntriesByName: function () { return []; }, getEntriesByType: function () { return []; } }; } window.performanceEvents = { htmlParsing: { finished: "fsa-application-htmlParsing-finished", }, application: { start: "fsa-application-load-started", finished: "fsa-application-load-finished", }, applicationBootstrap: { start: "fsa-application-bootstrap-started", finished: "fsa-application-finished", }, primaryDataRequest: { start: "fsa-primaryDataRequest-started", finished: "fsa-primaryDataRequest-finished", }, preloadAssets: { start: "fsa-primary-preload-assets-started", finished: "fsa-primary-preload-assets-finished", }, preloadData: { start: "fsa-primary-preload-data-started", finished: "fsa-primary-preload-data-finished", }, cssAssets: { start: "fsa-primary-css-assets-started", finished: "fsa-primary-css-assets-finished", }, primaryScript: { start: "fsa-primary-script-load-started", finished: "fsa-primary-script-load-finished", }, sentryScript: { start: "fsa-sentry-script-load-started", finished: "fsa-sentry-script-load-finished", }, vendorScript: { start: "fsa-primary-vendor-script-load-started", finished: "fsa-primary-vendor-script-load-finished", }, frontendScript: { start: "fsa-primary-frontend-script-load-started", finished: "fsa-primary-frontend-script-load-finished", }, secondaryScript: { start: "fsa-secondary-script-load-started", finished: "fsa-secondary-script-load-finished", }, postalCustomization: { start: "fsa-portal-customization-started", finished: "fsa-portal-customization-finished", }, ember: { appStart: "fsa-ember-application-started" }, inAppTransition: { start: "fsa-inapp-transition-started", finished: "fsa-inapp-transition-finished", finishedPaint: "fsa-inapp-transition-finished-paint" }, bootstrapSession: { start: "fsa-bootstrap-session-started", finished: "fsa-bootstrap-session-finished" }, bootstrapIntegrations: { start: "fsa-bootstrap-integrations-started", finished: "fsa-bootstrap-integrations-finished" }, bootstrapFormConfig: { start: "fsa-bootstrap-formConfig-started", finished: "fsa-bootstrap-formConfig-finished" }, bootstrapFormMeta: { start: "fsa-bootstrap-formMeta-started", finished: "fsa-bootstrap-formMeta-finished" }, bootstrapModuleCustomization: { start: "fsa-bootstrap-moduleCustomization-started", finished: "fsa-bootstrap-moduleCustomization-finished" }, bootstrapTranslationsFetcher: { start: "fsa-bootstrap-translationsFetcher-started", finished: "fsa-bootstrap-translationsFetcher-finished" }, bootstrapDateTranslator: { start: "fsa-bootstrap-dateTranslator-started", finished: "fsa-bootstrap-dateTranslator-finished" }, bootstrapLeftNavConfig: { start: "fsa-bootstrap-leftNavConfig-started", end: "fsa-bootstrap-leftNavConfig-finished" } }; window.performanceMeasures = { applicationMeaningfulPaint: { start: 'application.start', end: 'application.finished' }, applicationBootstrap: { start: 'applicationBootstrap.start', end: 'applicationBootstrap.finished' }, primaryScript: { start: 'primaryScript.start', end: 'primaryScript.finished' }, sentryScript: { start: 'sentryScript.start', end: 'sentryScript.finished' }, vendorScript: { start: 'vendorScript.start', end: 'vendorScript.finished' }, frontendScript: { start: 'frontendScript.start', end: 'frontendScript.finished' }, secondaryScript: { start: 'secondaryScript.start', end: 'secondaryScript.finished' }, preloadAssets: { start: 'preloadAssets.start', end: 'preloadAssets.finished' }, preloadData: { start: 'preloadData.start', end: 'preloadData.finished' }, cssAssets: { start: 'cssAssets.start', end: 'cssAssets.finished' }, primaryDataRequest: { start: 'primaryDataRequest.start', end: 'primaryDataRequest.finished' }, emberApplicationStart: { start: 'application.start', end: 'ember.appStart' }, inAppTransition: { start: "inAppTransition.start", end: "inAppTransition.finished" }, inAppMeaningfulTransition: { start: "inAppTransition.start", end: "inAppTransition.finishedPaint" }, postalCustomization: { start: "postalCustomization.start", end: "postalCustomization.finished" }, bootstrapSession: { start: "bootstrapSession.start", end: "bootstrapSession.finished" }, bootstrapIntegrations: { start: "bootstrapIntegrations.start", end: "bootstrapIntegrations.finished" }, bootstrapFormConfig: { start: "bootstrapFormConfig.start", end: "bootstrapFormConfig.finished" }, bootstrapFormMeta: { start: "bootstrapFormMeta.start", end: "bootstrapFormMeta.finished" }, bootstrapModuleCustomization: { start: "bootstrapModuleCustomization.start", end: "bootstrapModuleCustomization.finished" }, bootstrapTranslationsFetcher: { start: "bootstrapTranslationsFetcher.start", end: "bootstrapTranslationsFetcher.finished" }, bootstrapDateTranslator: { start: "bootstrapDateTranslator.start", end: "bootstrapDateTranslator.finished" }, htmlParsing: { start: 'application.start', end: 'htmlParsing.finished' }, bootstrapLeftNavConfig: { start: "bootstrapLeftNavConfig.start", end: "bootstrapLeftNavConfig.finished" } }; window.performance.mark(window.performanceEvents.application.start);
let key; for (key in sessionStorage) { if (key.includes('fsa.')) { /* this check is introduced to prevent the breakage of onboarding flows configured in Appcues, as they were using sessionStorage keys for displaying flows. */ sessionStorage.removeItem(key); } }
window.assetMap = { "assets/adminsettings/icons/fsa.svg": "assets/adminsettings/icons/fsa-f0a5fdd556b93f2c399e1bc359b7318f.svg", "assets/adminsettings/icons/s360.svg": "assets/adminsettings/icons/s360-638964407ca44d727899dd4a57eb2583.svg", "assets/adminsettings/icons/s360Micrm.svg": "assets/adminsettings/icons/s360Micrm-b02093a291ddfd79190990b98a3f6182.svg", "assets/adminsettings/icons/s360Ticrm.svg": "assets/adminsettings/icons/s360Ticrm-63ecac6b0f78352d30cb868fcb2cb2a0.svg", "assets/adminsettings/js/fsa.js": "assets/adminsettings/js/fsa-09f005248a3559ce3348649ab37af79f.js", "assets/adminsettings/js/fsa.map": "assets/adminsettings/js/fsa-2a4505a011c8aae75c66411fe978e043.map", "assets/adminsettings/js/s360.js": "assets/adminsettings/js/s360-3c0472bf33afee9a191ac910f87e9083.js", "assets/adminsettings/js/s360.map": "assets/adminsettings/js/s360-1a981730067f31ce661af85a5dd81509.map", "assets/adminsettings/js/s360Micrm.js": "assets/adminsettings/js/s360Micrm-33769f4003eb5ccd6ea6aba6214aec86.js", "assets/adminsettings/js/s360Micrm.map": "assets/adminsettings/js/s360Micrm-ea955164ecf992b776e91c6d835923e4.map", "assets/adminsettings/js/s360Ticrm.js": "assets/adminsettings/js/s360Ticrm-d3395649eb7a754522a69a3d638e8080.js", "assets/adminsettings/js/s360Ticrm.map": "assets/adminsettings/js/s360Ticrm-d6662b716ce58a2af07237d340073c50.map", "assets/adminsettings/locales/ach.js": "assets/adminsettings/locales/ach-4973aea07c04009857b6581df9df7690.js", "assets/adminsettings/locales/ach.map": "assets/adminsettings/locales/ach-669f52c7ccc75f437defc9f6f8979735.map", "assets/adminsettings/locales/alpha.js": "assets/adminsettings/locales/alpha-ccf4de1176bdbc4f54fa784645f7f2ec.js", "assets/adminsettings/locales/alpha.map": "assets/adminsettings/locales/alpha-9195fdbdd64dcb667251c3e456427d5f.map", "assets/adminsettings/locales/ar.js": "assets/adminsettings/locales/ar-b6d7875dd63061555fbebae160e2ff3d.js", "assets/adminsettings/locales/ar.map": "assets/adminsettings/locales/ar-01e66cf9c5afdca2c2e129d148f4578b.map", "assets/adminsettings/locales/ca.js": "assets/adminsettings/locales/ca-a689166a54bfc2fe807e3779485ed393.js", "assets/adminsettings/locales/ca.map": "assets/adminsettings/locales/ca-ca63c6898bb8397faea4b4c6cfca3975.map", "assets/adminsettings/locales/cs.js": "assets/adminsettings/locales/cs-81474ff2d335b3815ceef8c95f9bdcd9.js", "assets/adminsettings/locales/cs.map": "assets/adminsettings/locales/cs-9e46bd839aaf37cdae163838224af621.map", "assets/adminsettings/locales/da.js": "assets/adminsettings/locales/da-4f89da9f5a23bcc7420040ae96a1fc83.js", "assets/adminsettings/locales/da.map": "assets/adminsettings/locales/da-c46327dfa306bd80f861f7d933c43306.map", "assets/adminsettings/locales/de.js": "assets/adminsettings/locales/de-342494a428a11e06939adce903895ba7.js", "assets/adminsettings/locales/de.map": "assets/adminsettings/locales/de-7829736e7d83ddcef0f214c2b441cb8e.map", "assets/adminsettings/locales/en.js": "assets/adminsettings/locales/en-bfa7f0927f25c2d2428a78b7933c6c7e.js", "assets/adminsettings/locales/en.map": "assets/adminsettings/locales/en-bff152e30c49f5a3cbc38fa205486176.map", "assets/adminsettings/locales/es-419.js": "assets/adminsettings/locales/es-419-deaa9d1bceb0db91f376c7d8eb12fa20.js", "assets/adminsettings/locales/es-419.map": "assets/adminsettings/locales/es-419-1409232ed0ea20b0bec6c8d5dd8debdf.map", "assets/adminsettings/locales/es-MX.js": "assets/adminsettings/locales/es-MX-6fa20af6b09181131260d9e6b7c1fa70.js", "assets/adminsettings/locales/es-MX.map": "assets/adminsettings/locales/es-MX-c666dc84949ae08e11bc3956c3aa35a0.map", "assets/adminsettings/locales/et.js": "assets/adminsettings/locales/et-f47c97192fa8e5b2d940be95a6607fdf.js", "assets/adminsettings/locales/et.map": "assets/adminsettings/locales/et-80403b9a60e4f58fc2a3f00a9f744acc.map", "assets/adminsettings/locales/fi.js": "assets/adminsettings/locales/fi-58f9da96bd11a806df80ea654e1e2872.js", "assets/adminsettings/locales/fi.map": "assets/adminsettings/locales/fi-a1fd5f3c39bf1daa804114d4148d6ade.map", "assets/adminsettings/locales/fr.js": "assets/adminsettings/locales/fr-7e1ee8b262b5170a13fed17a6857f7bb.js", "assets/adminsettings/locales/fr.map": "assets/adminsettings/locales/fr-fb4e574d100a0adcb6333f31c431bd64.map", "assets/adminsettings/locales/he.js": "assets/adminsettings/locales/he-56e087d892320bc7ebc8ddc15bc0c73e.js", "assets/adminsettings/locales/he.map": "assets/adminsettings/locales/he-26ddad082d94b3aaa45906b5b3f1ff86.map", "assets/adminsettings/locales/hu.js": "assets/adminsettings/locales/hu-c7ef01fc921f5a38b736939f12218fd7.js", "assets/adminsettings/locales/hu.map": "assets/adminsettings/locales/hu-6cd8f2fb2f72187dfb06b67f8dd1e285.map", "assets/adminsettings/locales/id.js": "assets/adminsettings/locales/id-533c18d861b08d93d433568d1ddff082.js", "assets/adminsettings/locales/id.map": "assets/adminsettings/locales/id-c0f1727aa5d6a950188c3624fb7aa7f7.map", "assets/adminsettings/locales/it.js": "assets/adminsettings/locales/it-545548fe3a14c112bbb382b141460a4f.js", "assets/adminsettings/locales/it.map": "assets/adminsettings/locales/it-26c6eb32d11b65c50dc6fe22ce00ab1b.map", "assets/adminsettings/locales/ja.js": "assets/adminsettings/locales/ja-cc13f45425d30cdf752517ca2ed32fad.js", "assets/adminsettings/locales/ja.map": "assets/adminsettings/locales/ja-f5944dffa73e429047ed990f235c0610.map", "assets/adminsettings/locales/ko.js": "assets/adminsettings/locales/ko-4ad9d8d3f4a2df5f659383a54b55b9f9.js", "assets/adminsettings/locales/ko.map": "assets/adminsettings/locales/ko-27af51c4f2b589b9b71131908b959c71.map", "assets/adminsettings/locales/lv.js": "assets/adminsettings/locales/lv-36fb11a2b4e26af71e013df0d7442b08.js", "assets/adminsettings/locales/lv.map": "assets/adminsettings/locales/lv-d8ce485cdca6e5d38cf20387af00bf51.map", "assets/adminsettings/locales/nl.js": "assets/adminsettings/locales/nl-6152c1e5d3aa922c4034d19926d6c538.js", "assets/adminsettings/locales/nl.map": "assets/adminsettings/locales/nl-b97fad98380d09130681a2dcbc87bb19.map", "assets/adminsettings/locales/no.js": "assets/adminsettings/locales/no-6323b319384daef285885a245b3ddf66.js", "assets/adminsettings/locales/no.map": "assets/adminsettings/locales/no-058457782d92b5032b8f919d7f01c8b9.map", "assets/adminsettings/locales/pl.js": "assets/adminsettings/locales/pl-c084e32e9deb51d95aa77ea6211c3f3d.js", "assets/adminsettings/locales/pl.map": "assets/adminsettings/locales/pl-eef9fa331221b8105ec8ef65ed883126.map", "assets/adminsettings/locales/pt-BR.js": "assets/adminsettings/locales/pt-BR-633dc6851aebfaa3b546b254bdb50298.js", "assets/adminsettings/locales/pt-BR.map": "assets/adminsettings/locales/pt-BR-07f268c3507f625052d68a383863230d.map", "assets/adminsettings/locales/pt-PT.js": "assets/adminsettings/locales/pt-PT-7a2103f32948f7d723f17aa372659080.js", "assets/adminsettings/locales/pt-PT.map": "assets/adminsettings/locales/pt-PT-ea7ed9857eb76c036dc55d280e7950c6.map", "assets/adminsettings/locales/ro.js": "assets/adminsettings/locales/ro-7eb791c21a9ad3dd2c151528f9f5d25f.js", "assets/adminsettings/locales/ro.map": "assets/adminsettings/locales/ro-b12b40fcd7b0cde977aed37929f9a0d0.map", "assets/adminsettings/locales/ru.js": "assets/adminsettings/locales/ru-92c122951978db987ee928865520e0bb.js", "assets/adminsettings/locales/ru.map": "assets/adminsettings/locales/ru-330fae361a1a168a1c3ed2b0af57f7c2.map", "assets/adminsettings/locales/sk.js": "assets/adminsettings/locales/sk-88a40369790194f6251cb7a265d63ea3.js", "assets/adminsettings/locales/sk.map": "assets/adminsettings/locales/sk-d3e136c0a0b4c9a863e1fbafc3293126.map", "assets/adminsettings/locales/sl.js": "assets/adminsettings/locales/sl-9d29e582919c86be91248f6594ce9f06.js", "assets/adminsettings/locales/sl.map": "assets/adminsettings/locales/sl-b1d97688631c23a724bffbba0b64951c.map", "assets/adminsettings/locales/sv-SE.js": "assets/adminsettings/locales/sv-SE-4877dd858602bfa391152a0a83f2fcb3.js", "assets/adminsettings/locales/sv-SE.map": "assets/adminsettings/locales/sv-SE-70b0be7f51766d13906c6862ccd4de4e.map", "assets/adminsettings/locales/th.js": "assets/adminsettings/locales/th-e79e352a6c906b8afd084d048733cbcc.js", "assets/adminsettings/locales/th.map": "assets/adminsettings/locales/th-dbbe58768c4eed90596c1c5da2f0ff88.map", "assets/adminsettings/locales/tr.js": "assets/adminsettings/locales/tr-d6d5630b2843c7ea3b3cd5ade2b4a7f2.js", "assets/adminsettings/locales/tr.map": "assets/adminsettings/locales/tr-12caa0bf20f301ef90726b44ef8324ba.map", "assets/adminsettings/locales/uk.js": "assets/adminsettings/locales/uk-e0e5ea17273ac38fc01b24d5e4c022d7.js", "assets/adminsettings/locales/uk.map": "assets/adminsettings/locales/uk-5b11552ff3433b82844d70754113ebf7.map", "assets/adminsettings/locales/vi.js": "assets/adminsettings/locales/vi-8003f244a48563e0b372c96b65c75beb.js", "assets/adminsettings/locales/vi.map": "assets/adminsettings/locales/vi-e4b33637c3b91e2831eae577f487e3b5.map", "assets/adminsettings/locales/zh-CN.js": "assets/adminsettings/locales/zh-CN-1a8403dbed4368847853b7c57fbe82e9.js", "assets/adminsettings/locales/zh-CN.map": "assets/adminsettings/locales/zh-CN-7fff4e8ac536f2920c543211811431f3.map", "assets/adminsettings/locales/zh-TW.js": "assets/adminsettings/locales/zh-TW-bd3be07f91c2c38927c23e88fa93aed3.js", "assets/adminsettings/locales/zh-TW.map": "assets/adminsettings/locales/zh-TW-74ccda6308130f267916163cdb017139.map" }; var beamerProductId = true ? 'FmNWbLVp23294' : 'WChDRzNn11661'; window.beamer_config = { 'product_id': beamerProductId, 'display': 'right' }; window.sentryConfig = {"enabled":true,"dsn":"https://a33968adf74f44629eb116c917ba853f@o113506.ingest.sentry.io/5264275"}; window.enableHeapAnalytics = true; window.freshmarketer_integration={"freshmarketer_script":"//cdn.freshmarketer.com/100/100.js","session_replay_enabler":true}; window.enableAdminSettingsComponentisation = true; window.isLocalEnv = false; window.isIE = false; window.isFirefox = false; window.loading_msgs = ["Funny how ‘chase’ and ‘sale’ sound similar.","Three words, worth the wait: “It’s a deal.”","Leads \u003e pizza. Unless the pizza is free.","An empty pipeline ≠ a heartbreak. It’s worse.","Salespeople should have separate days, with 34 hours.","CRM and data entry… they’ve broken up.","Sale, deal, lead. Lovely words have ‘L’.","Exams and sales are non-identical twins.","“No quarter given” came from a salesperson.","Always be closing. Always remember.","Cold calling, cold emails—keep both interactions warm.","Need a wider funnel more than a bigger pipeline.","If I got a $ every time I handled an objection…","To identify emails you haven’t replied to, Conversations → Awaiting Response","To sync your calendar and email with Freshsales, click on your profile icon.","Drag and drop deals to move them across stages.","Recent searches appear at the top of your search suggestions.","Filter deals by upcoming activities to spot hot deals.","Your email templates can be found both in Conversations and Admin Settings.","To schedule reports, click the \u003cspan class='loader-icon-wrapper'\u003e\u003ci class='icon-ellipsis-v'\u003e\u003c/i\u003e\u003c/span\u003e icon against a report.","To view deals in a list, click \u003cspan class='loader-icon-wrapper'\u003e\u003ci class='icon-deal-list'\u003e\u003c/i\u003e\u003c/span\u003e in the Deals section."]; window.uuid = false; window.userid = 26004174788; window.lnb_sprite_icons_enabled = false; window.interstellar_crm_chat_widget_enabled = false; window.onboarding_config = { session_id: 1689845124, show: 0, woocommerce_integration_enabled: false, industries: [], ecommerceSubIndustries: false, allowed_onboarding_screens: [] }; window.portalCustomization = { colorPalette: {"--brand-primary":"#12344d","--brand-pco50":"#dff0ff","--brand-pco100":"#bedbf5","--brand-pco200":"#a2c0de","--brand-pco300":"#83a6c8","--brand-pco400":"#6b92b6","--brand-pco500":"#527fa5","--brand-pco600":"#447093","--brand-pco700":"#345C7c","--brand-pco800":"#264966","--brand-pco900":"#12344D","--brand-aco50":"#e5f2fd","--brand-aco100":"#bbdcfe","--brand-aco200":"#90c6fe","--brand-aco300":"#64b0fc","--brand-aco400":"#459ffc","--brand-aco500":"#2e8efa","--brand-aco600":"#2f80eb","--brand-aco700":"#2e6ed8","--brand-aco800":"#2c5cc5","--brand-aco900":"#283da5"}, logo: "https://assets.freshsales.io/assets/images/logo_fsa.png", favIcon: "https://assets.freshsales.io/assets/images/favicon_fsa.ico", brandName: "Freshsales" }; window.currentDataVersion = { forms: {"contacts":"1689840125","cpq_documents":"1689839401","deals":"1689840125","leads":"1689840125","products":"1689839401","sales_accounts":"1689840125","sales_activities":"1689840125"}, mc: 1689839409, columnCustomization: {"contacts":"1689839349","cpq_documents":"1689839349","deals":"1689839349","leads":"1689839349","products":"1689839349","sales_accounts":"1689839349"}, settings_key_words: {"global":"53","account":"6","user":"1"}, leftNav: 1689840126, default_filter_views: 1689839409, feederPlans: 31, allIntegrations: 1689839349, formConfig: 1689839409, session: 1689840126, leadOverviewConfig: 1689840126, contactOverviewConfig: 1689840126, accountOverviewConfig: 1689840126, dealOverviewConfig: 1689840126, leadSummaryConfig: 1689840126, contactSummaryConfig: 1689840126, accountSummaryConfig: 1689840126, dealSummaryConfig: 1689840126 }; window.latestEcommerceAppVersions = {"shopify":"24.0"}; window.react_build_js_filename = "main.a3bb08b101f6b04d5455.js"; window.react_build_css_filename = "main.3ed033c22f7888ace1d5.css"; window.react_build_css_rtl_filename = "main.0c6c847102f3bcf35a18.rtl.css"; window.recordTypesModuleConfig = []; window._lang='en'; window.userDetails = { userRole: "Account Admin", signupDate: "2023-07-15 05:42:15 -1100", lastLogin: "2023-07-19 20:49:09 -1100", planDisplayName: "sales growth", userEmail: "hugoperkins@proton.me", plan: "sales360_sales_growth", language: "en", timezone: "American Samoa", locale: "en-US", name: "Hugo Perkins", industry: "{{{user_industry}}}" }; window.ravenUserDetails = { user_email: "hugoperkins@proton.me", plan: "sales360_sales_growth", language: "en", timezone: "American Samoa" }; window.domainData={"Freshchat":"https://perkinsandco.myfreshworks.com/crm/messaging","freshcaller":"https://perkinsandco.myfreshworks.com/crm/phone","freshmarketer":"https://perkinsandco.myfreshworks.com/crm/marketer","freshid":"https://perkinsandco.myfreshworks.com"}; window.productUrls={"freshchat":"https://perkinsandco.myfreshworks.com/crm/messaging","freshcaller":"https://perkinsandco.myfreshworks.com/crm/phone","freshmarketer":"https://perkinsandco.myfreshworks.com/crm/marketer","freshid":"https://perkinsandco.myfreshworks.com"}; window.bundleRootUrl="/crm/sales"; let ufxPrefix = "/crm/sales"; let pathPrefix = ''; if(ufxPrefix){ var regex = '^' + ufxPrefix; pathPrefix = window.location.pathname.match(regex); pathPrefix = pathPrefix ? pathPrefix[0] : ''; } window.pathPrefix = pathPrefix; window.bundleName = pathPrefix ? pathPrefix.replace('/sales', '').substring(1) : null; window.getFsaStorageKey = function(key){ return window.bundleName ? `${window.bundleName}.${key}` : key; }; window.fsaLocalStorage = { getItem(key){ let storageKey = window.getFsaStorageKey(key); return localStorage.getItem(storageKey) || localStorage.getItem(key); /* try getting the key with the bundle key, if not available get without bundle key */ }, setItem(key, value){ let storageKey = window.getFsaStorageKey(key); localStorage.setItem(storageKey ,value); /* Remove older keys for CRM accounts only since it has prefix in key for new */ if(window.bundleName){ localStorage.removeItem(key); } }, removeItem(key){ /* if with bundle alias prefix there, remove it - this would remove keys with prefix also (standalone)*/ let storageKey = window.getFsaStorageKey(key); if(localStorage.getItem(storageKey)){ localStorage.removeItem(storageKey); } /* if without bundle alias prefix there, remove it (for older keys) which would not have bundle alias (CRM)*/ if(localStorage.getItem(key)){ localStorage.removeItem(key); } }, clear(){ localStorage.clear(); } }; window.fsaSessionStorage = { getItem(key){ let storageKey = window.getFsaStorageKey(key); return sessionStorage.getItem(storageKey) || sessionStorage.getItem(key); /* try getting the key with the bundle key, if not available get without bundle key */ }, setItem(key, value){ let storageKey = window.getFsaStorageKey(key); sessionStorage.setItem(storageKey, value); /* Remove older keys for CRM accounts only since it has prefix in key for new */ if(window.bundleName){ sessionStorage.removeItem(key); } }, removeItem(key){ let storageKey = window.getFsaStorageKey(key); if(sessionStorage.getItem(storageKey)){ sessionStorage.removeItem(storageKey); } /* if without bundle alias prefix there, remove it (for older keys) which would not have bundle alias (CRM)*/ if(sessionStorage.getItem(key)){ sessionStorage.removeItem(key); } }, clear(){ sessionStorage.clear(); } }; window.fsaSessionStorage.setItem('fsa.pathPrefix', pathPrefix); if (pathPrefix !== '') { window.fsaSessionStorage.setItem('fsa.isBundleContext', true); }; var getAPIResponse = function (url, options, method = 'GET', jsonData) { return new Promise(function (resolve, reject) { var xhr = new XMLHttpRequest(); url = window.fsaSessionStorage.getItem('fsa.pathPrefix') + url; if (options && options.data) { var params = new URLSearchParams(options.data); url = url + '?' + params.toString(); } xhr.open(method, url, true); xhr.onreadystatechange = function () { if(xhr.readyState === XMLHttpRequest.DONE) { var status = xhr.status; if (status >= 200 && status < 300) { resolve({ data: JSON.parse(xhr.responseText), xhr: xhr }); } else { reject({ status: xhr.status, message: xhr.statusText, xhrObject: xhr }); } } }; if (jsonData) { let token = document.querySelector('meta[name="csrf-token"]').getAttribute('content') || ''; xhr.setRequestHeader('X-CSRF-Token', token); xhr.setRequestHeader("Content-Type", "application/json"); } xhr.send(jsonData ? JSON.stringify(jsonData) : null); }); }; window.collectPerfStats = function (count, options) { if (!count) { count = 10; } if (!options) { options = { startUrl: null, reloadAfter: 10000, condition: [{ property: 'logName', value: 'MeaningfulPaint' }] }; } window.fsaLocalStorage.setItem('fsa-performance:collect-fsa-perf-metrics', 'true'); window.fsaLocalStorage.setItem('fsa-performance:collect-fsa-perf-metrics-batch-size', count); window.fsaLocalStorage.setItem('fsa-performance:collect-fsa-perf-metrics-options', JSON.stringify(options)); window.fsaLocalStorage.removeItem('fsa-performance:fsa-perf-metrics'); setTimeout(function () { var pathPrefix = window.fsaSessionStorage.getItem('fsa.pathPrefix'); if (options.startUrl) { window.location.href = pathPrefix + options.startUrl; } else { window.location.reload(); } }, 3000); }; window.collatePerfMetrics = function () { var metrics = window.fsaLocalStorage.getItem('fsa-performance:fsa-perf-metrics'); if (metrics) { metrics = JSON.parse(metrics); var metricsCaptured = metrics.data; var metricsKeys = Object.keys(metricsCaptured); var csvOutput = '\r\nAttempt, ' + metricsKeys.join('(in ms), ') + '\r\n'; for (var i = 0; i < metrics.iterations; i++) { csvOutput += i.toString(); metricsKeys.forEach(function (key) { var metricDuration = metricsCaptured[key][i]; if (metricDuration === undefined || metricDuration === null) { metricDuration = ' '; } csvOutput += ', ' + metricDuration; }); csvOutput += '\r\n'; } console.log('MeaningfulPaint Durations', csvOutput); } }; window.stopPerfStatsCollection = function () { window.fsaLocalStorage.setItem('fsa-performance:collect-fsa-perf-metrics', 'false'); }; window.getPerfMetrics = function () { var metrics = window.fsaLocalStorage.getItem('fsa-performance:fsa-perf-metrics'); if (metrics) { metrics = JSON.parse(metrics); } else { metrics = { iterations: 0, data: {} }; } return metrics; }; window.savePerfMetrics = function (metrics) { var date = new Date(); metrics.timestamp = date.toISOString(); window.fsaLocalStorage.setItem('fsa-performance:fsa-perf-metrics', JSON.stringify(metrics)); }; window.getPerfMetricsCollectionOptions = function () { var perfMetricsCollectionOptions = window.fsaLocalStorage.getItem('fsa-performance:collect-fsa-perf-metrics-options'); if (perfMetricsCollectionOptions) { perfMetricsCollectionOptions = JSON.parse(perfMetricsCollectionOptions); } else { perfMetricsCollectionOptions = { condition: [{ property: 'logName', value: 'MeaningfulPaint' }] }; } return perfMetricsCollectionOptions; }; window.injectScript = function(src) { return new window.Promise((resolve, reject) => { const script = document.createElement('script'); script.type = 'text/javascript'; script.async = true; script.src = src; script.onload = resolve; script.onerror = reject; document.getElementsByTagName('body')[0].appendChild(script); }); };
window.performance.mark(window.performanceEvents.sentryScript.start);
window.surfaceAppErrors = function () { window.fsaLocalStorage.setItem('should_surface_errors', 'true'); }; window.hideAppErrors = function () { window.fsaLocalStorage.setItem('should_surface_errors', 'false'); }; window.shouldConsoleLogError = (window.fsaLocalStorage.getItem('should_surface_errors') === 'true'); if (Sentry && (sentryConfig && sentryConfig.enabled === true)) { Sentry.init({ dsn: sentryConfig.dsn, integrations: [ new Sentry.Integrations.Ember(), ] }); Sentry.configureScope(function(scope) { scope.setUser({ email: window.ravenUserDetails.user_email }); scope.setTag('domain', window.location.hostname); scope.setExtra('plan', window.ravenUserDetails.plan); scope.setExtra('language', window.ravenUserDetails.language); scope.setExtra('timezone', window.ravenUserDetails.timezone); }); } window.performance.mark(window.performanceEvents.sentryScript.finished);
if (!isIE) { window.performance.mark(window.performanceEvents.preloadData.start); try { function preLoader () { return new Promise(function (resolve, preLoaderReject) { var getResourceVersions = function (responseType) { var resourceVersions; try { resourceVersions = window.fsaLocalStorage.getItem('fsa_data_resource_versions'); resourceVersions = resourceVersions ? JSON.parse(resourceVersions) : {}; } catch(err) { resourceVersions = {}; } return resourceVersions; }; var requestUrls = { session: { url: '/sessions', data: { include: 'role, territories, email_setting, email_imap_details, account, user_columns, deal_pipeline, sales_activity_types, mailbox_aliases' } }, launchpad: { url: '/launchpad/properties' }, integration: { url: '/settings/integrations/third_party_applications/view/all_integrations' }, formConfig: { url: '/settings/form_configs' }, moduleCustomization: { url: '/settings/module_customizations' }, form: { url: '/v2/settings/forms' } }; var getDependentFormsForPage = function (location) { var formEntities = []; var entities = ['leads', 'contacts', 'accounts', 'deals', 'custom_module']; var formLookup = { leads: 'leads', contacts: 'contacts', accounts: 'sales_accounts', deals: 'deals' }; var routeDetails = location.pathname.split('/').filter(function (route) { return route !== ''; }); var parentRoute = window.pathPrefix === '' ? routeDetails[0] : routeDetails[2]; /* not checking specifically for crm/sales as it would break when we get into multiple bundles */ if (entities.includes(parentRoute)) { if (parentRoute === 'custom_module') { formEntities.push(routeDetails[1]);/* second part of the route identifies the custom module */ } else { formEntities.push(formLookup[parentRoute]); if (parentRoute === 'accounts') { var secondaryRoute = routeDetails[1]; /* second part of the route identifies if a number directs to the show page */ if (!isNaN(secondaryRoute)) { formEntities.push('deals'); } } } } return formEntities; }; var dataRequests = { moduleCustomization: function (resourceVersionsHash) { return new Promise(function (resolve, reject) { var currentFormVersions = window.currentDataVersion.forms; let storedMCVersion = resourceVersionsHash.module_customization; if (storedMCVersion && storedMCVersion !== window.currentDataVersion.mc) { getAPIResponse(requestUrls.moduleCustomization.url, {}).then(function (result) { var data = result.data; window.fsaSessionStorage.setItem('fsa.fetchFiltersBackend', true); resolve({ name: 'moduleCustomization', data: data.module_customizations }); }).catch(function (error) { reject('moduleCustomization'); }); } else { resolve({ name: 'moduleCustomization', data: [], status: 'Unchanged' }); } }); }, session: function (resourceVersionsHash) { return new Promise(function (resolve, reject) { let applicationConfig = resourceVersionsHash.application_config; if (applicationConfig && applicationConfig['session'] !== window.currentDataVersion.session) { let requests = Promise.all([getAPIResponse(requestUrls.session.url, { data: requestUrls.session.data }),getAPIResponse(requestUrls.launchpad.url, { data: requestUrls.launchpad.data })]); requests.then(function(results) { results[0].data.accounts[0].launchpad_settings = result[1].data; resolve({ name: 'session', data: results[0].data }); }).catch(function (error) { reject('session'); }); } else { resolve({ name: 'session', data: [], status: 'Unchanged' }); } }); }, integrations: function (resourceVersionsHash) { return new Promise(function (resolve, reject) { let applicationConfig = resourceVersionsHash.application_config; if (applicationConfig && applicationConfig['all-integrations'] !== window.currentDataVersion.allIntegrations) { getAPIResponse(requestUrls.integration.url).then(function(result) { var data = result.data; resolve({ name: 'integrations', data: data.third_party_applications }); }).catch(function (error) { reject('integrations'); }); } else { resolve({ name: 'integrations', data: [], status: 'Unchanged' }); } }); }, formConfig: function (resourceVersionsHash) { return new Promise(function (resolve, reject) { let applicationConfig = resourceVersionsHash.application_config; if (applicationConfig && applicationConfig['form-config'] !== window.currentDataVersion.formConfig) { getAPIResponse(requestUrls.formConfig.url).then(function(result) { var data = result.data; data.form_configs.forEach(function (formConfig) { formConfig.id = Date.now(); }); resolve({ name: 'formConfig', data: data.form_configs }); }).catch(function (error) { reject('formConfig'); }); } else { resolve({ name: 'formConfig', data: [], status: 'Unchanged' }); } }); }, forms: function (resourceVersionsHash) { return new Promise(function (resolve, reject) { var requiredForms = getDependentFormsForPage(window.location); if (requiredForms.length > 0) { var currentFormVersions = window.currentDataVersion.forms; var formsToFetch = requiredForms.filter(function (formName) { let savedFormVersion = resourceVersionsHash['form.' + formName]; return ( savedFormVersion && savedFormVersion !== currentFormVersions[formName]) }); if (formsToFetch.length > 0) { var fetchRequests = []; var formsFetchRequest = getAPIResponse(requestUrls.form.url, { data: { entities_form_for: formsToFetch.join(','), transform_default_dropdown_as_lookup:true } }).then(function(forms) { return { payload_name: 'forms', payload_value: forms } }); fetchRequests.push(formsFetchRequest); formsToFetch.forEach(function(formName) { var rtFormName = formName; var formName = formName.startsWith('cm_') ? formName : formName.slice(0, -1); var shouldFetchRecordType = (window.recordTypesModuleConfig || []).includes(formName); if (shouldFetchRecordType) { var recordTypeFetchRequest = getAPIResponse('/selector/'+rtFormName+'/record_type_choices').then(function(recordTypeChoices) { return { payload_name: 'rt_' + rtFormName, payload_value: recordTypeChoices.data }; }); fetchRequests.push(recordTypeFetchRequest); } }); var formRequestPromise = Promise.all(fetchRequests); formRequestPromise.then(function (results) { var formsPayloadData = null; if(results[0] && results[0].payload_name == 'forms') { formsPayloadData = results[0].payload_value.data.forms; } var recordTypesPayloadData = []; for(var i=1; i
/* Add only entity/module show routes here */ window.getPreloadEntityRequestConfig = function(entity) { var entityShowPreloadRequestUrls = { leads: { url: '/leads', data: { include: 'owner,lead_stage,source,updater,territory,lead_reason,campaign,creater,lead_score_information,emails,lookup_information,tags' } }, contacts: { url: '/contacts', data: { include: 'owner,sales_accounts,creater,source,updater,campaign,contact_status,lead_score_information,territory,emails,lookup_information,lists,lifecycle_stage,lost_reason,tags' } }, accounts: { url: '/sales_accounts', data: { include: 'owner,contacts,updater,territory,industry_type,business_type,creater,child_sales_accounts,lookup_information,tags' } }, deals: { url: '/deals', data: { include: 'owner,creater,updater,contacts,sales_account,deal_pipeline,deal_stage,deal_type,territory,currency,source,deal_reason,campaign,deal_product,deal_payment_status,lookup_information,tags' } }, 'cpq_documents': { url: '/cpq/cpq_documents', data: { include: 'html_header,html_footer,html_content,html_content_css,html_content_settings,products,signatures' } } }; return entityShowPreloadRequestUrls[entity] || {}; }; if (!isIE) { try { function preloadRouteSpecificData(forPathName) { /* Main route map - contains list of route path as key with corresponding executor that will return a hash as, { name:
, -> for identification url:
, data:
} The key can be regex or normal strings as well. */ var routeMapping = { "\/(leads|contacts|accounts|deals|cpq_documents)\/[0-9]+": function(pathNameParts) { var entityName = pathNameParts[0]; var entityId = pathNameParts[1]; var routeConfig = getPreloadEntityRequestConfig(entityName); return { name: 'entity-show', url: routeConfig.url + '/' + entityId, data: routeConfig.data }; } }; var locationPathToDerive = forPathName ? forPathName : location.pathname; var pathName = locationPathToDerive.replace(window.pathPrefix, ''); var pathNameParts = pathName.split('/').filter(function (route) { return route !== ''; }); var routeMappingKeys = Object.keys(routeMapping); var i; for(i=0; i < routeMappingKeys.length; i++) { var key = routeMappingKeys[i]; var isRouteMatch = new RegExp("^" + key + "$","g").test(pathName); if(isRouteMatch) { var getRouteConfig = routeMapping[key]; var routeConfig; if(getRouteConfig && typeof getRouteConfig === 'function') { routeConfig = getRouteConfig(pathNameParts); } else { routeConfig = routeMapping[key]; } var routePromise = routeConfig.data ? getAPIResponse(routeConfig.url, { data: routeConfig.data }) : getAPIResponse(routeConfig.url); return routePromise.then(function(result) { var data = result.data; return { name: routeConfig.name, data: data }; }); break; } } return null; }; window.preloadRoutePromise = preloadRouteSpecificData(); } catch (error) { if (Sentry){ Sentry.captureException(error); } if (window.shouldConsoleLogError) { console.error(error); } } }
(function () { var ua = window.navigator.userAgent; var isMsie = (ua.indexOf('MSIE ') !== -1) || (ua.indexOf('Trident/') !== -1); if(!isMsie && window.freshmarketer_integration && window.freshmarketer_integration.session_replay_enabler) { window.zarget = true; var protocol = ('https:' === document.location.protocol ? 'https:' : 'http:'); var freshmarketerScriptTag = document.createElement('script'); freshmarketerScriptTag.type = 'text/javascript'; freshmarketerScriptTag.async = false; freshmarketerScriptTag.src = protocol + window.freshmarketer_integration.freshmarketer_script; var firstScript = document.getElementsByTagName('script')[0]; firstScript.parentNode.insertBefore(freshmarketerScriptTag, firstScript); } })();
(function() { const { injectScript } = window; function thirdPartyHeapAnalytics() { window.heap = window.heap || []; window.heap.load = function(heapId, options) { return new window.Promise(function(resolve, reject) { window.heap.appid = heapId, window.heap.config = options = options || {}; injectScript(`//cdn.heapanalytics.com/js/heap-${heapId}.js`).then(() => { window.heap.identify(options.identity); resolve(); }) .catch(reject); let createFunction = (property) => { return () => { window.heap.push([property].concat(Array.prototype.slice.call(arguments, 0))); }; }; let properties = [ 'addEventProperties', 'addUserProperties', 'clearEventProperties', 'identify', 'removeEventProperty', 'setEventProperties', 'track', 'unsetEventProperty' ]; for (let i = 0; i < properties.length; i++) { window.heap[properties[i]] = createFunction(properties[i]); } }); }; } function thirdPartyLoadHeapAnalyticsConfig(analyticsHeapId, uuid) { if (window.enableHeapAnalytics === true && !window.isHeapInitialized) { window.isHeapInitialized = true; thirdPartyHeapAnalytics(); let options = { disableTextCapture: true, identity: uuid }; window.heapInitialized = window.heap.load(analyticsHeapId, options); return window.heapInitialized; } return window.Promise.resolve(); } window.thirdPartyLoadHeapAnalyticsConfig = thirdPartyLoadHeapAnalyticsConfig; })();
window.performance.mark(window.performanceEvents.cssAssets.finished);
/** * Generate 10 lighter shades and 3 darker shades of primary color and add them to the root scope for use in css variables */ (function() { window.performance.mark(window.performanceEvents.postalCustomization.start); let head = document.getElementsByTagName('head')[0]; if (!window.isIE) { let generateShade = function(hex, lighten, percentage) { if (lighten) { let hsv = hexToHSV(hex); let h = hsv.h; let s = hsv.s; let v = hsv.v; if (percentage < 25) { s -= percentage; v += percentage; } else { v = 100; switch (percentage) { case 25: s = 30; break; case 30: s = 25; break; case 35: s = 20; break; case 40: s = 15; break; case 45: s = 10; break; case 50: s = 0; break; } } return hsvToHex(h, s, v); } else { let hsl = hexTohsl(hex); let h = hsl.h; let s = hsl.s; let l = hsl.l; l -= (percentage / 100); return hslToHex(h, s, l); } }; let hexTohsl = function(hex) { let r = 0; let g = 0; let b = 0; if (hex.length === 4) { let h1 = hex[1]; let h2 = hex[2]; let h3 = hex[3]; r = '0x' + h1 + h1; g = '0x' + h2 + h2; b = '0x' + h3 + h3; } else if (hex.length === 7) { r = '0x' + hex[1] + hex[2]; g = '0x' + hex[3] + hex[4]; b = '0x' + hex[5] + hex[6]; } r /= 255; g /= 255; b /= 255; let max = Math.max(r, g, b); let min = Math.min(r, g, b); let h, s; let l = (max + min) / 2; if (max === min) { h = s = 0; } else { var d = max - min; s = l > 0.5 ? d / (2 - max - min) : d / (max + min); switch (max) { case r: h = (g - b) / d + (g < b ? 6 : 0); break; case g: h = (b - r) / d + 2; break; case b: h = (r - g) / d + 4; break; } h /= 6; } return { h: h, s: s, l: l }; }; let hue2rgb = function(p, q, t) { if (t < 0) { t += 1; } if (t > 1) { t -= 1; } if (t < (1 / 6)) { return p + (q - p) * 6 * t; } if (t < (1 / 2)) { return q; } if (t < (2 / 3)) { return p + (q - p) * ((2 / 3) - t) * 6; } return p; }; let hslToHex = function(h, s, l) { let r, g, b; if (s === 0) { r = g = b = l; } else { let q = (l < 0.5) ? l * (1 + s) : l + s - l * s; let p = (2 * l - q); r = hue2rgb(p, q, h + (1 / 3)) * 255; g = hue2rgb(p, q, h) * 255; b = hue2rgb(p, q, h - (1 / 3)) * 255; } r = Math.round(r); g = Math.round(g); b = Math.round(b); r = (r).toString(16); g = (g).toString(16); b = (b).toString(16); if (r.length === 1) { r = '0' + r; } if (g.length === 1) { g = '0' + g; } if (b.length === 1) { b = '0' + b; } return '#' + r + g + b; }; let hexToHSV = function(hex) { let r = 0; let g = 0; let b = 0; if (hex.length === 4) { let h1 = hex[1]; let h2 = hex[2]; let h3 = hex[3]; r = '0x' + h1 + h1; g = '0x' + h2 + h2; b = '0x' + h3 + h3; } else if (hex.length === 7) { r = '0x' + hex[1] + hex[2]; g = '0x' + hex[3] + hex[4]; b = '0x' + hex[5] + hex[6]; } r /= 255; g /= 255; b /= 255; let M = Math.max(r, g, b); let m = Math.min(r, g, b); let C = M - m; let h, s, v; if (C === 0) { h = 0; } else if (M === r) { h = ((g - b) / C) % 6; } else if (M === g) { h = (b - r) / C + 2; } else { h = (r - g) / C + 4; } h *= 60; if (h < 0) { h += 360; } v = M; if (v === 0) { s = 0; } else { s = C / v; } s *= 100; v *= 100; h = h.toFixed(0); s = s.toFixed(1); v = v.toFixed(1); return { h: h, s: s, v: v }; }; let hsvToHex = function(h, s, v) { h = parseFloat(h); s = parseFloat(s); v = parseFloat(v); if (h < 0) { h = 0; } else if (h >= 360) { h = 359; } if (s < 0) { s = 0; } else if (s > 100) { s = 100; } if (v < 0) { v = 0; } else if (v > 100) { v = 100; } s /= 100.0; v /= 100.0; let C = v * s; let hh = h / 60.0; let X = C * (1.0 - Math.abs((hh % 2) - 1.0)); let r = 0; let g = 0; let b = 0; if (hh >= 0 && hh < 1) { r = C; g = X; } else if (hh >= 1 && hh < 2) { r = X; g = C; } else if (hh >= 2 && hh < 3) { g = C; b = X; } else if (hh >= 3 && hh < 4) { g = X; b = C; } else if (hh >= 4 && hh < 5) { r = X; b = C; } else { r = C; b = X; } let m = v - C; r += m; g += m; b += m; r *= 255.0; g *= 255.0; b *= 255.0; r = Math.round(r); g = Math.round(g); b = Math.round(b); let hex = (r * 65536) + (g * 256) + b; hex = hex.toString(16, 6); let len = hex.length; if (len < 6) { for (let i = 0; i < (6 - len); i++) { hex = '0' + hex; } } return '#' + hex.toUpperCase(); }; let cssvariables = ''; cssvariables += '--brand-primary:' + window.portalCustomization.colorPalette['--brand-primary'] + ';'; for (let i = 1; i <= 10; i++) { let percentage = i * 5; cssvariables += '--brand-primary-light-' + percentage + ':' + generateShade(window.portalCustomization.colorPalette['--brand-primary'], true, percentage) + ';'; } for (let i = 1; i < 3; i++) { let percentage = i * 5; cssvariables += '--brand-primary-dark-' + percentage + ':' + generateShade(window.portalCustomization.colorPalette['--brand-primary'], false, percentage) + ';'; } let colors = Object.keys(window.portalCustomization.colorPalette); for (let index = 1; index < colors.length; index++) { cssvariables += colors[index] + ':' + window.portalCustomization.colorPalette[colors[index]] + ';'; } let rule = ':root {' + cssvariables + '}'; let css = document.createElement('style'); css.type = 'text/css'; if (css.styleSheet) { css.styleSheet.cssText = rule; } else { css.appendChild(document.createTextNode(rule)); } head.appendChild(css); window.performance.mark(window.performanceEvents.postalCustomization.finished); } })();
window.performance.mark(window.performanceEvents.preloadAssets.start);
window.performance.mark(window.performanceEvents.preloadAssets.finished); window.performance.mark(window.performanceEvents.secondaryScript.start);
window.performance.mark(window.performanceEvents.secondaryScript.finished);
parcelRequire=function(e,r,t,n){var i,o="function"==typeof parcelRequire&&parcelRequire,u="function"==typeof require&&require;function f(t,n){if(!r[t]){if(!e[t]){var i="function"==typeof parcelRequire&&parcelRequire;if(!n&&i)return i(t,!0);if(o)return o(t,!0);if(u&&"string"==typeof t)return u(t);var c=new Error("Cannot find module '"+t+"'");throw c.code="MODULE_NOT_FOUND",c}p.resolve=function(r){return e[t][1][r]||r},p.cache={};var l=r[t]=new f.Module(t);e[t][0].call(l.exports,p,l,l.exports,this)}return r[t].exports;function p(e){return f(p.resolve(e))}}f.isParcelRequire=!0,f.Module=function(e){this.id=e,this.bundle=f,this.exports={}},f.modules=e,f.cache=r,f.parent=o,f.register=function(r,t){e[r]=[function(e,r){r.exports=t},{}]};for(var c=0;c
(function () { const PLAN_MAP_UTILS = { PLANS: { CLC: 'clc', MARKETING: 'marketing', CRM_MESSAGING: 'messaging', SPROUT: 'sprout', BLOSSOM: 'blossom', GARDEN: 'garden', FOREST: 'forest', ESTATE: 'estate', FREE: 'free', GROWTH: 'growth', PRO: 'pro', ENTERPRISE: 'enterprise', SALES: 'sales' }, PRODUCT_ICON: { MARKETING: '//assets.freshsales.io/assets/onboarding/icons/onboarding-sprite-f9ed8c32d26f70aadcc37f3ad67beb2d.svg#s360_fm', CRM_MESSAGING: '//assets.freshsales.io/assets/onboarding/icons/onboarding-sprite-f9ed8c32d26f70aadcc37f3ad67beb2d.svg#s360_fd_messaging', CLC: '//assets.freshsales.io/assets/onboarding/icons/onboarding-sprite-f9ed8c32d26f70aadcc37f3ad67beb2d.svg#s360_fsa_suite', SPROUT: '//assets.freshsales.io/assets/onboarding/icons/onboarding-sprite-f9ed8c32d26f70aadcc37f3ad67beb2d.svg#s360_fsa', BLOSSOM: '//assets.freshsales.io/assets/onboarding/icons/onboarding-sprite-f9ed8c32d26f70aadcc37f3ad67beb2d.svg#s360_fsa', GARDEN: '//assets.freshsales.io/assets/onboarding/icons/onboarding-sprite-f9ed8c32d26f70aadcc37f3ad67beb2d.svg#s360_fsa', FOREST: '//assets.freshsales.io/assets/onboarding/icons/onboarding-sprite-f9ed8c32d26f70aadcc37f3ad67beb2d.svg#s360_fsa', ESTATE: '//assets.freshsales.io/assets/onboarding/icons/onboarding-sprite-f9ed8c32d26f70aadcc37f3ad67beb2d.svg#s360_fsa', FREE: '//assets.freshsales.io/assets/onboarding/icons/onboarding-sprite-f9ed8c32d26f70aadcc37f3ad67beb2d.svg#s360_fsa', GROWTH: '//assets.freshsales.io/assets/onboarding/icons/onboarding-sprite-f9ed8c32d26f70aadcc37f3ad67beb2d.svg#s360_fsa', PRO: '//assets.freshsales.io/assets/onboarding/icons/onboarding-sprite-f9ed8c32d26f70aadcc37f3ad67beb2d.svg#s360_fsa', ENTERPRISE: '//assets.freshsales.io/assets/onboarding/icons/onboarding-sprite-f9ed8c32d26f70aadcc37f3ad67beb2d.svg#s360_fsa', SALES: '//assets.freshsales.io/assets/onboarding/icons/onboarding-sprite-f9ed8c32d26f70aadcc37f3ad67beb2d.svg#s360_fsa' }, PRODUCT_NAME: { SPROUT: 'Freshsales', BLOSSOM: 'Freshsales', GARDEN: 'Freshsales', FOREST: 'Freshsales', ESTATE: 'Freshsales', FREE: 'Freshsales', GROWTH: 'Freshsales', PRO: 'Freshsales', ENTERPRISE: 'Freshsales', SALES: 'Freshsales', MARKETING: 'Freshmarketer', CRM_MESSAGING: 'Freshchat', CLC: 'Freshsales Suite' } }; function getProduct() { const { plan } = window.userDetails; return Object.keys(PLAN_MAP_UTILS.PLANS).find(planFromMap => plan.includes(PLAN_MAP_UTILS.PLANS[planFromMap])); } function getCommonEventProperties() { return { subscriptionState: window.fsaSessionStorage.getItem('fsa.session.subscriptionState') } } function trackEvent(eventName, eventProperties = {}) { const _eventProperties = {...getCommonEventProperties(), ...eventProperties}; if (window.heap) { window.heap.track(eventName, _eventProperties); } } /* window.onboarding_config is cached when user clicks on browser back and forward again, if the user partially completes the onboarding steps and clicks on browser back and forward again, the partially completed steps are still appears due to cache. To invalidate cache, we're reloading the page by comparing the unique session id of the page. This way we always get the latest allowed onboarding screens from backend */ function reloadIfCached() { const localStorageKey = `${window.userid}_onboarding_screens_session_id`; if (window.fsaLocalStorage.getItem(localStorageKey) == window.onboarding_config.session_id) { window.location.reload(); } window.fsaLocalStorage.setItem(localStorageKey, window.onboarding_config.session_id); } function launchFullscreenOnboarding(forceShow = false) { if ((!window.onboarding_config.show || window.onboarding_config.allowed_onboarding_screens.length === 0) && !forceShow) { return; } !forceShow && reloadIfCached(); function dasherize(target) { if (!target) { return ''; } return target.toLowerCase().replace(/\s+/, '-'); } const analyticsHeapId = '1325449719'; const HEAP_INIT = window.thirdPartyLoadHeapAnalyticsConfig(analyticsHeapId, window.uuid); HEAP_INIT.catch((err) => { console.error(err); }); const product = getProduct(); const productName = PLAN_MAP_UTILS.PRODUCT_NAME[product] || PLAN_MAP_UTILS.PRODUCT_NAME.SALES; const productIconUrl = PLAN_MAP_UTILS.PRODUCT_ICON[product] || PLAN_MAP_UTILS.PRODUCT_ICON.SALES; const isStepApplicable = (step) => { const { allowed_onboarding_screens } = window.onboarding_config; return allowed_onboarding_screens && allowed_onboarding_screens.includes(step); }; let emberReadyTimer, emberReadyRetryCount = 0; const EMBER_READY_RETRY_MAX_COUNT = 20; const EMBER_READY_RETRY_INTERVAL = 1000; const checkEmberReady = () => new window.Promise((resolve, reject) => { emberReadyTimer = setInterval(() => { if (window.isEmberReady) { clearInterval(emberReadyTimer); resolve(window.isEmberReady); } else if (++emberReadyRetryCount > 20) { clearInterval(emberReadyTimer); reject(`RETRY LIMIT(${EMBER_READY_RETRY_MAX_COUNT}) EXCEEDED. No channel established between onboarding and ember`); } else { console.log(`Retry(${emberReadyRetryCount}) for ember to get ready`); } }, EMBER_READY_RETRY_INTERVAL); }); const sendEventAfterHeapInitialization = (eventName, data) => { HEAP_INIT.then(() => { trackEvent(eventName, data); }); }; function getIndustryLabel(selectedIndustryId) { return onboardingFlowConfig.stepConfigs.industry.options.find(({ id }) => id === selectedIndustryId).label; } function getSubIndustryLabel(selectedSubIndustryId) { return onboardingFlowConfig.stepConfigs.sub_industry.options.find(({ id }) => id === selectedSubIndustryId).label; } const industryOptions = []; const subIndustryOptions = []; const ECOMMERCE_INDUSTRY_TYPE = 'e-commerce'; const SHOPIFY_SUB_INDUSTRY_TYPE = 'shopify'; let ecommerceId; const ONBOARING_ICON_MAPPING = new window.Map(); ONBOARING_ICON_MAPPING.set(2, '//assets.freshsales.io/assets/onboarding/icons/onboarding-business-services-e29df3d1077609075cbdc4f83c3cca01.svg'); ONBOARING_ICON_MAPPING.set(4, '//assets.freshsales.io/assets/onboarding/icons/onboarding-ecommerce-ac247a08bb067c7b3f21033e894be9c3.svg'); ONBOARING_ICON_MAPPING.set(6, '//assets.freshsales.io/assets/onboarding/icons/onboarding-financial-services-84dcc4017aaba4b1d758128a1a2b49f7.svg'); ONBOARING_ICON_MAPPING.set(11, '//assets.freshsales.io/assets/onboarding/icons/onboarding-manufacturing-329adcfbeb104ef3ee886d68e5364a11.svg'); ONBOARING_ICON_MAPPING.set(16, '//assets.freshsales.io/assets/onboarding/icons/onboarding-saas-24f6eb104f79ee12d07f28c8f8eada24.svg'); ONBOARING_ICON_MAPPING.set(18, '//assets.freshsales.io/assets/onboarding/icons/onboarding-others-5dcef20188d6c73bac268641afa3cf5e.svg'); const ONBOARING_ICON_MAPPING_TO_SUBINDUSTRY = new window.Map(); ONBOARING_ICON_MAPPING_TO_SUBINDUSTRY.set(1, '//assets.freshsales.io/assets/onboarding/icons/onboarding-shopify-afc194f8be8f5faa0ccd2000c8047198.svg'); ONBOARING_ICON_MAPPING_TO_SUBINDUSTRY.set(2, '//assets.freshsales.io/assets/onboarding/icons/onboarding-woocommerce-12a45b0c3209e2b70ed21890bdcba5d7.svg'); ONBOARING_ICON_MAPPING_TO_SUBINDUSTRY.set(3, '//assets.freshsales.io/assets/onboarding/icons/onboarding-others-5dcef20188d6c73bac268641afa3cf5e.svg'); window.onboarding_config.industries .sort((a, b) => a.onboarding_position > b.onboarding_position && 1 || -1) .forEach(industry => { if (industry.type && industry.type.toLowerCase() === ECOMMERCE_INDUSTRY_TYPE) { ecommerceId = +industry.id; } industryOptions.push({ id: industry.id, label: industry.label, icon: ONBOARING_ICON_MAPPING.get(industry.id) }); }); window.onboarding_config.ecommerceSubIndustries .sort((a, b) => a.onboarding_position > b.onboarding_position && 1 || -1) .forEach(subIndustry => { subIndustryOptions.push({ id: subIndustry.id, label: subIndustry.text, icon: ONBOARING_ICON_MAPPING_TO_SUBINDUSTRY.get(subIndustry.id) }); }); /** stepID should be in sync with the BE allowed_onboarding_screens Ids **/ const onboardingFlowConfig = { wizardId: 'onboarding-wizard', stepConfigs: { team_size: { type: 'tile-options', onBeforeRender: () => { sendEventAfterHeapInitialization('onboarding_teamsize_opened'); }, productIconUrl, productName, optionsHeader: "How would you like to start?", nextBtn: { show: true, disabledOnInit: true, label: 'Continue', }, skipBtn: { show: false, }, backIconUrl: '//assets.freshsales.io/assets/onboarding/icons/onboarding-sprite-f9ed8c32d26f70aadcc37f3ad67beb2d.svg#icon-long-arrow-left-light', options: [ { id: 'large', heading: 'Premium trial', subHeading: 'Team size 3+', description: 'Customize the CRM, manage your teams, and build advanced automations.', bottomLine: '21-day trial', }, { id: 'small', heading: 'Free CRM', subHeading: 'Team size up to 3', description: 'Manage contacts and deals, build basic automations, and connect your apps to the CRM.', bottomLine: 'Free for up to 3 users', } ], onDone: function (teamSize) { const data = { 'account_setting': { 'questionnaire_answers': { 'team_size': teamSize } } }; window.getAPIResponse('/settings/account_settings/update_persona_configs', {}, 'PUT', data); window.fsaLocalStorage.setItem('in_product_plan_change_status', teamSize === 'small' ? 'inprogress' : 'notapplicable'); if (isStepApplicable('industry')) { return { nextStepId: 'industry' }; } else { return; } } }, industry: { type: 'card-options', onBeforeRender: () => { sendEventAfterHeapInitialization('onboarding_industry_opened'); }, productIconUrl, productName, optionsHeader: 'Which industry are you in?', optionsSubHeader: "We'll personalize your account based on this information", nextBtn: { show: true, disabledOnInit: true, label: function (selectedOption) { if (parseInt(selectedOption) === ecommerceId && window.onboarding_config.woocommerce_integration_enabled) { return { label: 'Continue' } } return { label: 'Get started', suffixIcon: '//assets.freshsales.io/assets/onboarding/icons/arrow-right-39b3a591f68de78c3699da4cc7b06f3c.svg' } } }, skipBtn: { show: false, label: 'Skip this question' }, options: industryOptions, onDone: function (selectedIndustryId) { sendEventAfterHeapInitialization('onboarding_industry_confirmed', { industry: dasherize(getIndustryLabel(+selectedIndustryId)) }); const _selectedIndustryId = +selectedIndustryId; const isEcommerceChosen = ecommerceId && _selectedIndustryId === ecommerceId; if (isEcommerceChosen && window.onboarding_config.woocommerce_integration_enabled) { return { nextStepId: 'sub_industry' }; } else { return new window.Promise(resolve => { let subIndustry = undefined; if (isEcommerceChosen && !window.onboarding_config.woocommerce_integration_enabled) { const shopifySubIndustry = window.onboarding_config.ecommerceSubIndustries.find(industry => industry.type === SHOPIFY_SUB_INDUSTRY_TYPE); subIndustry = shopifySubIndustry ? shopifySubIndustry.id : undefined; } const data = { 'account_setting': { 'questionnaire_answers': { 'industry': _selectedIndustryId, 'sub_industry': subIndustry } } }; window.getAPIResponse('/settings/account_settings/update_persona_configs', {}, 'PUT', data).then(() => { resolve(); }).catch(() => { resolve(); }); }); } }, analyticsCb: function (stepEvent, payload) { if (stepEvent === 'option-clicked') { sendEventAfterHeapInitialization('onboarding_industry_clicked', { industry: dasherize(payload) }); } } }, sub_industry: { type: 'card-options', onBeforeRender: () => { sendEventAfterHeapInitialization('onboarding_subindustry_opened'); }, productIconUrl, productName, optionsHeader: 'Select your e-commerce platform', optionsSubHeader: '', nextBtn: { show: true, disabledOnInit: true, label: 'Get started', suffixIcon: '//assets.freshsales.io/assets/onboarding/icons/arrow-right-39b3a591f68de78c3699da4cc7b06f3c.svg' }, skipBtn: { show: false, label: 'Skip this question' }, showBack: true, options: subIndustryOptions, onDone: function (selectedSubIndustryId) { return new window.Promise(resolve => { sendEventAfterHeapInitialization('onboarding_subindustry_confirmed', { subIndustry: dasherize(getSubIndustryLabel(+selectedSubIndustryId)) }); const data = { 'account_setting': { 'questionnaire_answers': { 'industry': ecommerceId, 'sub_industry': selectedSubIndustryId } } }; window.getAPIResponse('/settings/account_settings/update_persona_configs', {}, 'PUT', data).then(() => { resolve(); }).catch(() => { resolve(); }); }); }, analyticsCb: function (stepEvent, payload) { if (stepEvent === 'option-clicked') { sendEventAfterHeapInitialization('onboarding_subindustry_clicked', { subIndustry: dasherize(payload) }); } } } } }; function addShowClass(elementId) { const overlayNode = document.getElementById(elementId); overlayNode.classList.add('show'); } function removeShowClass(elementId) { const node = document.getElementById(elementId); node.classList.remove('show'); } function scriptErrorHandler(ex) { removeShowClass('onboarding-overlay'); console.error('Error occurred while downloading wizard script, not showing onboarding', ex); } addShowClass('onboarding-overlay'); function renderUI() { const { Flow } = window.wizard; const onboardingFlow = new Flow( onboardingFlowConfig, document.querySelector(`[wizard="${onboardingFlowConfig.wizardId}"]`), ); onboardingFlow.onDone = (flowData) => { window.getAPIResponse('/settings/account_settings', {}, 'GET').then((resp) => { const team_size = resp.data.account_setting.persona_configs.questionnaire_answers.team_size; window.fsaLocalStorage.setItem('onboarding_team_size', team_size); checkEmberReady().then(() => { let completeEvent = new CustomEvent('onboarding-completed', { detail: flowData }); window.dispatchEvent(completeEvent); removeShowClass('onboarding-overlay'); }).catch((err) => { console.error(err); }); }).catch(err => { console.error(err); }) }; const showTeamSizeQuestion = isStepApplicable('team_size'); onboardingFlow.start(showTeamSizeQuestion ? 'team_size' : 'industry'); } if (!window.wizard) { injectScript('//assets.freshsales.io/assets/onboarding/js/wizard-75917a15c27a238a65b7f33abd152e63.js') .then(function () { Promise.all([injectScript('//assets.freshsales.io/assets/onboarding/js/tile-options-step-cf8c0b416db8a5d16e48b496042f215c.js'), injectScript('//assets.freshsales.io/assets/onboarding/js/card-options-step-31bf8ccc8385ba9648f5cb8d702995f9.js')]) .then(renderUI) .catch(scriptErrorHandler); }) .catch(scriptErrorHandler); } } window.onboarding_config.launchFullscreenOnboarding = launchFullscreenOnboarding; window.trackEvent = trackEvent; launchFullscreenOnboarding(); })();
if (window.isIE) { document.body.classList.add('is-IE'); } window.performance.mark(window.performanceEvents.primaryScript.start); window.performance.mark(window.performanceEvents.vendorScript.start); if (window.analyticsInterface) { window.analyticsInterface.isActiveBrowserTab = document.visibilityState === 'visible'; }
window.performance.mark(window.performanceEvents.vendorScript.finished); window.performance.mark(window.performanceEvents.frontendScript.start);
window.performance.mark(window.performanceEvents.frontendScript.finished); window.performance.mark(window.performanceEvents.primaryScript.finished);
(function () { 'use strict'; var SUCCESS_HANDLERS = []; var ERROR_HANDLERS = []; if ('serviceWorker' in navigator) { var rootUrl = '/crm/sales' + '/'; var filename = rootUrl + 'sw.js'; navigator.serviceWorker.register(filename, { scope: rootUrl }).then(function (reg) { var current = Promise.resolve(); var _loop = function _loop(i, len) { current = current.then(function () { return SUCCESS_HANDLERS[i](reg); }); }; for (var i = 0, len = SUCCESS_HANDLERS.length; i < len; i++) { _loop(i, len); } return current.then(function () { console.log('Service Worker registration succeeded. Scope is ' + reg.scope); }); }).catch(function (error) { var current = Promise.resolve(); var _loop2 = function _loop2(i, len) { current = current.then(function () { return ERROR_HANDLERS[i](error); }); }; for (var i = 0, len = ERROR_HANDLERS.length; i < len; i++) { _loop2(i, len); } return current.then(function () { console.log('Service Worker registration failed with ' + error); }); }); } }());
window.fsaSessionStorage.setItem('fsa.intentPathName', window.location.pathname); if (typeof newrelic == 'object') { newrelic.setCustomAttribute('intentPathName', window.location.pathname); } window.performance.mark(window.performanceEvents.htmlParsing.finished);
Search your CRM...
Records
Add contact
Add account
Add deal
Add product
Add Quote
Sales activities
Add task
Add meeting
Add call log
Send SMS
Emails
Send email
Create template
Create sales sequence
1
Hugo Perkins
Connect email
Sync contacts
Calendar and Conferencing
Email Templates
Sales Sequences
Settings
Knowledge Base
Create support ticket
Privacy policy
Download mobile app
Sign out
Need help?
Talk to us
CONTACTS AND ACCOUNTS
Contacts
Accounts
DEAL MANAGEMENT
Deals
Products
Quotes
SALES CONVERSATIONS
Sales Inbox
Email Templates
Bulk Email
Phone
SMS
AUTOMATIONS
Sales Sequences
Workflows
SETTINGS
Admin Settings
Manage Users
Manage Contact Lifecycle Stages
Manage Sales Activities
Manage Left Nav Bar
Activities Dashboard
Phone Dashboard
Analytics
Sales Dashboard
activities
Tasks
Meetings
+ 3 activities
Add task
Add meeting
More
Time period
Today (Jul 19)
Select all activities
Open
Overdue
Completed
All tasks and meetings
(Sample) Meeting - final discussion about the deal
Jul 19, 2023 | 12:30 - 13:00
Meeting
Jane Sampleton (sample)
+2
Add outcome
Configure widgets
My calendar
Connect video conferencing + calendar
Zoom
Microsoft Teams
Google Calendar
Office 365
Today
19 Jul
Show today
(Sample) Meeting - final discussion about the deal
12:30 - 13:00
Meeting
00:00
01:00
02:00
03:00
04:00
05:00
06:00
07:00
08:00
09:00
10:00
11:00
12:00
13:00
14:00
15:00
16:00
17:00
18:00
19:00
20:00
21:00
22:00
23:00
Today's summary
Type
Overdue
Open
Completed
Task
0
0
0
Follow up
0
0
0
Call reminder
0
0
0
Email reminder
0
0
0
Meeting
0
0
1
Freddy AI insights
Freddy doesn't have any insights for now. But it will soon!