On this page


These agreements are examples of the agreements that we currently use at GitLab. However, the terms and conditions of an employee or contractor’s agreement will vary based on each employee or contractor’s specific circumstances. GitLab reserves the right to amend or change the sample agreements, as well as each employee or contractor’s actual agreement. The samples below are samples only — they are not valid as such and do not replace personalized signed agreements.

Available Currencies

The preference is for team members and future team members to be paid in their local currency. However, there may be instances where this is not possible and another currency may be chosen by the team member. This should be discussed and agreed with People Operations ahead of creating the appropriate contract (at offer stage for new team members) so a new one can be issued or confirmed by Letter of Adjustment. The effective exchange rate date used in these cases will be either January 1 or July 1 depending on the hire date of the new team member. This is to minimize significant fluctuations to salaries due to currencies that either strengthen or weaken throughout the year. Further details on this review period can be found in the Global Compensation page under Exchange Rates.

GitLab can pay local currency in the following countries:

Country ISO Code
Australia AUD
Bahrain BHD
Canada CAD
China CNY
Czech Republic CZK
Denmark DKK
Ethiopia ETB
Great Britain GBP
Hong Kong HKD
Hungary HUF
India INR
Indonesia IDR
Israel ILS
Japan JPY
Kenya KES
Kuwait KWD
Morocco MAD
Mexico MXN
Netherland Antilles ANG
New Zealand NZD
Norway NOK
Poland PLN
Romania RON
Russia RUB
Saudi-Arabia SAR
Singapore SGD
South Africa ZAR
Sweden SEK
Switzerland CHF
Thailand THB
Tunisia TND
Turkey TRY
United Arab Emirates AED
United States USD

How to use this page to prepare a contract

Assuming that the hiring process went smoothly, now it is time to prepare the applicable contracts. The following set of steps should suffice:

  1. The currency should normally be the local currency of the new team member unless they explicitly request USD/EUR because their local currency has a lot of inflation.
  2. Employee entity: employ through the GitLab entity where they are located (US => Inc., NL => B.V., UK => Ltd, India => Lyra, Germany => GmbH, Belgium => B.V. (Belgian contract)) depending on the location in Belgium the contract will need to be in either French or Dutch with the English translation alongside.
  3. Contractor entity: if the team member is in the US, or if the person is part of the Sales organization, GitLab Inc. is the contracting entity. In all other regions and functional groups, GitLab BV is the contracting entity. If the team member wants to be contracted through a company, it can either be their own established legal entity or a separate and unaffiliated 3rd party company; please confirm which with the team member. If the team member will be contracted through their own entity (or as an independent contractor), please use the BV Contractor Agreement. If the team member will be contracted through a 3rd party company, please inform Legal so that we can enter into a vendor contract with the company. The 3rd party company will then enter into a contract with the team member, and People Ops will provide the necessary specific salary and position information.
  4. In the Google Drive, go to the folder titled "Employee and Contractor Templates and Staging". Only People Ops, Finance, and Legal should have access to this folder.
  5. Click the folder called "Templates" to find the relevant template contract (each document is linked below).
  6. Make a copy of the contract and move it back into the "Employee and Contractor Templates and Staging" folder in the Drive, to insure the data is not shared. Never edit the published templates with personal team member information.
  7. Change the title of the copy to include the new hire's name.
  8. Find all fields with curly brackets ({ }), and edit as appropriate. It is often efficient to do a find + replace on fields that appear multiple times such as names, email addresses, etc. (fields are named the same in the contracts / PIAA to make this easier). The one exception to the curly bracket find and replace process is the Belgian contract. The fields that need to be edited are highlighted.
  9. When removing optional clauses, take care that the paragraph / section numbering still makes sense (especially for the GitLab Inc offer letter).
  10. When a expiry date is required, add the date that is one week from the date of the contract.
  11. Have the contract reviewed, per the guideline on the Hiring page.
  12. Process new contract(s) via HelloSign (also see how to get legal documents signed).
  13. If you are processing a GitLab Inc. contractor agreement, also send a W9. The template can be found in HelloSign.
  14. Once the contract is signed, start the onboarding issue and place the signed pdf in the team member's folder in BambooHR.
  15. Delete the google doc that was used for the preparation of the contract; it is superseded by the signed version in BambooHR.

