Labs
Tables
Leveraging table data
sales profile tab setup guide with salesforce this profile tab displays a rep's sales performance — win rates, closed arr, and quota attainment — pulled live from an opportunity table prerequisites opportunity table you need a table named opportunity in your charthop account with the following fields true 220,220,221 left unhandled content type left unhandled content type left unhandled content type left unhandled content type left unhandled content type left unhandled content type left unhandled content type left unhandled content type left unhandled content type left unhandled content type left unhandled content type left unhandled content type left unhandled content type left unhandled content type left unhandled content type left unhandled content type left unhandled content type left unhandled content type left unhandled content type left unhandled content type left unhandled content type closed stage convention the template uses stage\ closed to find all closed deals regardless of outcome (won or lost) make sure your closed stages are tagged or named consistently so this filter works deals with stage="closed won" are counted separately for win rate quota field on the person each rep must have a quota field on their person record this is used for attainment calculations the template uses asof() to look up what their quota was in a past quarter what it shows this quarter — win rate, closed won logo count and arr, and quota attainment for the current fiscal quarter last quarter — same metrics for the previous fiscal quarter, using asof() to retrieve the rep's quota at that time all time by quarter — a summary table of logos won, arr, quota, and attainment % for every quarter with at least one closed won deal all time logos won — a full list of every closed won deal, sorted by arr descending how to add the tab in charthop, go to profile settings and create a new custom tab set the tab to use a rich text / template field type paste the template code into the editor customize as needed (see below) customization deal links all opportunity names link to a shared google sheet to update the destination, replace the url directly in the template \<a href="your google sheet url">{{opp name}}\</a> extend the quarter date list the all time quarterly breakdown uses a hardcoded array of quarter start dates add future quarters by appending to quarterdates {% assign quarterdates = \['2019 07 01', , '2027 04 01'] %} each date should be the first day of a fiscal quarter change the closed stage filter if your closed stages use different naming, update the stage\ closed filter to use explicit stage names instead table opportunity find{owner=person and (stage="closed won" or stage="closed lost") and } use contractstartdate vs closedate the template prefers contractstartdate for quarterly bucketing and falls back to closedate (contractstartdate ? closedate) >= fiscalquarterstart() if your team only tracks closedate, you can simplify to just closedate throughout \ key template functions ┌───────────────────────────────────────────┬────────────────────────────────────────────────────────┐ │ function │ what it does │ ├───────────────────────────────────────────┼────────────────────────────────────────────────────────┤ │ fiscalquarter() │ returns the current fiscal quarter number │ ├───────────────────────────────────────────┼────────────────────────────────────────────────────────┤ │ fiscalquarterstart() / fiscalquarterend() │ start and end dates of a fiscal quarter │ ├───────────────────────────────────────────┼────────────────────────────────────────────────────────┤ │ date(" 3m") │ a date 3 months in the past │ ├───────────────────────────────────────────┼────────────────────────────────────────────────────────┤ │ asof(date, { field }) │ returns the value of a field as it was on a given date │ ├───────────────────────────────────────────┼────────────────────────────────────────────────────────┤ │ table opportunity find{ } │ queries the opportunity table with filters │ ├───────────────────────────────────────────┼────────────────────────────────────────────────────────┤ │ count() / sum{field} │ aggregates on a result set │ ├───────────────────────────────────────────┼────────────────────────────────────────────────────────┤ │ sortdesc{field} │ sorts results by a field descending │ ├───────────────────────────────────────────┼────────────────────────────────────────────────────────┤ │ formatpercent() / formatdate() │ formatting helpers │ ├───────────────────────────────────────────┼────────────────────────────────────────────────────────┤ │ ``` │ │ └───────────────────────────────────────────┴────────────────────────────────────────────────────────┘
