> ## 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.

# Spotify OAuth 2.0 connector profile – StackOne setup guide

> Set up the OAuth 2.0 connector profile for Spotify in StackOne. One-time admin setup required before your users can link Spotify accounts via Hub.

<Warning>You need a Spotify account to create apps. Free accounts work, but some API features require Spotify Premium.</Warning>

<Panel>
  <div className="not-prose guides-scope-selector" data-guides-scope-selector data-guide-actions-json="[{&#x22;id&#x22;:&#x22;spotify_get_users_saved_albums&#x22;,&#x22;label&#x22;:&#x22;Get User's Saved Albums&#x22;,&#x22;scopes&#x22;:[&#x22;user-library-read&#x22;]},{&#x22;id&#x22;:&#x22;spotify_get_users_saved_audiobooks&#x22;,&#x22;label&#x22;:&#x22;Get User's Saved Audiobooks&#x22;,&#x22;scopes&#x22;:[&#x22;user-library-read&#x22;]},{&#x22;id&#x22;:&#x22;spotify_get_episode&#x22;,&#x22;label&#x22;:&#x22;Get Episode&#x22;,&#x22;scopes&#x22;:[&#x22;user-read-playback-position&#x22;]},{&#x22;id&#x22;:&#x22;spotify_get_saved_episodes&#x22;,&#x22;label&#x22;:&#x22;Get User's Saved Episodes&#x22;,&#x22;scopes&#x22;:[&#x22;user-library-read&#x22;,&#x22;user-read-playback-position&#x22;]},{&#x22;id&#x22;:&#x22;spotify_get_playback_state&#x22;,&#x22;label&#x22;:&#x22;Get Playback State&#x22;,&#x22;scopes&#x22;:[&#x22;user-read-playback-state&#x22;]},{&#x22;id&#x22;:&#x22;spotify_transfer_playback&#x22;,&#x22;label&#x22;:&#x22;Transfer Playback&#x22;,&#x22;scopes&#x22;:[&#x22;user-modify-playback-state&#x22;]},{&#x22;id&#x22;:&#x22;spotify_get_available_devices&#x22;,&#x22;label&#x22;:&#x22;Get Available Devices&#x22;,&#x22;scopes&#x22;:[&#x22;user-read-playback-state&#x22;]},{&#x22;id&#x22;:&#x22;spotify_get_currently_playing&#x22;,&#x22;label&#x22;:&#x22;Get Currently Playing Track&#x22;,&#x22;scopes&#x22;:[&#x22;user-read-currently-playing&#x22;]},{&#x22;id&#x22;:&#x22;spotify_start_playback&#x22;,&#x22;label&#x22;:&#x22;Start/Resume Playback&#x22;,&#x22;scopes&#x22;:[&#x22;user-modify-playback-state&#x22;]},{&#x22;id&#x22;:&#x22;spotify_pause_playback&#x22;,&#x22;label&#x22;:&#x22;Pause Playback&#x22;,&#x22;scopes&#x22;:[&#x22;user-modify-playback-state&#x22;]},{&#x22;id&#x22;:&#x22;spotify_skip_to_next&#x22;,&#x22;label&#x22;:&#x22;Skip To Next Track&#x22;,&#x22;scopes&#x22;:[&#x22;user-modify-playback-state&#x22;]},{&#x22;id&#x22;:&#x22;spotify_skip_to_previous&#x22;,&#x22;label&#x22;:&#x22;Skip To Previous Track&#x22;,&#x22;scopes&#x22;:[&#x22;user-modify-playback-state&#x22;]},{&#x22;id&#x22;:&#x22;spotify_seek_to_position&#x22;,&#x22;label&#x22;:&#x22;Seek To Position&#x22;,&#x22;scopes&#x22;:[&#x22;user-modify-playback-state&#x22;]},{&#x22;id&#x22;:&#x22;spotify_set_repeat_mode&#x22;,&#x22;label&#x22;:&#x22;Set Repeat Mode&#x22;,&#x22;scopes&#x22;:[&#x22;user-modify-playback-state&#x22;]},{&#x22;id&#x22;:&#x22;spotify_set_volume&#x22;,&#x22;label&#x22;:&#x22;Set Playback Volume&#x22;,&#x22;scopes&#x22;:[&#x22;user-modify-playback-state&#x22;]},{&#x22;id&#x22;:&#x22;spotify_toggle_shuffle&#x22;,&#x22;label&#x22;:&#x22;Toggle Playback Shuffle&#x22;,&#x22;scopes&#x22;:[&#x22;user-modify-playback-state&#x22;]},{&#x22;id&#x22;:&#x22;spotify_get_recently_played&#x22;,&#x22;label&#x22;:&#x22;Get Recently Played Tracks&#x22;,&#x22;scopes&#x22;:[&#x22;user-read-recently-played&#x22;]},{&#x22;id&#x22;:&#x22;spotify_get_queue&#x22;,&#x22;label&#x22;:&#x22;Get The User's Queue&#x22;,&#x22;scopes&#x22;:[&#x22;user-read-currently-playing&#x22;,&#x22;user-read-playback-state&#x22;]},{&#x22;id&#x22;:&#x22;spotify_add_to_queue&#x22;,&#x22;label&#x22;:&#x22;Add Item To Playback Queue&#x22;,&#x22;scopes&#x22;:[&#x22;user-modify-playback-state&#x22;]},{&#x22;id&#x22;:&#x22;spotify_get_playlist_items&#x22;,&#x22;label&#x22;:&#x22;Get Playlist Items&#x22;,&#x22;scopes&#x22;:[&#x22;playlist-read-private&#x22;]},{&#x22;id&#x22;:&#x22;spotify_get_current_users_playlists&#x22;,&#x22;label&#x22;:&#x22;Get Current User's Playlists&#x22;,&#x22;scopes&#x22;:[&#x22;playlist-read-private&#x22;]},{&#x22;id&#x22;:&#x22;spotify_create_playlist&#x22;,&#x22;label&#x22;:&#x22;Create Playlist&#x22;,&#x22;scopes&#x22;:[&#x22;playlist-modify-public&#x22;,&#x22;playlist-modify-private&#x22;]},{&#x22;id&#x22;:&#x22;spotify_change_playlist_details&#x22;,&#x22;label&#x22;:&#x22;Change Playlist Details&#x22;,&#x22;scopes&#x22;:[&#x22;playlist-modify-public&#x22;,&#x22;playlist-modify-private&#x22;]},{&#x22;id&#x22;:&#x22;spotify_add_items_to_playlist&#x22;,&#x22;label&#x22;:&#x22;Add Items To Playlist&#x22;,&#x22;scopes&#x22;:[&#x22;playlist-modify-public&#x22;,&#x22;playlist-modify-private&#x22;]},{&#x22;id&#x22;:&#x22;spotify_reorder_or_replace_playlist_items&#x22;,&#x22;label&#x22;:&#x22;Reorder Or Replace Playlist Items&#x22;,&#x22;scopes&#x22;:[&#x22;playlist-modify-public&#x22;,&#x22;playlist-modify-private&#x22;]},{&#x22;id&#x22;:&#x22;spotify_remove_playlist_items&#x22;,&#x22;label&#x22;:&#x22;Remove Playlist Items&#x22;,&#x22;scopes&#x22;:[&#x22;playlist-modify-public&#x22;,&#x22;playlist-modify-private&#x22;]},{&#x22;id&#x22;:&#x22;spotify_get_saved_tracks&#x22;,&#x22;label&#x22;:&#x22;Get User's Saved Tracks&#x22;,&#x22;scopes&#x22;:[&#x22;user-library-read&#x22;]},{&#x22;id&#x22;:&#x22;spotify_get_saved_shows&#x22;,&#x22;label&#x22;:&#x22;Get User's Saved Shows&#x22;,&#x22;scopes&#x22;:[&#x22;user-library-read&#x22;]},{&#x22;id&#x22;:&#x22;spotify_get_show_episodes&#x22;,&#x22;label&#x22;:&#x22;Get Show Episodes&#x22;,&#x22;scopes&#x22;:[&#x22;user-read-playback-position&#x22;]},{&#x22;id&#x22;:&#x22;spotify_get_show&#x22;,&#x22;label&#x22;:&#x22;Get Show&#x22;,&#x22;scopes&#x22;:[&#x22;user-read-playback-position&#x22;]},{&#x22;id&#x22;:&#x22;spotify_get_current_user_profile&#x22;,&#x22;label&#x22;:&#x22;Get Current User Profile&#x22;,&#x22;scopes&#x22;:[&#x22;user-read-private&#x22;,&#x22;user-read-email&#x22;]},{&#x22;id&#x22;:&#x22;spotify_check_saved_items&#x22;,&#x22;label&#x22;:&#x22;Check User's Saved Items&#x22;,&#x22;scopes&#x22;:[&#x22;user-library-read&#x22;,&#x22;user-follow-read&#x22;,&#x22;playlist-read-private&#x22;]},{&#x22;id&#x22;:&#x22;spotify_save_library_items&#x22;,&#x22;label&#x22;:&#x22;Save Library Items&#x22;,&#x22;scopes&#x22;:[&#x22;user-library-modify&#x22;]},{&#x22;id&#x22;:&#x22;spotify_remove_library_items&#x22;,&#x22;label&#x22;:&#x22;Remove Items From Library&#x22;,&#x22;scopes&#x22;:[&#x22;user-library-modify&#x22;,&#x22;user-follow-modify&#x22;,&#x22;playlist-modify-public&#x22;]},{&#x22;id&#x22;:&#x22;spotify_get_users_top_items&#x22;,&#x22;label&#x22;:&#x22;Get User's Top Artists And Tracks&#x22;,&#x22;scopes&#x22;:[&#x22;user-top-read&#x22;]},{&#x22;id&#x22;:&#x22;spotify_get_followed_artists&#x22;,&#x22;label&#x22;:&#x22;Get Followed Artists&#x22;,&#x22;scopes&#x22;:[&#x22;user-follow-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>Create a Spotify app</h2>

  <p>Register a new application in the Spotify Developer Dashboard to obtain your Client ID and Client Secret.</p>

  <Steps>
    <Step title="Sign in to Spotify">
      <div data-guide-step data-guide-scopes="" data-guide-display-scopes-list="">
        <p>Sign in to your <a href="https://developer.spotify.com/dashboard" target="_blank" rel="noopener noreferrer">Spotify Developer Dashboard</a> (create a free Spotify account first if you don't have one).</p>
      </div>
    </Step>

    <Step title="Create your application">
      <div data-guide-step data-guide-scopes="" data-guide-display-scopes-list="">
        <p>Click <strong>Create app</strong> and fill in the application details.</p>

        <ul>
          <li><strong>App name</strong>: choose a descriptive name.</li>
          <li><strong>App description</strong>: a brief purpose of your app.</li>
          <li><strong>Website</strong>: optional.</li>
          <li><strong>Redirect URI</strong>: `https://api.stackone.com/connect/oauth2/spotify/callback`</li>
          <li>Under <strong>Which API/SDKs are you planning to use?</strong>, check <strong>Web API</strong>.</li>
          <li>Accept the Terms of Service and click <strong>Save</strong>.</li>
        </ul>
      </div>
    </Step>

    <Step title="Retrieve your credentials">
      <div data-guide-step data-guide-scopes="" data-guide-display-scopes-list="">
        <p>Open the new app from the dashboard and click <strong>Settings</strong> to view its OAuth credentials.</p>

        <ul>
          <li>Copy the <strong>Client ID</strong> displayed on the page.</li>
          <li>Click <strong>View client secret</strong> to reveal and copy the <strong>Client Secret</strong>.</li>
          <li>Store both values securely for use later.</li>
        </ul>
      </div>
    </Step>
  </Steps>
</section>

<section data-guide-section data-guide-scopes="">
  <h2>Configure OAuth scopes</h2>

  <p>Spotify uses OAuth scopes to control which Web API features your app can access. Scopes are requested during the authorization flow based on your selection here.</p>

  <Steps>
    <Step title="Select OAuth scopes">
      <div data-guide-step data-guide-scopes="user-read-private,user-read-email,user-read-playback-state,user-modify-playback-state,user-read-currently-playing,user-library-read,user-library-modify,playlist-read-private,playlist-modify-private,playlist-modify-public,ugc-image-upload,user-follow-read,user-follow-modify,user-read-recently-played,user-read-playback-position,user-top-read" data-guide-display-scopes-list="user-read-private,user-read-email,user-read-playback-state,user-modify-playback-state,user-read-currently-playing,user-library-read,user-library-modify,playlist-read-private,playlist-modify-private,playlist-modify-public,ugc-image-upload,user-follow-read,user-follow-modify,user-read-recently-played,user-read-playback-position,user-top-read">
        <div className="connector-guide-actions-badge" data-guide-actions-badge data-guide-actions-badge-scopes="user-read-private,user-read-email,user-read-playback-state,user-modify-playback-state,user-read-currently-playing,user-library-read,user-library-modify,playlist-read-private,playlist-modify-private,playlist-modify-public,ugc-image-upload,user-follow-read,user-follow-modify,user-read-recently-played,user-read-playback-position,user-top-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>Add Item To Playback Queue, Add Items To Playlist, Change Playlist Details, Check User's Saved Items, Create Playlist, Get Available Devices, Get Current User Profile, Get Current User's Playlists, Get Currently Playing Track, Get Episode, Get Followed Artists, Get Playback State, Get Playlist Items, Get Recently Played Tracks, Get Show, Get Show Episodes, Get The User's Queue, Get User's Saved Albums, Get User's Saved Audiobooks, Get User's Saved Episodes, Get User's Saved Shows, Get User's Saved Tracks, Get User's Top Artists And Tracks, Pause Playback, Remove Items From Library, Remove Playlist Items, Reorder Or Replace Playlist Items, Save Library Items, Seek To Position, Set Playback Volume, Set Repeat Mode, Skip To Next Track, Skip To Previous Track, Start/Resume Playback, Toggle Playback Shuffle, Transfer Playback</span>
        </div>

        <p>Choose which scopes to request during the OAuth flow based on the actions you need. If left blank, all scopes will be requested by default.</p>

        <div style={{ marginTop: '8px' }} data-guide-display-scopes>
          <div className="connector-guide-scopes-container connector-guide-scopes-container--scrollable">
            <ul className="not-prose" style={{ listStyleType: "'- '", paddingLeft: '1em', margin: 0 }}>
              <li style={{ overflowWrap: 'anywhere', wordBreak: 'break-word' }} data-guide-display-scope="user-read-private">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy user-read-private" title="Copy scope" data-copy="user-read-private">
                  <span className="connector-guide-scope-copy__label">user-read-private</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="user-read-email">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy user-read-email" title="Copy scope" data-copy="user-read-email">
                  <span className="connector-guide-scope-copy__label">user-read-email</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="user-read-playback-state">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy user-read-playback-state" title="Copy scope" data-copy="user-read-playback-state">
                  <span className="connector-guide-scope-copy__label">user-read-playback-state</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="user-modify-playback-state">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy user-modify-playback-state" title="Copy scope" data-copy="user-modify-playback-state">
                  <span className="connector-guide-scope-copy__label">user-modify-playback-state</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="user-read-currently-playing">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy user-read-currently-playing" title="Copy scope" data-copy="user-read-currently-playing">
                  <span className="connector-guide-scope-copy__label">user-read-currently-playing</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="user-library-read">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy user-library-read" title="Copy scope" data-copy="user-library-read">
                  <span className="connector-guide-scope-copy__label">user-library-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="user-library-modify">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy user-library-modify" title="Copy scope" data-copy="user-library-modify">
                  <span className="connector-guide-scope-copy__label">user-library-modify</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="playlist-read-private">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy playlist-read-private" title="Copy scope" data-copy="playlist-read-private">
                  <span className="connector-guide-scope-copy__label">playlist-read-private</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="playlist-modify-private">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy playlist-modify-private" title="Copy scope" data-copy="playlist-modify-private">
                  <span className="connector-guide-scope-copy__label">playlist-modify-private</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="playlist-modify-public">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy playlist-modify-public" title="Copy scope" data-copy="playlist-modify-public">
                  <span className="connector-guide-scope-copy__label">playlist-modify-public</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="ugc-image-upload">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy ugc-image-upload" title="Copy scope" data-copy="ugc-image-upload">
                  <span className="connector-guide-scope-copy__label">ugc-image-upload</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="user-follow-read">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy user-follow-read" title="Copy scope" data-copy="user-follow-read">
                  <span className="connector-guide-scope-copy__label">user-follow-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="user-follow-modify">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy user-follow-modify" title="Copy scope" data-copy="user-follow-modify">
                  <span className="connector-guide-scope-copy__label">user-follow-modify</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="user-read-recently-played">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy user-read-recently-played" title="Copy scope" data-copy="user-read-recently-played">
                  <span className="connector-guide-scope-copy__label">user-read-recently-played</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="user-read-playback-position">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy user-read-playback-position" title="Copy scope" data-copy="user-read-playback-position">
                  <span className="connector-guide-scope-copy__label">user-read-playback-position</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="user-top-read">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy user-top-read" title="Copy scope" data-copy="user-top-read">
                  <span className="connector-guide-scope-copy__label">user-top-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>Spotify</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>Spotify</strong></li>
      <li>Select <strong>Type</strong> as <strong>OAuth 2.0</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>OAuth Scopes</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>Spotify</strong>.
