Troubleshooting Administration¶
This document provides guidance for diagnosing and resolving administrative issues with integrations.
Before You Start¶
Information to Gather¶
When investigating issues, collect: - API key name and last 4 characters - Webhook subscription ID (if applicable) - Timestamp of failure - Error messages or HTTP status codes - Expected vs actual behavior
Request IDs¶
Include request IDs (from response headers) when contacting support for troubleshooting.
Common Issues¶
API Key Not Working¶
Symptom: All requests return 401 Unauthorized
Possible causes: - API key was revoked - API key copied incorrectly (truncated or extra spaces) - Wrong header format
Diagnostic steps:
- Verify key exists and is active in Admin Portal
- Check key format:
wlcro_live_{companyId}_{secret} - Confirm header is
X-Api-Key(exact capitalization) - Test with curl or Postman to isolate client code issues
Resolution: - If revoked: Create new key - If malformed: Re-copy from secure storage - If header wrong: Fix header name/format
Insufficient Permissions (403)¶
Symptom: 401 works for some endpoints, 403 for others
Cause: API key lacks required scope
Check: - Error response indicates which scope is required - Compare with scopes assigned to your API key
Resolution: - Create new API key with additional scopes - Cannot add scopes to existing keys
Common examples:
- events:read required for GET /api/v1/events
- webhooks:write required for subscription management
- integrations:write required for creating records
Webhooks Not Arriving¶
Symptom: Events occur but webhook deliveries not received
Diagnostic steps:
- Check subscription is enabled
- Disabled subscriptions do not deliver
-
Circuit breaker may have auto-disabled after failures
-
Verify event types
- Event must match one of the subscription's event types
-
Event type is case-sensitive (lowercase)
-
Check endpoint accessibility
- URL must be HTTPS
- Must be publicly accessible
- Must respond within 10 seconds
-
Must return 2xx status
-
Use test endpoint
- Send test delivery:
POST /api/v1/webhooks/subscriptions/{id}/test -
Confirms URL, signature, and endpoint response
-
Review delivery logs
- Check for errors, timeouts, or non-2xx responses
Common causes: - Endpoint returns 500 or 400 - Endpoint times out (> 10 seconds) - Firewall blocking WhiteLabelCRO IPs - Signature verification failing (returns 401)
Resolution: - Fix endpoint to return 200-299 for valid webhooks - Optimize endpoint to respond under 10 seconds - Whitelist webhook source IPs (if firewalled) - Fix signature verification logic
Webhook Signature Verification Failing¶
Symptom: Webhooks arrive but fail signature check
Common mistakes:
- Using wrong signing secret (from different subscription?)
- Parsing request body as JSON before verification (modifies body)
- Not using raw request body bytes
- Incorrect HMAC computation format
Verification checklist:
- Compute HMAC over "{timestamp}.{raw_body}" (exact format with dot)
- Use raw request body exactly as received (no parsing, no whitespace changes)
- Use constant-time comparison for signatures
- Signing secret from subscription creation response
Test: - Temporarily disable signature verification to confirm deliveries arrive - Log the computed vs received signatures to debug mismatch
Rate Limits Being Hit¶
Symptom: Frequent 429 responses
Diagnostic steps:
- Check which bucket
- Error response includes
policyfield (e.g.,read:60/1m) -
Confirms which limit is being hit
-
Monitor
X-RateLimit-Remaining - Log remaining count from response headers
-
Identify request patterns that exhaust quota
-
Check for multiple integrations
- Is the same API key shared across systems?
- Each system counts toward the same limit
Resolution:
- Implement Retry-After header handling
- Slow down request rate (longer polling intervals, batch operations spread over time)
- Use separate API keys for separate integrations
- Switch to webhooks instead of polling (if applicable)
Events Not Appearing When Polled¶
Symptom: GET /api/v1/events returns empty or missing expected events
Possible causes:
- Events haven't occurred yet (confirm action happened in CRM)
- Using
sinceoruntilparameters that exclude the events - API key lacks
events:readscope
Diagnostic steps:
- Confirm event actually occurred (check CRM UI)
- Remove since/until filters to see all recent events
- Check event type filter if using type parameter
- Verify API key has events:read scope
Resolution: - Adjust query parameters - Confirm event type is one of the 10 v1 types - Wait for event to occur, then poll again
Circuit Breaker Disabled Subscription¶
Symptom: Webhook subscription shows as disabled; you didn't disable it
Cause: 20 consecutive delivery failures triggered auto-disable
Resolution:
- Review delivery logs to identify failure pattern
- Fix root cause (endpoint error, timeout, signature issue)
- Test with
/testendpoint to confirm fix - Re-enable subscription via PATCH request
Prevention: - Monitor delivery success rate - Set up alerts for repeated failures - Fix issues before circuit breaker triggers
Tool-Managed Subscription Cannot Be Edited¶
Symptom: PATCH request returns 403 with "managed by Zapier" message
Cause: Zapier (or n8n, Make) created and owns this subscription
Resolution:
- Edit the Zap/workflow in Zapier/n8n to change configuration
- Cannot manually edit tool-managed subscriptions
- You can still disable/enable via isEnabled field
Lost Signing Secret¶
Symptom: Need signing secret but didn't save it at creation
Cause: Signing secrets are returned only once at subscription creation
Resolution: - No way to retrieve the original secret - Create new subscription (returns new secret) - Update endpoint configuration with new secret - Delete old subscription
Timeouts During Bulk Operations¶
Symptom: Some requests time out during large batch imports
Possible causes: - Server under heavy load - Individual requests too complex - Network instability
Resolution: - Reduce batch size (process fewer records per minute) - Retry with exponential backoff - Spread operations over longer time window - Check for 503 responses (system contention, not rate limit)
Admin Portal Navigation¶
Accessing Integration Settings¶
Navigate to Settings > Integrations in the Admin Portal to access API keys, webhook subscriptions, and integration settings.
Viewing API Keys¶
Access Settings > Integrations > API Keys to view, create, and revoke API keys.
Viewing Webhook Subscriptions¶
Access webhook subscription management through the Integration API. Contact your administrator for UI-based subscription viewing if required.
Viewing Delivery Logs¶
Delivery logs are available to administrators. Contact your administrator for log access and filtering options.
Monitoring¶
Proactive Monitoring¶
Set up monitoring for: - API key last used timestamp: Identify dormant keys - Webhook delivery success rate: Detect failing subscriptions before circuit breaker - Rate limit consumption: Alert before hitting limits - Integration errors: Track 4xx/5xx responses
Use external monitoring tools or log aggregation to track these metrics.
Health Checks¶
Periodically verify: - Active API keys are still in use - Webhook subscriptions are delivering successfully - No subscriptions stuck in disabled state - No unexpected 429 or 503 responses
Escalation¶
When to Contact Support¶
Escalate to support when: - Issue persists after following troubleshooting steps - Server returns repeated 500 errors - Behavior contradicts documented API behavior - Rate limits seem incorrectly enforced - Data discrepancies (event not fired when CRM action occurred)
Information to Provide¶
When opening support ticket, include: - API key name (NOT the full key value) - Webhook subscription ID (if applicable) - Exact timestamps of failures (UTC) - Full error responses (JSON) - Request ID header (if available) - Steps to reproduce
What NOT to Share¶
Do not share in support tickets: - Full API key secret - Signing secrets - Other sensitive credentials
Share only key names, IDs, and last 4 characters for identification.
Preventive Measures¶
Regular Reviews¶
Monthly or quarterly: - Audit active API keys; revoke unused ones - Review webhook subscription health - Check for integrations with low success rates - Update integration partner credentials if rotated
Documentation for Integration Partners¶
Provide partners with: - API key scopes required for their integration - Expected event types they'll receive - Rate limits that apply to their usage - Signature verification examples - Retry and error handling guidance
Backup Integration Patterns¶
For critical integrations: - Use both webhooks and polling (webhook primary, polling as fallback) - Maintain separate API keys for redundancy - Monitor both channels for discrepancies
Change Management¶
Before making changes: - Test in non-production environment if available - Create new API key before revoking old one - Monitor delivery logs after subscription changes - Keep old configuration accessible for rollback