Prerequisites
Before continuing, you should have already completed the following for this connector:Configure the Connector
Connector Profile
Link an Account
Link Account
How webhooks are set up
There is no manual webhook setup in Gusto — it is fully automatic. On connection, StackOne calls Gusto’s POST /v1/webhook_subscriptions endpoint to create one subscription covering all supported resource types, pointing at a Native Webhook URL unique to this connection. StackOne generates and registers this URL for you — there is nothing to copy or paste. Gusto then performs a one-time verification: it sends the subscription’s verification_token to that URL, and StackOne automatically confirms it via PUT /v1/webhook_subscriptions/{uuid}/verify, moving the subscription from pending to verified. Disconnecting the account deletes the subscription. (Subscription management uses Gusto’s system-level access token, obtained from your app’s client credentials — no additional configuration is required.)
Available webhook events
Each delivery carries the granular event in the top-level event_type field (e.g. company.provisioned), the affected resource in resource_uuid, and a unix timestamp. Events are grouped by resource type below; only the events you enable in StackOne are dispatched.
Review company and payroll events
Fired across company lifecycle and payroll processing.
- Company (
company.*) — provisioned, deprovisioned, updated, onboarded, approved, suspended, and more. - Payroll (
payroll.*) — created, calculated, submitted, processed, paid, reversed, cancelled, and more. - PaySchedule (
pay_schedule.*) — created, updated. - ExternalPayroll (
external_payroll.*) — created, updated, deleted.
Review employee and contractor events
Fired for worker records and their sub-resources.
- Employee (
employee.*) — created, updated, onboarded, terminated, rehired, deleted, and more. - Contractor (
contractor.*) — created, updated, onboarded, deactivated, reactivated, deleted. - ContractorPayment (
contractor_payment.*) — created, cancelled. - ContractorPaymentGroup (
contractor_payment_group.*) — created, cancelled. - HomeAddress (
employee.home_address.*) / WorkAddress (employee.work_address.*) — created, updated, deleted. - EmployeeJobCompensation (
employee_job_compensation.*) — created, updated, deleted.
Review benefits, banking, and document events
Fired for benefits, bank accounts, and documents/forms.
- CompanyBenefit (
company_benefit.*) / EmployeeBenefit (employee_benefit.*) — created, updated, deleted. - BankAccount (
company.bank_account.*) — created, updated, deleted. - FastAchConfig (
fast_ach_config.*) — activated, deactivated. - Document (
document.*) / Form (form.*) — created, updated, signed. - GeneratedDocument (
generated_document.*) — generated, failed. - Signatory (
signatory.*) — created, updated, deleted, marked_for_invite.
Review location, time-off, and notification events
Fired for locations, time-off requests, and platform notifications.
- Location (
location.*) — created, updated. - TimeOffRequest (
time_off_request.*) — created, updated, deleted. - Notification (
notification.*) — platform alerts such as information requests and invalid SSN (created, resolved).
Understand the delivery format
Gusto sends each event as an HTTP POST with a JSON body containing uuid, event_type (the firing event, e.g. employee.created), entity_type and entity_uuid (the specific record that changed — e.g. an Employee or Payroll), resource_type and resource_uuid (the owning resource, which is always the Company), and timestamp (unix seconds). StackOne routes on entity_type and maps event_type to the event type, entity_uuid to the record id, and timestamp to the event time.
Verify delivery authenticity
Gusto signs each delivery with an X-Gusto-Signature header — an HMAC-SHA256 of the payload computed with your subscription’s verification token. StackOne authorizes each delivery using the secret token embedded in the per-connection webhook URL, so no extra configuration is required on your side.