In Q4, we will be working through deprecating many (but not all) of the marketing KPIs below in order to move to new KPIs that we believe better map to what teams can actually impact. Here are the new KPIs, and the next step is to work with the data team to update this page.
Here is a link to a GitLab confidential Marketing Key Meeting deck as an example of how these KPIs will be tracked monthly.
KPI | Health | Status |
---|---|---|
Net New Business Pipeline Created | Unknown |
|
Pipe-to-spend per marketing activity | Unknown |
|
Marketing efficiency ratio | Unknown |
|
Opportunities per XDR per month created | Unknown |
|
LTV / CAC ratio | Unknown |
|
Social Media Followers | Okay |
|
New Unique Web Visitors (about.gitlab.com) | Unknown |
|
Total Web Sessions (about.gitlab.com) | Unknown |
|
Meetups per month | Problem |
|
Wider Community merged MRs per release | Attention |
|
New hire location factor - Marketing | Unknown |
|
Pipeline coverage | Unknown |
|
Lead follow-up response time | Unknown |
|
Qty. of Case Studies published per month | Unknown |
|
50% or more SOV compared to most published competitor | Attention |
|
Increase partner focused media coverage by 25% in FY21 | Attention |
|
Increase amount of remote work focused media coverage by 50% in FY21 over FY20 | Attention |
|
Total number of MQLs by month | Unknown |
|
Product Downloads | Unknown |
|
Developer Evangelism Monthly Impressions | Unknown |
|
The combined IACV of the net "New Business" opportunities. This data comes from a sheetload file.
Target: vs Plan > 1
Chart (Sisense↗)
Health: Unknown
Pipeline (IACV on Opportunities) divided by the total marketing program spend, broken down by marketing activity.
Target: 5
Health: Unknown
Marketing efficiency for a given month is calculated as the ratio of IACV from closed won opportunities for the current month and the 2 preceding months vs the Marketing Operating Expenses (IACV / Marketing Operating Expenses) for the same time period. GitLab's target is greater than 2.
Target: 2
Health: Unknown
The net number of unique opportunities that are created and have a "sales development representative" assigned/attached to the opportunity segmented by xDR and by month. This data comes from Salesforce.
Target: TBD
Chart (Sisense↗)
Health: Unknown
The customer Life-Time Value to Customer Acquisition Cost ratio LTV:CAC measures the relationship between the lifetime value of a customer and the cost of acquiring that customer. A good LTV to CAC ratio is considered to be > 3.0.
Target: greater than 3.0
Health: Unknown
Follower growth across social channels is a good indicator or resonating with a wider audience or deeply connecting within a niche. Follower growth is defined as all net-new followers, across all GitLab-branded social media channels in a given period. This KPI is tracked by exporting reports and data from our social media management tool, Sprout Social. This data is then manually ingested into Sisense via a formatted Google Sheet. This KPI will evolve further as more data becomes available.
Target: 0
Chart (Sisense↗)
Health: Okay
New Users in Google Analytics, or the number of first-time users during the selected date range. Note, there is ongoing work in finalizing this KPI chart in Sisense (WIP); please reference the DataStudio chart, which is also accessible by the url below
URL(s)
Chart (Sisense↗)
Health: Unknown
Total number of sessions in Google Analytics within the selected date range. These are visits to the web site that may include multiple pages. Note,there is ongoing work in finalizing this KPI chart in Sisense (WIP); please reference the DataStudio chart, which is also accessible by the url below
URL(s)
Chart (Sisense↗)
Health: Unknown
We aim to participate in at least 20 GitLab Meetups per month. A GitLab Meetup is defined as a meetup with a presentation given by a GitLab team member or a wider community member about GitLab or a tangential topic. It does not include meetups without GitLab content where GitLab only provides support. This KPI is tracked by counting the number of issues in the GitLab.com data with the Meetups label in the Marketing group. Each event should have one associated issue with the `Meetups` label. The issue due date should be set to the event date. The combination of `Meetups` label and due date will be used by our data dashboard to count the number of meetups each month. This method of tracking can results in errors when meetup issues are created in other groups or when GitLab-related presentations at meetups are not shared with the Community Relations team.
Target: 20
Chart (Sisense↗)
Health: Problem
The Wider community contributions per milestone metric reflects the number of merge requests (MRs) merged from the wider GitLab community for each milestone from our GitLab.com data. To count as a contribution the MR must have been merged, have the Community contribution label, have a GitLab milestone set (e.g `11.11`, `12.0`, etc.) and be against one of the monitored gitlab-org group projects. Note, Wider community metrics are more reliable after 2015 when the Community contribution label was created, and lastly, there is ongoing work to provide deeper insights into this metric in the Wider Community Sisense dashboard. Previously, this KPI was represented by the below Bitergia chart.
Target: TBD
Chart (Sisense↗)
Health: Attention
This is a subset of an existing KPI. Please see the definition for the parent KPI.
The average location factor of all newly hired team members within the last rolling 3 month as of the end of the period. (eg. If the current month is 2019-09-01 then the calculation pulls months 2019-06-01 to 2019-08-31). Each division and department has their own new hire location factor target.
Target: < 0.72
Chart (Sisense↗)
Health: Unknown
IACV of pipeline with close dates in a given period (quarter) divided by IACV target.
Target: On day one of the current quarter, total pipeline coverage should be 2.2X, total pipeline for the following quarter should be 1.8X, and total pipeline for 2 quarters out should be 1.0X. On day one of the current quarter, stage 3+ pipeline coverage should be 1.5X, stage 3+ pipeline for the following quarter should be 1.0X, and stage 3+ pipeline for 2 quarters out should be 0.5X.
Health: Unknown
The amount of time (Days, hours, minutes) it takes for a Lead/Contact to move from MQL to another status - this indicates how long it took for a sales rep/xDR to respond to the record becoming a MQL.
Health: Unknown
Health: Unknown
The comparison of the GitLab share of voice (SOV) percentage to most published competitors’ SOV percentage. SOV is the number of media mentions compared to the media mentions received by a competitor and then the percentage is calculated out of 100%. The SOV percentages are tracked via a media service called TrendKite by our PR agency.
Target: greater than 50%
Health: Attention
The amount of media coverage/articles focused on partner and channel related topics in FY21 compared to FY20. Increasing the percentage of coverage increases GitLab’s brand awareness on the specific topic.
Target: greater than 25% in FY21
Health: Attention
The amount of media coverage/articles focused on remote work topics in FY21 compared to FY20. Increasing the percentage of coverage increases GitLab’s brand awareness on the specific topic.
Target: greater than 50% in FY21 over FY20
Health: Attention
Total number of Marketo Qualified Leads per month. This data comes from a sheetload file.
Target: TBD
Chart (Sisense↗)
Health: Unknown
Total downloads by installation method (Omnibus, Cloud native helm chart, Source, etc). This chart is populated with the versions.gitlab.com data.
Target: TBD
Chart (Sisense↗)
Health: Unknown
The Developer Evangelism team aims to build thought leadership accross several mediums, primarily through content while exploring various other means. We track impressions of content generated to understand the reach of the generated content, currently we are tracking Twitter impressions, while exploring ways to track other mediums in subsequent iterations.
Target: 600000
Chart (Sisense↗)
Health: Unknown
Value | Level | Meaning |
---|---|---|
3 | Okay | The KPI is at an acceptable level compared to the threshold |
2 | Attention | This is a blip, or we’re going to watch it, or we just need to enact a proven intervention |
1 | Problem | We'll prioritize our efforts here |
0 | Unknown | Unknown |
Pages, such as the Engineering Function Performance Indicators page are rendered by an ERB template that contains HTML code.
Other PI Pages
sectionThese ERB templates calls custom helper functions that extract and transform data from the Performance Indicators data file.
kpi_list_by_org(org)
helper function takes a required string argument named org
(deparment or division level) that returns all the KPIs (pi.is_key == true) for a specific organization grouping (pi.org == org) from the Performance Indicators data file.pi_maturity_level(performance_indicator)
helper function automatically assigns a maturity level based on the availability of certain data properties for a particular PI.pi_maturity_reasons(performance_indicator)
helper function returns a reason
for a PI maturity based on other data properties.performance_indicators(org)
takes a required string argument named org
(deparment or division level) that returns two lists - a list of all KPIs and a list of all PIs for a specific organization grouping (department/division).signed_periscope_url(data)
takes in the sisense_data property information from Performance Indicators data files and returns a signed chart URL for embedding a Sisense chart into the handbook.The heart of pages like this are Performance Indicators data files which are YAML files. Each - denotes a dictionary of values for a new (K)PI. The current elements (or data properties) are:
Property | Type | Description |
---|---|---|
name |
Required | String value of the name of the (K)PI. For Product PIs, product hierarchy should be separate from name by " - " (Ex. {Stage Name}:{Group Name} - {PI Type} - {PI Name} |
base_path |
Required | Relative path to the performance indicator page that this (K)PI should live on |
definition |
Required | refer to Parts of a KPI |
parent |
Optional | should be used when a (K)PI is a subset of another PI. For example, we might care about Hiring vs Plan at the company level. The child would be the division and department levels, which would have the parent flag. |
target |
Required | The target or cap for the (K)PI. Please use Unknown until we reach maturity level 2 if this is not yet defined. For GMAU, the target should be quarterly. |
org |
Required | the organizational grouping (Ex: Engineering Function or Development Department). For Product Sections, ensure you have the word section (Ex : Dev Section) |
section |
Optional | the product section (Ex: dev) as defined in sections.yml |
stage |
Optional | the product stage (Ex: release) as defined in stages.yml |
group |
Optional | the product group (Ex: progressive_delivery) as defined in stages.yml |
category |
Optional | the product group (Ex: feature_flags) as defined in categories.yml |
is_key |
Required | boolean value (true/false) that indicates if it is a (key) performance indicator |
health |
Required | indicates the (K)PI health and reasons as nested attributes. This should be updated monthly before Key Meetings by the DRI. |
health.level |
Optional | indicates a value between 0 and 3 (inclusive) to represent the health of the (K)PI. This should be updated monthly before Key Meetings by the DRI. |
health.reasons |
Optional | indicates the reasons behind the health level. This should be updated monthly before Key Meetings by the DRI. Should be an array (indented lines starting with dashes) even if you only have one reason. |
urls |
Optional | list of urls associated with the (K)PI. Should be an array (indented lines starting with dashes) even if you only have one url |
funnel |
Optional | indicates there is a handbook link for a description of the funnel for this PI. Should be a URL |
sisense_data |
Optional | allows a Sisense dashboard to be embeded as part of the (K)PI using chart, dashboard, and embed as neseted attributes. |
sisense_data.chart |
Optional | indicates the numeric Sisense chart/widget ID. For example: 9090628 |
sisense_data.dashboard |
Optional | indicates the numeric Sisense dashboard ID. For example: 634200 |
sisense_data.shared_dashboard |
Optional | indicates the numeric Sisense shared_dashboard ID. For example: 185b8e19-a99e-4718-9aba-96cc5d3ea88b |
sisense_data.embed |
Optional | indicates the Sisense embed version. For example: v2 |
sisense_data_secondary |
Optional | allows a second Sisense dashboard to be embeded. Same as sisense data |
sisense_data_secondary.chart |
Optional | Same as sisense_data.chart |
sisense_data_secondary.dashboard |
Optional | Same as sisense_data.dashboard |
sisense_data_secondary.shared_dashboard |
Optional | Same as sisense_data.shared_dashboard |
sisense_data_secondary.embed |
Optional | Same as sisense_data.embed |
public |
Optional | boolean flag that can be set to false where a (K)PI does not meet the public guidelines. |
pi_type |
Optional | indicates the Product PI type (Ex: AMAU, GMAU, SMAU, Group PPI) |
product_analytics_type |
Optional | indicates if the metric is available on SaaS, SM (self-managed), or Both. |
is_primary |
Optional | boolean flag that indicates if this is the Primary PI for the Product Group. |
implementation |
Optional | indicates the implementation status and reasons as nested attributes. This should be updated monthly before Key Meetings by the DRI. |
implementation.status |
Optional | indicates the Implementation Status status. This should be updated monthly before Key Meetings by the DRI. |
implementation.reasons |
Optional | indicates the reasons behind the implementation status. This should be updated monthly before Key Meetings by the DRI. Should be an array (indented lines starting with dashes) even if you only have one reason. |
lessons |
Optional | indicates lessons learned from a K(PI) as a nested attribute. This should be updated monthly before Key Meetings by the DRI. |
lessons.learned |
Optional | learned is an attribute that can be nested under lessons and indicates lessons learned from a K(PI). This should be updated monthly before Key Meetings by the DRI. Should be an array (indented lines starting with dashes) even if you only have one lesson learned |
monthly_focus |
Optional | indicates monthly focus goals from a K(PI) as a nested attribute. This should be updated monthly before Key Meetings by the DRI. |
monthly_focus.goals |
Optional | indicates monthly focus goals from a K(PI). This should be updated monthly before Key Meetings by the DRI. Should be an array (indented lines starting with dashes) even if you only have one goal |
metric_name |
Optional | indicates the name of the metric in Self-Managed implemenation. The SaaS representation of the Self-Managed implementation should use the same name. |
Above ...
Below ...
At ...
At or above ...
At or below ...
shared_dashboard
, chart
, and the dashboard
key-value pairs to the corresponding Performance Indicators data file under the sisense_data
property:
in strings as it's an important character in YAML and will confuse the data parsing process. Put the string in "quotes" if you really need to use a :