The reset link opens localhost.
The agent built the link from the address the app had on your computer, and the live app still uses it. A customer clicks it and gets an error page.
The welcome mail, the password reset, the receipt, and the code that decides when each one goes out. Mailway keeps an exact copy of every mail your app sends, so you can read what your customers get.
These are the kinds of mistakes that come with code nobody read line by line. None of them shows up as an error in your app, so everything looks fine. The mail is the only place they show.
The agent built the link from the address the app had on your computer, and the live app still uses it. A customer clicks it and gets an error page.
The template expects a name the sign-up form never asks for. The mail goes out anyway, and its first line greets the customer as “undefined”.
The code that sends it runs again on a retry or a page reload. The customer gets the same mail three times in a minute.
A script written to try a feature ran against the real user table, not a copy of it.
Point your development and preview builds at smtp.mailway.dev, with the same SMTP credential. Mailway keeps every mail they send and delivers none of it unless you release one, so you read what the agent wrote before anyone else can get it. On every plan (sandbox).
Every mail your app sends, kept exactly as sent and searchable by address: 30 days on Free, 1 year on Business, and up to unlimited with a retention add-on. Your provider's dashboard may list recent mail too. Mailway keeps it in one place, across every provider you use (try the sample).
When a customer says the mail never came, its timeline shows whether a provider accepted it and, if Mailway receives your provider's delivery events, whether it was delivered. Whether a mail reaches the inbox still depends on your sender domain and your provider.
Mailway is not an email provider. It sits in front of the one you already have, for example Resend, Amazon SES, or Postmark, and sends through your account with your own provider key. The provider still delivers and bills you. If you don't have a provider account yet, you need one first (provider guides).
Every step, and the Supabase Auth settings: set up with a coding agent.
Move this app’s outgoing email onto Mailway. Mailway sits in front of the email provider the app already uses: it sends every mail through my own provider account and keeps an exact copy of it. Read mailway.net/llms.txt before you start.
I want three things from this change: to read every mail the app sends, to test mail without it reaching a customer, and to keep the provider I already have.
localhost or a development URL, a template value that can be empty, code that can send the same mail twice (on a retry, a page reload, or a double click), and test text or test addresses. If you see a reason this move won’t work for this app, say so there. Then stop, and change nothing until I tell you to go on.MAILWAY_SMTP_HOST, port 587 with STARTTLS, and the username and password from MAILWAY_SMTP_USERNAME and MAILWAY_SMTP_PASSWORD. If port 587 is blocked or hangs where the app runs, use 2525, also with STARTTLS.POST {MAILWAY_API_URL}/v1/send, with the key from MAILWAY_API_KEY. Keep every field of each mail: from, to, cc, bcc, reply_to, subject, html, text, attachments, and headers. Write a from with a display name as {"email": …, "name": …}, because Mailway doesn’t accept the "Name <address>" string. Send an Idempotency-Key header of 12–40 characters (letters, digits, - and _). Build it from something unique to this one mail, such as the order ID or the reset request’s ID, so a retry of the same mail repeats the key. Never reuse a key for a later mail: Mailway keeps every key for the life of the project and answers a repeat without sending.smtp.mailway.net, or https://api.mailway.net with a live key (mw_live_…). Development and preview builds use smtp.mailway.dev with the same SMTP credential, or https://api.mailway.dev with a test key (mw_test_…). Mailway keeps sandbox mail and sends none of it to a provider unless someone releases it in the console.When you’re done, tell me:
Rules. Adapt the change to the existing code. Don’t add a standalone example. Never put a secret in the code or in a committed file, and never ask me to paste one into this chat.
Mailway is in private beta, and we onboard teams one at a time. Leave your email and we'll send your invite when it's your turn.
Cookie consent
We may run ads on Google and Reddit. If we do, knowing whether they work needs your OK for one cookie each from them, used only to tie a signup back to the ad that brought it. Analytics here is cookieless either way, and declining changes nothing else.
Change your mind any time with "Cookie choices" in the footer. Details in the privacy policy.