Using HelloSign

When we need contracts to be signed we use HelloSign. Follow these steps to send out a signature request.

  1. Choose who needs to sign. (just me, me & others, or just others)
  2. Upload your document that needs signing. It is recommended to sync your Google Drive to do this.
  3. Enter the names and emails of the people that need to sign.
  4. With more than one signature required, assign signing order (for contracts or offer letters, always have the GitLab Signatory sign first).
  5. Add the People Ops and Hiring emails to the cc. Also add the hiring manager to the cc, if that person is different from the signatory.
  6. Click on "Prepare Docs for Signing".
  7. Drag & Drop the Signature and Date fields to the corresponding empty spaces in the document (you can select the signee with the pop up screen).
  8. For GitLab Inc. agreements, add a required text box to Exhibit A, and a supplemental larger text box below for a comment that is not required.
  9. Add a title and a message for the recipients. For example, Title: "[Team Member Name] - Contract"; Message: "Dear [Signatory], [Team Member Name], You can sign [document type] with HelloSign. Once you've both signed you will receive a copy by email. If you have any questions, feel free to reach out."
  10. Click on "Request Signature".

Once you've sent out the document you will receive email notifications of the progress and a copy of the signed document after all parties have signed. If you are sending out a contract, reply to the offer email saying "I've sent the contract through HelloSign. Once [Signatory], [Signatory Title], views and approves, you will be prompted to do the same. Let me know if you have any questions!" in order to keep everyone informed.

If you need to make a change, there is an "Edit & Resend" option in HelloSign. If a new document has to be uploaded, cancel the original and stage a new one to send for signatures.

Employment and Contractor Agreements

The following contracts are in Google docs that are viewable by anyone with the link.

United States Employment Status

Fair Labor Standards Act Exempt v. Nonexempt Employees


GitLab will be working in partnership with CXC Global for employing GitLabbers located in several countries listed below. The actual employment contracts will be sent and issued by CXC. The offer details will be provided to the CXC by GitLab's hiring team. The process for this is as follows:


  1. Email template from the manager/recruiter is sent per the hiring process
  2. Recruiter or People operations will complete the Client & Contractor Project Info sheet and SOW (statement of work). These are located on the Google Drive, Australia Folder.
  3. Once these documents are completed they will need to be emailed to CXC. Contact details can be found in 1password => People Operations Vault => Entity HR Contacts



Preparing Employment Agreements for GitLabbers in India

GitLab is working in partnership with Lyra Infosystems for employing GitLabbers located in India. These agreements are mailed rather than emailed so there is a lead time of approximately one week for completion before the new hire can start their employment at GitLab. The process for creating and sending an agreement is as follows:

  1. Once the email offer from the manager has been sent as per the hiring process People Ops will email Lyra HR with salary information for the new hire so that Lyra can prepare the Cost to Company (CTC) breakdown to include in the contract. The Cost to Company (CTC) breakdown will be sent to you and included in the offer.
  2. People Ops will reach out to the new hire and ask for full names of both parents.
  3. When all of the information asked for in the above two steps has been received, complete the contract as per the steps in the how to use this page to prepare a contract section, apart from staging the contract in HelloSign. Add the Cost to Company (CTC) Excel Sheet to "Anexure A."
  4. Once the contract is ready to be sent, save it as a PDF, email it to the new hire and cc peopleops and HR at Lyra.
  5. Once the contract has been emailed, HR at Lyra will send the hardcopy for signature directly to the new hire's home address.
  6. When the contract has been signed HR at Lyra will send Peopleops a PDF copy of the document which can then be filed in BambooHR.
  7. Complete the last step in the how to use this page to prepare a contract section.

Employment Agreements for GitLabbers in China

