--- title: Configure human-assisted SMS OTP description: Configure the HA SMS OTP service to enable human agents to generate and validate one-time pass codes during live interactions. locale: en-US canonical_url: https://www.servicenow.com/docs/r/platform-security/authentication/configure-human-assisted-sms-otp.html release: brazil product: Authentication classification: authentication topic_type: task last_updated: "2026-11-06" reading_time_minutes: 4 keywords: [configure human-assisted SMS OTP, HA SMS OTP service configuration, delivery mode, phone number resolution] breadcrumb: [Human-assisted SMS OTP authentication, Authentication factors, Authentication, Access Management] --- # Configure human-assisted SMS OTP Configure the HA SMS OTP service to enable human agents to generate and validate one-time pass codes during live interactions. ## Before you begin Role required: sn\_auth\_ha\_sms\_otp\_admin Perform the following: - The HA SMS OTP plugin must be installed \(`sn_auth_ha_sms_otp`\). This also installs the dependent Multi-factor authentication with SMS plugin \(`com.snc.authentication.sms_mfa`\) if not already present. - For OOB delivery mode: configure an SMS provider \(Twilio, Infobip, or Custom\) under **All** > **Multi-factor Authentication** > **Providers**. To know more, see [SMS one-time passcode \(OTP\) authentication](https://raw.githubusercontent.com/ServiceNow/ServiceNowDocs/brazil/markdown/platform-security/authentication/sms-otp-authentication.md) for provider setup instructions. - Grant the `sn_auth_ha_sms_otp_caller` role to any user or integration that will call the HA SMS OTP API. - Grant the consuming application scope explicit permission to execute the HA SMS OTP API methods. ## Procedure 1. Navigate to **All** > **Authentication Factors** > **Human-Assisted SMS OTP** > **Service Configurations**. 2. Select an existing configuration record to edit, or select New to create one. 3. Fill in the fields described in the following table.
| Field | Description | Default |
|---|---|---|
| Name | Label for this configuration \(for example, HR Helpdesk SMS OTP\). | Default HA SMS OTP |
| Global User Retry Window \(days\) | The rolling time window, in days, over which a user's OTP retry attempts are counted. Attempts made within this window accumulate toward the user's retry limit; once the window elapses, the count resets. | 7 days |
| Global User Lockout Duration \(days\) | The number of days a user is prevented from requesting further OTPs after exhausting their allowed retry attempts. | 1 day |
| Active | When cleared, this configuration is skipped at runtime. If no active configuration exists, OTP requests fail.**Note:** Only one active record can exist per domain. | true |
| Delivery Mode | - OOB: the platform sends the SMS via the configured provider. - BYO: the platform generates and validates the OTP; the consuming application handles delivery. | OOB |
| Phone Number Resolution | How the platform resolves the end user's phone number for OOB delivery. - Provided by calling application: phone number is passed in the API request. - Resolved from configured table: platform looks up the phone from the table and column configured below. Applies to OOB only. | Config-table lookup |
| Phone Table | Table used to look up the end user's phone number \(for example, `sys_user`\). Used with config-table lookup only. | — |
| Phone Column | Column on the Phone Table that stores the phone number in E.164 format \(for example, `mobile_phone`\). Used with config-table lookup only. | — |
| User Column | Column on the Phone Table used to match the end user to a record \(for example, `sys_id`\). Used with config-table lookup only. | — |
| OTP Code Length | Number of digits in the generated OTP. | 6 \(range: 6 to 8\) |
| OTP Expiry \(Minutes\) | Minutes before an unverified OTP expires and a new one must be requested. | 3 \(range: 1 to 10\) |
| **Per-Conversation User Retry Limit** | Maximum incorrect validation attempts per conversation. Counts failed validateCode calls only. Triggering a resend does not consume this budget. | 3 \(range: 1 to 10\) |
| Resend Cooldown \(seconds\) | Minimum seconds between consecutive OTP generation requests within the same conversation. | 60 \(range: 0 to 600\) |
| Global User Retry Limit | Maximum failed OTP verification attempts for a single end user within the configured retry window. When exhausted, the user is locked out for the configured lockout duration, after which the counter resets. | 10 \(range: 1 to 100\) |
| Rate Limit Per Minute Per Agent | Maximum OTP requests a single agent can trigger per minute. Set to 0 to turn off. | 10 \(range: 0 to 100\) |
| Rate Limit Per Minute Per Tenant | Maximum OTP requests across all agents in the tenant per minute. Set to 0 to turn off. | 100 \(range: 0 to 1000\) |
| Domain | Domain this record belongs to. Controls visibility in domain-separated instances. | — |