<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="3.10.0">Jekyll</generator><link href="https://sunnybox.io/feed.xml" rel="self" type="application/atom+xml" /><link href="https://sunnybox.io/" rel="alternate" type="text/html" /><updated>2026-02-23T12:59:21+00:00</updated><id>https://sunnybox.io/feed.xml</id><title type="html">SunnyBox</title><subtitle>The SunnyBox landing page</subtitle><entry><title type="html">Winter 2026: Stable, Secure, and Running Strong</title><link href="https://sunnybox.io/2026/02/23/winter-update.html" rel="alternate" type="text/html" title="Winter 2026: Stable, Secure, and Running Strong" /><published>2026-02-23T00:00:00+00:00</published><updated>2026-02-23T00:00:00+00:00</updated><id>https://sunnybox.io/2026/02/23/winter-update</id><content type="html" xml:base="https://sunnybox.io/2026/02/23/winter-update.html"><![CDATA[<p>Six months after the 2.0 launch, Sunnybox is running better than ever. Here’s a quick check-in.</p>

<h2 id="rock-solid-reliability">Rock-Solid Reliability</h2>

<p>The platform has been humming along with no major incidents since the 2.0 release. Our infrastructure has handled traffic smoothly, webhooks are firing on time, and email processing continues to run without a hitch.</p>

<h2 id="under-the-hood">Under the Hood</h2>

<p>We’ve kept the foundation current with regular dependency and security updates. Nothing flashy — just the kind of quiet maintenance work that keeps a platform healthy and secure.</p>

<h2 id="what-this-means-for-you">What This Means for You</h2>

<p>Sunnybox is a mature, stable product. If you’re building email features into your app, the API you integrate with today will keep working reliably tomorrow. That’s the goal, and we’re delivering on it.</p>

<h2 id="get-in-touch">Get in Touch</h2>

<p>Questions or ideas? Reach out at <a href="mailto:support@sunnybox.io">support@sunnybox.io</a>.</p>

<p>Happy building!</p>]]></content><author><name>Bijan Rahnema</name></author><summary type="html"><![CDATA[Six months after the 2.0 launch, Sunnybox is running better than ever. Here’s a quick check-in.]]></summary></entry><entry><title type="html">Sunnybox 2.0: Faster, Smarter, and Built for Scale</title><link href="https://sunnybox.io/2025/08/27/sunnybox-2-0-architectural-evolution.html" rel="alternate" type="text/html" title="Sunnybox 2.0: Faster, Smarter, and Built for Scale" /><published>2025-08-27T00:00:00+00:00</published><updated>2025-08-27T00:00:00+00:00</updated><id>https://sunnybox.io/2025/08/27/sunnybox-2-0-architectural-evolution</id><content type="html" xml:base="https://sunnybox.io/2025/08/27/sunnybox-2-0-architectural-evolution.html"><![CDATA[<p>Today marks a major milestone for Sunnybox with the release of version 2.0. After months of development and valuable feedback from our community, we’re excited to share what we’ve built: a faster, more reliable, and incredibly powerful email API platform.</p>

<h2 id="whats-new-in-20">What’s New in 2.0?</h2>

<h3 id="simpler-api-better-performance">Simpler API, Better Performance</h3>

<p>We’ve streamlined our API to make it easier to use and faster to respond:</p>

<ul>
  <li><strong>30% faster response times</strong> across all endpoints</li>
  <li><strong>Cleaner URLs</strong> without version numbers (your integrations stay stable)</li>
  <li><strong>50% reduction in API calls needed</strong> for common operations</li>
  <li><strong>2x faster email processing</strong> in background jobs</li>
</ul>

<h3 id="choose-your-webhooks">Choose Your Webhooks</h3>

<p>Tired of getting flooded with webhooks you don’t need? Our new event system lets you pick exactly what you want to know about:</p>

<ul>
  <li><strong>Subscribe to specific events</strong> like “message.received” or “job.failed”</li>
  <li><strong>Reduce webhook traffic by up to 90%</strong> by only getting what matters</li>
  <li><strong>Discover all available events</strong> with our new events endpoint</li>
  <li><strong>Filter by provider</strong> to only get events for specific email accounts</li>
</ul>

<p>For example, if you only care about new messages and failed sends, just subscribe to those two events. No more filtering through noise.</p>

<h3 id="full-draft-support">Full Draft Support</h3>

<p>Email drafts are now fully supported, making Sunnybox perfect for email clients and CRM systems:</p>

<ul>
  <li><strong>Save drafts</strong> with all formatting and attachments preserved</li>
  <li><strong>Edit and update</strong> drafts as many times as needed</li>
  <li><strong>Send when ready</strong> with a single API call</li>
  <li><strong>Automatic sync</strong> with Gmail and IMAP providers</li>
</ul>

<h3 id="enterprise-grade-security">Enterprise-Grade Security</h3>

<p>We’ve significantly enhanced security across the platform:</p>

<ul>
  <li><strong>Webhook signatures</strong> to verify requests are really from Sunnybox</li>
  <li><strong>Granular permissions</strong> to control exactly what each API key can do</li>
  <li><strong>Encrypted provider credentials</strong> with industry-standard encryption</li>
  <li><strong>Comprehensive audit logging</strong> for compliance requirements</li>
</ul>

<h3 id="better-email-management">Better Email Management</h3>

<p>Managing emails is now more powerful and intuitive:</p>

<ul>
  <li><strong>Reply and forward</strong> emails with a single API call</li>
  <li><strong>Move messages</strong> between folders effortlessly</li>
  <li><strong>Batch operations</strong> to process multiple emails at once</li>
  <li><strong>Thread tracking</strong> to keep conversations organized</li>
  <li><strong>Advanced search</strong> with full IMAP search syntax support</li>
</ul>

<h2 id="perfect-for">Perfect For</h2>