GitLab is working in partnership with CIIC to employ GitLabbers located in China. Signed agreements between GitLab and CIIC are required to employ any new hire. Therefore, there will be a lead time of approximately three weeks prior to starting. As soon as it becomes clear that an offer to a candidate is going to be made, People Ops will reach out to CIIC to begin the process. The process for preparing the agreements between all parties is as follows:

GitLab and New Hire:

  1. Once the email offer from the hiring manager has been sent as per the hiring process complete the Template-GitLab China Employee Offer letter as per How to use this page to prepare a contract.
  2. In addition to GitLab's Offer Letter, CIIC require a Chinese version of a Letter of Employment Intent.
  3. Complete the Letter of Intents with all of the information required/known. This should be completed in English first then translated into Chinese using Google Translate.
  4. Once this has been done send the GitLab offer letter and both (Chinese & English) versions of the Letter of Employment Intent to the new hire for their review, completion and signature using HelloSign. Ensure that Peopleops and CIIC are copied.
  5. Once everything has been signed, print and FedEx the Chinese and English Letter of Intents to CIIC. The address can be found in the PEO China folder > China Employment Options > CIIC in the Google Drive.

GitLab & CIIC:

  1. GitLab has a Secondment Agreement in place with CIIC, this may need to be updated but CIIC will confirm.
  2. Once CIIC have received the documents they will prepare a payment notice and send this to GitLab (peopleops) for payment. This must be paid upfront and may need CFO approval.
  3. After CIIC receive payment they will reach out to the new hire to complete a Labor Contract.

CIIC & New Hire

Once the Labor Contract has been signed by both CIIC and the new hire the individual can now commence their work with GitLab.

Employment Agreements for GitLabbers in Germany

