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 SettingsWebhooksOutgoing 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 SettingsWebhooksIncoming 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.