Email integration
Which address your emails come from
Until you connect your own email, Groundbase still sends the emails your customers need from you, from Groundbase's own address. Once you connect yours under Settings → Email, they come from you instead.
| What | Your own email connected | Nothing connected yet |
|---|---|---|
| Invoices, quotes, receipts and credit notes | your email (choose it in From) | invoices@groundbasecrm.com |
| Payment reminders, and recurring invoices set to send automatically | your email | invoices@groundbasecrm.com |
| Documents for signature, and the signed copies | your email (choose it in From) | documents@groundbasecrm.com |
| Booking confirmations and reminders | your email (see Booking links) | bookings@groundbasecrm.com |
When Groundbase's address sends for you:
- Your customer sees "Your Name via Groundbase", replies go to your login email, and a line at the bottom tells them a reply reaches you.
- Your account email has to be confirmed first.
- It sends up to 20 invoices, quotes, receipts and documents a day per account, and automatic payment reminders and recurring invoices count toward the 20. Booking emails don't. A payment reminder that can't go out is tried again on the next run; after three failures in a row, reminders for that invoice stop and its timeline says so. A recurring invoice that can't be emailed is still made, and the schedule says it wasn't sent.
Your own address is more familiar to your customers, less likely to land in spam, and has no daily limit of 20, so connect one when you can.
These always need your own email: one-to-one emails from the inbox or a contact's page, and the Send an email step in workflows, go through your connected mailbox. Email campaigns and drips go through your own Resend account. Groundbase's address never sends these.
Connecting an inbox
Settings → Email → Add a mailbox. We connect via standard IMAP + SMTP, which works with virtually every email provider — Gmail, Google Workspace, Outlook / Microsoft 365, Yahoo, iCloud, custom domains via cPanel, anything that speaks IMAP and SMTP.
You'll need:
- Your email address
- An App Password from your provider (NOT your regular login password)
- Your provider's IMAP host + port (we pre-fill common providers — Gmail, Outlook, Yahoo, iCloud)
- Your provider's SMTP host + port (also pre-filled)
Why an App Password? Most providers no longer let third-party apps sign in with your normal password — they want a dedicated, revocable token per app.
- Gmail / Google Workspace — generate one at myaccount.google.com/apppasswords. Requires 2-Step Verification enabled on your Google account.
- Outlook.com, Hotmail and Live (personal Microsoft accounts) — these can't be connected at the moment. Microsoft now requires its own sign-in (OAuth) for them and app passwords no longer work; Microsoft sign-in is on our roadmap.
- Microsoft 365 (work or school) — only if your organisation still allows app passwords and SMTP sign-in; many have turned them off. Ask whoever runs your Microsoft 365, or use another mailbox.
- Yahoo — login.yahoo.com/account/security → Manage app passwords.
- iCloud — appleid.apple.com → Sign-in and Security → App-Specific Passwords.
We encrypt the App Password at rest with AES-GCM (server-side key) so even if our database were dumped, your password isn't readable. Groundbase only decrypts it in memory at send/fetch time.
Several mailboxes
You can connect more than one. Settings → Email → Your mailboxes → Add a mailbox adds another Gmail or SMTP account beside the first; each has its own signature and its own Send-as aliases.
In the inbox, the rail under the folders lists your mailboxes. All inboxes shows everything; pick one to see just its mail. Under All inboxes, each thread shows which mailbox it belongs to. The choice is remembered on that device.
Which mailbox sends:
- A reply leaves from the mailbox the message arrived on.
- A new email from a contact's page uses the mailbox you last used with that person, or if there's no history, the one you last sent from.
- Compose shows a From picker whenever there's more than one choice, listing each mailbox and each Send-as alias with the mailbox it goes through.
Disconnecting one mailbox removes its stored password and leaves the others alone. Web, desktop (2.1.14 and later) and mobile all read and send mail through Groundbase's server, so a mailbox connected in one app works in all of them. A mailbox first connected on an older desktop version may ask for its password once (Re-enter your mailbox password), because that version kept the password on the computer only.
Sending mail
You can send email from any contact's detail page, from the dedicated Email tab, or via bulk actions on a filtered contact list. Every message you send is kept in Groundbase. Whether it also appears in your provider's own Sent folder depends on the provider: Gmail, Google Workspace and Outlook.com file mail sent this way into Sent themselves; most other providers do not, and Groundbase does not add a copy there. This is the same from web, desktop (2.1.14 and later) and mobile.
Mail you send from elsewhere shows up too. Groundbase also checks each mailbox's Sent folder, so an email you send from your phone or from Gmail itself appears in the conversation, marked as sent by you, and on the page of the contact it went to (the first recipient who is a contact). Mail you sent from Groundbase isn't duplicated. The first check brings in recent sent mail (the latest 20 from the past 30 days); after that, everything new arrives within about five minutes.
Attachments
Click the paperclip icon in the compose toolbar to attach files. Up to 18 MB total per email across up to 20 files (larger mail is rejected by Gmail and most providers once encoded). We encode them as standard multipart/mixed MIME so they arrive as proper attachments in any email client.
Images from the internet are hidden in emails you receive, because a sender can use them to tell when you opened their email and roughly where you were. Pictures that are part of the email itself still show. Click Show images to load them for that message, or Always show from to trust that sender on this device.
Reply, reply all and forward. In a conversation, Reply answers the sender. Reply all also copies everyone else who was on the message (your own addresses are left out). Forward starts a new email with the original quoted underneath; attachments on the original aren't included, so download and attach them if you need them.
Attachments you receive are listed under the message, with their size; click one to download it. The file is fetched from your mailbox at that moment rather than stored in Groundbase, so it needs the mailbox to still be connected and the message still on the server. Pictures that are part of the message itself show in the message instead.
(Mobile attachments are photos only — pick from your camera roll. To attach a PDF or other document, send from the web or desktop app.)
Schedule send
Click the clock icon in the compose toolbar, pick a future date and time, and we'll queue the email and send it at that exact moment. A per-minute server cron handles the dispatch — you don't need anything open or running for it to fire.
Scheduled emails show up in your inbox under the Scheduled folder filter. You can cancel any of them before they fire from there.
Limit for now: scheduled sends don't support attachments. Send-with-attachments goes immediately; if you need a scheduled email with files, send to yourself first and forward it manually.
Drafts
Hit Save draft in the compose toolbar to save your in-progress message. Drafts appear under the Drafts folder filter in your inbox — click any draft to resume editing exactly where you left off. Each save is a full update (we PATCH the existing draft, not insert a duplicate). Successful Send auto-deletes the draft.
Email signatures
Edit your signature at Settings → Email → Edit (on the connected account) → Signature. HTML allowed — use <br> for line breaks and <a href="…">link</a> for hyperlinks. We auto-derive the plain-text fallback by stripping tags.
Once set, every outbound email from this account (web, mobile, AI integration, campaign sends) automatically appends the signature with the standard -- separator so Gmail / Apple Mail / Outlook recognize it as a sig block and collapse it on reply.
Signatures are per-account so a user with personal + work email can have different sign-offs.
Send-as aliases
If you use multiple sending addresses (e.g. you@brand-a.com and you@brand-b.com from the same Gmail), add them under Settings → Email → Send-as addresses. They appear in a dropdown on the compose screen and in the bulk email wizard.
Your email provider must allow the alias too. Groundbase hands the message to your provider over SMTP with the alias as the From address, and the provider has the final say. Gmail silently replaces it with your main address unless the alias is also set up in Gmail under Settings → Accounts → "Send mail as"; Outlook and most others reject the send outright. Set the alias up with your provider first, then add it here.
Templates
Settings → Templates has two tabs, SMS and Email. An email template has a name, subject and body; an SMS template has a name and body with a live character and segment count. Both take merge tags: {{first_name}}, {{last_name}}, {{company}}, {{email}}, {{phone}}, {{city}}, {{deal_value}}, {{my_name}}, plus any custom field as {{cf.<field_key>}}. Merge tags in the editor lists them; Preview shows the result with sample data. An empty account can start from Add starter templates.
A fallback for empty values. Add the words to use after a |: Hi {{first_name|there}}, reads Hi Ann, for Ann and Hi there, for a contact with no first name, instead of Hi ,. It works on every merge tag, in templates, campaigns and one-to-one messages.
Templates appear under the Templates button in the SMS conversation, the single SMS compose sheet, bulk SMS, and the email composer. Values are filled in per recipient at send time. Campaigns have their own template library and do not use these. The same {{}} syntax works in campaign email steps.
Custom-field merge tags
Beyond the reserved tags above, you can reference any custom field you've created on a Contact via {{cf.<field_key>}}. Example: if you defined a contact custom field with key loan_amount, your template body can say:
Hi {{first_name}}, your loan amount of {{cf.loan_amount}} has been pre-approved.
Custom-field tags are resolved server-side at send time from the recipient's contact record. Missing values render as empty (we don't error or skip the send). The merge-tag picker in the compose dialog lists every custom field you have, so you don't have to memorize keys.
Read receipts (open tracking)
Outbound emails embed a tiny invisible tracking pixel. When the recipient opens the email and their client downloads images, the pixel fires and the email row in Groundbase updates to opened with timestamps. Per-thread you'll see "Read X minutes ago" indicators on the messages you sent.
Read tracking is on by default and can be turned off per message with the tracking toggle in the compose window (privacy-sensitive sends, internal-team emails, etc.). There is no account-wide switch for one-to-one email; Settings → Email tracking is for campaigns sent through Resend.
Limitations: not all email clients download images on open (notably Apple Mail's "Mail Privacy Protection" preloads pixels so every email appears opened immediately; some corporate gateways strip the pixel). Treat opens as a signal, not gospel.
Click tracking
In the web app, the same toggle that adds the pixel also rewrites each link (href) to route through our tracker first, then redirect to the original destination. We log the click + timestamp on the email row. Turn the toggle off and links go out untouched. The desktop app tracks opens only and never rewrites links.
The redirect adds ~150ms to the recipient's click. Not noticeable for humans.
Follow-up reminders
When you send an email and want to make sure you don't lose track if they don't reply, click the Set follow-up option in the compose toolbar and pick a number of days. A task is auto-created on the contact for that date — title "Follow up: {subject}". If the recipient replies before the reminder fires, the task is auto-completed and removed from your queue. If they don't, the task surfaces at the configured time so you remember to nudge.
Disconnecting
Settings → Email → the mailbox → Disconnect mailbox. Stops fetching new mail and removes the stored password from our servers. Doesn't delete your already-fetched messages from Groundbase — those stick around for searchability.
Connecting Resend (for email campaigns) — step by step
If you only need transactional email — replies, one-off messages, follow-ups — your IMAP/SMTP connection above handles everything. Resend is for marketing email: bulk campaigns, multi-step drips, newsletters. It exists because Gmail and Outlook SMTP rate-limit you hard (usually 500/day on free accounts), and a campaign of any size will get throttled or flagged as spam. Resend is built for outbound at volume, with proper deliverability tooling.
Like Twilio, you bring your own Resend account. Groundbase doesn't mark up Resend usage — Resend charges you direct at their published rates. Free tier is 3,000 emails/month and 100/day, which is enough for most small businesses to start.
Plan ahead. Domain verification — adding DNS records and waiting for them to propagate — takes anywhere from 15 minutes to a few hours. Some DNS providers (notably some registrars' default DNS) can take longer. Don't schedule a campaign before the domain is verified.
Step 1 — Sign up for Resend.
- Go to resend.com and create an account.
- Free tier: 3,000 emails/month, 100 emails/day, on Resend's own sender domain. That's enough to test, but you'll want to verify your own domain for any real send.
- No credit card required to start.
Step 2 — Verify your sending domain.
You'll send from your own domain (e.g. you@yourbusiness.com) — not Resend's. That requires three DNS records: SPF, DKIM, and (recommended) DMARC. All three live in your domain registrar or DNS provider's control panel (Cloudflare, Namecheap, GoDaddy, Route 53, etc.).
For the full walkthrough, see Setting up Resend and verifying your sending domain.
In Resend: Domains → Add Domain → enter your domain → Add. Resend shows you the exact records to add. They look like this:
-
SPF (TXT record) — Resend gives you a record like:
- Type:
TXT - Name:
send(or@depending on Resend's instructions for your setup) - Value:
v=spf1 include:amazonses.com ~all
Important: if you already have an SPF record on your domain, don't add a second one. SPF is one record per domain; merge the
include:amazonses.comdirective into the existing one. (Two SPF records = both are ignored.) - Type:
-
DKIM (TXT or CNAME records, usually 3 of them) — Resend gives you values like:
- Type:
CNAME - Name:
resend._domainkey - Value:
resend._domainkey.us-east-1.amazonses.com
Add all the DKIM records exactly as shown — they're per-domain.
- Type:
-
DMARC (TXT record, optional but recommended) — start with a relaxed policy:
- Type:
TXT - Name:
_dmarc - Value:
v=DMARC1; p=none; rua=mailto:you@yourbusiness.com
p=nonemeans "monitor only, don't reject anything". Once you're confident the SPF + DKIM are correct (after a week or two of clean sends), tighten top=quarantineorp=reject. - Type:
After adding the records in your DNS provider, click Verify in Resend. They poll DNS — if your records are correct, the domain flips to Verified within minutes. If it stays Pending for more than an hour, check that you copied the values exactly (no extra spaces, no extra quotes — some DNS UIs auto-wrap TXT values in quotes which can double them).
Step 3 — Create an API key.
- In Resend: API Keys → Create API Key
- Name it
Groundbase(or whatever you'll recognize later) - Permission: Full access. This one matters — see below.
- Restrict to a specific domain if you'd like (the one you just verified)
- Click Add — Resend shows the API key once. Copy it now — they won't show it again.
Why Full access and not Sending access. Resend defines Sending access as "only send emails", and Full access as create, read, update and delete on any resource. Groundbase needs the second one for exactly one extra thing: when you connect, it creates a webhook in your Resend account so Resend can report delivery, bounces, opens and clicks back to your CRM. Creating that webhook is not sending an email, so a Sending-access key cannot do it.
The consequence is quiet rather than loud. A Sending-access key connects fine and sends campaigns fine — but nothing can report back, so Delivered, Bounced, Opened and Clicked stay at zero forever on every campaign, however many people actually received or opened them. Nothing errors; the numbers are simply never told anything.
If you already connected with a Sending-access key, create a new Full-access key in Resend and reconnect under Settings → Email. Tracking sets itself up on connect.
About that webhook. You'll see it in Resend → Webhooks, pointing at
api.groundbasecrm.com. Groundbase creates and maintains it — you never
configure it, and there's no signing secret to copy anywhere. Don't delete
it. If you do, delivery and bounce reporting stops silently; reconnect
Resend in Groundbase to recreate it.
Step 4 — Connect Resend in Groundbase.
- In Groundbase: Settings → Email → Connect Resend
- Paste the API key, click Connect
- Groundbase verifies the key against Resend and lists your verified sending domains
- Pick the default
Fromaddress (e.g.hello@yourbusiness.com) — you can override this per campaign later
Once connected, the Campaigns surface uses Resend for outbound bulk email. Your existing IMAP/SMTP account is still used for one-to-one replies + inbox reading.
Common gotchas.
- DNS records not propagating — most providers are fast (Cloudflare is near-instant), some are slow (a few traditional registrars take hours). Check propagation with
dig TXT yourbusiness.comor dnschecker.org. - SPF "too many lookups" — SPF has a 10-DNS-lookup limit. If you're already using SPF for Google Workspace + Mailchimp + something else, adding Resend can blow past it. Resend's docs suggest using SPF flattening services if you hit this.
- "Cannot send from this address" after verifying — make sure the address you're sending from matches the verified domain.
you@yourbusiness.comworks onceyourbusiness.comis verified;you@othersite.comwon't until you also verify that domain. - Resend's free tier hits the daily cap — 100 emails/day is the free limit. Upgrade to their paid tier ($20/month for 50,000 emails) if you'll send more.
Disconnecting Resend
Settings → Email → Disconnect Resend. Stops marketing campaigns from using Resend; your transactional IMAP/SMTP send still works. Re-connect any time with the same or a new API key.