Campaigns
Fill in Settings → Business details first. Your business name, logo, address and contact details come from there. Anything left blank there is left out here. (In campaigns, that's the business name and mailing address in your email footers.)
Campaigns are one-to-many email and SMS sends to a segment of your contacts. Newsletters, product launches, seasonal promos, multi-step drips. Campaigns can be one-shot sends OR multi-step drips with per-step channel switching.
Find them in the sidebar under Campaigns.
Send modes
Every campaign picks one of three send modes:
- Send now — one message, one moment. Choose your audience, write the message, click send.
- Scheduled — same as Send now but fires at a future time. Cron-driven, no client needed open.
- Drip — multiple steps with delays between. Each step can be email OR SMS independently. Exit conditions (open / click / reply / booked a meeting) on later steps can short-circuit the rest of the drip if the contact already engaged.
Channel per step (mixed-channel drips)
In a drip campaign, each step has its own channel toggle. You can build email → SMS → email drips. Contacts missing the channel needed for a step (e.g. no phone for an SMS step) silently skip that step — the rest of the audience continues unaffected.
Two campaign types
- Email campaign — uses your connected Resend account for the send. Drag-and-drop designer with text blocks, image blocks, button blocks, brand colors, and merge tags. One email, many recipients, your sending domain.
- SMS campaign — uses your connected Twilio account. One SMS body (with merge tags), many recipients. Sent through your default sending number unless you pick another.
Building a campaign
- Campaigns → + New campaign
- Pick a template or Start blank. Templates (welcome series, win-back, appointment reminder, etc.) can be filtered to Email or SMS and set the channel for you. A blank draft starts as email; switch it to SMS in the editor.
- Build the message. Email: drag blocks into the canvas, set colors, type your copy, add merge tags via the merge-tag picker. SMS: type the body, watch the segment counter, add merge tags.
Your colours and font, everywhere at once. With no block selected, the email designer shows Global styles: brand colour, background, Font (Clean, Classic, Friendly or Typewriter — fonts every inbox already has), Text color and Button color. Changing the text or button colour changes every text block and every button in the email, newsletters included, and new blocks follow it. A button's text turns white or dark on its own so it stays readable. To make one block different, select it and set its own colour; that block keeps it until you change the global colour again. 4. Pick the audience. Three choices: All contacts, Contacts with a tag (pick as many tags as you like; anyone carrying at least one is included), or Specific contacts you search for and tick. The recipient count updates as you choose. A template, the API or your AI assistant can set more detailed rules; the editor shows those as Custom rules. You can change the audience later from the campaign editor, and add named people with Add contacts. 5. Pick the send time. Send now or Schedule for a specific time. Scheduled campaigns fire from the per-minute server cron — no client open required. 6. Review and send. The editor's Audience panel shows how many contacts will receive it and a sample of up to three names. Test send sends one copy to an email address or phone number you type; on an email, merge tags are filled in for the contact who has that address. Send now asks you to confirm, naming how many people it goes to.
Ongoing campaigns
Every campaign is One-time unless you say otherwise: its audience is settled the moment it starts, and it finishes when the last message goes. Switch the toggle in the editor to Ongoing and it behaves like a standing programme instead. It stays in flight until you stop it, and people can join at any time, always starting from the first message:
- Automatically. Every five minutes the campaign re-runs its audience filter and queues anyone who newly matches. So a workflow that applies a tag is enough — aim the campaign at that tag and the campaign notices.
- By hand. Add contacts in the campaign editor works while an ongoing campaign is sending, and queues them straight away.
- From a workflow. The Add to campaign step puts the run's contact in. See Workflows.
The same rules apply at every door: someone with no address on that channel, who unsubscribed, or who texted STOP is skipped; nobody is queued twice, and someone who finished the drip is not started again. The daily send limit and the sending window still apply, and an A/B variant is assigned as each person joins.
The list shows it as Ongoing rather than Sending. Pause holds it; Stop ends it — anyone still queued is dropped, anyone already sent to stays in the history, and nobody can be added afterwards. While it is sending you can still rename it and change its audience and sending window, but not the message or the steps: changing what a drip says to people part-way through is a different campaign, so duplicate for that.
A/B variants
While a campaign is still a draft, the A/B test toggle in the editor splits it into versions. You get Variant A and Variant B to start and can add up to four with Add variant. Each version has its own name; on email its own subject (leave it blank to keep the campaign subject) and its own body; on SMS its own message. Copy from Variant A starts a version from the previous one. Merge tags work in every version.
The audience is split evenly at send time and every version goes out at once; nothing is held back. On a drip, the split applies to step 1 only. From step 2 everyone continues the same sequence, whichever version they were sent.
Results appear on the campaign as a By version card: sent, opened, clicked and replied, with percentages against each version's own send count. The recipients table gains a Version column. Groundbase does not pick a winner; the numbers are there and the call is yours.
Templates
Groundbase ships with a starter set of pre-built campaign templates targeting common service-business scenarios: welcome series, customer reactivation, appointment reminders, post-purchase follow-up, real estate buyer drip, recruiter outreach, monthly newsletter, win-back. The appointment reminder is a text to the contacts you tag appointment-tomorrow; it isn't tied to your calendar. For reminders that go out automatically before each booked meeting, use the reminders on your meeting types (see Booking links).
Each template includes the subject line (email) or first message (SMS), suggested audience filter, and the full body with merge tags. Start from one, customize, save your own copy.
Merge tags
Same tags as templates: {{first_name}}, {{last_name}}, {{full_name}}, {{company_name}}, {{email}}, {{phone}}, plus custom fields via {{cf.<field_key>}}. See Email integration for the full list.
Tracking + reporting
Once a campaign sends, the campaign detail page shows:
- Sent / failed counts as the dispatch progresses
- Delivered / bounced (email) — reported back by Resend within seconds of the send. A bounce records the reason, so a permanently dead address is distinguishable from a temporary failure.
- Opens + clicks (email) — only if you have set up tracking in Resend. Both are off until you do; see below.
- Replies — for SMS, when a recipient texts back. For email, when a reply arrives in a mailbox you have connected to Groundbase.
- Opt-outs — unsubscribes and STOP replies are counted and the contact is suppressed from future sends
Turning on open and click tracking
Neither is on by default, and nothing inside Groundbase switches them on. The tracking happens on Resend's side; Groundbase records the events it is sent. If you have never set this up, opens and clicks will read zero no matter how many people open or click.
Both need a tracking subdomain — a subdomain of your sending domain that Resend redirects links through, such as links.yourdomain.com.
In Resend → Domains → your domain → Enable Tracking:
- Enter a subdomain.
linksis a good neutral choice — recipients can see this domain when they hover a link, solinks.reads better thantrack.orclick. - Tick Enable click tracking, Enable open tracking, or both.
- Press Add domain. Resend then gives you a CNAME record.
- Add that record to your DNS and wait for Resend to mark it Verified.
If your DNS is on Cloudflare, Resend's Auto configure adds the record for you. If you add it by hand, it must be DNS only (grey cloud), not Proxied (orange cloud) — a proxied CNAME breaks the redirect and every link in your emails stops working. Cloudflare defaults new CNAMEs to proxied, so this is the most common way the setup fails.
Tracking is applied at send time, so it affects campaigns sent after the record verifies. It is not retroactive, and a campaign sent while the record was still pending will report nothing.
What each one costs you
- Open tracking injects a 1×1 invisible image, which is the only way an open can be measured — so an otherwise image-free email now contains an image. The numbers are also soft: Apple Mail Privacy Protection loads the pixel whether or not anyone read the message, and Gmail proxies images. Treat opens as directional, never as a denominator.
- Click tracking rewrites every link to redirect through your tracking subdomain. That subdomain starts with no reputation of its own, and if your link text displays a URL, the visible text will name a different domain than the link actually points at — a pattern spam filters score against. If you turn click tracking on, avoid bare URLs as link text: write "read the guide" rather than "example.com/guide".
Neither is required. Tagging your links with UTM parameters lets you measure campaign traffic in your analytics without any tracking subdomain — you lose per-recipient attribution, but the links stay clean.
Limits
- Email: governed by your Resend account's send limits (free tier = 100/day, 3,000/month; paid tiers scale up)
- SMS: governed by your Twilio account + your A2P 10DLC campaign caps (see A2P 10DLC)
Daily send limit, sending windows, and how campaigns share them
Two throttles sit between a campaign and the inbox, and both wait rather than fail. A recipient held back by either stays queued and goes out at the next opportunity — nothing is dropped, and nothing is marked failed.
Daily send limit (Settings → Email) caps how many campaign emails go out per day, counted in your account's timezone. It exists mainly for domain warming: a new sending domain that suddenly emits hundreds of cold emails gets filtered, so you start low and raise it over weeks.
The limit can be set two ways — for the whole account, or for one sending domain.
- An account-wide limit covers every campaign email you send, whatever address it goes out from. If you send from a single domain, this is the only setting you need.
- A per-domain limit applies only to mail from that one domain — 20 a day from a new outreach domain, say, while your established domain runs on its own separate budget.
Reputation attaches to the domain, not to your account, which is why the per-domain setting exists. If you are warming a second domain alongside an established one, a single account-wide number throttles the pair jointly and cannot stop a whole day's allowance landing on the new domain — the exact thing warming is meant to prevent.
When both are set, both apply. The account-wide limit is a total across every domain, and a domain's own limit sits inside it: an email goes out only if it fits under both. With an account limit of 80, a new outreach domain capped at 35 and your main domain capped at 100, you send at most 80 a day in total, and no more than 35 of them from the outreach domain. A domain with no limit of its own is held by the account total alone. Lowering the account-wide figure always lowers what goes out, whatever the domains are set to.
That makes the account-wide limit the place to stay under your email provider's own daily quota. Set it a little below that quota: the limit counts campaign emails only, and your provider also counts anything else you send through the same account.
Sending window (set per campaign) restricts sending to particular days and hours — Monday to Friday, 1pm to 5pm, for instance. Outside the window, queued recipients wait.
Quiet hours for texts. On top of any sending window, a campaign text goes to each person only between 8am and 9pm in their time, from their North American area code (your own time zone for a number it can't place). Outside those hours that person waits; everyone else carries on. Email isn't affected.
Neither limit belongs to an individual campaign. Several active campaigns share whichever allowance applies to them, and Groundbase interleaves them rather than draining one before starting the next — it takes a recipient from each campaign in turn. With a limit of 20 and four active campaigns, you get roughly five from each, not twenty from the first and nothing from the other three.
This matters most for multi-step drips, because follow-up steps draw on the same daily limit as first sends. As people progress through a drip, later waves take a growing share of each day's allowance and new prospects enter more slowly. A four-step drip eventually costs four sends per person, so a limit of 20 a day introduces roughly five new people per day once the drip is fully in flight. If a campaign seems to be crawling, this is usually why — check how much of the day's allowance is going to follow-ups before raising the limit.
AI assistant — draft a campaign
The AI assistant (via Claude + the Groundbase MCP) can draft a full campaign for you. Ask:
Draft a welcome email campaign for new leads, friendly tone, with a CTA to book a discovery call.
It builds the campaign as a draft (subject + body + audience filter), and you review and send. Same merge tags, same templates, same delivery path — Claude just gives you a first draft you'd otherwise type by hand.
Drip step exit conditions — what they mean
Each drip step from step 2 onward has three optional "skip this step if the contact already…" toggles. They live on the step you might want to skip, not on the step that already fired.
- Opened the previous email — only available when the previous step was email. SMS has no open tracking.
- Clicked a link in the previous email — same, email-only. Requires the previous email to have at least one trackable link.
- Replied — works for both email and SMS. For SMS, the reply detection fires when the contact texts your number after the step fired. For email, reply detection requires your "from" email mailbox to be connected to Groundbase via IMAP (otherwise replies go to a black hole and we can't see them).
If you build a 3-step drip with "skip if replied" on step 3, and the contact replied to step 2, step 3 is silently skipped and the contact's campaign journey ends there.
Open tracking caveat
Open tracking is inherently unreliable across the email industry. Apple Mail Privacy Protection auto-fires opens whether the user actually read the email or not. Gmail's image proxy sometimes skips tracking pixels for senders it's seen recently. Outlook is somewhere in the middle.
Use clicks as the more reliable engagement signal — clicks fire on actual user action.
Email reply detection requires IMAP
For drip "exit if replied" to work on email steps, the sender mailbox (the from-address) must be connected to Groundbase via IMAP. If you send from a Resend-only address like hello@yourdomain.com and don't have a mailbox monitoring that address, replies won't be detected — they arrive in a Resend-managed inbox you don't have visibility into.
Three working setups:
- Gmail "Send mail as" alias. In Gmail, add
hello@yourdomain.comas a Send-mail-as alias (via Settings → Accounts) AND set up MX records or Cloudflare Email Routing to forwardhello@yourdomain.comto your Gmail inbox. Then in Groundbase: Settings → Email → Connect, use the underlying Gmail address (not the alias) with an app password. - Real mailbox on your domain (Google Workspace, Microsoft 365, custom IMAP). Connect that mailbox in Groundbase Settings → Email.
- Skip the IMAP route — send from your personal Gmail directly. Less branded, but the inbox is already connected.
If your Inbox in Groundbase isn't loading mail, the same IMAP path that reads your inbox is the path that detects replies — fixing one fixes both.
Newsletters
Campaigns → Newsletters is for a regular update to your past clients and contacts: your local market, a few listings, a personal note. Each issue is an email campaign underneath, so it uses the same Resend account, daily limit, sending window and stats.
- + New newsletter and pick a layout. The layouts follow the industry you gave at sign-up, the same way your deal stages do. Real estate agents get a monthly market update, new listings, just sold, a seasonal check-in and a personal letter. Mortgage, insurance, trades and contractors, wellness, and consultants and other professionals each get their own set. Or start blank.
- Fill it in. Replace the [bracketed] parts with your own. Newsletters add three blocks to the designer: a contact card (your photo, name, business or brokerage, and contact details), a listing card (photo, price, address, beds, baths and square feet, a link), and market stats (a row of numbers such as average price or days on market).
- Add your mailing address to the Footer block. Every layout starts with a placeholder, and a newsletter will not send until it is replaced. Anti-spam law (CAN-SPAM, CASL) requires a real postal address.
- Send or schedule it like any campaign.
Next month, click Start next issue on the last one. It copies the design, audience and sending window into a new draft named for this month, so you only change the numbers and listings. When a new issue starts sending, anything the previous issue has not sent yet is paused, so nobody gets two issues back to back.
Big lists. Newsletters send within your daily limit (Settings → Email), so a large list goes out over several days. Resend's free plan allows 100 emails a day. Resend Pro is $20 USD a month for 50,000 emails, with no daily limit.
Lead forms
Campaigns → Forms gives you a form with its own link (app.groundbasecrm.com/f/…). No sign-in is needed to fill it in. Start from Home valuation request, Buyer inquiry or Contact me, then give it a name (the box at the top of the editor, or Name under Page; it is for your own list and the person filling it in never sees it) and change the fields, the thank-you message and the tags.
Each submission:
- finds the contact by phone or email, or creates one. Existing details are only filled in where blank, never overwritten;
- tags the contact with the form's tags (for example
lead:home-valuation); - adds a note with every answer and a line on the contact's timeline;
- creates a follow-up task due in an hour (you can turn this off);
- fires the form.submitted event, so a workflow or webhook can react.
The page. The form's Heading sits at the top, and the Intro under it can be up to 5,000 characters. The intro and text blocks take simple formatting: **bold**, a line starting with - for a bullet, a blank line for a new paragraph, and web addresses become links.
Fields. Short text, long text, email, phone, address, a choice from a list, a date, a tick box, hidden fields, and text blocks. Name, email and phone fill in the contact; every other answer goes on the note.
- Tick box: your wording sits beside the box, up to 500 characters, so it can hold full consent wording such as "I agree to receive text messages from Acme about my project. Message and data rates may apply. Reply STOP to opt out." Tick Required and the form can't be sent without it. The note on the contact records the wording and the time it was ticked. Set Ticking it records consent to (email, texts, or both) and a ticked box also files a consent record on the contact (see Consent records in the contacts article).
- Text block (or Add text): words between the questions, with nothing to fill in. A small heading, a paragraph, or both. Use one to split a long form into parts ("About your business"), or to explain something right where it matters, such as what you ask of people just above an agreement tick box.
- Hidden: not shown on the form. It takes its value from the form's link, so a field named
utm_sourcesaves facebook from…/f/abc123?utm_source=facebook. Give it a value for when the link has none. Use one link per place you share the form and you can see where each lead came from.
After they submit, the form shows your thank-you message, or sends them to a page you choose instead (a thank-you page on your own website, say): put its address under Or send them to a page.
Put the link on your website or social profiles, or on a Button block in an email: the Button's settings have a link to one of your forms picker. When the link is clicked from a campaign email, the form fills in the reader's name and details, and the submission shows which campaign it came from.
Make it look like yours. The Appearance card in the form editor sets the button colour, the page background, the text colour and the font (Clean, Classic, Friendly or Typewriter — standard fonts that need no download), so a form on your own website matches it. A small preview updates as you change them, and Reset to the default look puts Groundbase's colours back. The button's text turns white or dark on its own, whichever is easier to read. Your AI assistant can change these too.
Hot-lead alerts
The first time someone clicks a link in a newsletter, Groundbase creates a high-priority task due now, such as Hot lead: Jane Doe clicked realtor.ca in October market update, and tags the contact hot-lead. A workflow triggered by that tag can text you or start a follow-up drip.
There is at most one open hot-lead task per contact in any 7 days, and unsubscribe clicks never count. Neither does a click in the first two minutes after the email was sent or delivered: mail security scanners (such as Microsoft Safe Links) open every link in a message as it arrives, and that isn't a person reading it. Those clicks still count as clicks in the campaign's stats. Regular campaigns do not create hot-lead tasks; their clicks show on the contact's timeline as before. Click tracking must be on for your Resend domain.
Footer & unsubscribe
The Footer block in the email designer shows a short line about why the reader is getting the email, your business name and mailing address, and an unsubscribe link. A new Footer block, and a newsletter started from a template, begin with the business name and address from Settings → Business details; with no address there, the footer says "[Your mailing address — required by law]" and a newsletter won't send until a real address is in. You can change any of it in the Footer block's own settings, for that email only. The {{unsubscribe_url}} merge tag gets substituted at send time with a unique per-recipient unsubscribe URL.
Don't remove the Footer block from cold outreach campaigns. CAN-SPAM and CASL require an unsubscribe link and a physical mailing address; the Footer block carries both (once your address is filled in), and a campaign without it sends neither.
Suppression — unsubscribed contacts never receive future campaigns
Once a contact clicks unsubscribe, they're added to your suppression list and every future campaign skips them. There's no per-campaign override — opt-outs are global per user account. The address is suppressed, not just the contact, so a duplicate contact with the same email is skipped too.
Settings → Email suppression shows the whole list and why each address is on it: Unsubscribed, Bounced, or Added here. Paste addresses into the box to suppress people who opted out somewhere else, such as an unsubscribe list exported from your old email tool. They're skipped whether or not you have a contact with that address yet, including contacts you import later. Emails you send one at a time are not blocked by this list.
If someone asks to hear from you again, click Remove next to their address. A Bounced address can't be removed there: fix the address on the contact and take the bounced tag off.
Send timing in production
Use day or hour delays for real drips. Sub-hour delays (like 3 minutes between steps) work mechanically but make sends look like machine-generated marketing to Gmail's spam filter, which can push the second email to spam regardless of content. Real-world drips space steps 1–3 days apart.
Cost
Groundbase doesn't charge per send. Email: Resend bills your account directly (free tier covers most small businesses). SMS: Twilio bills your account directly at their per-segment rate. We don't sit between you and the meter on either.