| name | apollo-prod-checklist |
| description | Execute Apollo.io production deployment checklist.
Use when preparing to deploy Apollo integrations to production,
doing pre-launch verification, or auditing production readiness.
Trigger with phrases like "apollo production checklist", "deploy apollo",
"apollo go-live", "apollo production ready", "apollo launch checklist".
|
| allowed-tools | Read, Grep, Bash(curl:*) |
| version | 1.0.0 |
| license | MIT |
| author | Jeremy Longshore <jeremy@intentsolutions.io> |
Apollo Production Checklist
Overview
Comprehensive checklist for deploying Apollo.io integrations to production with validation scripts and verification steps.
Pre-Deployment Checklist
1. API Configuration
echo "Key length: $(echo -n $APOLLO_API_KEY | wc -c)"
echo "Key prefix: ${APOLLO_API_KEY:0:8}..."
curl -s "https://api.apollo.io/v1/auth/health?api_key=$APOLLO_API_KEY" | jq
2. Error Handling
const requiredHandlers = [
'ApolloAuthError',
'ApolloRateLimitError',
'ApolloValidationError',
'ApolloServerError',
];
3. Rate Limiting
const config = {
maxRequestsPerMinute: 90,
retryConfig: {
maxRetries: 3,
initialDelay: 1000,
maxDelay: 60000,
},
queueConcurrency: 5,
};
4. Security
5. Monitoring
Deployment Validation Script
import { apollo } from '../src/lib/apollo/client';
interface ValidationResult {
check: string;
status: 'pass' | 'fail' | 'warn';
message: string;
}
async function validateProduction(): Promise<ValidationResult[]> {
const results: ValidationResult[] = [];
try {
await apollo.healthCheck();
results.push({
check: 'API Key',
status: 'pass',
message: 'API key is valid and active',
});
} catch (error: any) {
results.push({
check: 'API Key',
status: 'fail',
message: `API key validation failed: ${error.message}`,
});
}
try {
const searchResult = await apollo.searchPeople({
: [],
: ,
});
results.({
: ,
: searchResult.. > ? : ,
: ,
});
} (: ) {
results.({
: ,
: ,
: ,
});
}
{
orgResult = apollo.();
results.({
: ,
: orgResult. ? : ,
: orgResult.
?
: ,
});
} (: ) {
results.({
: ,
: ,
: ,
});
}
requiredEnvVars = [];
optionalEnvVars = [, ];
( envVar requiredEnvVars) {
results.({
: ,
: process.[envVar] ? : ,
: process.[envVar] ? : ,
});
}
( envVar optionalEnvVars) {
results.({
: ,
: process.[envVar] ? : ,
: process.[envVar] ? : ,
});
}
startTime = .();
{
apollo.({ : });
latency = .() - startTime;
results.({
: ,
: latency < ? : latency < ? : ,
: ,
});
} {
results.({
: ,
: ,
: ,
});
}
results;
}
() {
.();
results = ();
( result results) {
icon = result. === ? : result. === ? : ;
.();
}
passed = results.( r. === ).;
warned = results.( r. === ).;
failed = results.( r. === ).;
.();
.();
(failed > ) {
.();
process.();
} (warned > ) {
.();
} {
.();
}
}
().(.);
Post-Deployment Verification
#!/bin/bash
echo "=== Post-Deployment Verification ==="
echo -n "Health check: "
curl -s -o /dev/null -w "%{http_code}" "$PROD_URL/health" && echo " OK" || echo " FAILED"
echo -n "Apollo integration: "
curl -s -o /dev/null -w "%{http_code}" "$PROD_URL/api/apollo/health" && echo " OK" || echo " FAILED"
echo -n "Sample search: "
RESULT=$(curl -s "$PROD_URL/api/apollo/search?domain=apollo.io&limit=1")
echo $RESULT | jq -e '.contacts | length > 0' > /dev/null && echo " OK" || echo " FAILED"
echo -n "Error handling: "
curl -s "$PROD_URL/api/apollo/search?invalid=true" | jq -e '.error' > /dev/null && echo " OK" || echo " FAILED"
echo ""
echo "Verification complete."
Rollback Plan
const APOLLO_FEATURES = {
peopleSearch: process.env.APOLLO_FEATURE_PEOPLE_SEARCH !== 'false',
enrichment: process.env.APOLLO_FEATURE_ENRICHMENT !== 'false',
sequences: process.env.APOLLO_FEATURE_SEQUENCES !== 'false',
};
export function isFeatureEnabled(feature: keyof typeof APOLLO_FEATURES): boolean {
return APOLLO_FEATURES[feature];
}
if (isFeatureEnabled('peopleSearch')) {
const results = await apollo.searchPeople(params);
} else {
throw new Error('Apollo people search is currently disabled');
}
Runbook
| Scenario | Action | Command |
|---|
| API Key Compromised | Rotate immediately | Update secrets, deploy |
| Rate Limited | Enable backoff | Set APOLLO_RATE_LIMIT=50 |
| Search Down | Disable feature | Set APOLLO_FEATURE_PEOPLE_SEARCH=false |
| Full Outage | Disable all | Set APOLLO_ENABLED=false |
| Rollback | Revert deployment | kubectl rollout undo |
Output
- Pre-deployment checklist completed
- Validation script results
- Post-deployment verification
- Rollback procedures documented
Error Handling
| Issue | Resolution |
|---|
| Validation fails | Fix issues before deploy |
| Post-deploy fails | Execute rollback |
| Partial outage | Disable affected features |
| Full outage | Contact Apollo support |
Resources
Next Steps
Proceed to apollo-upgrade-migration for SDK upgrade procedures.