Troy Goode
July 29, 2020

In 2012 I was part of the amazing team that took Eloqua public on the NASDAQ – four months after IPO we were acquired by Oracle where Eloqua is now the centerpiece of the Oracle Marketing Cloud. Eloqua and its contemporaries had set out to make it easy for marketing teams to build and send emails to a list of recipients, to identify who to include in that list using segmentation tools, and to automate programmatic “campaigns” that would result in multiple messages being delivered to the recipient over time. We had led the charge into public markets, but there were many other startups also building the first generation of cloud-hosted marketing automation tools that made it easy for a marketing team to send promotional emails: Marketo, HubSpot, ExactTarget, and many others.

Designing an automated email campaign using Eloqua
At the same time that late-stage email marketing automation platforms like Eloqua were going public or being acquired, a new generation of cloud-hosted email Message Transfer Agents like SendGrid, Mailgun, and SparkPost were just starting to hit their stride. Unlike products like Eloqua, these cloud-based MTAs targeted developers, not marketers, and sought to make it easy to programmatically send an email to a recipient with a REST API call. SendGrid was recently acquired by Twilio for over $2 billion in 2019.
Copied!
curl --request POST \--url https://api.sendgrid.com/v3/mail/send \--header 'Authorization: Bearer YOUR_API_KEY' \--header 'Content-Type: application/json' \--data '{"personalizations": [{"to": [{"email": "recipient@example.com"}]}],"from": {"email": "sender@example.com"},"subject": "Hello, World!","content": [{"type": "text/plain", "value": "Oh hai!"}]}'
Following Eloqua, I was VP Engineering and then CTO of two startups that relied heavily on email (and other channels…) to communicate with our customers, as well as recipients our customers wanted to reach themselves. Despite the great advances we’d seen from companies like Eloqua and SendGrid, I was frustrated to see the amount of effort my engineering teams continuously put into our email infrastructure. Were they reinventing the wheel? Were they not taking advantage of capabilities in existing platforms?
As I dug into these questions I began to understand the root of the problem: marketing automation solutions were purpose-built for marketing teams, not product teams, and the cloud-hosted MTAs like SendGrid were designed to solve for low-level infrastructure use cases. Common use cases that nearly all software development teams are faced with fell somewhere into an unsupported gap between the two; a void that required you to build, not buy.
While my frustrations with email technology continued to grow, they were rapidly exacerbated by the need to also add support for additional communication channels, like mobile push, SMS, Slack, and more. As I talked to my peers leading engineering at late stage companies, I began to see entire teams form who were dedicated to internal infrastructure built to handle queuing, scheduling, routing, rendering, and ensuring delivery of messages across multiple channels. Companies were now spending millions to build infrastructure like LinkedIn’s Air Traffic Controller and Slack’s (in)famous notification flowchart.
Think about Slack notifications for a moment: if I were to @mention you, how would Slack tell you? If you’re already in the app – but not currently chatting with me – they’ll send you an in-app notification, like a badge; if you aren’t online, they'll send a mobile push if you've download their app; finally, they’ll send you an email if they have no other way of reaching you. You’re now implementing 3 or more separate communication APIs, queues to handle different throughputs, failover for when a channel is down, separate templates for each channel, and you haven’t even gotten started on user preferences:

A flowchart describing how Slack decides whether, when, and where to notify you.
Email shouldn’t have to be hard, and it should also be easy to support reaching your customers on their preferred channel – not just on the one you could afford the time to integrate. We built Courier to make sure nobody else ever has to spend millions on custom communication infrastructure, that our inboxes are never again flooded by a well-meaning developer who just didn’t have the time to implement user preferences or digests, and that simple tickets to tweak the text and branding of a template stop getting stuck just outside the scope of the next sprint.

Has your company had to build custom communication infrastructure? Have you had to cut corners with your product’s outbound messaging? We’d love to hear from you. Join the conversation in the Courier Community!

Vibe Coding Notifications: How to Use Courier with Cursor or Claude Code
Courier's MCP server lets AI coding tools like Cursor and Claude Code interact directly with your notification infrastructure. Unlike Knock and Novu's MCP servers that focus on API operations, Courier's includes embedded installation guides for Node, Python, Flutter, React, and other platforms. When you prompt "add Courier to my app," your AI assistant pulls accurate setup instructions rather than relying on outdated training data. OneSignal's MCP is community-maintained, not official. Courier supports 50+ providers, native Slack/Teams integration, drop-in inbox and preference components, and a free tier of 10,000 notifications/month. Configure in Cursor with "url": "https://mcp.courier.com" and "headers": { "api_key": "YOUR_KEY" }.
By Kyle Seyler
January 22, 2026

The Complete Guide to B2B Customer Engagement
Courier provides the notification infrastructure layer for B2B customer engagement, routing messages across email, SMS, push, in-app, Slack, and Teams based on user preferences and product events. Unlike building notification systems in-house—which takes months of engineering time for features like multi-channel routing, preference management, and delivery tracking—Courier handles this infrastructure so product teams can focus on engagement strategy. B2B customer engagement requires multiple layers: notification infrastructure (Courier), customer data platforms (Segment), product analytics (Mixpanel/Amplitude), and channel-specific tools. Companies with strong engagement programs see 15-25% churn reduction. The key is connecting product events to customer communication at the right moment through the right channel, handling complexity like multiple users per account with different notification needs across work channels.
By Kyle Seyler
January 20, 2026

Customer Engagement Platform vs CRM: Key Differences Explained
A CRM stores customer data: contacts, purchases, support tickets, and pipeline. It answers "who are our customers?" A customer engagement platform (CEP) orchestrates communication across email, push, SMS, in-app, and chat. It answers "what should we tell them next?" CRMs focus on historical records. CEPs process real-time behavior and trigger messages based on actions. Most teams need both, plus a third layer: notification infrastructure for reliable multi-channel delivery. Courier bridges CEP and infrastructure by combining routing, failover, and delivery tracking with engagement features like preference management, visual templates, and in-app notification centers.
By Kyle Seyler
January 07, 2026
© 2026 Courier. All rights reserved.