> ## Documentation Index
> Fetch the complete documentation index at: https://docs.stackone.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Culture Amp OAuth 2.0 (Client Credentials) connector profile – StackOne setup guide

> Set up the OAuth 2.0 (Client Credentials) connector profile for Culture Amp in StackOne. One-time admin setup required before your users can link Culture Amp accounts via Hub.

<Warning>API credentials can only be created by an Admin user with Account Owner permissions. Credentials are generated at the account level and grant access to all of the account's data scoped into their permissions, so treat them with caution and never share them with parties you do not trust.</Warning>

<Panel>
  <div className="not-prose guides-scope-selector" data-guides-scope-selector data-guide-actions-json="[{&#x22;id&#x22;:&#x22;cultureamp_list_employees&#x22;,&#x22;label&#x22;:&#x22;List Employees&#x22;,&#x22;scopes&#x22;:[&#x22;employees-read&#x22;]},{&#x22;id&#x22;:&#x22;cultureamp_get_employee&#x22;,&#x22;label&#x22;:&#x22;Get Employee&#x22;,&#x22;scopes&#x22;:[&#x22;employees-read&#x22;]},{&#x22;id&#x22;:&#x22;cultureamp_list_demographics_by_employee&#x22;,&#x22;label&#x22;:&#x22;List Demographics By Employee&#x22;,&#x22;scopes&#x22;:[&#x22;employee-demographics-read&#x22;]},{&#x22;id&#x22;:&#x22;cultureamp_list_performance_cycles&#x22;,&#x22;label&#x22;:&#x22;List Performance Cycles&#x22;,&#x22;scopes&#x22;:[&#x22;performance-evaluations-read&#x22;]},{&#x22;id&#x22;:&#x22;cultureamp_get_performance_cycle&#x22;,&#x22;label&#x22;:&#x22;Get Performance Cycle&#x22;,&#x22;scopes&#x22;:[&#x22;performance-evaluations-read&#x22;]},{&#x22;id&#x22;:&#x22;cultureamp_list_manager_reviews&#x22;,&#x22;label&#x22;:&#x22;List Manager Reviews&#x22;,&#x22;scopes&#x22;:[&#x22;performance-evaluations-read&#x22;]},{&#x22;id&#x22;:&#x22;cultureamp_get_manager_review&#x22;,&#x22;label&#x22;:&#x22;Get Manager Review&#x22;,&#x22;scopes&#x22;:[&#x22;performance-evaluations-read&#x22;]},{&#x22;id&#x22;:&#x22;cultureamp_list_manager_reviews_by_employee&#x22;,&#x22;label&#x22;:&#x22;List Manager Reviews By Employee&#x22;,&#x22;scopes&#x22;:[&#x22;performance-evaluations-read&#x22;]},{&#x22;id&#x22;:&#x22;cultureamp_list_manager_reviews_by_performance_cycle&#x22;,&#x22;label&#x22;:&#x22;List Manager Reviews By Performance Cycle&#x22;,&#x22;scopes&#x22;:[&#x22;performance-evaluations-read&#x22;]}]" style={{ borderRadius: '8px', padding: '16px', marginBottom: '24px' }}>
    <div className="guides-scope-selector__title" style={{ fontSize: '16px', fontWeight: '600', marginBottom: '12px' }}>Select Actions to adjust the guide</div>
    <div className="guides-scope-selector__muted" style={{ fontSize: '13px', marginBottom: '12px' }}>Some actions may require additional configuration in the provider to be accessible. Choose the actions you need and the guide will be updated.</div>

    <div style={{ display: 'flex', gap: '8px', marginBottom: '12px', flexWrap: 'wrap' }}>
      <input type="text" placeholder="Search actions..." className="guides-scope-selector__input" data-guide-action-search style={{ padding: '8px 12px', borderRadius: '6px', fontSize: '13px', flex: 1, minWidth: '160px' }} />

      <button type="button" className="guides-scope-selector__quick-btn" data-guide-select-all style={{ padding: '6px 10px', borderRadius: '6px', fontSize: '12px', cursor: 'pointer' }}>Select all</button>
      <button type="button" className="guides-scope-selector__quick-btn" data-guide-clear style={{ padding: '6px 10px', borderRadius: '6px', fontSize: '12px', cursor: 'pointer' }}>Clear</button>
    </div>

    <div className="guides-scope-selector__list" style={{ maxHeight: '240px', overflowY: 'auto', borderRadius: '6px', marginBottom: '12px' }}>
      <div className="guides-scope-selector__list-header" style={{ display: 'flex', alignItems: 'center', gap: '10px', padding: '8px 12px', fontSize: '12px', fontWeight: '600', position: 'sticky', top: 0, zIndex: 1 }}>
        <div style={{ width: '16px', flexShrink: 0 }} />

        <div style={{ flex: 1, textAlign: 'left' }}>Action</div>
        <div style={{ minWidth: '120px', marginLeft: 'auto', textAlign: 'right' }}>Scope(s)</div>
      </div>

      <div className="guides-scope-selector__muted" data-guide-loading style={{ padding: '16px', textAlign: 'center', fontSize: '13px' }}>Loading actions...</div>
      <div className="guides-scope-selector__muted" data-guide-no-results hidden style={{ padding: '16px', textAlign: 'center', fontSize: '13px' }}>No actions match your search.</div>
    </div>

    <div className="guides-scope-selector__url-section" style={{ marginTop: '12px', paddingTop: '12px' }}>
      <div className="guides-scope-selector__muted" style={{ fontSize: '12px', fontWeight: '500', marginBottom: '6px' }}>Dynamic Guide URL</div>

      <div style={{ display: 'flex', alignItems: 'center', gap: '8px', flexWrap: 'wrap' }}>
        <input type="text" readOnly className="guides-scope-selector__input" data-guide-url style={{ flex: 1, minWidth: '200px', padding: '8px 10px', borderRadius: '6px', fontSize: '12px', fontFamily: 'monospace' }} />

        <button type="button" className="guides-scope-selector__copy-btn" data-guide-copy-url style={{ width: '120px', padding: '8px 14px', borderRadius: '6px', fontSize: '13px', fontWeight: '500', cursor: 'pointer', whiteSpace: 'nowrap', marginLeft: 'auto' }}>Copy URL</button>
      </div>

      <div style={{ marginTop: '12px' }}>
        <div className="guides-scope-selector__muted" style={{ fontSize: '12px', fontWeight: '500', marginBottom: '6px' }}>Scopes Selected</div>

        <div style={{ display: 'flex', alignItems: 'stretch', gap: '8px', flexWrap: 'wrap' }}>
          <pre className="guides-scope-selector__input" role="textbox" aria-readonly="true" tabIndex={0} data-guide-scopes-output style={{ flex: 1, minWidth: '200px', minHeight: '88px', maxHeight: '120px', overflowY: 'auto', margin: 0, padding: '8px 10px', borderRadius: '6px', fontSize: '12px', fontFamily: 'monospace', whiteSpace: 'pre-wrap' }} />

          <div className="guides-scope-selector__muted" style={{ display: 'flex', flexDirection: 'column', gap: '8px', fontSize: '12px', fontWeight: '500', flexShrink: 0, alignItems: 'flex-start' }}>
            <div style={{ whiteSpace: 'nowrap' }}>Separator</div>

            <select className="guides-scope-selector__input" data-guide-scope-delimiter style={{ width: '100%', padding: '6px 10px', borderRadius: '6px', fontSize: '12px' }}>
              <option value="space">Space</option>
              <option value="comma">Comma</option>
              <option value="semicolon">Semicolon</option>
              <option value="pipe">Pipe</option>
              <option value="newline">Newline</option>
            </select>

            <button type="button" className="guides-scope-selector__copy-btn" data-guide-copy-scopes style={{ width: '120px', padding: '8px 14px', borderRadius: '6px', fontSize: '13px', fontWeight: '500', cursor: 'pointer', whiteSpace: 'nowrap' }}>Copy scopes</button>
          </div>
        </div>
      </div>
    </div>
  </div>
