Integrations
Configure ReleaseRay to publish release notes to Slack, Microsoft Teams, Intercom, and other platforms. Each integration is configured per-organization, ensuring your release notes only go to YOUR channels.
Overview
ReleaseRay supports publishing to multiple channels:
- ✅ GitHub Releases - Automatically create GitHub Releases (no config needed)
- ✅ CHANGELOG.md - Commit release notes to your repository (no config needed)
- ✅ Hosted Changelog - Beautiful public-facing changelog page (no config needed)
- ✅ Slack - Send notifications to your Slack channels
- ✅ Microsoft Teams - Send notifications to your Teams channels
- ✅ Intercom Help Center - Publish articles to your knowledge base
- ✅ Email - Send release notes to your subscribers via email
All integrations are private to your organization. When you configure a webhook or API key, it's stored securely and never shared with other ReleaseRay customers.
Slack Integration
Send release notes to your Slack channels using Incoming Webhooks.
Step 1: Create Slack Incoming Webhook
- Go to Slack API Apps
- Click "Create New App"
- Choose "From scratch"
- Name your app (e.g., "ReleaseRay") and select your workspace
- Click "Create App"
Step 2: Enable Incoming Webhooks
- In the left sidebar, click "Incoming Webhooks"
- Toggle "Activate Incoming Webhooks" to ON
- Click "Add New Webhook to Workspace"
- Select the channel where you want to receive notifications (e.g.,
#releases) - Click "Allow"
Step 3: Copy Webhook URL
You'll see a webhook URL like:
https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXX
Important: Keep this URL private. Anyone with this URL can post to your Slack channel.
Step 4: Configure in ReleaseRay
- Log in to ReleaseRay
- Go to Settings → Integrations
- Click "Add Integration" or "Configure Slack"
- Paste your webhook URL
- Click "Test & Save"
You should see a test message in your Slack channel confirming the webhook works.
Step 5: Publish to Slack
Now when you publish a draft:
- Select the draft you want to publish
- Click "Publish"
- Check "Slack Notification"
- Click "Publish"
Your release notes will be formatted and sent to your Slack channel!
Message Format
Slack messages use Block Kit with:
- 🚀 Header with release version
- 📝 Repository and version info
- ✨ Full release notes (formatted as markdown)
- 🔗 Action buttons to view release and compare changes
Microsoft Teams Integration
Send release notes to your Microsoft Teams channels using Incoming Webhooks.
Step 1: Add Incoming Webhook Connector
- Open Microsoft Teams
- Navigate to the channel where you want to receive notifications
- Click the "..." (More options) next to the channel name
- Select "Connectors"
- Search for "Incoming Webhook"
- Click "Configure"
Step 2: Configure the Webhook
- Give your webhook a name (e.g., "ReleaseRay Notifications")
- Optionally upload a custom icon (use your company logo)
- Click "Create"
Step 3: Copy Webhook URL
You'll see a long webhook URL like:
https://outlook.office.com/webhook/abc123-def456.../IncomingWebhook/xyz789.../...
Important:
- Click "Copy" to copy the full URL (it's long!)
- Keep this URL private - anyone with it can post to your Teams channel
Step 4: Configure in ReleaseRay
- Log in to ReleaseRay
- Go to Settings → Integrations
- Click "Add Integration" or "Configure Microsoft Teams"
- Paste your webhook URL
- Click "Test & Save"
You should see a test message in your Teams channel confirming the webhook works.
Step 5: Publish to Teams
Now when you publish a draft:
- Select the draft you want to publish
- Click "Publish"
- Check "Microsoft Teams"
- Click "Publish"
Your release notes will be formatted and sent to your Teams channel!
Message Format
Teams messages use MessageCard format with:
- 🎯 Bold title with release version
- 📋 Repository and version subtitle
- 📝 Full release notes (formatted as markdown)
- 🔗 Action buttons to view release and compare changes
Intercom Help Center Integration
Publish release notes as articles in your Intercom Help Center.
Step 1: Get Intercom Access Token
- Go to Intercom Developer Hub
- Click "Your apps" → Select your app
- Go to "Authentication"
- Create a new Access Token with these permissions:
- Articles: Read, Write
- Help Center: Read
- Copy the access token
Step 2: Get Collection ID
- Go to your Intercom Help Center
- Navigate to the collection where you want to publish release notes
- The collection ID is in the URL:
Copyhttps://app.intercom.com/a/apps/YOUR_APP/articles/collections/1234512345(your collection ID)
Step 3: Configure in ReleaseRay
- Log in to ReleaseRay
- Go to Settings → Integrations
- Find the Intercom integration card
- Enter your Access Token
- Enter your Collection ID
- Choose Default Article State:
- Draft (recommended): Articles created as drafts for review before publishing
- Published: Articles immediately published to your Help Center
- Click "Save"
Step 4: Publish to Intercom
When you publish a draft:
- Select the draft you want to publish
- Click "Publish"
- Check "Intercom Help Center"
- Click "Publish"
ReleaseRay will create a new article in your Intercom collection with your release notes.
Note: By default, articles are created as drafts. You can change this to "Published" in your Intercom integration settings if you want articles to go live immediately.
CHANGELOG.md Integration
Automatically commit release notes to a CHANGELOG.md file in your repository.
Configuration: Uses your GitHub App connection (no additional setup needed).
How It Works
When you publish a draft to CHANGELOG.md:
- ReleaseRay reads your existing
CHANGELOG.mdfile (or creates one if it doesn't exist) - Inserts your new release notes at the top, following the Keep a Changelog format
- Creates a pull request with the updated file
- You review and merge the PR
Publishing Options
- File path:
CHANGELOG.mdin repository root (standard location) - Format: Markdown with semantic versioning headers
- PR creation: Automatic branch and pull request
- Review: Merge PR when ready
GitHub App Permissions Required
- Contents: Read & Write (to create PRs and commit files)
- Pull Requests: Read & Write (to create PRs)
Note: These permissions are requested when you install the GitHub App.
Hosted Changelog Integration
Publish release notes to your public-facing hosted changelog at releaseray.com/changelog/your-org/your-repo.
No configuration needed! This integration is automatically available for all repositories.
How It Works
When you publish a draft to Hosted Changelog:
- ReleaseRay stores the release notes in the database
- Makes it available at your public changelog URL
- Indexes it for search and filtering
- Updates your changelog feed
Accessing Your Changelog
Your hosted changelog is available at:
https://releaseray.com/changelog/[org-slug]/[repo-name]
https://releaseray.com/changelog/[org-slug]/[repo-name]/[version]
Example:
https://releaseray.com/changelog/acme-corp/api
https://releaseray.com/changelog/acme-corp/api/v1.2.0
Features
- ✅ Public access: No authentication required
- ✅ SEO optimized: Indexed by search engines
- ✅ Version history: Browse all releases
- ✅ Markdown rendering: Beautiful formatting
- ✅ RSS feed: Subscribe to updates (coming soon)
Customization
Currently, hosted changelogs use the ReleaseRay branding. Custom domains and branding coming soon!
Email Integration
Send release notes via email to repository-scoped subscriber lists with custom branding and double opt-in verification.
Overview
ReleaseRay's email integration is multi-tenant and repository-scoped:
- ✅ Per-repository subscribers - Each repository has its own subscriber list
- ✅ Custom branding - Configure sender name, email, logo, and colors per organization
- ✅ Double opt-in - Email verification required (CAN-SPAM compliant)
- ✅ Persona-based - Subscribers choose which personas to receive (engineer, internal, customer)
- ✅ CSV import/export - Bulk operations for managing subscribers
- ✅ Unsubscribe links - Every email includes a one-click unsubscribe link
Step 1: Get Resend API Key
- Sign up for Resend
- Go to API Keys in your dashboard
- Click "Create API Key"
- Copy the API key (starts with
re_) - Add to
.env.local:RESEND_API_KEY="re_xxxx"
Step 2: Configure Email Branding
- Log in to ReleaseRay
- Go to Settings → Email
- Configure your branding:
- From Name: Your company name (e.g., "Acme Corp")
- From Email: Your email address (e.g.,
releases@acme.com) - Reply-To: Support email (e.g.,
support@acme.com) - Logo URL: Link to your logo image (200x50px recommended)
- Primary Color: Brand color for buttons and links
- Toggle "Email Publishing" to ON
- Click "Save Settings"
Step 3: Verify Your Domain (Optional but Recommended)
To send emails from your own domain (releases@yourdomain.com):
- Go to Settings → Email → Domain Verification tab
- Enter your domain (e.g.,
yourdomain.com) - Enter your Resend API key
- Click "Verify Domain"
- Add the provided DNS records to your domain:
- SPF record (TXT)
- DKIM record (TXT)
- DMARC record (TXT) [optional]
- Wait 5-10 minutes for DNS propagation
- Click "Verify Domain" again to confirm
Without domain verification: Emails will be sent from onboarding@resend.dev (Resend's default sender). This works but may have lower deliverability.
Step 4: Add Subscribers
You have three ways to add subscribers:
Option A: Public Subscription Form
Share your repository's subscription link with users:
https://app.releaseray.com/subscribe?repo=<repo-id>&name=owner/repo
Users will:
- Enter their email
- Select which personas to receive (customer, internal, engineer)
- Receive a verification email
- Click the link to verify
- Start receiving release notifications
Option B: Admin Panel (Manual)
- Navigate to your repository page
- Go to Subscribers tab
- Click "Add Subscriber"
- Enter email address
- Select personas (customer, internal, engineer)
- Click "Add Subscriber"
- Verification email sent automatically
Option C: CSV Import (Bulk)
- Create a CSV file with format:
email,personas user1@example.com,customer user2@example.com,engineer;internal user3@example.com,customer;engineer;internal - Go to Subscribers tab
- Click "Import CSV"
- Upload your file
- Review results (created, skipped, errors)
- Verification emails sent to all new subscribers
Step 5: Manage Subscribers
View Subscribers:
- Navigate to repository → Subscribers tab
- See all subscribers with status (verified/unverified)
- Filter by persona
- View statistics (total, verified, by persona)
Export Subscribers:
- Click "Export CSV"
- Downloads file:
subscribers-{repoId}-{date}.csv - Includes: email, personas, verified status, subscribed date
Delete Subscribers:
- Click trash icon next to subscriber
- Subscriber will be permanently removed
- They can re-subscribe anytime
Resend Verification:
- For unverified subscribers, click mail icon
- Sends a new verification email
Step 6: Publish via Email
When you publish a draft:
- Select the draft you want to publish (engineer, internal, or customer)
- Click "Publish"
- Check "Email"
- Click "Publish"
ReleaseRay will:
- Fetch all verified subscribers for this repository
- Filter by persona (only send to subscribers who opted into this persona)
- Generate branded HTML email
- Send in batches of 100 (with 1-second delay between batches)
- Track send status and failures
Example:
- Draft persona: Customer
- Subscribers: 50 verified
- 30 subscribed to "customer" persona → ✅ Will receive email
- 20 subscribed to "engineer" persona only → ❌ Will not receive email
Email Format
Emails include:
- 📧 Subject:
{RepoName} {Version} Release Notes - 🎨 Custom branding: Your logo and brand colors
- 📝 Full release notes: Markdown rendered as HTML
- 🔗 Links: To GitHub Releases, Hosted Changelog, CHANGELOG.md (if published)
- 🔓 Unsubscribe link: One-click unsubscribe (CAN-SPAM compliant)
- 📱 Plain text fallback: For email clients that don't support HTML
Example Email:
┌─────────────────────────────────────┐
│ [Your Logo] │
│ │
│ owner/repo │
│ v1.2.0 │
│ Customer Release Notes │
├─────────────────────────────────────┤
│ │
│ [Markdown content converted to │
│ HTML with your brand colors] │
│ │
│ View elsewhere: │
│ 📦 GitHub Releases │
│ 🌐 Hosted Changelog │
│ 📄 CHANGELOG.md │
│ │
├─────────────────────────────────────┤
│ Generated by ReleaseRay │
│ Unsubscribe │
└─────────────────────────────────────┘
Privacy & Security
- ✅ Repository-scoped: Subscribers are tied to specific repositories
- ✅ Double opt-in: Email verification required before sending
- ✅ CAN-SPAM compliant: Unsubscribe link in every email
- ✅ GDPR compliant: Data export/deletion available
- ✅ Rate limited: Public subscription endpoint is rate limited (10 req/min per IP)
- ✅ Your API key: Stored securely, encrypted at rest
- ✅ Your subscribers: Private to your organization
- ✅ Your emails: Sent from your verified domain using your Resend account
We never send emails from a shared ReleaseRay email address. You maintain full control over your email infrastructure.
Troubleshooting
"No subscribers configured for email publishing"
- Cause: No verified subscribers exist for this repository and persona
- Solution: Add subscribers and ensure they verify their emails
"Email publishing is not enabled for this organization"
- Cause: Email publishing toggle is OFF in settings
- Solution: Go to Settings → Email → Toggle "Email Publishing" to ON
"Domain verification failed"
- Cause: DNS records not added or propagation incomplete
- Solution: Add DNS records, wait 5-10 minutes, verify again
Subscribers not receiving emails
- Check spam folder
- Verify domain is verified (for custom email addresses)
- Ensure subscriber is verified (check Subscribers tab)
- Check Resend dashboard for delivery logs
GitHub Releases Integration
Automatically create GitHub Releases from your drafts.
No configuration needed! This integration is automatically available when you connect ReleaseRay to your GitHub repositories.
How It Works
When you publish a draft to GitHub Releases:
- ReleaseRay uses the GitHub App permissions you granted
- Creates or updates a release for the specified tag
- Populates the release notes with your generated content
- Links to the release are provided in the response
Publishing Options
- Draft Release: Publish as a draft for review before making public
- Prerelease: Mark releases with
-beta,-rc, etc. as prereleases - Full Release: Immediately publish as a full release
Privacy & Security
Your Integrations Are Private
✅ Per-Organization: Each organization configures their own integrations
✅ Isolated: Your webhook URLs are never shared with other customers
✅ Secure Storage: All credentials are encrypted at rest
✅ Audit Trail: All integration changes are logged
What We Share
When you publish to an integration:
Slack/Teams:
- Release notes content (the markdown you generated)
- Repository name and version
- Links to GitHub (compare URL, release URL)
Intercom:
- Article title and body
- Your organization's collection ID
Email:
- Subscriber email addresses
- Release notes content
- Your from email address (from your verified domain)
We NEVER share:
- Your webhook URLs or API keys with other customers
- Source code or sensitive data
- Data between different organizations
- Your email subscribers with anyone
Revoking Access
You can revoke integration access anytime:
- Go to Settings → Integrations
- Find the integration
- Click "Delete"
- Confirm deletion
Your webhook will be removed from our system immediately.
Testing Webhooks
Test Before Publishing
The "Test & Save" button sends a test message to verify:
- ✅ Webhook URL is correct
- ✅ Service is reachable
- ✅ Authentication works
- ✅ Messages are delivered
Manual Testing
You can also test webhooks manually:
Slack:
curl -X POST -H 'Content-Type: application/json' \
-d '{"text": "Test from ReleaseRay"}' \
YOUR_SLACK_WEBHOOK_URL
Microsoft Teams:
curl -X POST -H 'Content-Type: application/json' \
-d '{
"@type": "MessageCard",
"@context": "https://schema.org/extensions",
"summary": "Test",
"sections": [{"text": "Test from ReleaseRay"}]
}' \
YOUR_TEAMS_WEBHOOK_URL
Troubleshooting
Slack Issues
"Webhook test failed"
- Verify the URL starts with
https://hooks.slack.com/services/ - Check that the webhook hasn't been revoked in Slack
- Ensure the Slack app is still installed in your workspace
"No messages appearing"
- Check the channel permissions - the webhook must have access
- Verify the webhook URL is for the correct workspace
- Try regenerating the webhook in Slack
Microsoft Teams Issues
"Invalid webhook URL format"
- Ensure the URL contains
webhook.office.com - Copy the ENTIRE URL (it's very long)
- Don't add any extra characters or spaces
"Webhook test failed"
- Check that the connector is still configured in Teams
- Verify the channel hasn't been deleted
- Try creating a new webhook
Intercom Issues
"Invalid access token"
- Verify the token has Articles: Write permission
- Check that the token hasn't expired
- Ensure you copied the full token (no truncation)
"Collection not found"
- Verify the collection ID is correct
- Ensure the collection exists in your Help Center
- Check that the access token has permission for that collection
Email Issues
"Resend API key not configured"
- Go to Settings → Integrations and add your Resend API key
- Verify the API key starts with
re_ - Ensure you copied the full key (no truncation)
"From email address not configured"
- Enter a from email address in the Email integration settings
- Must use a domain you've verified in Resend
- Format:
noreply@yourdomain.comorYour Name <name@yourdomain.com>
"Domain not verified"
- Go to your Resend dashboard → Domains
- Verify your domain is listed and shows "Verified"
- If not, add the required DNS records
- Wait 5-10 minutes for DNS propagation
"No subscribers configured"
- Go to Settings → Integrations
- Scroll to "Email Subscribers" section
- Add at least one subscriber email address
"Failed to send email"
- Check your Resend account is in good standing
- Verify you haven't exceeded Resend's rate limits
- Try sending a test email from Resend dashboard
- Contact Resend support if issues persist
General Issues
"Integration not configured"
- Go to Settings → Integrations and add the integration
- Click "Test & Save" to verify it works
- Make sure you're using the correct organization
"Publish failed with 500"
- Check that the service (Slack/Teams/Intercom) is online
- Verify your webhook URL is still valid
- Try re-saving the integration
- Contact support if the issue persists
Rate Limits
Our Limits
ReleaseRay enforces rate limits to prevent abuse:
- 10 publishes per minute per organization
- 100 publishes per hour per organization
Service Limits
Third-party services have their own limits:
- Slack: ~1 message per second per webhook
- Microsoft Teams: ~4 messages per second per webhook
- Intercom: 1000 requests per minute
ReleaseRay respects these limits and will retry with backoff if needed.
Best Practices
Webhook Security
✅ Keep URLs private - Don't commit webhooks to git
✅ Rotate regularly - Update webhooks every 6-12 months
✅ Monitor usage - Check for unexpected messages
✅ Limit permissions - Use dedicated channels for notifications
Message Quality
✅ Test first - Use "Test & Save" before relying on the integration
✅ Choose the right persona - Engineers for #engineering, Customers for #announcements
✅ Review before publishing - Check the draft looks good
✅ Use multiple channels - Publish different personas to different places
Organization
✅ Dedicated channels - Create #releases or #product-updates channels
✅ Consistent naming - Use clear names for your webhooks
✅ Document setup - Keep a record of which webhooks go where
✅ Team access - Ensure team members know how to configure integrations
Next Steps
- ✅ Configure your first integration (Slack or Teams)
- ✅ Test it with a sample draft
- ✅ Set up multiple integrations for different audiences
- ✅ Publish your first release notes!
Need Help?
- Documentation: Full docs
- Email: support@releaseray.com
- Status: status.releaseray.com
Have questions about integrations? We're here to help!