Skip to main content

Webhooks

Connect Expedify with external systems using webhooks to send and receive real-time event notifications.

What are Webhooks?​

Webhooks enable real-time communication between Expedify and other applications by sending HTTP requests when specific events occur.

Think of webhooks as:

  • Push notifications for applications
  • Event-driven integrations
  • Automatic data synchronization
  • Real-time triggers

Two Types of Webhooks​

Outgoing Webhooks​

Expedify → External Systems

Send data from Expedify to external services when events happen:

  • ✉️ Send Slack notification when deal is won
  • 📊 Sync contact to external CRM
  • 🔔 Alert payment system when invoice created
  • 📝 Log workflow completion to analytics

Common Uses:

  • Notify team on important events
  • Sync data to other platforms
  • Trigger actions in external tools
  • Log events for analytics

Examples:

  • Deal won → Slack notification
  • Contact created → Mailchimp subscriber
  • Workflow failed → PagerDuty alert
  • Invoice paid → Update accounting system

Learn about Outgoing Webhooks →

Incoming Webhooks​

External Systems → Expedify

Receive data from external services to create/update records in Expedify:

  • 📝 Website form submission → Create contact
  • 💳 Payment received → Update deal status
  • 📅 Calendar booking → Create task
  • 🛒 E-commerce order → Create deal

Common Uses:

  • Receive form submissions
  • Process payment notifications
  • Sync data from other systems
  • Trigger workflows from external events

Examples:

  • Contact form → New contact
  • Stripe payment → Deal won
  • Calendly booking → Create appointment task
  • Shopify order → New deal

Learn about Incoming Webhooks →

Webhooks vs API​

Understanding when to use webhooks vs API:

FeatureWebhooksAPI
DirectionPush (automatic)Pull (on-demand)
TriggeringEvent-drivenRequest-driven
Real-timeYes, instantNo, polling required
EfficiencyHigh (no polling)Lower (requires polling)
Best ForReal-time notificationsFetching data on demand

Use Webhooks When:

  • You need real-time updates
  • Events trigger actions
  • Reduce server load (no polling)
  • Automate integrations

Use API When:

  • You need to fetch data
  • On-demand operations
  • User-initiated actions
  • Complex queries required

Getting Started​

Setting Up Outgoing Webhooks​

  1. Go to Settings → Webhooks → Outgoing Webhooks
  2. Click Create Webhook
  3. Enter webhook URL (external endpoint)
  4. Select events to monitor
  5. Add authentication (secret key, headers)
  6. Test and activate

Quick Example:

// Your server receives POST request from Expedify:
{
"event": "contact.created",
"data": {
"id": "contact_123",
"first_name": "John",
"email": "john@example.com"
}
}

Setting Up Incoming Webhooks​

  1. Go to Settings → Webhooks → Incoming Webhooks
  2. Click Create Webhook
  3. Copy generated webhook URL
  4. Configure field mapping
  5. Add to external system
  6. Test with sample data

Quick Example:

# External system sends POST request to Expedify:
curl -X POST https://api.expedify.ai/webhooks/incoming/abc123 \
-H "Content-Type: application/json" \
-d '{"email": "jane@example.com", "name": "Jane Doe"}'

Common Integration Scenarios​

Scenario 1: Form Submissions​

Flow:

  1. User fills contact form on website
  2. Form submits to Expedify incoming webhook
  3. Expedify creates new contact
  4. Outgoing webhook notifies Slack
  5. Workflow sends welcome email

Setup:

  • Incoming webhook for form data
  • Outgoing webhook for Slack
  • Workflow triggered on new contact

Scenario 2: E-commerce Orders​

Flow:

  1. Customer places order (Shopify, WooCommerce)
  2. E-commerce platform sends to incoming webhook
  3. Expedify creates deal from order
  4. Outgoing webhook updates inventory system
  5. Workflow sends order confirmation

Setup:

  • Incoming webhook for orders
  • Outgoing webhook for inventory
  • Workflow for customer communication

Scenario 3: Payment Processing​

Flow:

  1. Payment successful (Stripe, Razorpay)
  2. Payment provider sends to incoming webhook
  3. Expedify updates deal status to "Won"
  4. Outgoing webhook sends to accounting system
  5. Workflow triggers fulfillment process

Setup:

  • Incoming webhook for payments
  • Outgoing webhook for accounting
  • Workflow for fulfillment

Scenario 4: Support Tickets​

Flow:

  1. Customer submits support ticket (Zendesk)
  2. Zendesk sends to incoming webhook
  3. Expedify creates task for support team
  4. Task assigned triggers outgoing webhook
  5. Slack notification sent to assigned user

Setup:

  • Incoming webhook for tickets
  • Outgoing webhook for Slack
  • Assignment automation

Security Best Practices​

For Outgoing Webhooks​

  1. Verify Signatures

    • Always validate webhook signatures
    • Use HMAC-SHA256 verification
    • Prevent unauthorized requests
  2. Use HTTPS

    • Only send to HTTPS endpoints
    • Encrypt data in transit
    • Required for production
  3. Protect Secrets

    • Store secrets securely
    • Rotate periodically
    • Never commit to version control