When a wet signature is required for employment agreements the following process must be followed:

  1. Email offer from the manager/recruiter is sent per the hiring process (the candidate's address will need to be asked for at this stage). This email should also contain a link to this process so that the candidate is aware.
  2. People Operations will prepare the contract per the instructions in How to use this page to prepare a contract with the exception of using HelloSign.

CCO or CFO Signatory

  1. Once the contract has been reviewed and approved, either the CCO or CFO will need to print two copies of the contract, sign and send them to the candidate by postal mail using FedEx (details of this can be found in 1Password => Secretarial Vault => Fedex) or another courier service.
  2. A copy of the Power of Attorney (POA) will also need to be enclosed with the contracts. The POA can be found in the German Templates folder on the Google Drive.
  3. Once the documents have been sent the CCO or CFO will email People Operations with the tracking number
  4. People Operations will then email the candidate to let them know the contract is on its way and provide the following instructions for the candidate to send one copy of the contract:
    1. GitLab's FedEx account details. The candidate can use another courier if that's easier for them and they will be reimbursed.
    2. Address of GitLab's German Counsel where the contract will be filed (address is in 1Password => People Operations Vault => Entity HR Contacts => address under Legal: Employment Matters Germany)
  5. Once the law firm has received the contract they will scan and email a copy to People Operations to file in BambooHR.

CEO Signatory

  1. If the CEO is the signatory, once approved, the contract will need to be emailed to the CEO's EA. If the EA is unavailable People Operations should handle the signing and sending of the contracts.
  2. The EA will print out two copies of the contract for the CEO to sign
  3. Once the contracts are signed they will be sent by the EA to the candidate's home address.
  4. Once the documents have been sent the EA will email People Operations with the tracking number
  5. People Operations will then email the candidate to let them know the contract is on its way and provide the following instructions for the candidate to send one copy of the contract:
    1. GitLab's FedEx account details (1Password => Secretarial Vault => Fedex). The candidate can use another courier if that's easier for them and they will be reimbursed.
    2. Address of GitLab's German Counsel where the contract will be filed (address is in 1Password => People Operations Vault => Entity HR Contacts => address under Legal: Employment Matters Germany))
  6. Once the law firm has received the contract they will scan and email a copy to People Operations to file in BambooHR.

Core Team Member Non-Disclosure Agreements

Core team members are an important part of the GitLab community. In order for these individuals to be able to participate in confidential GitLab communications we ask core team members to sign a Non-Disclosure Agreement. This document is reviewed and signed by the CFO.

Letter of Adjustment

When a team member receives any change in compensation we need to create a Letter of Adjustment instead of staging an entirely new contract. This document is signed by the Chief Culture Officer and the team member through HelloSign. Once the document has been signed, it is uploaded into BambooHR under the Contracts and Changes folder on the Documents Tab. Also, file any other supporting documentation, for example, an email with the approval to change the compensation. Information in BambooHR, TriNet, and HRSavvy should also be updated, if applicable. Make sure to stage the adjustment letter using the team member's personal email address and cc their GitLab email.

Probation Period - Confirmation Letter

Upon joining GitLab some team members (location dependent) will have a probationary period of 3 to 9 months. As per the onboarding process a notification in BambooHR will have been created. Once the manager has confirmed successful completion of the probationary period a confirmation letter is staged for signature and sent to People Operations and the team member to sign.

Current Entities with Probationary Periods:

Approval for Outside Projects

Before beginning work on outside projects, paid or unpaid, you must obtain approval in writing from the CEO, CFO or Chief Culture Officer. To submit approval please send an email to People Operations with details of the project/activities that you would like to work on. Confirmation will usually be in the form of an email and once received will be filed in the team members record in BambooHR under the Contracts and Changes folder on the Documents Tab. For team members employed in the Netherlands confirmation will be given in the form of a Authorization Letter once signed, this will be filed as outlined above.

For any approved outside activity in which the GitLabber will use his or her GitLab account, outside activity must be stored in a separate, personal project. All other work completed as part of the GitLab employment or contract should be stored in a GitLab namespace with a GitLab copyright.

PIAA Agreements

GitLab strives to help its Contributors maintain the ability to work on projects that are unrelated to GitLab’s business, including other open source projects. Our PIAA does not grant GitLab any rights in any creations that you may make that are not related to GitLab's business or the work you do for GitLab. That is, you are free to develop those creations without requesting approval in advance from GitLab. We have created an amendment to the PIAA agreement which can be view in amendment to PIAA. Please email people operations who will complete and stage the document for signatures. Given that there is necessarily some ambiguity about which projects relate to or don't relate to our business, we have created a process to increase clarity on this issue and encourage outside work by our Contributors. If you're pretty sure that a project you want to work on is unrelated to GitLab's business, but you want GitLab to confirm this ahead of time (or afterwards), you can fill out the Acknowledgement Letter we've provided with a detailed description of the project. GitLab will review your submitted project details, and if we agree that it is not related to our business and does not result from your work for GitLab, we'll sign the letter and return it to you.

Consent Form for GitLab Usability Test

During this usability test I agree to participate in an online session using my computer and telephone. During the session I will be interviewed about the site, asked to find information or complete tasks using the site, asked to complete an online questionnaire about the experience, and I may be video recorded (together, these form the “Materials”).

I understand and consent to the use and release of the Materials by GitLab B.V. (“GitLab”). These materials will likely be made public. I understand that it is the discretion of GitLab to decide whether and how to use the Materials. I relinquish any rights to the Materials and understand the recording may be copied and used by GitLab without further permission. I hereby agree to release, defend, and hold harmless GitLab and its agents or employees, from and against any claims, damages or liability arising from or related to the use of the Materials, including but not limited to libel, defamation, invasion of privacy or right of publicity, infringement of copyright or trademark, misuse, distortion, blurring, alteration, optical illusion or use in composite form, either intentionally or otherwise, that may occur or be produced in taking, processing, reduction or production of the Materials, their publication or distribution.

I have read the above authorization, release, and agreement and I am fully familiar with the contents thereof. This release shall be binding upon me and my heirs, legal representatives, and assigns. I understand that participation is voluntary and I agree to immediately raise any concerns I might have.

If you have any questions after today, please contact {GitLab Contact Person}.

Please sign below to indicate that you have read and understand the information on this form and that any questions you might have about the session have been answered.


Please print your name: {Usability Tester Name}

Please sign your name:

Thank you!

We appreciate your participation.