# Submit PR for New Integration

<p>This guide will take you through the steps to contribute to our open-source code while creating your RudderStack integration. It will also make sure that your integration code fits into our existing codebase without any issues.</p>
<p>To create and submit an integration, you must contribute to the following repositories:</p>
<table>
  <thead>
      <tr>
          <th>Repository</th>
          <th>Link</th>
          <th>Description</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>RudderStack Transformer</td>
          <td><a href="https://github.com/rudderlabs/rudder-transformer" >rudder-transformer</a></td>
          <td>Transforms the standard RudderStack payload from the source to the required destination payload format.</td>
      </tr>
      <tr>
          <td>Control Plane Lite</td>
          <td><a href="https://github.com/rudderlabs/config-generator" >config-generator</a></td>
          <td>Gathers the connection-specific configurations specific to each user.</td>
      </tr>
      <tr>
          <td>RudderStack documentation</td>
          <td><a href="https://github.com/rudderlabs/rudderstack-docs" >rudderstack-docs</a></td>
          <td>Includes the documentation to set up, configure, and use the integration.</td>
      </tr>
  </tbody>
</table>

<html lang="en">
<blockquote class="info">
  <div class="tip-quote">
    
    <div class="tip-text">To contribute, you first need to sign the <a href="https://rudderlabs.wufoo.com/forms/rudderlabs-contributor-license-agreement">RudderStack Contributor License Agreement (“CLA”)</a> before making the first commit. Once you sign the CLA, we will add you to the list of approved contributors and review your proposed changes.</div>
  </div>
</blockquote>

</html>
<!-- end-chunk -->
<!-- begin-chunk -->
<h2 id="creating-a-pull-request">Creating a pull request</h2><p>Follow the steps below to create a pull request and submit your integration to our open-source code:</p>
<ol>
<li>Fork and clone the above-mentioned respositories in your local machine. If you&rsquo;ve done it already, ensure that the local repositories are updated to prevent any merge conflicts.</li>
<li>Create a branch with a clear, descriptive name.</li>
<li>Push your changes to the remote origin.</li>
<li>Click <strong>New pull request</strong> in the RudderStack repository.</li>
<li>Click <strong>Compare across forks</strong> link.</li>
<li>Change the <strong>Head Repository</strong> to your forked repository and change <strong>Compare</strong> to be the associated branch name.</li>
<li>Make the necessary title or description changes. For example, you can add tags such as WIP (work in progress), etc. to add your work status.</li>
<li>Click <strong>Create pull request</strong>.</li>
</ol>

<html lang="en">
<blockquote class="info">
  <div class="tip-quote">
    
    <div class="tip-text">Repeat the above steps for each of the repositories: <code>rudder-transformer</code>, <code>config-generator</code>, and <code>rudderstack-docs</code>.</div>
  </div>
</blockquote>

</html>
<!-- end-chunk -->
<!-- begin-chunk -->
<h2 id="rudderstack-transformer">RudderStack transformer</h2><p><a href="https://github.com/rudderlabs/rudder-transformer" >GitHub repository</a></p>
<p>The <code>rudder-transformer</code> repository is responsible for transforming the source payload into the destination-specific format. As it contains a lot of code, keep the following tips in mind when contributing to this repository:</p>
<ul>
<li>Format the code to match the existing structure. In case of any queries, <a href="mailto:%20docs@rudderstack.com" >contact us</a>.</li>
<li>Include any <code>eslint</code> logic at the top of the file.</li>
<li>Include test cases that provide around 80% code coverage.</li>
</ul>
<!-- end-chunk -->
<!-- begin-chunk -->
<h2 id="control-plane-lite">Control Plane Lite</h2><p><a href="https://github.com/rudderlabs/config-generator" >GitHub repository</a></p>
<p>The <code>config-generator</code> repository can be used to upload the settings required for configuring the integration. The best practice is to follow the pre-existing structure to the best of your ability and <a href="https://rudderstack.com/join-rudderstack-slack-community" >reach out to us</a> in case of any questions.</p>
<p>Also, note the following:</p>
<ul>
<li>Include the regex validation rules for all text input fields.</li>
<li>The icon file must be in the SVG format.</li>
</ul>
<!-- end-chunk -->
<!-- begin-chunk -->
<h2 id="rudderstack-documentation">RudderStack documentation</h2><p><a href="https://github.com/rudderlabs/rudderstack-docs" >GitHub repository</a></p>
<p>The <code>rudderstack-docs</code> repository houses all RudderStack documentation. You can refer to the <a href="https://github.com/rudderlabs/rudderstack-docs/blob/master/DESTINATION_TEMPLATE.mdx" >destination template</a> while creating the documentation for the integration; it will help you understand the pre-defined documentation structure.</p>
<p>Also, a few tips while documenting your integration:</p>
<ul>
<li>Ensure that the document is detailed and thorough to avoid any confusion and errors.</li>
<li>Include clear and concise steps to set up, configure, and use your integration.</li>
<li>Include tips and suggestions wherever possible.</li>
</ul>

<blockquote class="warning">
  <div class="tip-quote">
    
    <div class="tip-text">Do not include any images or screenshots in the documentation. They will be added once all changes are merged.</div>
  </div>
</blockquote>

