Wildcard domains
An email domain for every customer
Connect *.yourapp.com once. Every customer who signs up gets their own acme.yourapp.com — sending and receiving the second they exist, without anyone touching DNS.
- HHarbourlyJust now
harbourly.northwind.io
hello@Welcome aboard, Tom - RRheinbau17m ago
rheinbau.northwind.io
support@Re: Booking for Thursday - LLindmetallYesterday
lindmetall.northwind.io
ava@Your quote for RFQ 4471 - WWerkhaus2 Sep
werkhaus.northwind.io
notifications@Your weekly summary
+ 1,248 more, each created by one API call at signup
Onboarding
Sending on day one, not day four
Asking a customer to set up DNS means waiting on whoever at their company holds the registrar login. A subdomain under your wildcard skips them: it works the moment your code creates it.
Their own domain
harbourly.com
Thursday
Under your wildcard
harbourly.northwind.io
Instantly
Why platforms use it
Like yourapp.vercel.app, for email
A working default, so nobody is blocked on DNS before they have seen your product work. Their own domain is still the best place to end up — this is how they get started.
- 01 · Day oneacme.northwind.ioLive at sign-up
They send and receive the minute they sign up. No domain to buy, no records to publish, no waiting on IT.
- 02 · Building and testingacme-staging.northwind.ioThrowaway
Dev, staging and test accounts get real, working addresses — without anyone touching a production domain.
- 03 · When they're readymail.acme.comTheir own domain
They connect their own domain for their brand and their own reputation. The subdomain got them there.
How it works
Set up once, then one call per customer
- 01
Connect *.yourapp.com
Publish a few DNS records in your own zone, one time. That is all the DNS there will ever be.
- 02
Create one at sign-up
One API call from your signup handler. It is verified the moment it exists.
- 03
Send and receive
Straight away, from any address under it. Replies arrive on your webhook.
const domain = await aiinbx.domains.create({ name: `${customer.slug}.northwind.io`,})await aiinbx.emails.send({ from: `hello@${domain.name}`, to: customer.email, subject: "Your inbox is live", text: welcome,})Your own email is untouched
Only the subdomains route to AI Inbx. Your team keeps receiving wherever they do today.
One domain on your plan
A wildcard counts once, however many customers you give a subdomain to.
Solutions
Where it comes in
- Inbound email APIReceive email in your app over an API. Point an MX record at AI Inbx or connect Gmail and Outlook, and every message arrives as a signed, parsed JSON webhook.ThreadingAttachmentsMailboxesWildcard domains
- SPF DKIM DMARC checkCheck a customer's SPF, DKIM and DMARC records over an API. Live lookups at their own nameservers name the record that is wrong and the change that fixes it.Wildcard domains