For Incoming Webhooks​

  1. Use Secret Keys

    • Include secret in webhook requests
    • Validate on receipt
    • Regenerate if compromised
  2. IP Whitelisting

    • Restrict to known IPs
    • Block unauthorized sources
    • Monitor blocked attempts
  3. Validate Data

    • Check required fields
    • Sanitize input
    • Prevent injection attacks

Monitoring & Debugging​

Webhook Activity Logs​

Both incoming and outgoing webhooks provide detailed logs:

Log Information:

  • Timestamp of request
  • Event type
  • Success/failure status
  • Response codes
  • Retry attempts
  • Error messages
  • Payload inspection

Debugging Tips​

Outgoing Webhooks:

  • Use webhook.site for testing
  • Check endpoint is accessible
  • Verify response codes (200-299)
  • Review retry logic
  • Check signature verification

Incoming Webhooks:

  • Test with cURL or Postman
  • Verify field mapping
  • Check data format (JSON, form-encoded)
  • Review activity logs
  • Inspect raw payloads

Webhook Limits​

Free Plan​

  • Outgoing: 5 webhooks, 1,000 calls/month
  • Incoming: 3 webhooks, 500 requests/month

Professional Plan​

  • Outgoing: 25 webhooks, 10,000 calls/month
  • Incoming: 10 webhooks, 5,000 requests/month

Enterprise Plan​

  • Outgoing: Unlimited webhooks and calls
  • Incoming: Unlimited webhooks and requests
  • Custom rate limits available

Integration Tools​

No-Code Platforms​

Zapier

  • Connect 5,000+ apps
  • Visual workflow builder
  • Use Expedify webhooks as triggers/actions

Make.com (Integromat)

  • Advanced automation platform
  • Complex workflow scenarios
  • HTTP webhook modules

n8n

  • Open-source automation
  • Self-hosted option
  • Webhook nodes available

Custom Development​

Supported Languages:

  • JavaScript/Node.js
  • Python
  • PHP
  • Ruby
  • Go
  • Java

Example Frameworks:

  • Express (Node.js)
  • Flask/FastAPI (Python)
  • Laravel (PHP)
  • Rails (Ruby)

Common Use Cases by Industry​

E-commerce​

  • Order creation → Deal tracking
  • Payment → Deal won status
  • Abandoned cart → Follow-up workflow
  • Refund → Deal status update

SaaS​

  • Trial signup → Contact creation
  • Subscription → Deal creation
  • Upgrade → Deal value update
  • Cancellation → Deal lost

Real Estate​

  • Property inquiry → Contact + Task
  • Viewing booked → Calendar event
  • Offer submitted → Deal creation
  • Contract signed → Deal won

Healthcare​

  • Appointment booked → Task creation
  • Patient form → Contact creation
  • Insurance verified → Deal update
  • Appointment reminder → Workflow trigger

Professional Services​

  • Contact form → Lead creation
  • Proposal accepted → Deal won
  • Project milestone → Task update
  • Invoice paid → Deal closed

Best Practices​

Design​

  1. Single Responsibility

    • One webhook per integration
    • Clear, specific purpose
    • Easy to debug and maintain
  2. Descriptive Names

    • "Slack Deal Won Notification"
    • "Stripe Payment Webhook"
    • "Contact Form Webhook"
  3. Documentation

    • Document expected payloads
    • Maintain endpoint documentation
    • Track integration dependencies

Implementation​

  1. Error Handling

    • Implement retry logic
    • Log all errors
    • Alert on repeated failures
  2. Idempotency

    • Handle duplicate webhooks
    • Use unique IDs for deduplication
    • Prevent double-processing
  3. Performance

    • Respond quickly (under 200ms)
    • Process asynchronously if slow
    • Don't block webhook request

Maintenance​

  1. Monitor Regularly

    • Check logs weekly
    • Review failure rates
    • Investigate anomalies
  2. Test Thoroughly

    • Test before production
    • Use staging environments
    • Verify data mapping
  3. Update Documentation

    • Keep integration docs current
    • Document changes
    • Share with team

Troubleshooting​

Outgoing Webhooks Not Firing?​

  • Check webhook is active
  • Verify events are selected
  • Test endpoint accessibility
  • Review webhook logs

Incoming Webhooks Not Working?​

  • Verify webhook URL is correct
  • Check field mapping
  • Review incoming payload format
  • Ensure webhook is active

Getting Timeout Errors?​

  • Reduce processing time
  • Implement async processing
  • Increase timeout settings
  • Check server capacity

Authentication Failures?​

  • Verify secret keys
  • Check header format
  • Validate signature correctly
  • Regenerate secrets if needed

Next Steps​

For Outgoing Webhooks​

  1. ✅ Read Outgoing Webhooks Guide
  2. ✅ Create your first webhook
  3. ✅ Select events to monitor
  4. ✅ Add signature verification
  5. ✅ Test and deploy

For Incoming Webhooks​

  1. ✅ Read Incoming Webhooks Guide
  2. ✅ Create incoming webhook
  3. ✅ Configure field mapping
  4. ✅ Add security settings
  5. ✅ Test with sample data

Need help? Contact support through Settings → Support.