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

# Zoho People OAuth 2.0 connector profile – StackOne setup guide

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

<Warning>Administrator or user with API permissions in Zoho People is required to create connected apps.</Warning>

<Panel>
  <div className="not-prose guides-scope-selector" data-guides-scope-selector data-guide-actions-json="[{&#x22;id&#x22;:&#x22;zohopeople_checkin&#x22;,&#x22;label&#x22;:&#x22;Check In&#x22;,&#x22;scopes&#x22;:[&#x22;ZOHOPEOPLE.attendance.ALL&#x22;]},{&#x22;id&#x22;:&#x22;zohopeople_checkout&#x22;,&#x22;label&#x22;:&#x22;Check Out&#x22;,&#x22;scopes&#x22;:[&#x22;ZOHOPEOPLE.attendance.ALL&#x22;]},{&#x22;id&#x22;:&#x22;zohopeople_get_single_attendance_report&#x22;,&#x22;label&#x22;:&#x22;Single Attendance Record - User Report&#x22;,&#x22;scopes&#x22;:[&#x22;ZOHOPEOPLE.attendance.ALL&#x22;]},{&#x22;id&#x22;:&#x22;zohopeople_get_multiple_attendance_report&#x22;,&#x22;label&#x22;:&#x22;Multiple Attendance Records - User Report&#x22;,&#x22;scopes&#x22;:[&#x22;ZOHOPEOPLE.attendance.ALL&#x22;]},{&#x22;id&#x22;:&#x22;zohopeople_get_attendance_entries&#x22;,&#x22;label&#x22;:&#x22;Get Attendance Entries&#x22;,&#x22;scopes&#x22;:[&#x22;ZOHOPEOPLE.attendance.ALL&#x22;]},{&#x22;id&#x22;:&#x22;zohopeople_get_shift_details_of_employee&#x22;,&#x22;label&#x22;:&#x22;Get Employee Shift Details&#x22;,&#x22;scopes&#x22;:[&#x22;ZOHOPEOPLE.attendance.ALL&#x22;]},{&#x22;id&#x22;:&#x22;zohopeople_bulk_import_attendance&#x22;,&#x22;label&#x22;:&#x22;Bulk Import Attendance&#x22;,&#x22;scopes&#x22;:[&#x22;ZOHOPEOPLE.attendance.ALL&#x22;]},{&#x22;id&#x22;:&#x22;zohopeople_fetch_last_attendance_entries&#x22;,&#x22;label&#x22;:&#x22;Fetch Latest Attendance Entries&#x22;,&#x22;scopes&#x22;:[&#x22;ZOHOPEOPLE.attendance.ALL&#x22;]},{&#x22;id&#x22;:&#x22;zohopeople_update_employee_shift&#x22;,&#x22;label&#x22;:&#x22;Update Employee Shift&#x22;,&#x22;scopes&#x22;:[&#x22;ZOHOPEOPLE.attendance.ALL&#x22;]},{&#x22;id&#x22;:&#x22;zohopeople_get_regularization_records&#x22;,&#x22;label&#x22;:&#x22;Get Regularization Records&#x22;,&#x22;scopes&#x22;:[&#x22;ZOHOPEOPLE.attendance.ALL&#x22;]},{&#x22;id&#x22;:&#x22;zohopeople_get_requested_cases&#x22;,&#x22;label&#x22;:&#x22;List Requested Cases&#x22;,&#x22;scopes&#x22;:[&#x22;ZOHOPEOPLE.forms.READ&#x22;]},{&#x22;id&#x22;:&#x22;zohopeople_get_my_cases&#x22;,&#x22;label&#x22;:&#x22;List My Assigned Cases&#x22;,&#x22;scopes&#x22;:[&#x22;ZOHOPEOPLE.forms.READ&#x22;]},{&#x22;id&#x22;:&#x22;zohopeople_get_unassigned_cases&#x22;,&#x22;label&#x22;:&#x22;List Unassigned Cases&#x22;,&#x22;scopes&#x22;:[&#x22;ZOHOPEOPLE.forms.READ&#x22;]},{&#x22;id&#x22;:&#x22;zohopeople_get_open_cases&#x22;,&#x22;label&#x22;:&#x22;List Open Cases&#x22;,&#x22;scopes&#x22;:[&#x22;ZOHOPEOPLE.forms.READ&#x22;]},{&#x22;id&#x22;:&#x22;zohopeople_get_all_cases&#x22;,&#x22;label&#x22;:&#x22;List All Cases&#x22;,&#x22;scopes&#x22;:[&#x22;ZOHOPEOPLE.forms.READ&#x22;]},{&#x22;id&#x22;:&#x22;zohopeople_view_case&#x22;,&#x22;label&#x22;:&#x22;View Case&#x22;,&#x22;scopes&#x22;:[&#x22;ZOHOPEOPLE.forms.READ&#x22;]},{&#x22;id&#x22;:&#x22;zohopeople_add_case&#x22;,&#x22;label&#x22;:&#x22;Create Case&#x22;,&#x22;scopes&#x22;:[&#x22;ZOHOPEOPLE.forms.CREATE&#x22;]},{&#x22;id&#x22;:&#x22;zohopeople_list_case_categories&#x22;,&#x22;label&#x22;:&#x22;List Case Categories&#x22;,&#x22;scopes&#x22;:[&#x22;ZOHOPEOPLE.forms.READ&#x22;]},{&#x22;id&#x22;:&#x22;zohopeople_get_clients&#x22;,&#x22;label&#x22;:&#x22;List Clients&#x22;,&#x22;scopes&#x22;:[&#x22;ZOHOPEOPLE.timetracker.READ&#x22;]},{&#x22;id&#x22;:&#x22;zohopeople_get_client_details&#x22;,&#x22;label&#x22;:&#x22;Get Client Details&#x22;,&#x22;scopes&#x22;:[&#x22;ZOHOPEOPLE.timetracker.READ&#x22;]},{&#x22;id&#x22;:&#x22;zohopeople_add_client&#x22;,&#x22;label&#x22;:&#x22;Add Client&#x22;,&#x22;scopes&#x22;:[&#x22;ZOHOPEOPLE.timetracker.CREATE&#x22;]},{&#x22;id&#x22;:&#x22;zohopeople_modify_client&#x22;,&#x22;label&#x22;:&#x22;Modify Client&#x22;,&#x22;scopes&#x22;:[&#x22;ZOHOPEOPLE.timetracker.UPDATE&#x22;]},{&#x22;id&#x22;:&#x22;zohopeople_delete_client&#x22;,&#x22;label&#x22;:&#x22;Delete Client&#x22;,&#x22;scopes&#x22;:[&#x22;ZOHOPEOPLE.timetracker.DELETE&#x22;]},{&#x22;id&#x22;:&#x22;zohopeople_add_employee&#x22;,&#x22;label&#x22;:&#x22;Add Employee&#x22;,&#x22;scopes&#x22;:[&#x22;ZOHOPEOPLE.forms.CREATE&#x22;]},{&#x22;id&#x22;:&#x22;zohopeople_update_employee&#x22;,&#x22;label&#x22;:&#x22;Update Employee&#x22;,&#x22;scopes&#x22;:[&#x22;ZOHOPEOPLE.forms.UPDATE&#x22;]},{&#x22;id&#x22;:&#x22;zohopeople_fetch_forms&#x22;,&#x22;label&#x22;:&#x22;Fetch Forms&#x22;,&#x22;scopes&#x22;:[&#x22;ZOHOPEOPLE.forms.READ&#x22;]},{&#x22;id&#x22;:&#x22;zohopeople_get_fields_of_form&#x22;,&#x22;label&#x22;:&#x22;Get Fields Of Form&#x22;,&#x22;scopes&#x22;:[&#x22;ZOHOPEOPLE.forms.READ&#x22;]},{&#x22;id&#x22;:&#x22;zohopeople_get_records&#x22;,&#x22;label&#x22;:&#x22;Get Records&#x22;,&#x22;scopes&#x22;:[&#x22;ZOHOPEOPLE.forms.READ&#x22;]},{&#x22;id&#x22;:&#x22;zohopeople_fetch_single_record&#x22;,&#x22;label&#x22;:&#x22;Fetch Single Record&#x22;,&#x22;scopes&#x22;:[&#x22;ZOHOPEOPLE.forms.READ&#x22;]},{&#x22;id&#x22;:&#x22;zohopeople_insert_record&#x22;,&#x22;label&#x22;:&#x22;Insert Record&#x22;,&#x22;scopes&#x22;:[&#x22;ZOHOPEOPLE.forms.CREATE&#x22;]},{&#x22;id&#x22;:&#x22;zohopeople_update_record&#x22;,&#x22;label&#x22;:&#x22;Update Record&#x22;,&#x22;scopes&#x22;:[&#x22;ZOHOPEOPLE.forms.UPDATE&#x22;]},{&#x22;id&#x22;:&#x22;zohopeople_default_and_custom_view&#x22;,&#x22;label&#x22;:&#x22;Default And Custom View&#x22;,&#x22;scopes&#x22;:[&#x22;ZOHOPEOPLE.forms.READ&#x22;]},{&#x22;id&#x22;:&#x22;zohopeople_get_bulk_records&#x22;,&#x22;label&#x22;:&#x22;Get Bulk Records&#x22;,&#x22;scopes&#x22;:[&#x22;ZOHOPEOPLE.forms.READ&#x22;]},{&#x22;id&#x22;:&#x22;zohopeople_list_jobs&#x22;,&#x22;label&#x22;:&#x22;List Jobs&#x22;,&#x22;scopes&#x22;:[&#x22;ZOHOPEOPLE.timetracker.READ&#x22;]},{&#x22;id&#x22;:&#x22;zohopeople_add_job&#x22;,&#x22;label&#x22;:&#x22;Add Job&#x22;,&#x22;scopes&#x22;:[&#x22;ZOHOPEOPLE.forms.CREATE&#x22;]},{&#x22;id&#x22;:&#x22;zohopeople_update_job&#x22;,&#x22;label&#x22;:&#x22;Update Job&#x22;,&#x22;scopes&#x22;:[&#x22;ZOHOPEOPLE.forms.UPDATE&#x22;]},{&#x22;id&#x22;:&#x22;zohopeople_get_job_details&#x22;,&#x22;label&#x22;:&#x22;Get Job Details&#x22;,&#x22;scopes&#x22;:[&#x22;ZOHOPEOPLE.timetracker.READ&#x22;]},{&#x22;id&#x22;:&#x22;zohopeople_modify_job_status&#x22;,&#x22;label&#x22;:&#x22;Modify Job Status&#x22;,&#x22;scopes&#x22;:[&#x22;ZOHOPEOPLE.timetracker.UPDATE&#x22;]},{&#x22;id&#x22;:&#x22;zohopeople_delete_job&#x22;,&#x22;label&#x22;:&#x22;Delete Job&#x22;,&#x22;scopes&#x22;:[&#x22;ZOHOPEOPLE.timetracker.DELETE&#x22;]},{&#x22;id&#x22;:&#x22;zohopeople_get_job_schedule&#x22;,&#x22;label&#x22;:&#x22;Get Job Schedule&#x22;,&#x22;scopes&#x22;:[&#x22;ZOHOPEOPLE.timetracker.READ&#x22;]},{&#x22;id&#x22;:&#x22;zohopeople_add_job_schedule&#x22;,&#x22;label&#x22;:&#x22;Add Job Schedule&#x22;,&#x22;scopes&#x22;:[&#x22;ZOHOPEOPLE.timetracker.CREATE&#x22;]},{&#x22;id&#x22;:&#x22;zohopeople_edit_job_schedule&#x22;,&#x22;label&#x22;:&#x22;Edit Job Schedule&#x22;,&#x22;scopes&#x22;:[&#x22;ZOHOPEOPLE.timetracker.UPDATE&#x22;]},{&#x22;id&#x22;:&#x22;zohopeople_delete_job_schedule&#x22;,&#x22;label&#x22;:&#x22;Delete Job Schedule&#x22;,&#x22;scopes&#x22;:[&#x22;ZOHOPEOPLE.timetracker.DELETE&#x22;]},{&#x22;id&#x22;:&#x22;zohopeople_publish_job_schedule&#x22;,&#x22;label&#x22;:&#x22;Publish Job Schedule&#x22;,&#x22;scopes&#x22;:[&#x22;ZOHOPEOPLE.timetracker.UPDATE&#x22;]},{&#x22;id&#x22;:&#x22;zohopeople_list_leave_types&#x22;,&#x22;label&#x22;:&#x22;List Leave Types&#x22;,&#x22;scopes&#x22;:[&#x22;ZOHOPEOPLE.leave.READ&#x22;]},{&#x22;id&#x22;:&#x22;zohopeople_list_leave_records&#x22;,&#x22;label&#x22;:&#x22;List Leave Records&#x22;,&#x22;scopes&#x22;:[&#x22;ZOHOPEOPLE.leave.READ&#x22;]},{&#x22;id&#x22;:&#x22;zohopeople_get_user_report&#x22;,&#x22;label&#x22;:&#x22;Get User Report&#x22;,&#x22;scopes&#x22;:[&#x22;ZOHOPEOPLE.leave.READ&#x22;]},{&#x22;id&#x22;:&#x22;zohopeople_get_leave_booked_and_balance_report&#x22;,&#x22;label&#x22;:&#x22;Get Leave Booked And Balance Report&#x22;,&#x22;scopes&#x22;:[&#x22;ZOHOPEOPLE.leave.READ&#x22;]},{&#x22;id&#x22;:&#x22;zohopeople_cancel_leave&#x22;,&#x22;label&#x22;:&#x22;Cancel Leave&#x22;,&#x22;scopes&#x22;:[&#x22;ZOHOPEOPLE.leave.UPDATE&#x22;]},{&#x22;id&#x22;:&#x22;zohopeople_add_leave_balance&#x22;,&#x22;label&#x22;:&#x22;Add Leave Balance&#x22;,&#x22;scopes&#x22;:[&#x22;ZOHOPEOPLE.leave.ALL&#x22;]},{&#x22;id&#x22;:&#x22;zohopeople_get_all_holidays_v2&#x22;,&#x22;label&#x22;:&#x22;Get All Holidays (V2)&#x22;,&#x22;scopes&#x22;:[&#x22;ZOHOPEOPLE.leave.ALL&#x22;]},{&#x22;id&#x22;:&#x22;zohopeople_add_candidate&#x22;,&#x22;label&#x22;:&#x22;Add Candidate&#x22;,&#x22;scopes&#x22;:[&#x22;ZOHOPEOPLE.forms.CREATE&#x22;]},{&#x22;id&#x22;:&#x22;zohopeople_update_candidate&#x22;,&#x22;label&#x22;:&#x22;Update Candidate&#x22;,&#x22;scopes&#x22;:[&#x22;ZOHOPEOPLE.forms.UPDATE&#x22;]},{&#x22;id&#x22;:&#x22;zohopeople_reopen_onboarding&#x22;,&#x22;label&#x22;:&#x22;Reopen Onboarding&#x22;,&#x22;scopes&#x22;:[&#x22;ZOHOPEOPLE.forms.ALL&#x22;]},{&#x22;id&#x22;:&#x22;zohopeople_trigger_onboarding_employee&#x22;,&#x22;label&#x22;:&#x22;Trigger Employee Onboarding&#x22;,&#x22;scopes&#x22;:[&#x22;ZOHOPEOPLE.forms.ALL&#x22;]},{&#x22;id&#x22;:&#x22;zohopeople_trigger_onboarding_candidate&#x22;,&#x22;label&#x22;:&#x22;Trigger Candidate Onboarding&#x22;,&#x22;scopes&#x22;:[&#x22;ZOHOPEOPLE.forms.ALL&#x22;]},{&#x22;id&#x22;:&#x22;zohopeople_get_projects&#x22;,&#x22;label&#x22;:&#x22;List Timesheet Projects&#x22;,&#x22;scopes&#x22;:[&#x22;ZOHOPEOPLE.timetracker.READ&#x22;]},{&#x22;id&#x22;:&#x22;zohopeople_get_project_details&#x22;,&#x22;label&#x22;:&#x22;Get Project Details&#x22;,&#x22;scopes&#x22;:[&#x22;ZOHOPEOPLE.timetracker.READ&#x22;]},{&#x22;id&#x22;:&#x22;zohopeople_add_project&#x22;,&#x22;label&#x22;:&#x22;Add Project&#x22;,&#x22;scopes&#x22;:[&#x22;ZOHOPEOPLE.forms.CREATE&#x22;]},{&#x22;id&#x22;:&#x22;zohopeople_update_project&#x22;,&#x22;label&#x22;:&#x22;Update Project&#x22;,&#x22;scopes&#x22;:[&#x22;ZOHOPEOPLE.forms.UPDATE&#x22;]},{&#x22;id&#x22;:&#x22;zohopeople_change_project_status&#x22;,&#x22;label&#x22;:&#x22;Change Project Status&#x22;,&#x22;scopes&#x22;:[&#x22;ZOHOPEOPLE.timetracker.UPDATE&#x22;]},{&#x22;id&#x22;:&#x22;zohopeople_delete_project&#x22;,&#x22;label&#x22;:&#x22;Delete Project&#x22;,&#x22;scopes&#x22;:[&#x22;ZOHOPEOPLE.timetracker.DELETE&#x22;]},{&#x22;id&#x22;:&#x22;zohopeople_get_timesheets&#x22;,&#x22;label&#x22;:&#x22;List Timesheets&#x22;,&#x22;scopes&#x22;:[&#x22;ZOHOPEOPLE.timetracker.READ&#x22;]},{&#x22;id&#x22;:&#x22;zohopeople_add_time_log&#x22;,&#x22;label&#x22;:&#x22;Add Time Log&#x22;,&#x22;scopes&#x22;:[&#x22;ZOHOPEOPLE.timetracker.CREATE&#x22;]},{&#x22;id&#x22;:&#x22;zohopeople_list_time_logs&#x22;,&#x22;label&#x22;:&#x22;List Time Logs&#x22;,&#x22;scopes&#x22;:[&#x22;ZOHOPEOPLE.timetracker.READ&#x22;]},{&#x22;id&#x22;:&#x22;zohopeople_get_time_log_details&#x22;,&#x22;label&#x22;:&#x22;Get Time Log Details&#x22;,&#x22;scopes&#x22;:[&#x22;ZOHOPEOPLE.timetracker.READ&#x22;]},{&#x22;id&#x22;:&#x22;zohopeople_edit_time_log&#x22;,&#x22;label&#x22;:&#x22;Edit Time Log&#x22;,&#x22;scopes&#x22;:[&#x22;ZOHOPEOPLE.timetracker.UPDATE&#x22;]},{&#x22;id&#x22;:&#x22;zohopeople_delete_time_log&#x22;,&#x22;label&#x22;:&#x22;Delete Time Log&#x22;,&#x22;scopes&#x22;:[&#x22;ZOHOPEOPLE.timetracker.DELETE&#x22;]},{&#x22;id&#x22;:&#x22;zohopeople_get_timesheet_details&#x22;,&#x22;label&#x22;:&#x22;Get Timesheet Details&#x22;,&#x22;scopes&#x22;:[&#x22;ZOHOPEOPLE.timetracker.READ&#x22;]},{&#x22;id&#x22;:&#x22;zohopeople_create_timesheet&#x22;,&#x22;label&#x22;:&#x22;Create Timesheet&#x22;,&#x22;scopes&#x22;:[&#x22;ZOHOPEOPLE.timetracker.CREATE&#x22;]},{&#x22;id&#x22;:&#x22;zohopeople_approve_timesheet&#x22;,&#x22;label&#x22;:&#x22;Approve Timesheet&#x22;,&#x22;scopes&#x22;:[&#x22;ZOHOPEOPLE.timetracker.UPDATE&#x22;]},{&#x22;id&#x22;:&#x22;zohopeople_modify_timesheet&#x22;,&#x22;label&#x22;:&#x22;Modify Timesheet&#x22;,&#x22;scopes&#x22;:[&#x22;ZOHOPEOPLE.timetracker.UPDATE&#x22;]},{&#x22;id&#x22;:&#x22;zohopeople_delete_timesheet&#x22;,&#x22;label&#x22;:&#x22;Delete Timesheet&#x22;,&#x22;scopes&#x22;:[&#x22;ZOHOPEOPLE.timetracker.DELETE&#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 connected app in Zoho People</h2>

  <p>Register a server-based connected app to obtain client ID and client secret for OAuth 2.0 integration.</p>

  <Steps>
    <Step title="Sign in to Zoho API console">
      <div data-guide-step data-guide-scopes="" data-guide-display-scopes-list="">
        <p>Sign in to the <a href="https://api-console.zoho.com/" target="_blank" rel="noopener noreferrer">Zoho API console</a>.</p>
      </div>
    </Step>

    <Step title="Create a new application">
      <div data-guide-step data-guide-scopes="" data-guide-display-scopes-list="">
        <p>On the Applications page, click the <strong>ADD CLIENT</strong> button in the top-right corner.</p>

        <ul>
          <li>In the "Choose a Client Type" dialog, select <strong>Server-based Applications</strong>.</li>
          <li>Click <strong>CREATE NOW</strong> to proceed.</li>
        </ul>
      </div>
    </Step>

    <Step title="Configure application details">
      <div data-guide-step data-guide-scopes="" data-guide-display-scopes-list="">
        <p>Fill in the required application information.</p>

        <ul>
          <li><strong>Client Name</strong>: `StackOne Integration`</li>
          <li><strong>Homepage URL</strong>: your organization URL (e.g., `https://yourcompany.com`)</li>
          <li><strong>Authorized Redirect URIs</strong>: `https://api.stackone.com/connect/oauth2/zohopeople/callback` — click the <strong>+</strong> button to add it</li>
          <li>Click <strong>Create</strong> to generate your application.</li>
        </ul>
      </div>
    </Step>

    <Step title="Copy client ID and secret">
      <div data-guide-step data-guide-scopes="" data-guide-display-scopes-list="">
        <p>Click the <strong>Client Secret</strong> tab, then copy the <strong>Client ID</strong> and <strong>Client Secret</strong>. Store both values securely for use later.</p>
      </div>
    </Step>
  </Steps>