<h3 id="building-email-features">Building Email Features</h3>
<p>If you’re adding email capabilities to your SaaS product, Sunnybox 2.0 makes it simple:</p>
<ul>
  <li>Connect any email provider through one unified API</li>
  <li>Process incoming emails automatically</li>
  <li>Send responses and handle threads programmatically</li>
</ul>

<h3 id="creating-email-clients">Creating Email Clients</h3>
<p>Developers building email applications will love:</p>
<ul>
  <li>Full draft support with auto-save</li>
  <li>Real-time webhook notifications</li>
  <li>Thread management and conversation tracking</li>
  <li>Fast, powerful search capabilities</li>
</ul>

<h3 id="automating-workflows">Automating Workflows</h3>
<p>Connect email to your automation platform:</p>
<ul>
  <li>Trigger actions based on specific emails</li>
  <li>Move and organize messages programmatically</li>
  <li>Extract and process email data</li>
  <li>Batch operations for efficiency</li>
</ul>

<h2 id="upgrading-to-20">Upgrading to 2.0</h2>

<h3 id="for-existing-customers">For Existing Customers</h3>

<p>Your current integration continues to work! To use the new features:</p>

<ol>
  <li><strong>Update your base URL</strong> - Remove <code class="language-plaintext highlighter-rouge">/v1</code> from your API calls</li>
  <li><strong>Select your events</strong> - Choose only the webhooks you need</li>
  <li><strong>Add webhook signatures</strong> - Verify requests are from Sunnybox (recommended)</li>
</ol>

<p>The changes are minimal and backwards-compatible for most operations.</p>

<h3 id="for-new-customers">For New Customers</h3>

<p>Getting started is straightforward:</p>

<ol>
  <li><strong>Sign up</strong> at <a href="https://sunnybox.io">sunnybox.io</a></li>
  <li><strong>Connect</strong> your email provider (Gmail OAuth or any IMAP server)</li>
  <li><strong>Make your first API call</strong> using our documentation</li>
</ol>

<h2 id="why-this-matters">Why This Matters</h2>

<p>Version 2.0 isn’t just about new features - it’s about making email integration reliable and scalable:</p>

<ul>
  <li><strong>Reduced webhook noise</strong> - Only get the events you care about</li>
  <li><strong>Faster operations</strong> - 30% improvement in response times</li>
  <li><strong>Better reliability</strong> - Enhanced error handling and retry logic</li>
  <li><strong>Cleaner integration</strong> - Simpler URLs and consistent responses</li>
</ul>

<h2 id="technical-highlights">Technical Highlights</h2>

<p>For the technically curious, here’s what’s under the hood:</p>

<ul>
  <li>Complete architectural refactoring for better maintainability</li>
  <li>Domain-driven design with proper separation of concerns</li>
  <li>Cursor-based pagination for efficient data retrieval</li>
  <li>HMAC-SHA256 webhook signatures for security</li>
  <li>Event-driven architecture with selective subscriptions</li>
</ul>

<h2 id="whats-next">What’s Next</h2>

<p>We’re already working on the next set of features based on your feedback. Stay tuned for updates on multi-channel support (SMS, WhatsApp) and advanced analytics.</p>

<h2 id="get-started">Get Started</h2>

<p>Ready to try Sunnybox 2.0?</p>

<ul>
  <li><strong><a href="https://api.sunnybox.io/sign_up">Sign up for an account</a></strong></li>
  <li><strong><a href="https://sunnybox.io/docs">Read the API documentation</a></strong></li>
</ul>

<h2 id="thank-you">Thank You</h2>

<p>This release is the result of months of work and invaluable feedback from our users. Thank you for being part of the Sunnybox journey.</p>

<p>Questions or feedback? Email us at <a href="mailto:support@sunnybox.io">support@sunnybox.io</a>.</p>

<p>Happy building!</p>]]></content><author><name>Bijan Rahnema</name></author><summary type="html"><![CDATA[Today marks a major milestone for Sunnybox with the release of version 2.0. After months of development and valuable feedback from our community, we’re excited to share what we’ve built: a faster, more reliable, and incredibly powerful email API platform.]]></summary></entry><entry><title type="html">July 2025 Recap: Where We’ve Been and Where We’re Going</title><link href="https://sunnybox.io/2025/07/30/july-recap-quo-vadis.html" rel="alternate" type="text/html" title="July 2025 Recap: Where We’ve Been and Where We’re Going" /><published>2025-07-30T00:00:00+00:00</published><updated>2025-07-30T00:00:00+00:00</updated><id>https://sunnybox.io/2025/07/30/july-recap-quo-vadis</id><content type="html" xml:base="https://sunnybox.io/2025/07/30/july-recap-quo-vadis.html"><![CDATA[<p>As July comes to a close, it’s time to reflect on what has been an incredibly productive month for Sunnybox. We’ve shipped five releases this month alone, each bringing meaningful improvements to the platform. Here’s what we’ve been up to and where we’re headed next.</p>

<h2 id="a-month-of-continuous-improvement">A Month of Continuous Improvement</h2>

<p>July started with our major API consolidation (v1.6.0), and we haven’t slowed down since. Here’s what we’ve delivered:</p>

<h3 id="unified-provider-api-v160">Unified Provider API (v1.6.0)</h3>
<p>We kicked off the month by consolidating all provider operations under a single <code class="language-plaintext highlighter-rouge">/api/v1/providers</code> endpoint. This architectural improvement simplified email integration and introduced Gmail OAuth2 support. The new Base58 provider IDs also enhanced security while maintaining clean URLs.</p>

<h3 id="enhanced-email-sending-v170---v172">Enhanced Email Sending (v1.7.0 - v1.7.2)</h3>
<p>Mid-July brought significant improvements to our email sending capabilities:</p>
<ul>
  <li>Full attachment support with base64 encoding</li>
  <li>Smart MIME type detection that works even when content types aren’t specified</li>
  <li>Intelligent input filtering that gracefully handles common edge cases</li>
  <li>Optional password fields for IMAP updates (no more re-entering passwords unnecessarily)</li>
