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

# Contentful OAuth 2.0 connector profile – StackOne setup guide

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

<Panel>
  <div className="not-prose guides-scope-selector" data-guides-scope-selector data-guide-actions-json="[{&#x22;id&#x22;:&#x22;contentful_get_all_assets&#x22;,&#x22;label&#x22;:&#x22;Get All Assets&#x22;,&#x22;scopes&#x22;:[&#x22;content_management_read&#x22;]},{&#x22;id&#x22;:&#x22;contentful_get_asset&#x22;,&#x22;label&#x22;:&#x22;Get Asset&#x22;,&#x22;scopes&#x22;:[&#x22;content_management_read&#x22;]},{&#x22;id&#x22;:&#x22;contentful_create_asset&#x22;,&#x22;label&#x22;:&#x22;Create Asset&#x22;,&#x22;scopes&#x22;:[&#x22;content_management_manage&#x22;]},{&#x22;id&#x22;:&#x22;contentful_update_asset&#x22;,&#x22;label&#x22;:&#x22;Update Asset&#x22;,&#x22;scopes&#x22;:[&#x22;content_management_manage&#x22;]},{&#x22;id&#x22;:&#x22;contentful_delete_asset&#x22;,&#x22;label&#x22;:&#x22;Delete Asset&#x22;,&#x22;scopes&#x22;:[&#x22;content_management_manage&#x22;]},{&#x22;id&#x22;:&#x22;contentful_publish_asset&#x22;,&#x22;label&#x22;:&#x22;Publish Asset&#x22;,&#x22;scopes&#x22;:[&#x22;content_management_manage&#x22;]},{&#x22;id&#x22;:&#x22;contentful_unpublish_asset&#x22;,&#x22;label&#x22;:&#x22;Unpublish Asset&#x22;,&#x22;scopes&#x22;:[&#x22;content_management_manage&#x22;]},{&#x22;id&#x22;:&#x22;contentful_process_asset&#x22;,&#x22;label&#x22;:&#x22;Process Asset&#x22;,&#x22;scopes&#x22;:[&#x22;content_management_manage&#x22;]},{&#x22;id&#x22;:&#x22;contentful_get_all_content_types&#x22;,&#x22;label&#x22;:&#x22;Get All Content Types&#x22;,&#x22;scopes&#x22;:[&#x22;content_management_read&#x22;]},{&#x22;id&#x22;:&#x22;contentful_get_content_type&#x22;,&#x22;label&#x22;:&#x22;Get Content Type&#x22;,&#x22;scopes&#x22;:[&#x22;content_management_read&#x22;]},{&#x22;id&#x22;:&#x22;contentful_create_content_type&#x22;,&#x22;label&#x22;:&#x22;Create Content Type&#x22;,&#x22;scopes&#x22;:[&#x22;content_management_manage&#x22;]},{&#x22;id&#x22;:&#x22;contentful_update_content_type&#x22;,&#x22;label&#x22;:&#x22;Update Content Type&#x22;,&#x22;scopes&#x22;:[&#x22;content_management_manage&#x22;]},{&#x22;id&#x22;:&#x22;contentful_delete_content_type&#x22;,&#x22;label&#x22;:&#x22;Delete Content Type&#x22;,&#x22;scopes&#x22;:[&#x22;content_management_manage&#x22;]},{&#x22;id&#x22;:&#x22;contentful_activate_content_type&#x22;,&#x22;label&#x22;:&#x22;Activate Content Type&#x22;,&#x22;scopes&#x22;:[&#x22;content_management_manage&#x22;]},{&#x22;id&#x22;:&#x22;contentful_deactivate_content_type&#x22;,&#x22;label&#x22;:&#x22;Deactivate Content Type&#x22;,&#x22;scopes&#x22;:[&#x22;content_management_manage&#x22;]},{&#x22;id&#x22;:&#x22;contentful_get_all_entries&#x22;,&#x22;label&#x22;:&#x22;Get All Entries&#x22;,&#x22;scopes&#x22;:[&#x22;content_management_read&#x22;]},{&#x22;id&#x22;:&#x22;contentful_get_entry&#x22;,&#x22;label&#x22;:&#x22;Get Entry&#x22;,&#x22;scopes&#x22;:[&#x22;content_management_read&#x22;]},{&#x22;id&#x22;:&#x22;contentful_create_entry&#x22;,&#x22;label&#x22;:&#x22;Create Entry&#x22;,&#x22;scopes&#x22;:[&#x22;content_management_manage&#x22;]},{&#x22;id&#x22;:&#x22;contentful_update_entry&#x22;,&#x22;label&#x22;:&#x22;Update Entry&#x22;,&#x22;scopes&#x22;:[&#x22;content_management_manage&#x22;]},{&#x22;id&#x22;:&#x22;contentful_delete_entry&#x22;,&#x22;label&#x22;:&#x22;Delete Entry&#x22;,&#x22;scopes&#x22;:[&#x22;content_management_manage&#x22;]},{&#x22;id&#x22;:&#x22;contentful_publish_entry&#x22;,&#x22;label&#x22;:&#x22;Publish Entry&#x22;,&#x22;scopes&#x22;:[&#x22;content_management_manage&#x22;]},{&#x22;id&#x22;:&#x22;contentful_unpublish_entry&#x22;,&#x22;label&#x22;:&#x22;Unpublish Entry&#x22;,&#x22;scopes&#x22;:[&#x22;content_management_manage&#x22;]},{&#x22;id&#x22;:&#x22;contentful_list_organizations&#x22;,&#x22;label&#x22;:&#x22;List Organizations&#x22;,&#x22;scopes&#x22;:[&#x22;content_management_read&#x22;]},{&#x22;id&#x22;:&#x22;contentful_get_organization&#x22;,&#x22;label&#x22;:&#x22;Get Organization&#x22;,&#x22;scopes&#x22;:[&#x22;content_management_read&#x22;]},{&#x22;id&#x22;:&#x22;contentful_update_organization&#x22;,&#x22;label&#x22;:&#x22;Update Organization&#x22;,&#x22;scopes&#x22;:[&#x22;content_management_manage&#x22;]},{&#x22;id&#x22;:&#x22;contentful_list_organization_memberships&#x22;,&#x22;label&#x22;:&#x22;List Organization Memberships&#x22;,&#x22;scopes&#x22;:[&#x22;content_management_read&#x22;]},{&#x22;id&#x22;:&#x22;contentful_get_organization_membership&#x22;,&#x22;label&#x22;:&#x22;Get Organization Membership&#x22;,&#x22;scopes&#x22;:[&#x22;content_management_read&#x22;]},{&#x22;id&#x22;:&#x22;contentful_update_organization_membership&#x22;,&#x22;label&#x22;:&#x22;Update Organization Membership&#x22;,&#x22;scopes&#x22;:[&#x22;content_management_manage&#x22;]},{&#x22;id&#x22;:&#x22;contentful_delete_organization_membership&#x22;,&#x22;label&#x22;:&#x22;Delete Organization Membership&#x22;,&#x22;scopes&#x22;:[&#x22;content_management_manage&#x22;]},{&#x22;id&#x22;:&#x22;contentful_list_organization_periodic_usages&#x22;,&#x22;label&#x22;:&#x22;List Organization Periodic Usages&#x22;,&#x22;scopes&#x22;:[&#x22;content_management_read&#x22;]},{&#x22;id&#x22;:&#x22;contentful_list_organization_available_licenses&#x22;,&#x22;label&#x22;:&#x22;List Organization Available Licenses&#x22;,&#x22;scopes&#x22;:[&#x22;content_management_read&#x22;]},{&#x22;id&#x22;:&#x22;contentful_create_organization_invitation&#x22;,&#x22;label&#x22;:&#x22;Create Organization Invitation&#x22;,&#x22;scopes&#x22;:[&#x22;content_management_manage&#x22;]},{&#x22;id&#x22;:&#x22;contentful_get_organization_invitation&#x22;,&#x22;label&#x22;:&#x22;Get Organization Invitation&#x22;,&#x22;scopes&#x22;:[&#x22;content_management_read&#x22;]},{&#x22;id&#x22;:&#x22;contentful_list_personal_access_tokens&#x22;,&#x22;label&#x22;:&#x22;List Personal Access Tokens&#x22;,&#x22;scopes&#x22;:[&#x22;content_management_read&#x22;]},{&#x22;id&#x22;:&#x22;contentful_get_personal_access_token&#x22;,&#x22;label&#x22;:&#x22;Get Personal Access Token&#x22;,&#x22;scopes&#x22;:[&#x22;content_management_read&#x22;]},{&#x22;id&#x22;:&#x22;contentful_create_personal_access_token&#x22;,&#x22;label&#x22;:&#x22;Create Personal Access Token&#x22;,&#x22;scopes&#x22;:[&#x22;content_management_manage&#x22;]},{&#x22;id&#x22;:&#x22;contentful_revoke_personal_access_token&#x22;,&#x22;label&#x22;:&#x22;Revoke Personal Access Token&#x22;,&#x22;scopes&#x22;:[&#x22;content_management_manage&#x22;]},{&#x22;id&#x22;:&#x22;contentful_list_admin_access_tokens&#x22;,&#x22;label&#x22;:&#x22;List Organization Access Tokens&#x22;,&#x22;scopes&#x22;:[&#x22;content_management_read&#x22;]},{&#x22;id&#x22;:&#x22;contentful_list_roles&#x22;,&#x22;label&#x22;:&#x22;List Roles&#x22;,&#x22;scopes&#x22;:[&#x22;content_management_read&#x22;]},{&#x22;id&#x22;:&#x22;contentful_get_role&#x22;,&#x22;label&#x22;:&#x22;Get Role&#x22;,&#x22;scopes&#x22;:[&#x22;content_management_read&#x22;]},{&#x22;id&#x22;:&#x22;contentful_create_role&#x22;,&#x22;label&#x22;:&#x22;Create Role&#x22;,&#x22;scopes&#x22;:[&#x22;content_management_manage&#x22;]},{&#x22;id&#x22;:&#x22;contentful_update_role&#x22;,&#x22;label&#x22;:&#x22;Update Role&#x22;,&#x22;scopes&#x22;:[&#x22;content_management_manage&#x22;]},{&#x22;id&#x22;:&#x22;contentful_delete_role&#x22;,&#x22;label&#x22;:&#x22;Delete Role&#x22;,&#x22;scopes&#x22;:[&#x22;content_management_manage&#x22;]},{&#x22;id&#x22;:&#x22;contentful_list_space_memberships&#x22;,&#x22;label&#x22;:&#x22;List Space Memberships&#x22;,&#x22;scopes&#x22;:[&#x22;content_management_read&#x22;]},{&#x22;id&#x22;:&#x22;contentful_get_space_membership&#x22;,&#x22;label&#x22;:&#x22;Get Space Membership&#x22;,&#x22;scopes&#x22;:[&#x22;content_management_read&#x22;]},{&#x22;id&#x22;:&#x22;contentful_create_space_membership&#x22;,&#x22;label&#x22;:&#x22;Create Space Membership&#x22;,&#x22;scopes&#x22;:[&#x22;content_management_manage&#x22;]},{&#x22;id&#x22;:&#x22;contentful_update_space_membership&#x22;,&#x22;label&#x22;:&#x22;Update Space Membership&#x22;,&#x22;scopes&#x22;:[&#x22;content_management_manage&#x22;]},{&#x22;id&#x22;:&#x22;contentful_delete_space_membership&#x22;,&#x22;label&#x22;:&#x22;Delete Space Membership&#x22;,&#x22;scopes&#x22;:[&#x22;content_management_manage&#x22;]},{&#x22;id&#x22;:&#x22;contentful_list_space_members&#x22;,&#x22;label&#x22;:&#x22;List Space Members&#x22;,&#x22;scopes&#x22;:[&#x22;content_management_read&#x22;]},{&#x22;id&#x22;:&#x22;contentful_get_space_member&#x22;,&#x22;label&#x22;:&#x22;Get Space Member&#x22;,&#x22;scopes&#x22;:[&#x22;content_management_read&#x22;]},{&#x22;id&#x22;:&#x22;contentful_list_spaces&#x22;,&#x22;label&#x22;:&#x22;List Spaces&#x22;,&#x22;scopes&#x22;:[&#x22;content_management_read&#x22;]},{&#x22;id&#x22;:&#x22;contentful_get_space&#x22;,&#x22;label&#x22;:&#x22;Get Space&#x22;,&#x22;scopes&#x22;:[&#x22;content_management_read&#x22;]},{&#x22;id&#x22;:&#x22;contentful_create_space&#x22;,&#x22;label&#x22;:&#x22;Create Space&#x22;,&#x22;scopes&#x22;:[&#x22;content_management_manage&#x22;]},{&#x22;id&#x22;:&#x22;contentful_update_space&#x22;,&#x22;label&#x22;:&#x22;Update Space&#x22;,&#x22;scopes&#x22;:[&#x22;content_management_manage&#x22;]},{&#x22;id&#x22;:&#x22;contentful_delete_space&#x22;,&#x22;label&#x22;:&#x22;Delete Space&#x22;,&#x22;scopes&#x22;:[&#x22;content_management_manage&#x22;]},{&#x22;id&#x22;:&#x22;contentful_get_space_addons&#x22;,&#x22;label&#x22;:&#x22;Get Space Add-ons&#x22;,&#x22;scopes&#x22;:[&#x22;content_management_read&#x22;]},{&#x22;id&#x22;:&#x22;contentful_update_space_addons&#x22;,&#x22;label&#x22;:&#x22;Update Space Add-ons&#x22;,&#x22;scopes&#x22;:[&#x22;content_management_manage&#x22;]},{&#x22;id&#x22;:&#x22;contentful_get_space_eligible_licenses&#x22;,&#x22;label&#x22;:&#x22;Get Space Eligible Licenses&#x22;,&#x22;scopes&#x22;:[&#x22;content_management_read&#x22;]},{&#x22;id&#x22;:&#x22;contentful_list_space_periodic_usages&#x22;,&#x22;label&#x22;:&#x22;List Space Periodic Usages&#x22;,&#x22;scopes&#x22;:[&#x22;content_management_read&#x22;]},{&#x22;id&#x22;:&#x22;contentful_list_teams_in_space&#x22;,&#x22;label&#x22;:&#x22;List Teams In Space&#x22;,&#x22;scopes&#x22;:[&#x22;content_management_read&#x22;]},{&#x22;id&#x22;:&#x22;contentful_list_organization_teams&#x22;,&#x22;label&#x22;:&#x22;List Organization Teams&#x22;,&#x22;scopes&#x22;:[&#x22;content_management_read&#x22;]},{&#x22;id&#x22;:&#x22;contentful_get_team&#x22;,&#x22;label&#x22;:&#x22;Get Team&#x22;,&#x22;scopes&#x22;:[&#x22;content_management_read&#x22;]},{&#x22;id&#x22;:&#x22;contentful_create_team&#x22;,&#x22;label&#x22;:&#x22;Create Team&#x22;,&#x22;scopes&#x22;:[&#x22;content_management_manage&#x22;]},{&#x22;id&#x22;:&#x22;contentful_update_team&#x22;,&#x22;label&#x22;:&#x22;Update Team&#x22;,&#x22;scopes&#x22;:[&#x22;content_management_manage&#x22;]},{&#x22;id&#x22;:&#x22;contentful_delete_team&#x22;,&#x22;label&#x22;:&#x22;Delete Team&#x22;,&#x22;scopes&#x22;:[&#x22;content_management_manage&#x22;]},{&#x22;id&#x22;:&#x22;contentful_list_team_memberships_in_team&#x22;,&#x22;label&#x22;:&#x22;List Team Memberships In Team&#x22;,&#x22;scopes&#x22;:[&#x22;content_management_read&#x22;]},{&#x22;id&#x22;:&#x22;contentful_list_organization_team_memberships&#x22;,&#x22;label&#x22;:&#x22;List Organization Team Memberships&#x22;,&#x22;scopes&#x22;:[&#x22;content_management_read&#x22;]},{&#x22;id&#x22;:&#x22;contentful_get_team_membership&#x22;,&#x22;label&#x22;:&#x22;Get Team Membership&#x22;,&#x22;scopes&#x22;:[&#x22;content_management_read&#x22;]},{&#x22;id&#x22;:&#x22;contentful_create_team_membership&#x22;,&#x22;label&#x22;:&#x22;Create Team Membership&#x22;,&#x22;scopes&#x22;:[&#x22;content_management_manage&#x22;]},{&#x22;id&#x22;:&#x22;contentful_delete_team_membership&#x22;,&#x22;label&#x22;:&#x22;Delete Team Membership&#x22;,&#x22;scopes&#x22;:[&#x22;content_management_manage&#x22;]},{&#x22;id&#x22;:&#x22;contentful_list_team_space_memberships_in_space&#x22;,&#x22;label&#x22;:&#x22;List Team Space Memberships In Space&#x22;,&#x22;scopes&#x22;:[&#x22;content_management_read&#x22;]},{&#x22;id&#x22;:&#x22;contentful_get_team_space_membership&#x22;,&#x22;label&#x22;:&#x22;Get Team Space Membership&#x22;,&#x22;scopes&#x22;:[&#x22;content_management_read&#x22;]},{&#x22;id&#x22;:&#x22;contentful_create_team_space_membership&#x22;,&#x22;label&#x22;:&#x22;Create Team Space Membership&#x22;,&#x22;scopes&#x22;:[&#x22;content_management_manage&#x22;]},{&#x22;id&#x22;:&#x22;contentful_update_team_space_membership&#x22;,&#x22;label&#x22;:&#x22;Update Team Space Membership&#x22;,&#x22;scopes&#x22;:[&#x22;content_management_manage&#x22;]},{&#x22;id&#x22;:&#x22;contentful_delete_team_space_membership&#x22;,&#x22;label&#x22;:&#x22;Delete Team Space Membership&#x22;,&#x22;scopes&#x22;:[&#x22;content_management_manage&#x22;]},{&#x22;id&#x22;:&#x22;contentful_get_current_user&#x22;,&#x22;label&#x22;:&#x22;Get Current User&#x22;,&#x22;scopes&#x22;:[&#x22;content_management_read&#x22;]},{&#x22;id&#x22;:&#x22;contentful_list_space_users&#x22;,&#x22;label&#x22;:&#x22;List Space Users&#x22;,&#x22;scopes&#x22;:[&#x22;content_management_read&#x22;]},{&#x22;id&#x22;:&#x22;contentful_get_space_user&#x22;,&#x22;label&#x22;:&#x22;Get Space User&#x22;,&#x22;scopes&#x22;:[&#x22;content_management_read&#x22;]},{&#x22;id&#x22;:&#x22;contentful_list_organization_users&#x22;,&#x22;label&#x22;:&#x22;List Organization Users&#x22;,&#x22;scopes&#x22;:[&#x22;content_management_read&#x22;]},{&#x22;id&#x22;:&#x22;contentful_get_organization_user&#x22;,&#x22;label&#x22;:&#x22;Get Organization User&#x22;,&#x22;scopes&#x22;:[&#x22;content_management_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>Register an OAuth application in Contentful</h2>

  <p>Create an OAuth application in your Contentful account to obtain the Client ID and Client<br />Secret needed for the connection.</p>

  <Steps>
    <Step title="Navigate to OAuth applications">
      <div data-guide-step data-guide-scopes="" data-guide-display-scopes-list="">
        <p>Sign in to your <a href="https://app.contentful.com" target="_blank" rel="noopener noreferrer">Contentful account</a>. Click your profile<br />avatar in the top-right corner, select <strong>Account settings</strong>, then click<br /><strong>OAuth applications</strong> in the top navigation.</p>

        <ul>
          <li>Click <strong>+ Create application</strong> in the top-right corner of the OAuth applications page.</li>
        </ul>

        <img src="https://mintcdn.com/stackone-60/8Et9wQ4fF8r7yY8U/connectors/contentful/images/oauth-2-0-setup-step-1.png?fit=max&auto=format&n=8Et9wQ4fF8r7yY8U&q=85&s=52796ec3a4c8af2efa7d4904a9411ce8" alt="OAuth Applications page with Create application button highlighted" width="1280" height="800" data-path="connectors/contentful/images/oauth-2-0-setup-step-1.png" />
      </div>
    </Step>

    <Step title="Fill in the application details">
      <div data-guide-step data-guide-scopes="" data-guide-display-scopes-list="">
        <p>Enter a descriptive <strong>Name</strong> for the application (e.g., `StackOne`) and a brief<br /><strong>Description</strong> (e.g., `StackOne integration`).</p>

        <img src="https://mintcdn.com/stackone-60/8Et9wQ4fF8r7yY8U/connectors/contentful/images/oauth-2-0-setup-step-2.png?fit=max&auto=format&n=8Et9wQ4fF8r7yY8U&q=85&s=7fd438e463acbc57d9e967296503a43c" alt="New application form with Name field highlighted" width="1280" height="800" data-path="connectors/contentful/images/oauth-2-0-setup-step-2.png" />
      </div>
    </Step>

    <Step title="Set the Redirect URI">
      <div data-guide-step data-guide-scopes="" data-guide-display-scopes-list="">
        <p>Paste the StackOne callback URL into the <strong>Redirect URI</strong> field. This is required for<br />the OAuth authorization code flow to complete.</p>

        <ul>
          <li>Redirect URI: `https://api.stackone.com/connect/oauth2/contentful/callback`</li>
          <li>Expiration date: Required — defaults to 30 days. Choose a duration suitable for your integration.</li>
        </ul>

        <img src="https://mintcdn.com/stackone-60/8Et9wQ4fF8r7yY8U/connectors/contentful/images/oauth-2-0-setup-step-3.png?fit=max&auto=format&n=8Et9wQ4fF8r7yY8U&q=85&s=f50dc20547ad14640d580a228ab060d2" alt="New application form with Redirect URI filled in and highlighted" width="1280" height="800" data-path="connectors/contentful/images/oauth-2-0-setup-step-3.png" />
      </div>
    </Step>

    <Step title="Configure permissions and save">
      <div data-guide-step data-guide-scopes="" data-guide-display-scopes-list="">
        <p>Select the appropriate scope checkboxes and ensure <strong>Confidential</strong> is checked before<br />creating the application.</p>

        <ul>
          <li>Check <strong>Manage</strong> to grant full read and write access (`content_management_manage` scope includes read, so the <strong>Read</strong> checkbox is not required when Manage is checked). Check <strong>Read</strong> alone if you only need read-only access.</li>
          <li>Ensure <strong>Confidential</strong> is checked — required for StackOne to authenticate using the Client ID and Client Secret. Leaving it unchecked makes the app a public client and the connection will fail.</li>
          <li>Click <strong>Create application</strong>.</li>
        </ul>

        <img src="https://mintcdn.com/stackone-60/8Et9wQ4fF8r7yY8U/connectors/contentful/images/oauth-2-0-setup-step-4.png?fit=max&auto=format&n=8Et9wQ4fF8r7yY8U&q=85&s=15c240e1d212d4f70be33ff61c1b5f2e" alt="Application form showing Read, Manage, and Confidential checkboxes highlighted" width="1280" height="800" data-path="connectors/contentful/images/oauth-2-0-setup-step-4.png" />
      </div>
    </Step>

    <Step title="Copy the Client ID and Client Secret">
      <div data-guide-step data-guide-scopes="" data-guide-display-scopes-list="">
        <p>After saving, the application page shows the <strong>Client ID</strong> and <strong>Client secret</strong>. Copy<br />both values and store them securely — you will need them when configuring the StackOne<br />connection.</p>

        <ul>
          <li>Click the <strong>copy icon</strong> next to <strong>Client ID</strong> and store it securely.</li>
          <li>Click the <strong>copy icon</strong> next to <strong>Client secret</strong> and store it securely.</li>
        </ul>

        <img src="https://mintcdn.com/stackone-60/8Et9wQ4fF8r7yY8U/connectors/contentful/images/oauth-2-0-setup-step-5.png?fit=max&auto=format&n=8Et9wQ4fF8r7yY8U&q=85&s=1170babd2c890461f622c0420424e84a" alt="Application details page showing Client ID and Client Secret fields highlighted (values redacted)" width="1280" height="800" data-path="connectors/contentful/images/oauth-2-0-setup-step-5.png" />
      </div>
    </Step>
  </Steps>
