Common Vendor Setup
Step-by-step guides for configuring webhooks from Relae's supported vendors.
Overview
Relae currently supports signature verification for these vendors:
- Stripe (Payments)
- Shopify (E-commerce)
- GitHub (Code & CI/CD)
- GitLab (Code & CI/CD)
- Slack (Team Communication)
- SendGrid (Email Delivery)
You can use Relae with any webhook provider! These vendors have built-in signature verification. For other vendors, Relae will still forward webhooks reliably - you just won't have incoming signature verification.
Before You Begin
For all vendors, you'll need:
-
✅ Your Relae webhook endpoint URL
- Get from: Dashboard → Destinations → Your destination
- Format:
https://api.relaehook.com/webhook/{unique-id}
-
✅ Vendor webhook secret (optional but recommended)
- Used by Relae to verify incoming webhooks
- Each vendor stores this differently (covered below)
-
✅ Your application destination URL
- Where Relae forwards the webhooks
- Must be HTTPS
Stripe
Configure Stripe to send payment webhooks to Relae.
1. Create Relae Destination
Dashboard → Destinations → Add New Destination
Source: stripe
Destination URL: https://api.yourdomain.com/webhooks/stripe
Vendor Webhook Secret: (wait for Step 3)
Click Save and copy your Relae endpoint URL.
2. Add Webhook in Stripe
-
Go to Stripe Dashboard
-
Navigate to Developers → Webhooks
-
Click Add endpoint
Endpoint URL:
https://api.relaehook.com/webhook/{your-id} -
Select events to listen to:
payment_intent.succeededpayment_intent.payment_failedcharge.succeededcharge.failedcustomer.createdcustomer.subscription.createdcustomer.subscription.deleted- Or select all events for comprehensive coverage
-
Click Add endpoint
3. Get Signing Secret
- Click on your newly created webhook endpoint
- Under Signing secret, click Reveal
- Copy the secret (starts with
whsec_)
4. Add Secret to Relae
Dashboard → Destinations → Edit Stripe destination
Vendor Webhook Secret: whsec_abc123...
Click Save Changes
5. Test the Integration
- In Stripe webhook settings, click Send test webhook
- Select an event type (e.g.,
payment_intent.succeeded) - Click Send test webhook
- Check Relae Dashboard → Webhooks tab
- Verify event appears and was forwarded
Stripe-Specific Notes
Event Types:
- Payment events:
payment_intent.*,charge.* - Customer events:
customer.* - Subscription events:
customer.subscription.* - Dispute events:
charge.dispute.*
Best Practices:
- Only subscribe to events you need
- Use different destinations for test vs live webhooks
- Test mode webhooks use
whsec_test_...secrets - Live mode webhooks use
whsec_...secrets
Common Issues:
- Wrong secret for test vs live mode
- Forgetting to enable webhook endpoint
- Not handling
payment_intent.processingstate
Shopify
Set up Shopify webhooks for order and inventory updates.
1. Create Relae Destination
Dashboard → Destinations → Add New Destination
Source: shopify
Destination URL: https://api.yourdomain.com/webhooks/shopify
Click Save and copy your Relae endpoint URL.
2. Add Webhook in Shopify
-
Go to your Shopify Admin
-
Navigate to Settings → Notifications
-
Scroll down to Webhooks section
-
Click Create webhook
Event: Select the event to subscribe to:
Order creationOrder updatedOrder paymentProduct creationProduct updateCustomer creationFulfillment created
Format: JSON
URL:
https://api.relaehook.com/webhook/{your-id} -
Click Save webhook
3. Get API Key (for signature verification)
Shopify signs webhooks with your API Secret Key:
- Go to Settings → Apps and sales channels
- Click Develop apps
- Click on your app or Create an app
- Go to API credentials tab
- Copy the API secret key
4. Add Secret to Relae
Dashboard → Destinations → Edit Shopify destination
Vendor Webhook Secret: {your-api-secret-key}
Click Save Changes
5. Test the Integration
- Create a test order in your Shopify store
- Check Relae Dashboard → Webhooks tab
- Verify the order webhook appears
Shopify-Specific Notes
Authentication:
- Shopify sends signature in
X-Shopify-Hmac-Sha256header - Uses HMAC-SHA256 (base64 encoded, not hex)
- Relae handles the verification automatically
Event Types:
- Orders:
orders/create,orders/updated,orders/paid - Products:
products/create,products/update,products/delete - Customers:
customers/create,customers/update - Inventory:
inventory_levels/update
Rate Limits:
- Maximum 15 webhooks per store at a time
- If you need more, contact Shopify support
Common Issues:
- Wrong API secret key (app vs shop secret)
- Webhook format set to XML instead of JSON
- Test orders not triggering webhooks (use real orders or dev store)
GitHub
Configure GitHub webhooks for repository events.
1. Create Relae Destination
Dashboard → Destinations → Add New Destination
Source: github
Destination URL: https://api.yourdomain.com/webhooks/github
Click Save and copy your Relae endpoint URL.
2. Create Secret
Generate a random secret for GitHub:
openssl rand -hex 32
Copy this secret - you'll need it for both GitHub and Relae.
3. Add Webhook in GitHub
Repository-level Webhook
-
Go to your GitHub repository
-
Navigate to Settings → Webhooks
-
Click Add webhook
Payload URL:
https://api.relaehook.com/webhook/{your-id}Content type:
application/jsonSecret: Paste your generated secret
SSL verification: Enable SSL verification
Which events would you like to trigger this webhook?
- Just the push event (default)
- Send me everything (for comprehensive coverage)
- Let me select individual events:
- Push
- Pull request
- Issues
- Release
- Deployment
- Workflow run
-
Active: ✅ Checked
-
Click Add webhook
Organization-level Webhook
- Go to your GitHub organization
- Navigate to Settings → Webhooks
- Follow same steps as repository webhook
4. Add Secret to Relae
Dashboard → Destinations → Edit GitHub destination
Vendor Webhook Secret: {your-generated-secret}
Click Save Changes
5. Test the Integration
- In GitHub webhook settings, click Edit
- Scroll down to Recent Deliveries
- Click Redeliver on any past event
- Or push a commit to trigger a new webhook
- Check Relae Dashboard → Webhooks tab
GitHub-Specific Notes
Authentication:
- GitHub sends signature in
X-Hub-Signature-256header - Format:
sha256=<hash> - Uses HMAC-SHA256
Event Types:
- Code:
push,pull_request,fork - Issues:
issues,issue_comment - Releases:
release,workflow_run - Security:
security_advisory,dependabot_alert
Delivery Info:
- GitHub shows delivery status and response
- Can redeliver any past webhook
- Keeps 30 days of delivery history
Common Issues:
- Secret mismatch between GitHub and Relae
- SSL verification failing (check certificate)
- Event type not selected in webhook settings
GitLab
Configure GitLab webhooks for repository and CI/CD events.
1. Create Relae Destination
Dashboard → Destinations → Add New Destination
Source: gitlab
Destination URL: https://api.yourdomain.com/webhooks/gitlab
Click Save and copy your Relae endpoint URL.
2. Create Secret Token
Generate a random secret for GitLab:
openssl rand -hex 32
Copy this secret - you'll need it for both GitLab and Relae.
3. Add Webhook in GitLab
Project-level Webhook
-
Go to your GitLab project
-
Navigate to Settings → Webhooks
-
Fill in the webhook details:
URL:
https://api.relaehook.com/webhook/{your-id}Secret token: Paste your generated secret
Trigger:
- ☑️ Push events
- ☑️ Tag push events
- ☑️ Comments
- ☑️ Issues events
- ☑️ Merge request events
- ☑️ Job events
- ☑️ Pipeline events
- ☑️ Wiki page events
- ☑️ Deployment events
- ☑️ Release events
SSL verification: ✅ Enable SSL verification
-
Click Add webhook
Group-level Webhook
- Go to your GitLab group
- Navigate to Settings → Webhooks
- Follow same steps as project webhook
4. Add Secret to Relae
Dashboard → Destinations → Edit GitLab destination
Vendor Webhook Secret: {your-generated-secret}
Click Save Changes
5. Test the Integration
- In GitLab webhook settings, scroll down to your webhook
- Click Test dropdown
- Select Push events or another event type
- Click the test option
- Check Relae Dashboard → Webhooks tab
- Verify event appears
GitLab-Specific Notes
Authentication:
- GitLab sends token in
X-Gitlab-Tokenheader - Simple token comparison (not HMAC)
- Relae verifies automatically
Event Types:
- Code:
Push Hook,Tag Push Hook,Merge Request Hook - Issues:
Issue Hook,Note Hook,Confidential Issue Hook - CI/CD:
Pipeline Hook,Job Hook,Deployment Hook - Wiki:
Wiki Page Hook - Releases:
Release Hook
Event Format:
- All events include
object_kindfield - Rich event data with user, project, and commit info
- Consistent JSON structure across event types
Common Event Kinds:
{
"object_kind": "push",
"object_kind": "merge_request",
"object_kind": "pipeline",
"object_kind": "issue"
}
Common Issues:
- Secret token mismatch between GitLab and Relae
- SSL verification failing (check certificate)
- Trigger not enabled for desired event
- Rate limiting on high-traffic repos
Best Practices:
- Use project webhooks for specific repos
- Use group webhooks for organization-wide events
- Filter events at webhook level to reduce noise
- Test with push event first before enabling all
Slack
Set up Slack webhooks to receive events from your workspace.
1. Create Relae Destination
Dashboard → Destinations → Add New Destination
Source: slack
Destination URL: https://api.yourdomain.com/webhooks/slack
Click Save and copy your Relae endpoint URL.
2. Create Slack App
- Go to Slack API
- Click Create New App
- Choose From scratch
- Enter App Name and select your Workspace
- Click Create App
3. Enable Event Subscriptions
-
In your app settings, go to Event Subscriptions
-
Toggle Enable Events to On
Request URL:
https://api.relaehook.com/webhook/{your-id}Verification ChallengeSlack will send a verification challenge immediately. Relae handles this automatically. Wait for the "Verified" checkmark.
-
Subscribe to bot events:
message.channels- Messages in public channelsmessage.groups- Messages in private channelsmessage.im- Direct messagesapp_mention- When someone mentions your appreaction_added- Emoji reactionsteam_join- New members
-
Subscribe to events on behalf of users (optional):
- Similar events but require user OAuth
-
Click Save Changes
4. Get Signing Secret
- Go to Basic Information in your app settings
- Under App Credentials, find Signing Secret
- Click Show and copy the secret
5. Add Secret to Relae
Dashboard → Destinations → Edit Slack destination
Vendor Webhook Secret: {signing-secret}
Click Save Changes
6. Install App to Workspace
- Go to Install App in sidebar
- Click Install to Workspace
- Review permissions and click Allow
- Your app is now installed
7. Test the Integration
- Send a message in a channel where your app is added
- Check Relae Dashboard → Webhooks tab
- Verify event appears
Slack-Specific Notes
Authentication:
- Slack sends signature in
X-Slack-Signatureheader - Also sends timestamp in
X-Slack-Request-Timestampheader - Uses HMAC-SHA256 with format:
v0=<hash> - Relae verifies automatically
Verification Format:
v0 + ':' + timestamp + ':' + body
Event Types:
- Message events:
message.channels,message.im,message.groups - User events:
team_join,user_change - Reaction events:
reaction_added,reaction_removed - App events:
app_mention,app_home_opened
Event Structure:
{
"token": "...",
"team_id": "T1234567",
"api_app_id": "A1234567",
"event": {
"type": "message",
"channel": "C1234567",
"user": "U1234567",
"text": "Hello world",
"ts": "1234567890.123456"
},
"type": "event_callback",
"event_time": 1234567890
}
URL Verification: When you first add the Request URL, Slack sends:
{
"type": "url_verification",
"challenge": "3eZbrw1aBm2rZgRNFdxV2595E9CY3gmdALWMmHkvFXO7tYXAYM8P"
}
Relae automatically responds with the challenge value.
Rate Limiting:
- Slack has rate limits on event deliveries
- High-traffic channels may experience delays
- Consider filtering events to reduce volume
Common Issues:
- URL verification failing (Relae should handle automatically)
- Events not appearing (check bot is in channel)
- Signing secret mismatch
- Timestamp too old (check server clock sync)
Best Practices:
- Only subscribe to events you need
- Use bot events instead of user events when possible
- Handle
retry-afterheaders for rate limits - Acknowledge events immediately (return 200)
- Process messages asynchronously
Responding to Messages: To send messages back to Slack from your application:
// Your application endpoint
app.post("/webhooks/slack", async (req, res) => {
// Acknowledge immediately
res.status(200).send();
// Process asynchronously
const event = req.body.event;
if (event.type === "app_mention") {
// Respond using Slack Web API
await fetch("https://slack.com/api/chat.postMessage", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.SLACK_BOT_TOKEN}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
channel: event.channel,
text: "Hello! You mentioned me.",
}),
});
}
});
SendGrid
Configure SendGrid event webhooks for email delivery tracking.
1. Create Relae Destination
Dashboard → Destinations → Add New Destination
Source: sendgrid
Destination URL: https://api.yourdomain.com/webhooks/sendgrid
Click Save and copy your Relae endpoint URL.
2. Enable Event Webhook
-
Go to SendGrid Dashboard
-
Navigate to Settings → Mail Settings → Event Webhook
-
Click Edit (or Enable if disabled)
HTTP Post URL:
https://api.relaehook.com/webhook/{your-id}Select events to post:
- ✅ Delivered
- ✅ Opened
- ✅ Clicked
- ✅ Bounced
- ✅ Spam Report
- ✅ Unsubscribe
- ✅ Dropped
- ✅ Deferred
-
Status: Enabled
-
Click Save
3. Test Event Webhook
- In Event Webhook settings, click Test Your Integration
- SendGrid will send test events
- Check Relae Dashboard → Webhooks tab
SendGrid-Specific Notes
Event Types:
- Delivery:
delivered,bounce,dropped,deferred - Engagement:
open,click - Feedback:
spamreport,unsubscribe
Batch Delivery:
- SendGrid can batch multiple events in one webhook
- Your endpoint receives array of events
- Handle as JSON array
No Built-in Signature:
- SendGrid doesn't provide webhook signatures by default
- Consider using IP allowlisting
- Or implement your own verification token
No Built-in Signature:
- SendGrid doesn't provide HMAC webhook signatures
- Relae still forwards reliably without incoming verification
- Consider adding custom authentication headers in Relae destination
- Or use IP allowlisting on your destination endpoint
Common Issues:
- Event webhook disabled after testing
- Not handling batched events (arrays)
- IP not allowlisted (if using IP filtering)
Using Other Vendors
Relae works with any webhook provider, not just the six listed above!
Vendors Without Signature Support
For vendors not listed (e.g., Twilio, Mailgun, WooCommerce, etc.):
Setup is still simple:
-
Create destination in Relae:
Source: vendor-name
Destination URL: https://api.yourdomain.com/webhooks/vendor
Vendor Webhook Secret: (leave empty) -
Configure vendor to send to your Relae endpoint
-
Relae will:
- ✅ Receive and store webhooks
- ✅ Forward reliably to your destination
- ✅ Provide automatic retries
- ✅ Move failures to Dead Letter Queue
- ✅ Sign outgoing webhooks with Relae signature
- ⚠️ Cannot verify incoming vendor signature
You still get:
- Guaranteed delivery
- Automatic retries
- Dead Letter Queue
- Analytics (on Scale+)
- Relae signature on forwarded webhooks
Additional Security: You can add custom authentication headers in your Relae destination:
Custom Headers:
X-Auth-Token: your-secret-token
X-API-Key: your-api-key
Your destination endpoint can verify these headers.
Need Signature Support for Your Vendor?
Contact us at support@relaehook.com with:
- Vendor name
- Link to webhook documentation
- Signature verification details
We're constantly adding support for more vendors!
General Troubleshooting
Webhook Not Appearing in Relae
Check:
- ✅ Vendor webhook URL is correct Relae endpoint
- ✅ Webhook is enabled/active in vendor settings
- ✅ Event actually occurred (trigger test event)
- ✅ Vendor's webhook delivery logs show success
Debug:
- Check vendor's webhook delivery logs
- Verify SSL certificate is valid
- Test with webhook.site first
- Contact Relae support with vendor logs
Signature Verification Failing
Check:
- ✅ Correct secret added to Relae destination
- ✅ Secret matches vendor's webhook secret
- ✅ Using correct secret for test vs live mode
- ✅ Vendor webhook URL points to Relae, not direct
Debug:
- Remove secret temporarily to isolate issue
- Regenerate secret in vendor and update Relae
- Check vendor documentation for signature format
- Enable debug logging
Webhook Delivered But Not Forwarded
Check:
- ✅ Destination URL in Relae is correct
- ✅ Your endpoint is accessible (not down)
- ✅ Your endpoint returns 2xx status
- ✅ No firewall blocking Relae IPs
Debug:
- Test destination URL with curl
- Check Dead Letter Queue for failures
- Review failure reasons in DLQ
- Verify SSL certificate on destination
Best Practices
-
✅ Use separate destinations per vendor
- Easier to manage and debug
- Can rotate endpoints individually
- Better organization
-
✅ Always provide webhook secrets
- Critical for security
- Prevents spoofed webhooks
- Relae verifies before forwarding
-
✅ Subscribe only to needed events
- Reduces noise
- Lowers costs
- Easier to process
-
✅ Test in sandbox/development first
- Use test mode webhooks
- Verify integration works
- Then enable production
-
✅ Monitor webhook health
- Check analytics regularly
- Review Dead Letter Queue
- Set up alerts for failures
-
✅ Document your webhooks
- Which events you subscribe to
- What your app does with each
- Expected payload format
Need Help?
Don't see your vendor? Relae works with any webhook provider!
For vendors with signature support:
- Email: support@relaehook.com
- Include: vendor name and webhook documentation link
- We'll add verification support
For other vendors:
- Use Relae without incoming signature verification
- Still get reliable delivery, retries, and DLQ
- Add custom authentication headers for security