</ul>

<h3 id="background-job-tracking-v180">Background Job Tracking (v1.8.0)</h3>
<p>We introduced the Jobs API, transforming email sending into an asynchronous operation with full visibility:</p>
<ul>
  <li>Real-time status monitoring for all background operations</li>
  <li>Detailed error messages and retry tracking</li>
  <li>Standardized pagination across all list endpoints</li>
</ul>

<h3 id="automatic-job-webhooks-v190---v191">Automatic Job Webhooks (v1.9.0 - v1.9.1)</h3>
<p>Building on the Jobs API, we added automatic webhook notifications:</p>
<ul>
  <li>Job completion and failure events sent to configured streams</li>
  <li>Provider-based routing ensures you only get relevant notifications</li>
  <li>Bug fixes for Thunderbird attachment display</li>
</ul>

<h3 id="todays-release-v192">Today’s Release (v1.9.2)</h3>
<p>And we’re closing out July with:</p>
<ul>
  <li>API autodiscovery for easier client integration</li>
  <li>Jobs dashboard in the admin UI for complete operational visibility</li>
  <li>Enhanced documentation with Restish CLI integration guide</li>
  <li>CASA certification achieved (Google LOV in progress)</li>
</ul>

<h2 id="the-bigger-picture">The Bigger Picture</h2>

<p>Looking at these releases together, a clear theme emerges: we’re making Sunnybox more robust, transparent, and developer-friendly. The Jobs API and dashboard give you unprecedented visibility into operations. The unified provider API and autodiscovery features reduce integration complexity. Smart input handling and validation make the API more forgiving and easier to work with.</p>

<h2 id="whats-coming-next">What’s Coming Next</h2>

<p>August will focus on leveraging our CASA certification and continuing to improve the developer experience:</p>

<h3 id="automated-gmail-oauth">Automated Gmail OAuth</h3>
<p>Once Google processes our LOV, we’ll enable seamless Gmail authentication without manual token management.</p>

<h3 id="enhanced-analytics">Enhanced Analytics</h3>
<p>Building on our Jobs infrastructure, we’re planning comprehensive email analytics to help you understand delivery patterns and optimize performance.</p>

<h3 id="more-cli-tools">More CLI Tools</h3>
<p>Following positive feedback on our Restish integration, we’re exploring official CLI tools and SDKs.</p>

<h3 id="performance-optimizations">Performance Optimizations</h3>
<p>With our monitoring infrastructure in place, we’re identifying and addressing performance bottlenecks across the platform.</p>

<h2 id="your-feedback-matters">Your Feedback Matters</h2>

<p>This productive month wouldn’t have been possible without your feedback and feature requests. Many of July’s improvements came directly from user suggestions. Keep them coming!</p>

<h2 id="try-it-out">Try It Out</h2>

<p>All these features are available now. Check out our updated <a href="/docs">documentation</a> to get started with the new APIs, or log into your dashboard to see the new Jobs view in action.</p>

<p>Here’s to an even more exciting August!</p>

<p>Happy coding!</p>]]></content><author><name>Bijan Rahnema</name></author><summary type="html"><![CDATA[As July comes to a close, it’s time to reflect on what has been an incredibly productive month for Sunnybox. We’ve shipped five releases this month alone, each bringing meaningful improvements to the platform. Here’s what we’ve been up to and where we’re headed next.]]></summary></entry><entry><title type="html">Unified Provider API: Simplifying Email Integration</title><link href="https://sunnybox.io/2025/07/09/unified-provider-api.html" rel="alternate" type="text/html" title="Unified Provider API: Simplifying Email Integration" /><published>2025-07-09T00:00:00+00:00</published><updated>2025-07-09T00:00:00+00:00</updated><id>https://sunnybox.io/2025/07/09/unified-provider-api</id><content type="html" xml:base="https://sunnybox.io/2025/07/09/unified-provider-api.html"><![CDATA[<p>We’re excited to announce Sunnybox API v1.6.0, a major update that consolidates and simplifies how you work with email providers. This release represents a significant architectural improvement that makes integrating multiple email providers easier than ever.</p>

<h2 id="whats-new">What’s New?</h2>

<h3 id="unified-provider-endpoint">Unified Provider Endpoint</h3>

<p>Previously, managing email providers required navigating different endpoints for different provider types. With v1.6.0, all provider operations are now consolidated under a single, intuitive endpoint:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>/api/v1/providers
</code></pre></div></div>

<p>This means whether you’re working with IMAP, Gmail, or future provider types, you’ll use the same consistent API surface.</p>

<h3 id="gmail-oauth2-support">Gmail OAuth2 Support</h3>

<p>We’re introducing support for Gmail providers using OAuth2 authentication. While full automated OAuth flow is coming soon (pending CASA verification), you can already integrate Gmail accounts by providing your own OAuth tokens:</p>

<div class="language-json highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="p">{</span><span class="w">
  </span><span class="nl">"provider"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w">
    </span><span class="nl">"providerType"</span><span class="p">:</span><span class="w"> </span><span class="s2">"gmail"</span><span class="p">,</span><span class="w">
    </span><span class="nl">"email"</span><span class="p">:</span><span class="w"> </span><span class="s2">"user@gmail.com"</span><span class="p">,</span><span class="w">
    </span><span class="nl">"accessToken"</span><span class="p">:</span><span class="w"> </span><span class="s2">"ya29.a0AfH6SMBx..."</span><span class="p">,</span><span class="w">
    </span><span class="nl">"refreshToken"</span><span class="p">:</span><span class="w"> </span><span class="s2">"1//0gYv8n7..."</span><span class="w">
  </span><span class="p">}</span><span class="w">
</span><span class="p">}</span><span class="w">
</span></code></pre></div></div>