</Panel>

<section data-guide-section data-guide-scopes="">
  <h2>Generating API Credentials</h2>

  <p>Culture Amp's API uses the OAuth 2.0 Client Credentials Flow, which requires valid API credentials created in your account's Admin Settings. Your credential consists of a Client ID and a Client Secret.</p>

  <Steps>
    <Step title="Log in to Culture Amp">
      <div data-guide-step data-guide-scopes="" data-guide-display-scopes-list="">
        <p>Sign in to your <a href="https://www.cultureamp.com" target="_blank" rel="noopener noreferrer">Culture Amp account</a> as an Admin user with Account Owner permissions.</p>
      </div>
    </Step>

    <Step title="Open Admin Settings">
      <div data-guide-step data-guide-scopes="" data-guide-display-scopes-list="">
        <p>Click the <strong>Settings</strong> item in the top right navigation menu to open your account's Admin Settings.</p>
      </div>
    </Step>

    <Step title="Open the API section">
      <div data-guide-step data-guide-scopes="" data-guide-display-scopes-list="">
        <p>In the left-hand navigation within your Settings, click <strong>API</strong>.</p>
      </div>
    </Step>

    <Step title="Create the API Credential">
      <div data-guide-step data-guide-scopes="" data-guide-display-scopes-list="">
        <p>Click <strong>Create API Credential</strong> and follow the prompts, assigning the read permissions your integration needs. Then copy the <strong>Client ID</strong> and <strong>Client Secret</strong> and store them securely for use later.</p>
      </div>
    </Step>
  </Steps>
