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

