Execute Salesforce production deployment checklist with sandbox testing and rollback. Use when deploying Salesforce integrations to production, preparing for launch, or implementing go-live procedures. Trigger with phrases like "salesforce production", "deploy salesforce", "salesforce go-live", "salesforce launch checklist", "salesforce sandbox to prod".
Complete checklist for deploying Salesforce integrations to production, including sandbox validation, API limit planning, and rollback procedures.
full)https://login.salesforce.com (not test.salesforce.com)GET /services/data/v59.0/limits/)INVALID_FIELD, REQUEST_LIMIT_EXCEEDED, etc.)UNABLE_TO_LOCK_ROW, SERVER_UNAVAILABLE)# Test in Full sandbox first (mirrors production data)
# 1. Deploy to sandbox
sf project deploy start --target-org my-sandbox
# 2. Run integration tests against sandbox
SF_LOGIN_URL=https://test.salesforce.com npm run test:integration
# 3. Verify API limits are within budget
sf limits api display --target-org my-sandbox --json | jq '.result[] | select(.name == "DailyApiRequests")'
# 4. Check Apex test results
sf apex run test --target-org my-sandbox --result-format human --code-coverage
async function salesforceHealthCheck(): Promise<{
status: 'healthy' | 'degraded' | 'unhealthy';
details: Record<string, any>;
}> {
const conn = await getConnection();
const start = Date.now();
try {
const [identity, limits] = await Promise.all([
conn.identity(),
conn.request('/services/data/v59.0/limits/'),
]);
const apiUsagePercent = ((limits.DailyApiRequests.Max - limits.DailyApiRequests.Remaining) / limits.DailyApiRequests.Max) * 100;
return {
status: apiUsagePercent > 90 ? 'degraded' : 'healthy',
details: {
connected: true,
latencyMs: Date.now() - start,
instance: conn.instanceUrl,
apiRemaining: limits.DailyApiRequests.Remaining,
apiUsagePercent: Math.round(apiUsagePercent),
},
};
} catch (error: any) {
return {
status: 'unhealthy',
details: { connected: false, error: error.message, latencyMs: Date.now() - start },
};
}
}
# 1. Pre-flight: check Salesforce system status
curl -s https://api.status.salesforce.com/v1/incidents/active | jq 'length'
# 2. Verify production API limits
sf limits api display --target-org production --json
# 3. Deploy metadata (if applicable)
sf project deploy start --target-org production --dry-run # Validate first
sf project deploy start --target-org production # Then deploy
# 4. Verify health check
curl -sf https://yourapp.com/health | jq '.services.salesforce'
# 5. Monitor error rates for 30 minutes after deploy
# Metadata rollback
sf project deploy start --target-org production --metadata-dir rollback/
# Integration rollback: revert to previous version
# Feature flag: disable Salesforce integration without redeploying
SF_INTEGRATION_ENABLED=false
| Alert | Condition | Severity |
|---|---|---|
| API Limit Warning | > 80% daily limit used | P3 |
| API Limit Critical | > 95% daily limit used | P1 |
| Auth Failure | INVALID_SESSION_ID errors | P1 |
| SOQL Errors | MALFORMED_QUERY or INVALID_FIELD | P2 |
| Record Lock | UNABLE_TO_LOCK_ROW spikes | P3 |
For version upgrades, see salesforce-upgrade-migration.