Gusto
Gusto is a comprehensive payroll, benefits, and HR platform designed for small to medium-sized businesses. With Gusto, organizations can manage employee payroll processing, benefits administration, time tracking, contractor payments, compliance, and HR tasks all in one integrated platform.
Authentication Types
Gusto supports 1 authentication method:
- OAuth - Connect users with their Gusto company accounts through OAuth 2.0 authorization.
- Pros: Secure, granular permission control, per-user access tracking, refresh tokens for long-lived access
- Cons: Requires Gusto Developer Portal access to create app, requires app review and approval for production access
- Best for: Production integrations, organizations with compliance requirements, secure multi-user access
Setting up OAuth
To use Gusto with Webrix, you need to create a Gusto application and configure OAuth authentication.
1. Create a Gusto Developer Account
-
Go to the Gusto Developer Portal
-
Sign in with your Gusto account credentials
-
If you don't have a Gusto account, you'll need to create one first
Only Primary Admins or Full Access Admins can authorize applications and access the Developer Portal.
2. Create a New Application
-
In the Developer Portal, click Create New App
-
Fill in your application details:
- App Name: Enter a descriptive name (e.g., "Webrix Integration")
- App Description: Describe what your integration does
- App Website: Your company or app website URL
-
Click Create App
3. Configure OAuth Settings
-
In your app settings, find the OAuth section
-
Copy the Redirect URI from Webrix and add it to your Gusto app:
- In Webrix, go to Integrations → New → Built-in → Gusto
- Copy the Redirect URI shown in the OAuth configuration
- Paste it into the Redirect URIs field in your Gusto app
- Click Add
-
Copy your Client ID and Client Secret from the Gusto app
Keep your Client Secret secure. Never commit it to version control or share it publicly.
4. Request API Scopes
-
In your Gusto app settings, go to the API Scopes section
-
Request the scopes your integration needs. Common scopes include:
companies:read- View company informationemployees:read- View employee datapayrolls:read- View payroll informationemployee_benefits:read- View employee benefitscontractors:read- View contractor informationtime_off:read- View time off policies and requests
-
Provide a detailed explanation of why you need each scope
Only request the minimum scopes necessary for your use case. This helps users feel confident about data access and speeds up the app review process.
5. Configure in Webrix
-
In Webrix, go to Integrations → New → Built-in
-
Select Gusto and click Use
-
Under Authentication Type, select OAuth
-
Paste your Client ID in the Client ID field
-
Paste your Client Secret in the Client Secret field
-
Select the scopes you want to request (must match what was approved in your Gusto app)
-
Click Save Changes
6. Test with Demo Environment
-
During development, your app will access the demo environment at
api.gusto-demo.com -
Click Connect in Webrix to test the OAuth flow
-
You'll be redirected to Gusto to authorize the app
-
Select the company you want to provide access to
-
Review the requested permissions and click Authorize
-
You'll be redirected back to Webrix with a successful connection
As of API version v2023-05-01, multi-company administrators must complete the OAuth flow separately for each company they want to provide access to. Each access token is restricted to a single company.
7. Submit for Production Approval
-
Once you've tested your integration in the demo environment, submit your app for review
-
In the Gusto Developer Portal, click Request Production Access
-
Provide detailed information about:
- Your integration's purpose and use cases
- Which API endpoints you'll use
- How you handle user data and security
- Your company information and contact details
-
Gusto will review your application (typically 2-4 weeks)
-
Once approved, update your Webrix connector to use the production environment
All integrations must go through Gusto's review and approval process before accessing production data. Plan accordingly for your launch timeline.
Troubleshooting
Redirect URI Mismatch Error
If you see "redirect_uri_mismatch" error during OAuth authorization.
Cause: The redirect URL configured in your Gusto app doesn't match the one being used during the OAuth flow.
Solution:
- Copy the exact Redirect URI from Webrix (including https:// and any trailing slashes)
- Go to your Gusto app in the Developer Portal → OAuth settings
- Ensure the URL is added exactly as shown in Webrix
- Remove any duplicate or incorrect redirect URIs
- Save the changes and try connecting again
Insufficient Permissions Error
Users see "insufficient permissions" or "access_denied" when trying to authorize.
Cause: The user doesn't have sufficient permissions in Gusto to authorize applications.
Solution:
- Ensure the user is a Primary Admin or Full Access Admin in Gusto
- Only these roles can authorize new applications
- If needed, have a Gusto admin grant the appropriate permissions
- Try the authorization flow again
Scope Rejection in Production
API calls fail with "insufficient_scope" or scope-related errors in production.
Cause: Your production app hasn't been granted the required scopes by Gusto during the review process.
Solution:
- Verify which scopes were approved for your app in the Developer Portal
- Check that you're not requesting unapproved scopes in your API calls
- If you need additional scopes, contact [email protected]
- Provide justification for why you need the additional scopes
- Wait for approval before using the new scopes
Token Expiration Issues
Access tokens expire and API calls start failing with 401 errors.
Cause: Gusto access tokens expire after 7200 seconds (2 hours).
Solution:
- Implement automatic token refresh using the refresh token
- Refresh tokens proactively before they expire rather than waiting for 401 errors
- Handle 401 responses by refreshing the token and retrying the request
- Ensure your refresh token is being stored securely
Company Selection Required
OAuth flow fails or user can't complete authorization.
Cause: Starting with API version v2023-05-01, users must explicitly select which company to authorize.
Solution:
- During the OAuth flow, users must select a specific company
- Multi-company admins need to complete OAuth separately for each company
- Ensure your integration handles company-specific access tokens correctly
- If a user needs access to multiple companies, they must authorize each one individually
Rate Limiting
API requests fail with 429 (Too Many Requests) errors.
Cause: Gusto enforces rate limits to ensure platform stability.
Solution:
- Implement exponential backoff retry logic for rate-limited requests
- Cache data where appropriate to reduce API calls
- Use batch operations when available
- Monitor the
X-RateLimit-*headers in API responses - Consider spreading requests over time rather than making bulk calls
- Contact Gusto support if you consistently hit rate limits with normal usage
Demo vs Production Environment
Integration works in demo but fails in production, or vice versa.
Cause: Different base URLs for demo (api.gusto-demo.com) and production (api.gusto.com).
Solution:
- Verify you're using the correct base URL for your environment:
- Demo/Development:
https://api.gusto-demo.com - Production:
https://api.gusto.com
- Demo/Development:
- Ensure your Webrix connector configuration matches your environment
- Remember that demo data and production data are completely separate
- Test thoroughly in demo before requesting production access
Missing Employee Data
Employee records are incomplete or missing expected fields.
Cause: Some employee data requires specific scopes or include parameters.
Solution:
- Check that you have the required scopes:
compensations:readfor compensation datacustom_fields:readfor custom field valuescompany_admin:readfor admin information
- Use the
includeparameter to fetch related data (e.g.,include=all_compensations,current_home_address) - Verify the employee's onboarding is complete (incomplete onboarding may result in missing data)
- Check if the employee is terminated (terminated employees may have limited data access)
Onboarding Status Confusion
Employees show unexpected onboarding statuses or can't be added to payroll.
Cause: Gusto has multiple onboarding states that affect data availability and payroll eligibility.
Solution:
- Use the Get Employee Onboarding Status tool to check detailed onboarding progress
- Common statuses:
admin_onboarding_incomplete- Admin hasn't finished setupself_onboarding_invited- Employee invited but hasn't startedself_onboarding_review- Employee finished, waiting for admin reviewonboarding_completed- Fully onboarded and payroll-ready
- Employees must complete onboarding before they can be paid
- Check for specific blockers in the onboarding status response
API Version Compatibility
Unexpected response formats or missing fields in API responses.
Cause: Gusto uses date-based API versioning, and different versions have different response formats.
Solution:
- This connector uses API version
v2026-02-01(set in theX-Gusto-API-Versionheader) - Ensure you're expecting response formats from this version
- Check the Gusto API Changelog for version-specific changes
- When upgrading API versions, review the Version Upgrade Guide
- Test thoroughly with the new version before deploying