What happens if…

Sending, templates and the Inbox: each case, what Gemmein does and what you do.

Sending

For notify(). A relay's email_person rides the same caps. The purchase email and Development's daily budget have their own sections: The purchase email and Development sends.

If…What happensWhat you do
Your domain is not verified for email yet409 sender_domain_required. Nothing leaves, nothing is recorded and no cap is spentVerify the domain on the Domains page. The same key then sends once
The person id is unknown, belongs to another environment, or the person is suspended404 not_a_customer. Nothing is sentSend to a person id from the same environment as your key
You retry with the same keyOne email leaves. The retry answers deduped: true with the first send's id and spends no capNothing
Two people get the same keyBoth are sent. A key is scoped to its personNothing
Two sends with the same key arrive at onceThe second answers 409 in_flight. Once the first finishes, the same key answers deduped: trueRetry after a moment
A person has had 5 emails today and you send another429 notify_capped with resetAt. Sends with kind: "account" are outside this capWait for resetAt. Send sign-in, access and billing notices as kind: "account"
Your app has sent 200 emails this hourThe next answers 429 notify_capped with resetAt, whatever its kindWait for resetAt
Your mail provider fails or refuses your address502 send_failed. Nothing is sent from a Gemmein address instead, and the cap is handed backRetry with the same key
Sends are switched off on the Emails pageEvery notify() answers 403 sends_disabled. Switching them back on restores sends, and Logs records each changeSwitch sends on on the Emails page
The subject, the text or the person is missing400 no_subject, no_text or no_person. A kind other than event or account is 400 invalid_kindFix the call
A subject contains line breaksThey are removed before sending, so a subject cannot add mail headersNothing
Receiving is not verified yetThe email is sent with replyRail: false. A reply has no path back to your InboxVerify receiving on the Domains page, or tell people where to write
A person is erasedTheir sends are removed from your records. Other people's sends are untouchedNothing
The person's address bounced for good, or they marked your mail as spam200 with sent: false, notSent: "address_bounced" or "address_complained" and a message. Nothing leaves and no cap is spent. A relay's email_person and the purchase email skip it the same way. Each skip is counted and on Logs, and the person's page says whyDon't retry. To mail them again, turn their email back on from their page
10 of your customers' addresses have bounced or reported spamErrors warns you, and again at 20, 30 and so onCheck how addresses are collected and what your emails say
Your domain is not verified and someone signs inThe sign-in code arrives from <App name> (via Gemmein), with the footer Sent by Gemmein on behalf of <App name>. From a verified domain it arrives from account, with Powered by GemmeinVerify a domain for email
Your provider refuses your domain for a sign-in codeThe code is sent again from Gemmein's shared address with the shared footer, so the person can still sign in. Sign-in codes are the only email with this fallbackCheck the domain on the Domains page

Templates

If…What happensWhat you do
A template uses a variable its email does not haveSync refuses that file with 400 unknown_variable and names the variables it has. The other files still syncUse only the listed variables
A file's name is not one of the sevenIt is refused with unknown_template and never syncedRename it
There is a sign-in.htmlIt is never synced. The sign-in email takes no HTMLWrite sign-in.json
sign-in.json has another key, a greeting or app name with a digit or an address, a colour that is not #rrggbb or is too light, or a logo that is not https:400 invalid_brand with the reasonFix the value
The logo cannot be fetched when you save: not a PNG, JPEG, GIF or WebP, over 200 KB, a redirect, or an error400 logo_unavailable with the reason. Nothing is savedFix the address or the image, then save again
A template is over 100 KB400 template_too_largeHost images at https: addresses and trim the HTML
A template holds a script, a form, an event handler, CSS maths or an http: imageIt is saved with those removed, and sync lists what was removedNothing, or remove them from the file
inbox-reply.html has no {{content}}, or more than one400 content_slotPut it in once
An email has no template, or its template cannot be read or renderedIt is sent in Gemmein's plain designNothing
You save a template in Live409 templates_live_refusedSave it in Development; go-live or promote copies it into Live
Your app has saved templates 60 times, or previewed them 120 times, this hour429 templates_capped with resetAtPreview locally with npx gemmein emails preview, which has no limit
You send a testOne email, subject [Test] …, to the address you are signed in with and no one else. It counts toward Development's 20 a day per app and 50 per accountPast that, wait for resetAt
You delete a file from gemmein/emails/The cloud keeps the template. In npx gemmein dev it is removed at onceRun npx gemmein emails remove <name>

In the Inbox

If…What happensWhat you do
A person repliesThe reply lands in the same conversation. A subject starting Re: or Fwd: joins the conversation it answersNothing
You open a conversation and do not replyIt is marked read and still needs a reply. Only your reply answers itReply
You close a conversation and they write againIt reopens, with the new message unreadNothing
A person has waited 12 hours for your replyGemmein emails your owners and admins once for that wait. If you answer and they write again, a new wait startsReply. To stop these emails, switch the alert off on Settings → Notifications; the Inbox still shows the conversation waiting
A message's body cannot be fetched from the mail providerThe message shows without a body and says soChoose Try again on the message
A person attaches a fileThe message shows the file's name. The file itself is not keptAsk them to send it another way if you need it
You start a conversation with someone who has not signed inIt is refused, and nothing is sent. The Inbox writes only to people who have signed in to your appAsk them to sign in first
You start a conversation under a subject they are already waiting onIt is refused, and nothing is sentReply in that conversation
You have started 30 conversations in the last hourThe next new conversation is refused, and nothing is sentWait, then send it
Your domain is not verified for emailNew conversation and Reply both say so, with a link to the Domains page, and send nothing. They never send from a Gemmein addressVerify the domain on the Domains page
Your provider refuses your address on a reply or a new conversationNothing is sent and nothing is recordedTry again in a minute
A person is erasedTheir conversation stays in your Inbox with their email address removed. Other people's conversations are untouchedNothing
You reply to, or start a conversation with, an address that bounced or reported your mail as spamIt is refused with 409 address_suppressed, and nothing is sentReach them another way
One sender emails your Inbox more than 20 times in an hour, or more than 300 emails in an hour arrive from people who are not your customersThe rest are dropped as spam, not stored, and counted. Errors says how many. Your customers and people you already have a conversation with still get through, each still at most 20 an hourNothing. It is usually a mail loop or spam
Was this page helpful?

Last updated