</section>

<section data-guide-section data-guide-scopes="">
  <h2>Scope (optional)</h2>

  <p>The Scope is optional. Leave it blank to request the connector's three read scopes (employees-read, employee-demographics-read, performance-evaluations-read). To narrow access, enter only the comma-separated permissions you need - StackOne adds the target-entity prefix automatically.</p>

  <Steps>
    <Step title="Choose the permissions">
      <div data-guide-step data-guide-scopes="employees-read,employee-demographics-read,performance-evaluations-read" data-guide-display-scopes-list="employees-read,employee-demographics-read,performance-evaluations-read">
        <div className="connector-guide-actions-badge" data-guide-actions-badge data-guide-actions-badge-scopes="employees-read,employee-demographics-read,performance-evaluations-read" style={{ display: 'block', width: 'fit-content', maxWidth: '100%', padding: '2px 8px', borderRadius: '8px', fontSize: '12px', marginBottom: '8px', marginTop: '-10px', whiteSpace: 'nowrap', overflowX: 'auto', overflowY: 'hidden', msOverflowStyle: 'none', scrollbarWidth: 'none' }}>
          <span>Enables actions: </span><span data-guide-actions-badge-labels>Get Employee, Get Manager Review, Get Performance Cycle, List Demographics By Employee, List Employees, List Manager Reviews, List Manager Reviews By Employee, List Manager Reviews By Performance Cycle, List Performance Cycles</span>
        </div>

        <p>Enter the read permissions your integration needs, comma-separated with no spaces.</p>

        <ul>
          <li>`employees-read` — list and get employees</li>
          <li>`employee-demographics-read` — employee demographics</li>
          <li>`performance-evaluations-read` — performance cycles and manager reviews</li>
          <li>Example: `employees-read,performance-evaluations-read`</li>
        </ul>

        <div style={{ marginTop: '8px' }} data-guide-display-scopes>
          <div className="connector-guide-scopes-container">
            <ul className="not-prose" style={{ listStyleType: "'- '", paddingLeft: '1em', margin: 0 }}>
              <li style={{ overflowWrap: 'anywhere', wordBreak: 'break-word' }} data-guide-display-scope="employees-read">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy employees-read" title="Copy scope" data-copy="employees-read">
                  <span className="connector-guide-scope-copy__label">employees-read</span>
                  <span className="connector-guide-scope-copy__icon" aria-hidden="true">⧉</span>
                </button>
              </li>

              <li style={{ overflowWrap: 'anywhere', wordBreak: 'break-word' }} data-guide-display-scope="employee-demographics-read">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy employee-demographics-read" title="Copy scope" data-copy="employee-demographics-read">
                  <span className="connector-guide-scope-copy__label">employee-demographics-read</span>
                  <span className="connector-guide-scope-copy__icon" aria-hidden="true">⧉</span>
                </button>
              </li>

              <li style={{ overflowWrap: 'anywhere', wordBreak: 'break-word' }} data-guide-display-scope="performance-evaluations-read">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy performance-evaluations-read" title="Copy scope" data-copy="performance-evaluations-read">
                  <span className="connector-guide-scope-copy__label">performance-evaluations-read</span>
                  <span className="connector-guide-scope-copy__icon" aria-hidden="true">⧉</span>
                </button>
              </li>
            </ul>
          </div>
        </div>
      </div>
    </Step>
  </Steps>
</section>

## Creating the StackOne Connector Profile

To create the Connector Profile in StackOne for <strong>Culture Amp</strong>:

<Steps>
  <Step title="Navigate to Connector Profiles">
    Login to StackOne and navigate to [Connector Profiles](https://app.stackone.com/connector_profiles)
  </Step>

  <Step title="Create New Connector Profile">
    <ul>
      <li>Click <strong>+ Connector Profile</strong></li>
      <li>Search for and select <strong>Culture Amp</strong></li>
      <li>Select <strong>Type</strong> as <strong>OAuth 2.0 (Client Credentials)</strong></li>

      <li>
        Fill out the fields using details retrieved from your provider:

        <ul style={{ marginLeft: '20px' }}>
          <li><strong>Client ID</strong></li>
          <li><strong>Client Secret</strong></li>
          <li><strong>Scope</strong> (Optional)</li>
        </ul>
      </li>

      <li>(Optional) Select <strong>Actions</strong> to be enabled for this Connector Profile</li>
      <li>Click <strong>Create profile</strong></li>
    </ul>
  </Step>
</Steps>

Congratulations! The new Connector Profile will now show up in your project ready to be used. You can now continue to <a href="/guides/accounts-section#linking-accounts">Link Accounts</a> for <strong>Culture Amp</strong>.
