Topic
101 articles
How notification systems are actually built: architecture, delivery guarantees, retries, and the tradeoffs behind each.

How to protect your email domain and sending reputation
AI agents have made spoofing cheap, and a DMARC record at p=none won't stop it. Here's how to enforce DMARC without bouncing your own mail, keep password resets apart from newsletters, protect your sending reputation, read Google Postmaster Tools, and audit your domain with six AI prompts.

Courier's Response to the eMudhra and PHP Security Issues
Courier's assessment of the eMudhra certificate authority compromise and the October 21 PHP security release: what happened, the steps we're taking, and what you may want to check in your own environment.

Control how fast Courier sends to your providers
You shouldn't have to think about how fast you send to Courier. Set a send rate limit on any provider, and Courier sends your notifications to it at the rate you choose. Anything over the limit is queued, not dropped.

Know the moment users change notification preferences
Every preference change in Courier now reaches your systems two ways. A `preferences:user:updated` webhook fires the moment a user opts in, opts out, or changes a topic's channels, wherever they made the change. `GET /preferences/logs` returns the history, newest first, with the previous value where Courier knows it. Keep your CRM, warehouse, or marketing tools in step with what users chose.

Test Courier emails end to end with your AI agent
Give your coding agent an AgentMail inbox, and it can test your Courier emails the way a user would: send the change, check what arrives, review how it renders, and fix what it finds before the change reaches Production.

Let your agent check every email before it ships
Courier Device Preview gives your coding agent real screenshots from Outlook, Gmail, and Apple Mail. Here's the prompt and workflow to have it check every email, fix the draft, and check again before you publish.

React Native solved a problem nobody had. Use Flutter.
Shopify moved back to Swift and Kotlin because coding agents made two codebases affordable. That kills React Native's reason to exist. It does not touch Flutter's, and the canvas is why.

How to send Slack notifications from your app
Slack is where your customers already work, which makes it a product surface rather than only an internal alerting channel. Posting an approval request or a status change into a customer's own Slack means working in workspaces you don't own, addressing people by email rather than Slack ID, and holding a separate credential for every customer.

Your notification analytics are now available by API
If it's in the Courier dashboard, it's on the API. Analytics was one of the last screens where that wasn't true. GET /notifications/{id}/metrics returns sends, deliveries, opens, clicks, errors, and undeliverable counts per template as a time series, broken out by provider and channel, so the numbers can live in your own product or go straight to an agent.