<h3 id="simplified-configuration-model">Simplified Configuration Model</h3>

<p>We’ve eliminated the complexity of polymorphic relationships. Instead of tracking <code class="language-plaintext highlighter-rouge">providableType</code> and <code class="language-plaintext highlighter-rouge">providableId</code>, provider configurations are now embedded directly within the provider object:</p>

<p><strong>Before (v1.5.0 and earlier):</strong></p>
<div class="language-json highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="p">{</span><span class="w">
  </span><span class="nl">"name"</span><span class="p">:</span><span class="w"> </span><span class="s2">"demo@example.com"</span><span class="p">,</span><span class="w">
  </span><span class="nl">"providableType"</span><span class="p">:</span><span class="w"> </span><span class="s2">"ImapProvider"</span><span class="p">,</span><span class="w">
  </span><span class="nl">"providableId"</span><span class="p">:</span><span class="w"> </span><span class="mi">123</span><span class="w">
</span><span class="p">}</span><span class="w">
</span></code></pre></div></div>

<p><strong>Now (v1.6.0):</strong></p>
<div class="language-json highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="p">{</span><span class="w">
  </span><span class="nl">"name"</span><span class="p">:</span><span class="w"> </span><span class="s2">"demo@example.com"</span><span class="p">,</span><span class="w">
  </span><span class="nl">"providerType"</span><span class="p">:</span><span class="w"> </span><span class="s2">"imap"</span><span class="p">,</span><span class="w">
  </span><span class="nl">"config"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w">
    </span><span class="nl">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"imap"</span><span class="p">,</span><span class="w">
    </span><span class="nl">"email"</span><span class="p">:</span><span class="w"> </span><span class="s2">"demo@example.com"</span><span class="p">,</span><span class="w">
    </span><span class="nl">"host"</span><span class="p">:</span><span class="w"> </span><span class="s2">"imap.example.com"</span><span class="p">,</span><span class="w">
    </span><span class="nl">"port"</span><span class="p">:</span><span class="w"> </span><span class="mi">993</span><span class="p">,</span><span class="w">
    </span><span class="err">//</span><span class="w"> </span><span class="err">...</span><span class="w"> </span><span class="err">other</span><span class="w"> </span><span class="err">IMAP-specific</span><span class="w"> </span><span class="err">settings</span><span class="w">
  </span><span class="p">}</span><span class="w">
</span><span class="p">}</span><span class="w">
</span></code></pre></div></div>

<h3 id="enhanced-security-with-new-id-format">Enhanced Security with New ID Format</h3>

<p>Provider IDs now use a URL-safe Base58 format (e.g., <code class="language-plaintext highlighter-rouge">h8Kzj9Tx5mFqL3Nw7pRcVb2Y</code>) instead of sequential integers. This improves security by making IDs non-guessable while maintaining compatibility with URL routing.</p>

<h3 id="improved-autoconfig">Improved Autoconfig</h3>

<p>Creating IMAP providers is now even easier with enhanced autoconfig detection. For most popular email providers, you only need to provide an email and password:</p>

<div class="language-json highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="p">{</span><span class="w">
  </span><span class="nl">"provider"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w">
    </span><span class="nl">"providerType"</span><span class="p">:</span><span class="w"> </span><span class="s2">"imap"</span><span class="p">,</span><span class="w">
    </span><span class="nl">"email"</span><span class="p">:</span><span class="w"> </span><span class="s2">"user@gmail.com"</span><span class="p">,</span><span class="w">
    </span><span class="nl">"password"</span><span class="p">:</span><span class="w"> </span><span class="s2">"your-password"</span><span class="w">
  </span><span class="p">}</span><span class="w">
</span><span class="p">}</span><span class="w">
</span></code></pre></div></div>

<p>The API automatically detects the correct IMAP and SMTP settings for providers like Gmail, Outlook, Yahoo, and many others.</p>

<h2 id="migration-guide">Migration Guide</h2>

<h3 id="updating-your-integration">Updating Your Integration</h3>

<ol>
  <li>
    <p><strong>API Endpoints</strong>: Replace calls to <code class="language-plaintext highlighter-rouge">/api/v1/imap_providers</code> with <code class="language-plaintext highlighter-rouge">/api/v1/providers</code></p>
  </li>
  <li><strong>Request Format</strong>: Update your provider creation requests to use the new unified format:
    <div class="language-json highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="p">{</span><span class="w">
  </span><span class="nl">"provider"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w">
    </span><span class="nl">"providerType"</span><span class="p">:</span><span class="w"> </span><span class="s2">"imap"</span><span class="p">,</span><span class="w">
    </span><span class="nl">"email"</span><span class="p">:</span><span class="w"> </span><span class="s2">"user@example.com"</span><span class="p">,</span><span class="w">
    </span><span class="nl">"password"</span><span class="p">:</span><span class="w"> </span><span class="s2">"password"</span><span class="w">
    </span><span class="err">//</span><span class="w"> </span><span class="err">Optional:</span><span class="w"> </span><span class="err">specify</span><span class="w"> </span><span class="err">manual</span><span class="w"> </span><span class="err">configuration</span><span class="w">
  </span><span class="p">}</span><span class="w">
</span><span class="p">}</span><span class="w">
</span></code></pre></div>    </div>
  </li>
  <li>
    <p><strong>Response Handling</strong>: Provider configurations are now nested under the <code class="language-plaintext highlighter-rouge">config</code> field in responses</p>
  </li>
  <li><strong>ID Format</strong>: Update any ID validation to accept the new Base58 string format</li>
</ol>

<h3 id="breaking-changes">Breaking Changes</h3>

<p>This is a breaking change. The old <code class="language-plaintext highlighter-rouge">/api/v1/imap_providers</code> endpoints have been removed completely. You must update your integration to use the new unified <code class="language-plaintext highlighter-rouge">/api/v1/providers</code> endpoint.</p>

