Skip to main content
Completing an I-9 involves three parties, and each one’s progress is tracked by its own status field on the employee object: the employee completes Section 1, the employer or an authorized representative countersigns Section 2, and—where E-Verify is enabled—the E-Verify case runs its course. Because each field reports on a different party, together they pinpoint exactly which step is outstanding and who owes the next action. The three tracks advance independently, so read each field on its own rather than inferring one from another.

Section 1: the employee’s portion

employeeSectionOneStatus tracks the employee completing and signing Section 1.
  • not_started — the employee has not opened their I-9.
  • in_progress — the employee has begun but not signed Section 1.
  • completed — Section 1 is signed. Section 2 can now be completed.

Countersign: Section 2

i9CountersignStatus tracks completion of Section 2, where the employer or an authorized representative examines the employee’s documents and countersigns.
  • not_started — Section 2 is outstanding.
  • completed — the I-9 has been countersigned and the form is complete.
This field reports completion rather than granular progress. When an authorized representative handles Section 2 remotely, the Remote I-9 section covers the intermediate steps they move through, and the audit trail records each one.

E-Verify

everifyCaseStatus applies to employers with E-Verify enabled. It carries the most values of the three because it mirrors the full E-Verify case lifecycle, so you can surface outcomes that require employer action—such as pending_referral—the moment they occur. The canonical list lives on E-Verify Case Statuses, and TNCs and FANs explains the obligations a tentative nonconfirmation triggers.

Tracking status changes

You have two ways to observe these values, and most integrations use both:

Webhooks

Get notified as each status changes, rather than polling.

Retrieve completed data

Read current status directly from the employee and submission objects.
Drive your own UI from these three fields rather than from a status label of your own. A form with employeeSectionOneStatus: completed and i9CountersignStatus: not_started is waiting on the employer—which is exactly the queue an administrator needs to see.