Integrations
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
| Sent to | When | |
|---|---|---|
| Invitation | The person invited | An owner or admin invites someone under Settings → Members. |
| Login link | The person signing in | They click Email me a login link on the login page (valid 15 minutes). |
| Reset your password | The person who forgot it | They 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 email | The new address | Someone changes their email on Profile. |
| Invoice | The client's invoice recipients | Someone clicks Email to client (or Email again) on an invoice. Replies go to the sender. |
| Overdue reminder | The client's invoice recipients | Daily, at the days set under Settings → Payments → Overdue reminders. |
| Contractor review | The client's primary contact | A contractor is added to a project with client approval requested. |
| Alerts | Alert recipients (default: owners) | Events set to email under Settings → Alerts. |
| Weekly digest | Alert recipients | Mondays, if the digest is on under Settings → Alerts. |
| Client link code | A client contact | They 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.
Create a Resend account
Sign up at resend.com.
Add your sending domain
In Resend, open Domains and add the domain you'll send from. A subdomain such as
mail.example.comkeeps this separate from your normal mail. Pick the region closest to your server.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.
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.Enter it in Consultainer
Field What to enter Or in .envResend API key The re_…keyRESEND_API_KEYFrom address An address on your verified domain, e.g. Acme Consulting <billing@mail.example.com>EMAIL_FROMClick 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.
Fill in your mail service's SMTP settings:
| Field | What to enter | Or in .env |
|---|---|---|
| SMTP server | The host, e.g. smtp.postmarkapp.com | SMTP_HOST |
| Port | 587 (STARTTLS, the usual) or 465 (TLS from the start). Blank means 587. | SMTP_PORT |
| Username, Password | The SMTP login. Leave blank for a relay that doesn't need one. | SMTP_USER, SMTP_PASSWORD |
| From address | An address the service lets you send as, e.g. Acme Consulting <billing@example.com>. Required, unless the username is an email address. | EMAIL_FROM |
Click Save. Settings for common services:
| Service | Server | Port | Login |
|---|---|---|---|
| Postmark | smtp.postmarkapp.com | 587 | A server API token as both username and password |
| Amazon SES | email-smtp.<region>.amazonaws.com | 587 | SMTP credentials created in the SES console (not your AWS keys) |
| Mailgun | smtp.mailgun.org (EU: smtp.eu.mailgun.org) | 587 | A domain's SMTP login |
| SendGrid | smtp.sendgrid.net | 587 | apikey and an API key |
| Google Workspace | smtp.gmail.com | 465 | Your address and an app password |
| Microsoft 365 | smtp.office365.com | 587 | A mailbox with SMTP AUTH allowed by your admin |
Your mail service still needs your domain verified (SPF and DKIM) for mail to reach inboxes.
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.