Troubleshooting: Common Issues & Solutions
Quick solutions to common webhook integration issues with FetchHook.
#Webhooks Not Arriving
No webhooks appear when fetching, or provider shows webhooks sent but nothing in FetchHook.
Quick Fix
bash
# 1. Verify webhook URL is correct
# Should be: https://webhook.fetchhook.app/{SOURCE_ID}
# NOT the fetch URL: https://api.fetchhook.app/api/v1/{SOURCE_ID}
# 2. Test with cURL
curl -X POST https://webhook.fetchhook.app/{SOURCE_ID} \
-H "Content-Type: application/json" \
-d '{"test": "webhook"}'
# 3. Then fetch to verify
curl https://api.fetchhook.app/api/v1/{SOURCE_ID} \
-H "Authorization: Bearer {YOUR_API_KEY}"- Check provider dashboard for delivery logs and errors
- Verify webhook endpoint is enabled in provider settings
- Confirm correct events are selected for delivery
- Ensure webhook hasn't been disabled due to failures
#401 Unauthorized Error
API returns "Invalid or missing API key" when fetching webhooks.
Fix Authorization
bash
# ✅ Correct format
curl https://api.fetchhook.app/api/v1/{SOURCE_ID} \
-H "Authorization: Bearer fh_live_abc123..."
# ❌ Common mistakes:
# Missing "Bearer "
-H "Authorization: fh_live_abc123..."
# Wrong header name
-H "X-API-Key: Bearer fh_live_abc123..."
# Using webhook URL as auth
-H "Authorization: Bearer https://webhook.fetchhook.app/..."- Ensure Bearer token format is correct
- Check for trailing spaces when copying API key
- Verify you're using the API key, not the webhook URL
- Confirm API key hasn't been regenerated
#Empty Results
Fetch returns zero webhooks even though you sent test webhooks.
Diagnose Empty Results
bash
# Remove all filters first
curl https://api.fetchhook.app/api/v1/{SOURCE_ID} \
-H "Authorization: Bearer {YOUR_API_KEY}"
# Check if using wrong source ID
# Your source ID is in the dashboard, verify it matches
# Send a fresh test webhook
curl -X POST https://webhook.fetchhook.app/{SOURCE_ID} \
-H "Content-Type: application/json" \
-d '{"test": true}'
# Wait a moment and fetch again
sleep 2
curl https://api.fetchhook.app/api/v1/{SOURCE_ID} \
-H "Authorization: Bearer {YOUR_API_KEY}"#Signature Verification Failing
Stripe/GitHub signature validation returns false or fails.
Fix Signature Issues
python
# ✅ Correct: Use original payload
webhook = fetch_webhooks()[0]
payload_str = json.dumps(webhook['payload'], separators=(',', ':'))
signature = webhook['headers']['stripe-signature']
# Verify with exact payload
verify_signature(payload_str, signature, WEBHOOK_SECRET)
# ❌ Wrong: Don't modify payload
payload_str = json.dumps(webhook['payload'], indent=2) # BREAKS signature!
# ✅ Use exact header names (case-sensitive)
stripe_sig = webhook['headers']['stripe-signature']
github_sig = webhook['headers']['x-hub-signature-256']- Get fresh webhook secret from provider dashboard
- Ensure using correct environment (test vs live keys)
- Don't modify payload before verification
- Use exact header names (case-sensitive)
#429 Rate Limit Exceeded
Too many requests to the API. Rate limits: 100 req/min for fetch, 1000 req/min for ingestion.
Handle Rate Limits
python
import time
import requests
def fetch_with_retry(url, headers, max_retries=3):
for attempt in range(max_retries):
resp = requests.get(url, headers=headers)
if resp.status_code == 429:
retry_after = int(resp.headers.get('Retry-After', 60))
print(f"Rate limited. Waiting {retry_after}s...")
time.sleep(retry_after)
continue
return resp
raise Exception("Max retries exceeded")#Duplicate Webhooks
Same webhook processed multiple times. This is normal - providers retry for reliability.
Implement Deduplication
python
# Use event IDs for idempotency
processed_events = set()
def process_webhook(webhook):
event_id = webhook['event_id']
if event_id in processed_events:
print(f"Skipping duplicate: {event_id}")
return
# Process webhook
handle_webhook(webhook)
# Mark as processed
processed_events.add(event_id)
# Or use a database for persistence
def is_processed(event_id):
# Check if event_id exists in database
return db.exists('processed_webhooks', event_id)#Connection Timeout
Requests timeout or fail to connect to FetchHook API.
Fix Connection Issues
python
import requests
# Increase timeout
response = requests.get(
'https://api.fetchhook.app/api/v1/{SOURCE_ID}',
headers={'Authorization': f'Bearer {API_KEY}'},
timeout=30 # 30 seconds instead of default
)
# Test connectivity
import socket
try:
socket.create_connection(('api.fetchhook.app', 443), timeout=5)
print("✓ Can connect to FetchHook")
except socket.error as e:
print(f"✗ Connection failed: {e}")- Check network connectivity and firewall rules
- Verify DNS resolution for api.fetchhook.app
- Increase client timeout (default may be too low)
- Check if proxy/VPN is interfering
Agent Protocol Instruction
For debugging: Check provider delivery logs first, test with cURL to isolate integration issues, inspect all headers preserved by FetchHook, verify you're using webhook URL for receiving and fetch URL for retrieving. Common mistakes: wrong URL, missing Bearer token, modifying payload before signature verification, not handling duplicates with event IDs.
←All Resources
Verified for Agentic Workflowsv1.0.4