<p>We understand breaking changes can be disruptive, but this consolidation significantly improves the API’s consistency and maintainability. The migration is straightforward, and the new structure sets us up for better extensibility going forward.</p>

<h2 id="whats-coming-next">What’s Coming Next?</h2>

<ul>
  <li><strong>Automated Gmail OAuth Flow</strong>: Once our CASA verification is complete, you’ll be able to authenticate Gmail accounts directly through Sunnybox without managing OAuth tokens yourself</li>
  <li><strong>Additional Provider Types</strong>: The new architecture makes it easy for us to add support for more email providers</li>
  <li><strong>Enhanced Provider Management</strong>: Bulk operations, provider templates, and more</li>
</ul>

<h2 id="get-started">Get Started</h2>

<p>Check out our updated <a href="/docs">API documentation</a> to explore the new unified provider API. The improved OpenAPI specification includes comprehensive examples for all provider types.</p>

<p>We’re confident this consolidation will make your email integration experience smoother and more maintainable. As always, we’d love to hear your feedback!</p>

<p>Happy coding!</p>]]></content><author><name>Bijan Rahnema</name></author><summary type="html"><![CDATA[We’re excited to announce Sunnybox API v1.6.0, a major update that consolidates and simplifies how you work with email providers. This release represents a significant architectural improvement that makes integrating multiple email providers easier than ever.]]></summary></entry><entry><title type="html">Introducing Global Streams: Simplified Email Management Across All Providers</title><link href="https://sunnybox.io/2025/06/30/global-streams.html" rel="alternate" type="text/html" title="Introducing Global Streams: Simplified Email Management Across All Providers" /><published>2025-06-30T00:00:00+00:00</published><updated>2025-06-30T00:00:00+00:00</updated><id>https://sunnybox.io/2025/06/30/global-streams</id><content type="html" xml:base="https://sunnybox.io/2025/06/30/global-streams.html"><![CDATA[<p>We’re thrilled to announce a powerful new feature that makes managing emails across multiple providers easier than ever: <strong>Global Streams</strong>.</p>

<h2 id="what-are-global-streams">What are Global Streams?</h2>

<p>Global Streams are a new type of stream that automatically receives emails from all active providers in your account. Instead of manually configuring which providers send to which streams, you can now have a single stream that captures everything.</p>

<h3 id="key-benefits">Key Benefits:</h3>

<p><strong>Automatic Provider Management</strong></p>
<ul>
  <li>No more manual configuration when adding or removing providers</li>
  <li>Providers are automatically added when activated</li>
  <li>Providers are automatically removed when deactivated</li>
  <li>Perfect for accounts that need centralized email processing</li>
</ul>

<p><strong>Consistent Behavior</strong></p>
<ul>
  <li>Every account now gets a global stream named “All Emails” upon creation</li>
  <li>The global stream cannot be deleted or renamed, ensuring consistency</li>
  <li>System-managed configuration prevents accidental misconfiguration</li>
</ul>

<p><strong>Seamless Integration</strong></p>
<ul>
  <li>Works with all existing webhook configurations</li>
  <li>Compatible with basic authentication and HTML body options</li>
  <li>Full API support for programmatic access</li>
</ul>

<h2 id="how-it-works">How It Works</h2>

<p>When you create a new account, Sunnybox automatically creates a global stream for you. This stream:</p>

<ol>
  <li><strong>Monitors all providers</strong> - Any active email provider in your account automatically sends emails to this stream</li>
  <li><strong>Updates dynamically</strong> - When you activate a new provider, it’s instantly added to the global stream</li>
  <li><strong>Maintains consistency</strong> - The stream’s name and description are fixed to prevent confusion</li>
</ol>

<h2 id="ui-enhancements">UI Enhancements</h2>

<p>We’ve also improved the Streams interface to make global streams easy to identify and manage:</p>

<ul>
  <li><strong>Visual indicators</strong> - Global streams display a special “Global” badge with a helpful tooltip</li>
  <li><strong>Smart ordering</strong> - Global streams always appear at the top of your streams list</li>
  <li><strong>Protected fields</strong> - When editing a global stream, system-managed fields are disabled with explanatory messages</li>
  <li><strong>Clear provider status</strong> - The edit interface shows which providers are active and included</li>
</ul>

<h2 id="api-updates">API Updates</h2>

<p>The Sunnybox API has been updated to version <strong>1.4.2</strong> with full support for global streams:</p>

<div class="language-json highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="p">{</span><span class="w">
  </span><span class="nl">"stream_type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"global"</span><span class="p">,</span><span class="w">
  </span><span class="nl">"name"</span><span class="p">:</span><span class="w"> </span><span class="s2">"All Emails"</span><span class="p">,</span><span class="w">
  </span><span class="nl">"description"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Automatically receives emails from all active providers"</span><span class="w">
</span><span class="p">}</span><span class="w">
</span></code></pre></div></div>

<p>Global streams cannot be deleted via API, returning a 422 error with a clear message if attempted.</p>

<h2 id="migration-for-existing-accounts">Migration for Existing Accounts</h2>

<p>Don’t worry if you have existing accounts - we’ve got you covered! Our migration process will automatically create global streams for all existing accounts and connect their active providers.</p>

<h2 id="whats-next">What’s Next?</h2>

<p>Global Streams are part of our ongoing effort to make email management more intelligent and automated. By reducing manual configuration, we’re freeing you up to focus on what matters: building great applications with email data.</p>

<p>This feature sets the stage for more intelligent email routing and processing features coming soon. Stay tuned!</p>

<h2 id="get-started">Get Started</h2>

<p>Global Streams are available now for all accounts. New accounts will automatically have them, and existing accounts will receive them through our migration process.</p>

