A new hire might receive an offer letter, a tax form, a policy acknowledgment, and a direct deposit form. HR needs to know who has finished what without opening every email thread or signing dashboard. The approach below works regardless of which signing tool you use.
Keep a status table you own
Store one row per employee and document with a status (not sent, sent, viewed, signed, declined, expired), timestamps, and the external request ID from your signing tool. A vendor dashboard shows per-request status, but it does not know your onboarding checklist, your HRIS records, or which items are overdue. With your own table, an overdue report is a single query, and reminders and manager escalations can be driven from it.
Keep it current: polling or webhooks
Polling is the simplest option. A scheduled job asks the signing tool for the status of every open request and updates your rows. It works with almost any vendor, but updates lag by your polling interval, and the number of API calls grows with the number of open requests.
Webhooks push events to you as they happen, so the table updates within moments. They cost you a public endpoint that authenticates each request, answers quickly, and handles duplicate and out-of-order deliveries, which usually means keying updates on the request ID and never moving a row backwards from signed to sent. Scraping notification emails is a last resort, since the format is not a contract and can change without notice.
One packet or separate requests
Sending all documents as one packet gives the new hire a single signing session and gives you one completion event, but your status is then per packet. Sending each document as its own request gives you per-document status, at the price of more emails for the signer. If your checklist only cares whether the whole packet is done, track the packet. If HR audits individual documents, you can still track per packet and record which documents it contained.
Handle the overdue cases
Decide in advance what happens when a row sits at sent for too long. A common rule is a reminder after a few days, a notice to the hiring manager after a week, and a flag on the start-date checklist when anything is still unsigned. Keep the thresholds in configuration so HR can tune them without a deploy. Treat declined and expired as first-class statuses with their own follow-up, not as errors.
If you would rather not build the plumbing yourself, Anvil Etch signature packets can include multiple signers, and Anvil can send webhooks such as signerComplete, signerUpdateStatus, and etchPacketComplete that map directly onto the status table above. Per the Anvil webhook documentation, each request carries a token you compare against to confirm it came from Anvil, and failed deliveries are retried up to five attempts in total, so keep the handler idempotent.
Back to All Questions