</section>

<section data-guide-section data-guide-scopes="">
  <h2>Select an OAuth scope</h2>

  <p>Choose the scope the OAuth application will request. Contentful accepts only a single scope<br />per OAuth request — providing multiple values returns an authorization error. Enter the chosen<br />scope in the <strong>Scopes</strong> field when creating the connection in StackOne.</p>

  <Steps>
    <Step title="Choose a scope">
      <div data-guide-step data-guide-scopes="content_management_manage,content_management_read" data-guide-display-scopes-list="content_management_manage,content_management_read">
        <div className="connector-guide-actions-badge" data-guide-actions-badge data-guide-actions-badge-scopes="content_management_manage,content_management_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>Activate Content Type, Create Asset, Create Content Type, Create Entry, Create Organization Invitation, Create Personal Access Token, Create Role, Create Space, Create Space Membership, Create Team, Create Team Membership, Create Team Space Membership, Deactivate Content Type, Delete Asset, Delete Content Type, Delete Entry, Delete Organization Membership, Delete Role, Delete Space, Delete Space Membership, Delete Team, Delete Team Membership, Delete Team Space Membership, Get All Assets, Get All Content Types, Get All Entries, Get Asset, Get Content Type, Get Current User, Get Entry, Get Organization, Get Organization Invitation, Get Organization Membership, Get Organization User, Get Personal Access Token, Get Role, Get Space, Get Space Add-ons, Get Space Eligible Licenses, Get Space Member, Get Space Membership, Get Space User, Get Team, Get Team Membership, Get Team Space Membership, List Organization Access Tokens, List Organization Available Licenses, List Organization Memberships, List Organization Periodic Usages, List Organization Team Memberships, List Organization Teams, List Organization Users, List Organizations, List Personal Access Tokens, List Roles, List Space Members, List Space Memberships, List Space Periodic Usages, List Space Users, List Spaces, List Team Memberships In Team, List Team Space Memberships In Space, List Teams In Space, Process Asset, Publish Asset, Publish Entry, Revoke Personal Access Token, Unpublish Asset, Unpublish Entry, Update Asset, Update Content Type, Update Entry, Update Organization, Update Organization Membership, Update Role, Update Space, Update Space Add-ons, Update Space Membership, Update Team, Update Team Space Membership</span>
        </div>

        <p>Pick one scope based on the operations your connection needs. Enter it in the <strong>Scopes</strong><br />field when creating the connection in StackOne.</p>

        <ul>
          <li>`content_management_manage` — full read and write access. Already includes read, so do not also request `content_management_read`. The <strong>Manage</strong> checkbox must be checked in the Contentful OAuth application.</li>
          <li>`content_management_read` — read-only access. The <strong>Read</strong> checkbox must be checked in the Contentful OAuth application.</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="content_management_manage">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy content_management_manage" title="Copy scope" data-copy="content_management_manage">
                  <span className="connector-guide-scope-copy__label">content\_management\_manage</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="content_management_read">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy content_management_read" title="Copy scope" data-copy="content_management_read">
                  <span className="connector-guide-scope-copy__label">content\_management\_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>Contentful</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>Contentful</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>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>Contentful</strong>.