<p>Questions or feedback? We’d love to hear from you!</p>]]></content><author><name>Bijan</name></author><summary type="html"><![CDATA[We’re thrilled to announce a powerful new feature that makes managing emails across multiple providers easier than ever: Global Streams.]]></summary></entry><entry><title type="html">Enhanced Webhook Monitoring and Streamlined Navigation</title><link href="https://sunnybox.io/2025/06/20/webhook-monitoring-and-ui-improvements.html" rel="alternate" type="text/html" title="Enhanced Webhook Monitoring and Streamlined Navigation" /><published>2025-06-20T00:00:00+00:00</published><updated>2025-06-20T00:00:00+00:00</updated><id>https://sunnybox.io/2025/06/20/webhook-monitoring-and-ui-improvements</id><content type="html" xml:base="https://sunnybox.io/2025/06/20/webhook-monitoring-and-ui-improvements.html"><![CDATA[<p>We’re excited to announce significant improvements to Sunnybox that make webhook monitoring more powerful and navigation more intuitive than ever before.</p>

<h2 id="comprehensive-webhook-monitoring">Comprehensive Webhook Monitoring</h2>

<p>Understanding how your webhooks perform is crucial for maintaining reliable email integrations. Our new webhook monitoring system provides complete visibility into every webhook call, helping you quickly identify and resolve any issues.</p>

<p><img src="/assets/img/posts/webhooks.png" alt="Webhook Monitoring Interface" /></p>

<h3 id="key-features">Key Features:</h3>

<p><strong>Detailed Event Tracking</strong></p>
<ul>
  <li>Full request and response payload visibility</li>
  <li>Response codes and timing information</li>
  <li>Success/failure status at a glance</li>
  <li>Filterable event history with date ranges</li>
</ul>

<p><strong>Enhanced Discoverability</strong></p>
<ul>
  <li>Clickable success rate indicators on the streams page</li>
  <li>Color-coded performance chips (green for &gt;90%, yellow for 50-90%, red for &lt;50%)</li>
  <li>Direct navigation to webhook logs from multiple entry points</li>
</ul>

<p><strong>Improved Event Details View</strong></p>
<ul>
  <li>Organized layout with clear status indicators</li>
  <li>One-click copying of webhook URLs and payloads</li>
  <li>Error details and debugging information when webhooks fail</li>
  <li>Request/response body inspection with proper formatting</li>
</ul>

<h2 id="streamlined-user-interface">Streamlined User Interface</h2>

<p>We’ve redesigned the navigation flow to be more intuitive and efficient:</p>

<p><strong>Unified Table-Based Layouts</strong></p>
<ul>
  <li>Consistent design across Streams, API Keys, and Webhook Events</li>
  <li>Powerful search functionality on every index page</li>
  <li>Clean, scannable tables with relevant information</li>
</ul>

<p><strong>Simplified Navigation</strong></p>
<ul>
  <li>Removed redundant stream detail pages</li>
  <li>Direct access to webhook events from the streams index</li>
  <li>Unified topbar for consistent navigation experience</li>
  <li>Collapsible filter sections to maximize screen real estate</li>
</ul>

<p><strong>Better Information Architecture</strong></p>
<ul>
  <li>Analytics icons clearly indicate clickable webhook statistics</li>
  <li>Proper header sections with contextual information</li>
  <li>Breadcrumb-style navigation for easy backtracking</li>
</ul>

<h2 id="technical-improvements">Technical Improvements</h2>

<p>Under the hood, we’ve made several technical enhancements:</p>

<ul>
  <li>Removed unnecessary JSON/jbuilder support from UI controllers</li>
  <li>Replaced inline JavaScript with proper Stimulus controllers</li>
  <li>Improved controller efficiency by removing redundant code</li>
  <li>Enhanced test coverage for the new webhook monitoring features</li>
</ul>

<h2 id="whats-next">What’s Next?</h2>

<p>These improvements lay the groundwork for something even more exciting. We’re exploring ways to make Sunnybox smarter about understanding and processing your emails, going beyond simple forwarding to actually help you extract more value from your email data.</p>

<p>Stay tuned for announcements in the coming months – we think you’ll love what we’re building!</p>

<p>We’re committed to making Sunnybox the most reliable and user-friendly email API service available. These updates are just the beginning of our continuous improvement journey.</p>

<p>Try out the new webhook monitoring features today and let us know what you think!</p>]]></content><author><name>Bijan</name></author><summary type="html"><![CDATA[We’re excited to announce significant improvements to Sunnybox that make webhook monitoring more powerful and navigation more intuitive than ever before.]]></summary></entry><entry><title type="html">Infrastructure Modernization and Enhanced Email Features</title><link href="https://sunnybox.io/2025/06/19/infra-and-enhancements.html" rel="alternate" type="text/html" title="Infrastructure Modernization and Enhanced Email Features" /><published>2025-06-19T00:00:00+00:00</published><updated>2025-06-19T00:00:00+00:00</updated><id>https://sunnybox.io/2025/06/19/infra-and-enhancements</id><content type="html" xml:base="https://sunnybox.io/2025/06/19/infra-and-enhancements.html"><![CDATA[<p>We’ve been busy improving Sunnybox! Over the past two weeks, we’ve modernized our infrastructure and added several highly-requested email features.
Here’s what’s new.</p>

<h2 id="-kamal-deployment-simplified-and-powerful">🚀 Kamal Deployment: Simplified and Powerful</h2>

<p>We’ve migrated our deployment infrastructure to <a href="https://kamal-deploy.org/">Kamal</a>, the modern deployment tool from 37signals. This change brings several
benefits:</p>

<ul>
  <li>Faster deployments - Direct container deployments without the complexity of Kubernetes</li>
  <li>Better reliability - Zero-downtime deployments with health checks</li>
  <li>Simplified operations - One tool to rule them all: kamal deploy</li>
</ul>

<p>Behind the scenes, we’ve also upgraded to Ruby 3.4.4 and switched from GoodJob/Redis to Solid Queue/Solid Cache/Solid Cable - embracing the Rails 8 way
of doing things with PostgreSQL-powered background jobs and caching.</p>