</section>

<section data-guide-section data-guide-scopes="">
  <h2>Scopes</h2>

  <p>Scopes control which Zoho People modules the integration can access. Create a comma-separated list of scopes required for your use case to enter into the StackOne Auth Config.</p>

  <Steps>
    <Step title="Select scopes">
      <div data-guide-step data-guide-scopes="ZOHOPEOPLE.forms.ALL,ZOHOPEOPLE.forms.READ,ZOHOPEOPLE.forms.CREATE,ZOHOPEOPLE.forms.UPDATE,ZOHOPEOPLE.timetracker.ALL,ZOHOPEOPLE.attendance.ALL,ZOHOPEOPLE.leave.ALL,ZOHOPEOPLE.leave.READ,ZOHOPEOPLE.leave.UPDATE" data-guide-display-scopes-list="ZOHOPEOPLE.forms.ALL,ZOHOPEOPLE.forms.READ,ZOHOPEOPLE.forms.CREATE,ZOHOPEOPLE.forms.UPDATE,ZOHOPEOPLE.timetracker.ALL,ZOHOPEOPLE.attendance.ALL,ZOHOPEOPLE.leave.ALL,ZOHOPEOPLE.leave.READ,ZOHOPEOPLE.leave.UPDATE">
        <div className="connector-guide-actions-badge" data-guide-actions-badge data-guide-actions-badge-scopes="ZOHOPEOPLE.forms.ALL,ZOHOPEOPLE.forms.READ,ZOHOPEOPLE.forms.CREATE,ZOHOPEOPLE.forms.UPDATE,ZOHOPEOPLE.timetracker.ALL,ZOHOPEOPLE.attendance.ALL,ZOHOPEOPLE.leave.ALL,ZOHOPEOPLE.leave.READ,ZOHOPEOPLE.leave.UPDATE" 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 Candidate, Add Employee, Add Job, Add Leave Balance, Add Project, Bulk Import Attendance, Cancel Leave, Check In, Check Out, Create Case, Default And Custom View, Fetch Forms, Fetch Latest Attendance Entries, Fetch Single Record, Get All Holidays (V2), Get Attendance Entries, Get Bulk Records, Get Employee Shift Details, Get Fields Of Form, Get Leave Booked And Balance Report, Get Records, Get Regularization Records, Get User Report, Insert Record, List All Cases, List Case Categories, List Leave Records, List Leave Types, List My Assigned Cases, List Open Cases, List Requested Cases, List Unassigned Cases, Multiple Attendance Records - User Report, Reopen Onboarding, Single Attendance Record - User Report, Trigger Candidate Onboarding, Trigger Employee Onboarding, Update Candidate, Update Employee, Update Employee Shift, Update Job, Update Project, Update Record, View Case</span>
        </div>

        <p>The scopes required for your use case:</p>

        <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="ZOHOPEOPLE.forms.ALL">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy ZOHOPEOPLE.forms.ALL" title="Copy scope" data-copy="ZOHOPEOPLE.forms.ALL">
                  <span className="connector-guide-scope-copy__label">ZOHOPEOPLE.forms.ALL</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="ZOHOPEOPLE.forms.READ">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy ZOHOPEOPLE.forms.READ" title="Copy scope" data-copy="ZOHOPEOPLE.forms.READ">
                  <span className="connector-guide-scope-copy__label">ZOHOPEOPLE.forms.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="ZOHOPEOPLE.forms.CREATE">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy ZOHOPEOPLE.forms.CREATE" title="Copy scope" data-copy="ZOHOPEOPLE.forms.CREATE">
                  <span className="connector-guide-scope-copy__label">ZOHOPEOPLE.forms.CREATE</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="ZOHOPEOPLE.forms.UPDATE">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy ZOHOPEOPLE.forms.UPDATE" title="Copy scope" data-copy="ZOHOPEOPLE.forms.UPDATE">
                  <span className="connector-guide-scope-copy__label">ZOHOPEOPLE.forms.UPDATE</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="ZOHOPEOPLE.timetracker.ALL">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy ZOHOPEOPLE.timetracker.ALL" title="Copy scope" data-copy="ZOHOPEOPLE.timetracker.ALL">
                  <span className="connector-guide-scope-copy__label">ZOHOPEOPLE.timetracker.ALL</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="ZOHOPEOPLE.attendance.ALL">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy ZOHOPEOPLE.attendance.ALL" title="Copy scope" data-copy="ZOHOPEOPLE.attendance.ALL">
                  <span className="connector-guide-scope-copy__label">ZOHOPEOPLE.attendance.ALL</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="ZOHOPEOPLE.leave.ALL">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy ZOHOPEOPLE.leave.ALL" title="Copy scope" data-copy="ZOHOPEOPLE.leave.ALL">
                  <span className="connector-guide-scope-copy__label">ZOHOPEOPLE.leave.ALL</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="ZOHOPEOPLE.leave.READ">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy ZOHOPEOPLE.leave.READ" title="Copy scope" data-copy="ZOHOPEOPLE.leave.READ">
                  <span className="connector-guide-scope-copy__label">ZOHOPEOPLE.leave.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="ZOHOPEOPLE.leave.UPDATE">
                <button type="button" className="connector-guide-scope-copy" aria-label="Copy ZOHOPEOPLE.leave.UPDATE" title="Copy scope" data-copy="ZOHOPEOPLE.leave.UPDATE">
                  <span className="connector-guide-scope-copy__label">ZOHOPEOPLE.leave.UPDATE</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>Zoho People</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>Zoho People</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>Zoho People</strong>.
