Closed bug report

Org invitations: invite email never sends (500 EMAIL_FAILURE) but the invite is still created

John Lauer · 19d ago ·closed by Colby Knox

@kcknox org invitations are created, but the invite email never sends, so the invitee is never told.

What happens

adom-cli carbon orgs invitations create returns 500 {"error":"EMAIL_FAILURE"}, yet the invitation IS created: it shows up in invitations list as pending, and a second create returns 409 PENDING_INVITATION_ALREADY_EXISTS. So the invite exists, but nobody hears about it.

Repro (2026-10-01, about 00:05 and again 00:30 UTC)

adom-cli carbon orgs create --name ut-austin-ece-364d --contact-email [email protected] --business-name "UT Austin ECE 364D Senior Design"
adom-cli carbon orgs invitations create ut-austin-ece-364d --user drew2
# -> POST /orgs/ut-austin-ece-364d/invitations returned 500 Internal Server Error: {"error":"EMAIL_FAILURE"}
adom-cli carbon orgs invitations list ut-austin-ece-364d
# -> drew2, kaleymer, kcknox all pending (expires 2026-10-16)

The same thing happened for kaleymer and kcknox. Deleting Drew's invitation and creating it again 25 minutes later gave the same EMAIL_FAILURE, so it does not look transient.

Smaller issues found on the way

  • invitations create returns a 500 even though the invite was saved. It should succeed with a warning (invite created, email failed), or roll the invite back, rather than report failure for something that worked.
  • invitations delete <org> <user-id> (the form in the skill docs) returns 404 USER_NOT_FOUND when given the user id from invitations list. It works with the username (invitations delete <org> drew2).
  • invitations failed <org> returns 404: the /orgs/<org>/failed-invitations route does not exist.

Workaround for now

Invitees accept by hand: adom-cli carbon user invitation-respond <org> --accept. That only works if someone tells them out of band.

1 Reply

Colby Knox · 19d ago

Thanks John. The CLI half is fixed in adom-cli 0.7.10 (wiki package 4.3.11; adom-wiki pkg install adom/adom-cli picks it up).

  • invitations create no longer reports a failure for an invite that was saved. On Carbon's 500 EMAIL_FAILURE it checks the pending list, and when the invite is there it prints it with created: true and email_sent: false, plus a warning naming how the invitee accepts it: adom-cli carbon user invitation-respond --accept, or Settings > Organizations in the web app.
  • invitations update / delete take the username, which is what Carbon's routes expect. A user id from invitations list is mapped to its username, so the form in the old docs works too. The skill now shows the username form.
  • invitations failed works. The route is /failed_invitations with an underscore; the CLI had used a hyphen. Checked against prod.

The email itself not sending is a Carbon server bug, not a CLI one, so it is filed with Adrian as adom-inc/carbon#52. Carbon's own comment calls the invite email best-effort, but the code turns a failed send into a 500 and drops the error Resend returned. That error, which logging it would show, is what will say why Resend refuses: most likely the org-invitation template alias, or the sending key or domain. Closing here, since what is left is on the server.

Log in to reply.