<h2 id="-new-email-api-features">📧 New Email API Features</h2>

<h3 id="html-body-in-webhooks-v140">HTML Body in Webhooks (v1.4.0)</h3>

<p>Today’s release adds the most requested webhook feature: HTML email bodies!</p>

<p>Streams now have a showHtmlBody setting (enabled by default) that controls whether the sanitized HTML version of emails is included in webhook payloads.
For your webhooks this means you can:</p>

<ul>
  <li>Display rich email content in your applications</li>
  <li>Parse HTML structure for better content extraction</li>
  <li>Build more sophisticated email processing workflows</li>
</ul>

<p>The feature is fully backwards compatible - existing streams automatically get HTML bodies in their webhooks.</p>

<h3 id="sent-folder-support-v132">Sent Folder Support (v1.3.2)</h3>

<p>We now automatically save sent emails to your IMAP sent folder! This ensures emails sent via our API appear in your email client’s sent folder,
maintaining a complete email history.</p>

<p>Smart defaults detect the right folder name:</p>
<ul>
  <li>Gmail: “Sent Mail”</li>
  <li>Outlook: “Sent Items”</li>
  <li>Others: “Sent”</li>
</ul>

<p>You can also specify a custom folder or disable this feature entirely with the new save_to_sent parameter.</p>

<h3 id="reply-to-headers-v131">Reply-To Headers (v1.3.1)</h3>

<p>The API now supports Reply-To headers when sending emails. This allows you to:</p>
<ul>
  <li>Set a different reply address than the sender</li>
  <li>Route responses to support queues</li>
  <li>Implement no-reply scenarios properly</li>
</ul>

<h2 id="-enhanced-security">🔒 Enhanced Security</h2>

<p>We’ve implemented several security improvements across the platform to ensure your data remains safe and secure. Our commitment to security is ongoing,
and we regularly review and update our practices.</p>

<h2 id="-webhook-monitoring">📊 Webhook Monitoring</h2>

<p>Stream webhooks now track success rates! You can monitor your webhook health directly in the dashboard, seeing response times and error rates for the
last 7 days.</p>

<h2 id="whats-next">What’s Next?</h2>

<p>We’re continuously working on improvements based on your feedback. Stay tuned for more enhancements to make your email integrations even more powerful!</p>

<h2 id="get-started">Get Started</h2>

<p>All these features are available now! Check out our updated <a href="https://api.sunnybox.io/api-docs">API documentation</a> for implementation details.</p>

<p>Questions or feedback? Reach out at <a href="mailto:bijan@screenisland.com">bijan@screenisland.com</a>.</p>

<p>Happy emailing! 📬</p>

<p>Cheers,<br />
Bijan</p>]]></content><author><name>Bijan</name></author><summary type="html"><![CDATA[We’ve been busy improving Sunnybox! Over the past two weeks, we’ve modernized our infrastructure and added several highly-requested email features. Here’s what’s new.]]></summary></entry><entry><title type="html">Introducing the Streams API: Powerful Email Workflow Management</title><link href="https://sunnybox.io/2025/06/03/streams-api.html" rel="alternate" type="text/html" title="Introducing the Streams API: Powerful Email Workflow Management" /><published>2025-06-03T00:00:00+00:00</published><updated>2025-06-03T00:00:00+00:00</updated><id>https://sunnybox.io/2025/06/03/streams-api</id><content type="html" xml:base="https://sunnybox.io/2025/06/03/streams-api.html"><![CDATA[<p>We’re excited to announce the launch of our new Streams API endpoints! This powerful addition to SunnyboxAI enables
you to programmatically manage email streams, giving you complete control over how your email providers are organized
and how messages flow through your system.</p>

<h2 id="what-are-streams">What are Streams?</h2>

<p>Streams are logical groupings of email providers that allow you to organize and route email messages efficiently.
Whether you’re building a customer support system, managing multiple email accounts, or creating complex email
workflows, streams provide the flexibility you need.</p>

<h2 id="key-features">Key Features</h2>

<h3 id="full-crud-operations">Full CRUD Operations</h3>

<p>The new API provides complete Create, Read, Update, and Delete operations for streams:</p>

<ul>
  <li><code class="language-plaintext highlighter-rouge">GET /api/v1/streams</code> - List all streams in your account</li>
  <li><code class="language-plaintext highlighter-rouge">GET /api/v1/streams/{id}</code> - Get details for a specific stream</li>
  <li><code class="language-plaintext highlighter-rouge">POST /api/v1/streams</code> - Create a new stream</li>
  <li><code class="language-plaintext highlighter-rouge">PATCH /api/v1/streams/{id}</code> - Update an existing stream</li>
  <li><code class="language-plaintext highlighter-rouge">DELETE /api/v1/streams/{id}</code> - Delete a stream</li>
</ul>

<h3 id="webhook-integration">Webhook Integration</h3>

<p>Each stream is configured with a webhook URL to receive real-time notifications when new messages arrive. We
support secure HTTPS webhooks with optional Basic Authentication for added security.</p>

<h3 id="provider-association">Provider Association</h3>

<p>Easily associate multiple email providers with a stream. This allows you to:</p>
<ul>
  <li>Group related email accounts together</li>
  <li>Route messages from multiple sources to a single webhook</li>
  <li>Manage permissions and access at the stream level</li>
</ul>

<h3 id="flexible-updates">Flexible Updates</h3>

<p>Our PATCH endpoint supports partial updates, meaning you only need to send the fields you want to change. Want to
update just the webhook URL? No problem:</p>

<div class="language-json highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="p">{</span><span class="w">
  </span><span class="nl">"stream"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w">
    </span><span class="nl">"callbackUrl"</span><span class="p">:</span><span class="w"> </span><span class="s2">"https://your-new-webhook.com/endpoint"</span><span class="w">
  </span><span class="p">}</span><span class="w">
