After reviewing all the potential issues, here’s the complete solution addressing the three critical configuration areas:
1. Cloud Firewall Egress Rules:
Your AWS VPC must allow outbound HTTPS traffic. Configure these components:
# AWS CLI - Security Group egress rule:
aws ec2 authorize-security-group-egress \
--group-id sg-0123456789abcdef0 \
--ip-permissions IpProtocol=tcp,FromPort=443,ToPort=443,IpRanges='[{CidrIp=0.0.0.0/0}]'
Also verify VPC route table has Internet Gateway route:
- Destination: 0.0.0.0/0
- Target: igw-xxxxx (your Internet Gateway)
Check Network ACLs for both inbound and outbound rules allowing HTTPS traffic. NACLs are stateless, so you need explicit rules in both directions.
2. Webhook Endpoint Whitelisting:
The cloud migration changed your outbound IP addresses. Your integration endpoint’s firewall must whitelist the new source IPs. Here’s how to identify and configure them:
# Pseudocode - Get NAT Gateway Elastic IPs:
1. Navigate to AWS Console > VPC > NAT Gateways
2. Identify NAT Gateway in your Zendesk Sell subnet
3. Note the Elastic IP address(es) attached
4. Provide these IPs to integration endpoint firewall admin
5. Configure integration firewall to allow HTTPS from these IPs
6. Test connectivity: curl -I https://integrations.company.com/webhooks/opportunity
If using multiple availability zones, you’ll have multiple NAT Gateways with different Elastic IPs - whitelist all of them.
3. Network ACL Configuration:
Configure stateless Network ACL rules for webhook traffic:
# Outbound rules (lower rule numbers = higher priority):
Rule 100: HTTPS (443) - 0.0.0.0/0 - ALLOW
Rule 110: Ephemeral Ports (1024-65535) - 0.0.0.0/0 - ALLOW
# Inbound rules (for return traffic):
Rule 100: Ephemeral Ports (1024-65535) - 0.0.0.0/0 - ALLOW
The ephemeral port rules are critical because webhook responses come back on random high ports.
Additional Configuration Steps:
DNS Resolution: Enable DNS in your VPC:
aws ec2 modify-vpc-attribute --vpc-id vpc-xxxxx --enable-dns-hostnames
aws ec2 modify-vpc-attribute --vpc-id vpc-xxxxx --enable-dns-support
CloudWatch Monitoring: Enable VPC Flow Logs to diagnose connection issues:
aws ec2 create-flow-logs \
--resource-type VPC \
--resource-ids vpc-xxxxx \
--traffic-type REJECT \
--log-destination-type cloud-watch-logs \
--log-group-name /aws/vpc/zendesk-sell-webhooks
Review flow logs for REJECT entries to identify exactly where traffic is being blocked.
Webhook Configuration Verification:
In Zendesk Sell, re-test webhook delivery:
- Navigate to Settings > Integrations > Webhooks
- Select your opportunity webhook
- Click “Test Webhook” button
- Monitor both Zendesk Sell logs and your integration service logs
- Verify successful delivery with 200 OK response
SSL/TLS Considerations:
Ensure your integration endpoint uses a valid SSL certificate from a trusted CA. Self-signed certificates will cause webhook delivery failures. If you must use self-signed certs, configure Zendesk Sell to accept them (not recommended for production).
Troubleshooting Commands:
# Test connectivity from Zendesk Sell instance:
curl -v -X POST https://integrations.company.com/webhooks/opportunity \
-H "Content-Type: application/json" \
-d '{"test": "connectivity"}'
# Check DNS resolution:
nslookup integrations.company.com
# Verify routing:
traceroute integrations.company.com
Once all three areas are properly configured - egress rules, IP whitelisting, and Network ACLs - webhook delivery should resume. The key is ensuring complete bidirectional network path from your Zendesk Sell VPC through NAT Gateway to your external integration endpoint and back.