'Execute BambooHR production deployment checklist and rollback procedures.
Scanned 9/2/2026
Install to Claude Code
npx -y skills add jeremylongshore/tons-of-skills-marketplace --skill bamboohr-prod-checklist --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Bamboohr Prod Checklist?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/jeremylongshore-bamboohr-prod-checklist-9068c5dc)More formats (shields.io, HTML) on the badges page.
---
name: bamboohr-prod-checklist
description: 'Execute BambooHR production deployment checklist and rollback procedures.
Use when deploying BambooHR integrations to production, preparing for launch,
or implementing go-live procedures with BambooHR API.
Trigger with phrases like "bamboohr production", "deploy bamboohr",
"bamboohr go-live", "bamboohr launch checklist", "bamboohr prod ready".
'
allowed-tools: Read, Bash(kubectl:*), Bash(curl:*), Grep
version: 1.4.0
license: MIT
author: Jeremy Longshore <jeremy@intentsolutions.io>
tags:
- saas
- hr
- bamboohr
- production
compatibility: Designed for Claude Code
---
# BambooHR Production Checklist
## Overview
Complete pre-launch checklist for deploying BambooHR integrations to production, covering API configuration, data integrity, monitoring, and rollback procedures.
## Prerequisites
- Staging environment tested and verified
- Production BambooHR API key ready
- Deployment pipeline configured
- Monitoring and alerting infrastructure available
## Instructions
### Pre-Deployment Checklist
#### Authentication & Secrets
- [ ] Production API key created under a service account (not personal account)
- [ ] API key stored in secrets manager (AWS Secrets Manager / GCP Secret Manager / Vault)
- [ ] `BAMBOOHR_COMPANY_DOMAIN` set correctly for production
- [ ] Webhook secret stored securely
- [ ] Key rotation procedure documented and tested
- [ ] Old staging/test keys will not be deployed to production
#### API Integration Quality
- [ ] All API calls use `Accept: application/json` header
- [ ] Error handling covers all BambooHR HTTP statuses (400, 401, 403, 404, 503)
- [ ] `X-BambooHR-Error-Message` header parsed for error details
- [ ] `Retry-After` header honored on 503 responses
- [ ] Exponential backoff with jitter implemented for retries
- [ ] Request queue limits concurrent API calls (max 3-5 parallel)
- [ ] No hardcoded employee IDs, company domains, or API keys
#### Data Integrity
- [ ] Custom reports validated against expected field schema
- [ ] Employee directory sync handles new, updated, and terminated employees
- [ ] Date fields parsed consistently (`YYYY-MM-DD` format)
- [ ] Null/empty field handling tested (BambooHR returns `null` or `""`)
- [ ] Unicode employee names handled correctly
- [ ] Large directory tested (500+ employees)
#### Security & Compliance
- [ ] PII fields redacted from application logs
- [ ] Webhook signatures verified with HMAC-SHA256
- [ ] Only necessary BambooHR fields requested (least data principle)
- [ ] No SSN, salary, or restricted data stored without encryption at rest
- [ ] API access audit trail enabled
### Health Check Endpoint
```typescript
// api/health.ts
import { BambooHRClient, BambooHRApiError } from '../bamboohr/client';
interface HealthStatus {
status: 'healthy' | 'degraded' | 'down';
bamboohr: {
connected: boolean;
latencyMs: number;
error?: string;
employeeCount?: number;
};
timestamp: string;
}
export async function healthCheck(client: BambooHRClient): Promise<HealthStatus> {
const start = Date.now();
try {
const dir = await client.getDirectory();
return {
status: 'healthy',
bamboohr: {
connected: true,
latencyMs: Date.now() - start,
employeeCount: dir.employees.length,
},
timestamp: new Date().toISOString(),
};
} catch (err) {
const latency = Date.now() - start;
const errMsg = err instanceof BambooHRApiError ? err.message : 'Unknown error';
return {
status: err instanceof BambooHRApiError && err.retryable ? 'degraded' : 'down',
bamboohr: { connected: false, latencyMs: latency, error: errMsg },
timestamp: new Date().toISOString(),
};
}
}
```
### Monitoring & Alerting
```typescript
// Recommended alert thresholds for BambooHR integrations
const ALERTS = {
p1_critical: [
{ name: 'Auth failure', condition: '401/403 errors > 0', action: 'Page on-call' },
{ name: 'API down', condition: 'Health check fails 3x consecutive', action: 'Page on-call' },
],
p2_high: [
{ name: 'Rate limited', condition: '503 errors > 3/min', action: 'Slack alert' },
{ name: 'High latency', condition: 'p99 > 5000ms', action: 'Slack alert' },
{ name: 'Sync failure', condition: 'Sync job fails', action: 'Slack + ticket' },
],
p3_medium: [
{ name: 'Elevated errors', condition: '4xx errors > 10/hour', action: 'Log + daily review' },
{ name: 'Data mismatch', condition: 'Schema validation failures', action: 'Log + ticket' },
],
};
```
### Gradual Rollout Strategy
```bash
#!/bin/bash
# deploy-bamboohr-integration.sh
echo "=== Pre-flight checks ==="
# 1. Verify BambooHR API is up
curl -sf "https://status.bamboohr.com" > /dev/null || { echo "BambooHR may be down!"; exit 1; }
# 2. Verify production credentials work
STATUS=$(curl -s -o /dev/null -w "%{http_code}" \
-u "${BAMBOOHR_API_KEY}:x" \
-H "Accept: application/json" \
"https://api.bamboohr.com/api/gateway.php/${BAMBOOHR_COMPANY_DOMAIN}/v1/employees/directory")
[ "$STATUS" -eq 200 ] || { echo "Auth check failed: $STATUS"; exit 1; }
echo "API auth: OK"
# 3. Deploy
echo "=== Deploying ==="
# Platform-specific deployment command here
# kubectl apply -f k8s/production.yaml
# fly deploy
# gcloud run deploy ...
# 4. Post-deploy health check
echo "=== Post-deploy verification ==="
sleep 10
curl -sf "https://your-app.com/api/health" | jq .bamboohr
```
### Rollback Procedure
```bash
# Immediate rollback
# kubectl rollout undo deployment/bamboohr-integration
# fly releases rollback
# gcloud run services update-traffic --to-revisions=REVISION=100
# Verify rollback health
curl -sf "https://your-app.com/api/health" | jq .
```
## Output
- Completed pre-deployment checklist
- Health check endpoint deployed
- Monitoring alerts configured
- Gradual rollout with pre-flight checks
- Documented rollback procedure
## Examples
Before production enablement, exercise the integration with the sandbox or approved synthetic records, verify field scope, webhook HMAC, retry/idempotency behavior, and protected observability. Attach a redacted go/no-go receipt; leave writes disabled if any HR owner approval, access review, retention, reconciliation, or rollback check is incomplete.
## Error Handling
| Alert | Condition | Severity | Response |
|-------|-----------|----------|----------|
| Auth failure | 401/403 from BambooHR | P1 | Check API key; rotate if compromised |
| Rate limit storm | Continuous 503s | P2 | Pause sync jobs; reduce request rate |
| Sync data gap | Missing employees in sync | P2 | Run full resync; check changed-since |
| Schema mismatch | New/removed BambooHR fields | P3 | Update field mappings; add defaults |
## Resources
- [BambooHR Status Page](https://status.bamboohr.com)
- [BambooHR API Changes](https://documentation.bamboohr.com/docs/past-changes-to-the-api)
- [BambooHR Planned Changes](https://documentation.bamboohr.com/docs/planned-changes-to-the-api)
## Next Steps
For version upgrades, see `bamboohr-upgrade-migration`.
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!