</span><span class="p">}</span><span class="w">
</span></code></pre></div></div>

<h2 id="example-usage">Example Usage</h2>

<p>Creating a new stream with providers:</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>curl <span class="nt">-X</span> POST https://api.sunnybox.io/api/v1/streams <span class="se">\</span>
  <span class="nt">-H</span> <span class="s2">"Authorization: Bearer YOUR_API_KEY"</span> <span class="se">\</span>
  <span class="nt">-H</span> <span class="s2">"Content-Type: application/json"</span> <span class="se">\</span>
  <span class="nt">-d</span> <span class="s1">'{
    "stream": {
      "name": "Customer Support",
      "description": "All customer support email accounts",
      "callbackUrl": "https://myapp.com/webhooks/support",
      "basicAuth": true,
      "basicUser": "webhook_user",
      "basicPassword": "secure_password",
      "providerIds": [1, 2, 3]
    }
  }'</span>
</code></pre></div></div>

<h2 id="developer-friendly-features">Developer-Friendly Features</h2>

<h3 id="jsonapi-format">JSON:API Format</h3>

<p>All responses follow the JSON:API specification, providing a consistent and predictable structure with proper error
handling and relationship management.</p>

<h3 id="openapi-documentation">OpenAPI Documentation</h3>

<p>Our API is fully documented with OpenAPI 3.1 specification. Use your favorite API client or code generator to
integrate quickly.</p>

<h2 id="whats-next">What’s Next?</h2>

<p>This is just the beginning! We’re planning to add more features to streams, including:</p>
<ul>
  <li>Message filtering rules</li>
  <li>Advanced routing options</li>
  <li>Stream-level analytics</li>
  <li>Rate limiting controls</li>
</ul>

<h2 id="get-started-today">Get Started Today</h2>

<p>The Streams API is available now for all SunnyboxAI users. Check out our <a href="https://api.sunnybox.io/api-docs">API documentation</a> for complete
details and start building amazing email integrations today!</p>

<p>Have questions or feedback? We’d love to hear from you at <a href="mailto:bijan@screenisland.com">bijan@screenisland.com</a></p>

<p>Happy streaming! 🚀</p>

<p>Cheers Bijan</p>]]></content><author><name>Bijan</name></author><summary type="html"><![CDATA[We’re excited to announce the launch of our new Streams API endpoints! This powerful addition to SunnyboxAI enables you to programmatically manage email streams, giving you complete control over how your email providers are organized and how messages flow through your system.]]></summary></entry><entry><title type="html">Performance Upgrade</title><link href="https://sunnybox.io/2025/03/30/performance.html" rel="alternate" type="text/html" title="Performance Upgrade" /><published>2025-03-30T00:00:00+00:00</published><updated>2025-03-30T00:00:00+00:00</updated><id>https://sunnybox.io/2025/03/30/performance</id><content type="html" xml:base="https://sunnybox.io/2025/03/30/performance.html"><![CDATA[<p>We’re excited to announce significant performance improvements to SunnyBox! Our team has been working behind the scenes to enhance the speed, reliability, and security of our platform.</p>

<h3 id="whats-new">What’s New?</h3>

<p>We’ve completely revamped our backend infrastructure with state-of-the-art technology:</p>

<ul>
  <li>
    <p><strong>Server Architecture Upgrade</strong>: We’ve migrated to a modern, non-blocking server architecture that makes efficient use of all available CPU cores. This means SunnyBox can now handle many more concurrent connections without slowing down.</p>
  </li>
  <li>
    <p><strong>Enhanced Email Processing</strong>: Many of you use SunnyBox to interact with email services. We’ve optimized these connections to prevent bottlenecks during peak usage times.</p>
  </li>
  <li>
    <p><strong>Improved Security Measures</strong>: We’ve implemented additional protection layers against distributed denial-of-service (DDoS) attacks, ensuring SunnyBox remains available even when under pressure.</p>
  </li>
</ul>

<h3 id="what-this-means-for-you">What This Means For You</h3>

<p>These improvements translate to real benefits for our users:</p>

<ul>
  <li><strong>Faster Response Times</strong>: Pages load quicker and operations complete more rapidly</li>
  <li><strong>Higher Reliability</strong>: The service remains responsive even during high-traffic periods</li>
  <li><strong>Better Scalability</strong>: We can now accommodate growth more efficiently</li>
</ul>

<h3 id="looking-ahead">Looking Ahead</h3>

<p>This infrastructure upgrade lays the foundation for several exciting new features we’re planning to roll out in the coming weeks. We’re committed to continuously improving SunnyBox and delivering the best possible experience to our users.</p>

<p>Stay tuned for more updates!</p>

<p><em>Do you have questions about these improvements? Feel free to reach out to our support team.</em></p>]]></content><author><name>Bijan</name></author><summary type="html"><![CDATA[We’re excited to announce significant performance improvements to SunnyBox! Our team has been working behind the scenes to enhance the speed, reliability, and security of our platform.]]></summary></entry><entry><title type="html">Updates and Rails 8.0</title><link href="https://sunnybox.io/2024/11/02/rails80.html" rel="alternate" type="text/html" title="Updates and Rails 8.0" /><published>2024-11-02T00:00:00+00:00</published><updated>2024-11-02T00:00:00+00:00</updated><id>https://sunnybox.io/2024/11/02/rails80</id><content type="html" xml:base="https://sunnybox.io/2024/11/02/rails80.html"><![CDATA[<p>We have updated many internals and can proudly announce that
Sunnybox now runs completely on Ruby on Rails 8.0.RC2</p>

<p>Besides that Sunnybox received a few quality of life changes and more polish.
Stay tuned for more.</p>]]></content><author><name>Bijan</name></author><summary type="html"><![CDATA[We have updated many internals and can proudly announce that Sunnybox now runs completely on Ruby on Rails 8.0.RC2]]></summary></entry></feed>