Marketing Operations (MktgOps) supports the marketing organization to streamline processes and manage related tools. We work closely with multiple teams to ensure information between systems is seamless, data is as accurate as possible, and terminology is consistent in respective systems. Our team's primary functions are:
Our team is structured as business partners to the rest of marketing. See focus next to the names below:
|Amy Waller*||Senior Marketing Operations Manager||Campaigns|
|Beth Peterson*||Senior Marketing Operations Manager||SDRs|
|Gillian Murphy||Marketing Operations Manager||Content, Localization, and SDRs|
|Jameson Burton||Marketing Operations Associate||Digital, Operations|
|Robert Rosu||Marketing Operations Manager||Data|
|Mihai Conteanu||Marketing Operations Manager||Content, Campaigns|
*indicates business partner
We do not use or create tool-specific Slack channels (e.g.
Emergency Comms and Pager Duty
If an emergency communication needs to be send out, Marketing Ops will need to assist. Follow directions on this page to initiate the emergency response. You can also follow the security incident communication plan for security related issues.
Important: Before submitting an issue that may contain Personally Identifable Information (PII) data (including screenshots), please ensure the issue is marked confidential. You can use quick actions to accomplish this in the issue description priort to submitting.
Our Motto: If it isn't an Issue, it isn't OUR issue!
The MktgOps team works from issues and issue boards. If you are needing our assistance with any project, please open an issue and use the ~MktgOps::0 - To Be Triaged label anywhere within the GitLab repo. Prior to opening a new issue, feel free to reach out to your business partner to see if there is already a related issue that you can add your comments to. If you have a bug, error or discrepancy you'd like the team to help and investigate, please use the bug-request template.
With Agile Delivery being one of the solutions that GitLab (as a product) addresses, the Marketing Operations team aims to follow many of the agile methodologies.
Please do not reopen issues that have been closed in a previous milestone. If you find that you have additional questions about a closed issue, comment in the issue and ping the marketing ops DRI who worked the issue. The DRI within our team will determine whether an issue needs to be reopened and pulled into a current milestone.
To help prioritize issues and scope work in our milestones, we've adopted GitLab issue weights to our issues. By adding a weight to our issues, our team will have a better idea of how much time, value or complexity a given issue has or costs. For the numbering formula, we are using the traditional Fibonacci sequence: 1, 2, 3, 5, 8, 13, 21. Anything marked
21 or above may be promoted to an epic.
To indicate status of issues related to OKRs, we've adopted GitLab health status. By adding health status to issues tied to OKRs, you can quickly see whether an OKR-related epic is on track to complete within a quarter based on the health status of the issues tied to it.
If an issue includes a weight of 21 or more, that issue may be promoted to an epic in order to properly scope the work across multiple issues. Epics will also be used by our team if it relates to an OKR and requires multiple issues in scope to complete the work. Tool implementations also often are tracked within epics.
We use labels for three purposes:
MktgOps - FYI: Issue is not directly related to operations, no action items for MktgOps but need to be aware of the issue
MktgOps - List Import: Used for list imports of any kind - event or general/ad hoc (do not also use To Be Triaged scoped label)
LinkedIn Sales Navigator,
Backblaze: used to highlight one of our tech stack tools
MktgOps - bug: A bug issue to be addressed or identified by MktgOps
MktgOps - changelog: Used to track issues or epics that would need to be logged in the marketing changelog to track major changes across marketing
MktgOps-Future Feature: Something to consider for a future project as time allows. Timeframe: As time allows
MktgOps-Priority::Top Priority: Issue that is related to a breaking change, OKR focus, any other prioritized project by MktgOps leadership. This category will be limited because not everything can be a priority. Timeframe: Immediate action needed.
MktgOps-Priority:: High Priority: Issue has a specific action item for MktgOps to be completed as it is an OKR. Timeframe: Within weeks
MktgOps-Priority::Med Priority: Issue is a feature to help the team. Timeframe: Within months
MktgOps-Priority::Low Priority: Issue has a specific action item for MktgOps that would be helpful, but can be pushed for other issues. Timeframe: Within months.
MktgOps-Urgency::P0: System down, core business function down, or potential loss of mission critical data. Timeframe: Immediate action needed. Pull into active milestone.
MktgOps-Urgency::P1: Major feature or workflow is not working. Timeframe: Action within days. Pull into active milestone.
MktgOps-Urgency::P2: Requires attention, but normal workflow is not impacted or there is a workaround. Timeframe: Action within next milestone.
MktgOps-Urgency::P3: Requires attention, but normal workflow is not impacted. Minor, low urgency. Timeframe: Future action needed, not priority or urgent.
MktgOps-Urgency::P4: Small bug, nice to have fixed, but not impacting workflow. Timeframe: Future action needed, not priority or urgent.
MktgOps::0 - To Be Triaged: Issue initially created, used in templates, the starting point for any label that involves MktgOps (except for List Uploads); no real discussion on the issue; generally unassigned
MktgOps::1 - Planning: Issues assigned to a MktgOps team member and are currently being planned but are not being actively worked on yet.
MktgOps::2 - Scoping: Marketing Operations related issues that are currently being scoped and weighted
MktgOps::3 - On Deck: Issues that have been scoped and will be added to an upcoming milestone.
MktgOps::4 - In Process: Issues that are actively being worked on in the current two-week milestone.
MktgOps::5 - UAT: Issues that MktgOps has completed its required tasks for and is ready for User Acceptance Testing/review and approval by the Requester/Approver.
MktgOps::6 - On Hold: Issue that is not within existing scope of MktgOps current focus, or another department as deprioritized. May be a precursor to being closed out. May also be on hold waiting for an internal team member or other task before completing.
MktgOps::7 - Blocked: Issue is blocked and no other actions can be taken by MktgOps. Waiting for someone else/another team to complete an action item before being able to proceed. May also be blocked due to external party such as a vendor to complete an action before closing.
MktgOps::8 - Completed: MktgOps has completed their task on this issue although the issue may not be closed.
The MktgOps team works in two week iterations which are tracked as milestones at the
GitLab.com level. Each individual contributor (IC) is responsible for adding issues to the milestone that will be completed in the two-week time frame. If needed, the IC will separate the main issue into smaller pieces that are workable segments of the larger request.
A milestone cannot be closed nor marked complete until the milestone's accompanying merge request has been merged. Within every milestone there is a
WIP merge request with all commits being changes to our handbook. All team members contribute their changes to the milestone merge request. The merge request should be tagged with marketing operations labels and the current milestone.
When making an update to a handbook page for
SDR handbook pages (or sub-pages), we have a Zapier workflow set up that will push the MR (upon merge) to the related Slack channel to ensure our teams are aware of any change that is made to the page. In order for the merged MR to show up in the respective Slack channel, you must add one of the following corresponding
labels on the MR. Slack updates will also trigger for MktgOps MRs when created.
|Label you add||Slack channel the merged MR pushes to|
The marketing operations team uses 2 collective merge requests (1 per week in a milestone), known as our milestone MRs, to make multiple updates across our handbook, see high-level updates in 1 MR, and avoid conflicts with each other. Here is an example. We list all major changes with our GitLab username in the description after a commit and link any relevant issues that the commit closes out. If you have an update for the marketing operations handbook, please feel free to use our milestone MR to make a commit and tag us for review to avoid conflicts.
The Marketing Operations team had started an experiment on 2020-04-20 to commit to no internal meetings one day of the week. Now the entire Marketing team has moved to Focus Fridays. Please try not to schedule meetings for team members on Fridays, so they can devote time for deep work in milestone-related issues.
Periodically Marketing Operations and other teams through the marketing org make significant changes to our system and processes that affect overall tools, data and reporting or uncovers significant changes that affected reporting. As such we have a shared changelog. The MktgOps and Strategy/Perf teams update this document as needed as changes are made. If you are working on an issue or epic that will have a significant impact across marketing, add the label
MktgOps - changelog so marketing oeprations can track changes across GitLab.
For information regarding the tech stack at GitLab, please visit the Tech Stack Applications page of the Business Operations handbook where we maintain a comprehensive table of the tools used across the company. Below are tools that are primarily owned and managed by marketing operations.
To request access to an existing tool in the stack, please follow the access request process as outlined in the business operations handbook.
If you are working with a contractor or consultant that requires access to a tool in our stack, please follow the professional services access request process as outlined in the procurement handbook.
If you are interested in or would like to request a new tool be added to the tech stack, please submit an issue using the tools eval issue template in the Marketing Operations repository. Marketing Operations should be included in new tool evaluations to account for system integrations, budget, etc. Any new tools desired after the budget is set will be handled by transferring budget from the other department to Marketing Operations.
For budgetary reasons, Marketing Operations will be performing quarterly, and for some tools bi-quaterly, audits on the user activity of marketing tools. If a team member has not been actively taking advantage of a tool for 45 days or more, they will have access to that tool revoked with 5 business days of notification via email. Activity will be determined by user reports pulled by the tools' admins. These reports can be found by viewing issues from the Marketing Ops project with the issue label
Mktg Tool Audit. The reports will utilize the audit issue template from the Marketing Ops project. To regain access to revoked tools, the team member will need to submit a new access request and follow standard access request procedures. However, user seats will be on a first-come-first-serve basis unless it is determined additional seats should be purchased.
|GL Code||Account Name||Purpose|
|6060||Software Subscriptions||All software subscriptions|
|6100||Marketing||Reserved for Marketing GL accounts|
|6110||Marketing Site||All agency fees and contract work intended to improve the marketing site|
|6120||Advertising||All media buying costs as well as agency fees and software subscriptions related to media buying|
|6130||Events||All event sponsorships, booth shipping, event travel, booth design, event production as well as agency fees and software costs related to events|
|6135||Swag||Any swag related expense|
|6140||All 3rd party email sponsorships as well as agency fees and software costs related to mass email communications and marketing automation|
|6150||Brand||All PR, AR, content, swag and branding costs|
|6160||Prospecting||Not used - All costs related to prospecting efforts|
Marketing Operations approves any invoices that have not already been coded and approved through a Finance issue or that exceed the original cost estimate. We make use of Tipalti for this process. Team leads will confirm that services were performed or products were received also through Tipalti. Campaign tags are used to track costs related to events and campaigns.
A Marketing Qualified Lead is a lead that has reached a certain threshold, we have determined to be 100 points accumulated, based on demographic/firmographic and/or behavioral information. The
Person Score is comprised of various actions and/or profile data that are weighted with positive or negative point values.
Person Score is one of the indicators used by LeanData to determine whether a lead needs to be assigned. Details about this process can be found on the LeanData page. You can find more details about the scoring model on the Marketo Page
Campaigns are used to track efforts of marketing tactics - field events, webcasts, content downloads. The campaign types align with how marketing tracks spend and align the way records are tracked across three of our core systems (Marketo, Salesforce and Bizible) for consistent tracking. Leveraging campaigns aligns our efforts across Marketing, Sales and Finance.
Go to the Campaigns and Programs Page to view all of the campaign types, their progression statuses and cost tracking. That page also includes directions for set up in Marketo and Salesforce.
Email database management is a core responsibility for MktgOps. Ensuring GitLab is following email best practices, in compliance with Global spam laws and overall health of active database are all priorities.
Email creation and email nurture programs are managed by the Campaign Team. To learn more about GitLab email communication or request an email, please see the Emails/Nurture Handbook in the demand generation section of the handbook.
Please visit the legal page to view all of the Marketing Rules and Consent Language.
The Mural below shows the opt-in and opt-out/unsubscribe workflows for all forms, list imports and individual subscriptions.
At GitLab, we strive to communicate with people in a way that is beneficial to them. We always include the unsubscribe link in our communications, and we respect the unsubscribe list. In addition to the unsubscribe button at the bottom of all of our emails, we have available our Email Subscription Center, where people can control their email communication preferences.
We have a Marketo enforced limit on how many emails a single address can recieve per day and week. The limits are 1/day and 3/week. Emails will not be sent systematically if the address has reached it's limit. However, emails marked as
operational will still be sent.
Certain emails can bypass unsubscribe and invalid emails by being marked as
operational. Examples include critical system alerts, account updates (policy updates, etc.), event reminders with necessary link to attend event, and auto-responders for post event recording and slides emails. Please folloow this decision tree for auto-responder emails to help determine whether or not your email fits the operational standards. If they do not, you must include the proper email compliance filters in order to send the email, and also uncheck the operational check box on the email.
Emails that contain mostly marketing or promotional content like newsletters, event invites and sales emails are not considered
operational. Only Mops and certain MCMs have access to this feature in Marketo. If you have any questions on whether or not your email is operational, contact MOps. When in doubt, ask! This Mural contains examples to help you make your decision.
Operational Emails do not have an effect on the communication limits in marketo. Those limits are set so a recipient cannot receive more than 2 emails per day, and/or 7 emails per week. Once a person has hit that limit, they are supressed from email groups until they fall back under the threshold, unless the email is marked as
Breaking Change Emails
These are transactional emails, almost always to our user base, that provide very selective needed information. This is an
operational email that overrides the unsubscribe and would not need to comply with marketing email opt-out. Usage example: GitLab Hosted billing change, Release update 9.0.0 changes, GitLab Page change and Old CI Runner clients.
It is very important to have Engineering and/or Product team (whoever is requesting this type of email) help us narrow these announcements to the people that actually should be warned or notified, so we are communicating to a very specific focused list. The email platform the send will come from will be determined by a few different factors, but mainly list size. If you need to request an email like this, use this the
incident_communications template and reference this section.
Security Releases Sent on an as needed basis containing important information about any security patches, identified vulnerabilities, etc. related to the GitLab platform. These emails are purely text based and again are transactional in nature. Users can subscribe to security notices on the GitLab Contact us page.
Webcasts Invitation and/or notification emails sent about future webcasts.
Live Events Invitation emails to attend a live event, meet-up, or in-person training. These emails are sent to a geo-locational subset of the overall segment. This type of email is also used when we are attending a conference and want to make people aware of any booth or event we may be holding and/or sponsoring.
Initial Source is the first "known" touch attribution or when a website visitor becomes a known name in our database, once set it should never be changed or overwritten. For this reason Salesforce is set up so that you are unable to update the
Initial Source field. If merging records, keep the
Initial Source that is oldest (or set first). When creating Lead/Contact records and you are unsure what
Initial Source should be used, ask in the
#mktgops Slack channel.
Initial Source in Marketo is named
Person Source, and should only update when empty.
We use Source Buckets to group raw Sources into acquisition channels. These groups are: core, inbound, outbound, paid demand gen, purchased list, referral, virtual event, and web direct. When using the TD - Marketing Metrics dashboard reports can be filterd by these source buckets.
The values listed below are the only values currently supported. If you attempt to upload or import leads or contacts into Salesforce without one of these initial sources you will encounter a validation rule error. If you think that there needs to be a new Initial Source added to this list and into Salesforce please open an issue with the marketing ops team. When a new initial source is added, the bucket must also be updated in a SFDC workflow to properly show in Sisense.
Status in the table below means:
|Source||Source Bucket||Definition and/or transition plan||Status*|
|CE Download||core||Downloaded CE version of GitLab||Active|
|CE Usage Ping||core||Created from CE Usage Ping data||Active|
|Demo||inbound||Filled out form to watch demo of GitLab||Active|
|Education||inbound||Filled out form applying to the Educational license program||Active|
|Email Request||inbound||Used when an email was received through an alias (will be deprecated)||Active|
|Email Subscription||inbound||Subscribed to our opt-in list either in preference center or various email capture field on GitLab website||Active|
|Gated Content - General||inbound||Download an asset that does not fit into the other Gated Content categories||Active|
|Gated Content - eBook||inbound||Download a digital asset categorized as an eBook||Active|
|Gated Content - Report||inbound||Download a gated report||Active|
|Gated Content - Video||inbound||Watch a gated video asset||Active|
|Gated Content - Whitepaper||inbound||Download a white paper||Active|
|GitLab.com||inbound||Registered for GitLab.com account||Active|
|OSS||inbound||Open Source Project records related to the OSS offer for free licensing||Active|
|Request - Contact||inbound||Filled out contact request form on GitLab website||Active|
|Request - Professional Services||inbound||Any type of request that comes in requesting to engage with our Professional Services team||Active|
|Security Newsletter||inbound||Signed up for security alerts||Active|
|Trial - Enterprise||trial||In-product or web request for self-hosted Enterprise license||Active|
|Trial - GitLab.com||trial||In-product SaaS trial request||Active|
|Web Chat||inbound||Engaged with us through website chat bot||Active|
|Request - Community||inbound||Active|
|Request - Public Sector||inbound||Active|
|AE Generated||outbound||Sourced by an Account Executive through networking or professional groups||Active|
|Leadware||outbound||Sourced by an SDR through networking or professional groups||Active|
|Prospecting - General||outbound||Active|
|Prospecting - LeadIQ||outbound||Active|
|SDR Generated||outbound||Sourced by an SDR through networking or professional groups||Active|
|Advertisement||paid demand gen||Active|
|Conference||paid demand gen||Stopped by our booth or received through event sponsorship||Active|
|Field Event||paid demand gen||Paid events we do not own but are active participant (Meetups, Breakfasts, Roadshows)||Active|
|Owned Event||paid demand gen||Events that are created, owned, run by GitLab||Active|
|Promotion||paid demand gen||Active|
|Virtual Sponsorship||paid demand gen||Active|
|Purchased List||purchased list||Active|
|Partner||referral||GitLab partner sourced name either through their own prospecting and/or events||Inactive|
|Channel Qualified Lead||referral||GitLab partner sourced, previously
|Word of Mouth||referral||Active|
|Webcast||virtual event||Register for any online webcast (not incl
|Web Direct||web direct||Created when purchase is made direct through the portal (check for duplicates & merge record if found)||Active|
|Investor||outbound||Sourced by our investors (i.e. - GV, Khosla, ICONIQ). The
|GitLab DataMart||core||Created by the GitLab Marketing Database data pump. Contains leads from various internal sources||Active|
In Q1 FY22 the Demand Generation team began running paid campaigns to drive trial signups. Currently, we don't have the "trial" source bucket split out by paid vs. organic because we don't have Google Analytics tracking on the signup form. Fortunately, this will soon be changing!
Until then, if pulling metrics around source buckets for CAC calculations please use the Demand Gen dashboard in Sisense (you can filter by trials).
The Lead & Contact objects in Salesforce have unified statuses with the following definitions. Lead . Also reference Re-MQL workflows for how to move from status to status.
|Raw||Untouched brand new lead|
|Inquiry||Form submission, meeting @ trade show, content offer|
|MQL||Marketing Qualified through systematic means|
|Accepted||Actively working to get in touch with the lead/contact|
|Qualifying||In 2-way conversation with lead/contact|
|Qualified||Progressing to next step of sales funnel (typically OPP created & hand off to Sales team)|
|Unqualified||Contact information is not now or ever valid in future; Spam form fill-out|
|Nurture||Record is not ready for our services or buying conversation now, possibly later|
|Bad Data||Incorrect data - to potentially be researched to find correct data to contact by other means|
|Web Portal Purchase||(Temporary, to be merged by RingLead) Used when lead/contact completed a purchase through self-serve channel & duplicate record exists|