Consultainer Docs

Integrations

Email

Send invites, login and password reset links, invoices and alerts through Resend or any SMTP server

Consultainer sends email through Resend or any SMTP server: Postmark, Amazon SES, Mailgun, SendGrid, Google Workspace, Microsoft 365 or your own. Email is optional: without it, Consultainer shows you links to share yourself, and email-only features are off. An owner sets it up once for the instance, on the welcome page right after setup or any time under Settings → Integrations → Email.

What Consultainer emails

EmailSent toWhen
InvitationThe person invitedAn owner or admin invites someone under Settings → Members.
Login linkThe person signing inThey click Email me a login link on the login page (valid 15 minutes).
Reset your passwordThe person who forgot itThey click Forgot password? on the login page (valid 1 hour, at most 3 an hour). Never sent for people who have to sign in with SSO.
Confirm your new emailThe new addressSomeone changes their email on Profile.
InvoiceThe client's invoice recipientsSomeone clicks Email to client (or Email again) on an invoice. Replies go to the sender.
Overdue reminderThe client's invoice recipientsDaily, at the days set under Settings → Payments → Overdue reminders.
Contractor reviewThe client's primary contactA contractor is added to a project with client approval requested.
AlertsAlert recipients (default: owners)Events set to email under Settings → Alerts.
Weekly digestAlert recipientsMondays, if the digest is on under Settings → Alerts.
Client link codeA client contactThey ask for a code on a client link that requires email verification.

Without email: invites and contractor reviews give you a link to copy, the login page hides Email me a login link, Forgot password? tells people to ask an owner or admin for a reset link (Settings → Members → ⋯ → Create password reset link), email changes apply after a password check, and invoice emails, overdue reminders, email alerts and the weekly digest are off. Invoices can still be shared with Copy client link. Email verification on client links can't be turned on, and if it was on already, client links stay closed to anyone who hasn't verified yet.

Set it up

Go to Settings → Integrations and click Set up on Email (a new owner also gets this form on the welcome page). Under Send with, pick Resend or SMTP.

  1. Create a Resend account

    Sign up at resend.com.

  2. Add your sending domain

    In Resend, open Domains and add the domain you'll send from. A subdomain such as mail.example.com keeps this separate from your normal mail. Pick the region closest to your server.

  3. Add the DNS records

    Resend lists the records to add at your DNS provider: an MX and a TXT (SPF) record for sending, and a TXT record for DKIM. Add each one exactly as shown, then click Resend's button to verify them. Wait until the domain shows Verified.

  4. Create an API key

    In Resend, open API Keys and create a key with Sending access. Copy it: it starts with re_ and is only shown once.

  5. Enter it in Consultainer

    FieldWhat to enterOr in .env
    Resend API keyThe re_… keyRESEND_API_KEY
    From addressAn address on your verified domain, e.g. Acme Consulting <billing@mail.example.com>EMAIL_FROM

    Click Save.

Always set a From address on your verified domain. If it's left empty, Consultainer sends from Resend's test address onboarding@resend.dev, which only delivers to your own Resend account's email.

A value set in .env always wins and shows as read-only in the form. In .env, EMAIL_PROVIDER is resend or smtp; left out, it's SMTP when only SMTP_HOST is set and Resend otherwise. RESEND_FROM_EMAIL, the older name for EMAIL_FROM, still works.

Links in emails point to your instance's public URL — AUTH_URL if set, otherwise the URL confirmed under Settings → General. Make sure that's the address people can reach. See Self-hosting.

Check it worked

The Email row says Connected with Resend or SMTP. Open it and click Send a test email: the test goes to your own address, and if Resend refuses it the card shows Resend's reason (an unverified domain, a wrong key) right there.

Troubleshooting

Consultainer logs the reason in the app's logs (docker compose logs consultainer-app), as Resend returned an error, Failed to send email via Resend or Failed to send email via SMTP. In the app you'll see:

  • "Resend said: …" or "The SMTP server said: …" under Send a test email: the service's own reason. With SMTP, ECONNREFUSED or a timeout means the server or port is wrong (or blocked by your firewall; many hosts block port 25, so use 587 or 465), and Invalid login or 535 means the username or password is wrong.

  • "The email couldn't be sent. Try again." (emailing an invoice) — Resend refused it. Usual causes: the from address isn't on a verified domain, the domain isn't verified yet, or the API key was deleted.

  • The invite dialog says Share this link with them instead of We emailed them an invite — same causes.

  • "Email isn't configured on this instance." or "Email isn't set up on this instance. Copy the client link instead, or set up email under Settings → Integrations." — No API key is saved.

  • Emails only arrive at your own address — the from address is empty, so Resend's test sender is used. Set From address.

  • Emails land in spam — check all of Resend's DNS records show as verified, and consider adding a DMARC record for the domain.