Skip to main content
Admin

Email

Email settings, sender domain authentication (SPF, DKIM, and DMARC alignment), email signatures, and notification templates.

Written By Victor Raessen

Last updated 3 days ago

Messaging

Salesbuildr sends automated emails when quotes are delivered, approved, declined, or when customers are invited to log in. All templates are fully customizable with merge fields. You can also send marketing emails directly to contacts.

Email settings

The Settings tab configures the default email addresses used when sending emails from Salesbuildr.

  • Default 'from' address β€” The sender address shown on outgoing emails (e.g., demo-victor@salesbuildr.com)

  • Use site's default from address β€” When enabled, quote notification emails use the default from address above instead of the quote owner's address

  • Default BCC to β€” Email addresses that are always BCC'd on all outgoing platform emails (press Enter after each address)

  • Default recipient for leads β€” Where lead notifications are sent

  • Admin contacts β€” Company contacts who receive admin-level notifications

Note: The Default 'from' address field accepts only a single value. You cannot configure multiple default sender addresses here β€” all outgoing emails use the one address defined on this tab.

Click Send test email to verify your configuration.

Settings > Email > Settings β€” Mar 1, 2026

Domain names

The Domain Names tab manages the email sending domains for your Salesbuildr instance. Adding and verifying a custom domain improves email deliverability and prevents outgoing emails from being flagged as spam.

The exact DNS records to add are generated for your domain and shown in the product. There is no static list in this article β€” hostnames are unique to each domain.

Add a sending domain

  1. Go to Settings > Email > Domain Names.
  2. Click Create New.
  3. In the Add domain name dialog, enter the domain you send from (for example yourcompany.com) and click Add.
  4. Expand the new domain. Copy each Hostname and Value from the table and create matching records at your DNS provider.
  5. After the records have propagated, click Validate.

If you have not added a domain yet, the tab reads No domain names added yet.

Each domain shows a green check when it is valid, or a red cross when it is not. A domain must validate before you can use it as a Default 'from' address on the Settings tab β€” saving an address on an unvalidated domain fails with Domain name is not validated.

Settings > Email > Domain Names β€” Mar 1, 2026

Why Salesbuildr requires an SPF record

SPF (Sender Policy Framework) tells receiving mail servers which senders are allowed to deliver mail for your domain.

Salesbuildr sends quote emails, approval requests, invitations, and other notifications on your behalf. Those messages use your domain in the From address, but they leave through Salesbuildr's email provider β€” not your own mail server. Without SPF and DKIM (DomainKeys Identified Mail), receiving servers treat that as spoofing and send the message to spam or reject it.

The records look like DKIM CNAMEs β€” that is expected

Salesbuildr uses SendGrid's automatic security mode. In that mode, SPF is not a traditional v=spf1 TXT record on your root domain. SendGrid asks you to add CNAME records instead:

Name in SalesbuildrTypeWhat it does
dkim1CNAMEFirst DKIM signing key
dkim2CNAMESecond DKIM signing key
mail_cnameCNAMEReturn-path (bounce) subdomain. This is how SPF is implemented β€” SendGrid publishes and maintains the actual SPF record on that delegated subdomain.

All three rows are type CNAME, and two are named dkim1 and dkim2, so the table can look like DKIM-only records. The mail_cname row is the SPF path. Do not add a separate v=spf1 include:sendgrid.net TXT record for Salesbuildr on your root domain β€” that is the non-automatic setup and is not what Salesbuildr shows.

You do not need to change an existing SPF TXT record you already use for Microsoft 365, Google Workspace, or another mail system. Automatic security keeps Salesbuildr's SPF on the delegated subdomain, so it does not replace your root-domain SPF.

Each row has copy menus:

  • Hostname β€” Copy subdomain or Copy full domain
  • Value β€” Copy value or Copy value with trailing dot

Some DNS providers need the trailing dot; others reject or strip it. The product hint reads: Check with your DNS provider if the trailing dot is needed!

DNS changes often take a few minutes and can take up to 48 hours. If Validate returns SendGrid API is not ready to validated this domain name. Please try again later., wait and try again β€” the records may already be correct. If a row shows a CNAME mismatch, compare the hostname and value with what you pasted.

Why recipients see "unauthenticated sender" or "unverified sender"

Some email clients (for example Zoho Mail) show a warning such as unauthenticated sender or unverified sender even when the message is genuine and both SPF and DKIM pass.

That warning is expected for mail Salesbuildr sends on your behalf. It does not mean the domain is misconfigured, the message is spoofed, or something in Salesbuildr is broken.

Receiving servers run two related checks:

  1. Did the message authenticate? SPF asks whether this server is allowed to send mail for the bounce address. DKIM asks whether the digital signature is valid. After the three CNAME records on Settings > Email > Domain Names validate, both of those checks should pass.
  2. Does the authenticated domain match the From address the recipient sees? That match is called DMARC alignment. Some clients treat a mismatch β€” or the absence of a DMARC policy β€” as an unverified sender, even though SPF and DKIM themselves passed.

In plain language: pass means "this mail server is allowed to send this message." Align means "the domain that was allowed to send matches the name in From." Those are different questions, and a client can answer "yes" to the first and still show a warning about the second.

Why the bounce address looks different from From

Every email has two sender addresses:

  • From β€” what the recipient sees (for example quotes@yourcompany.com). This is the address you set in Settings > Email > Settings.

  • Return-path / mail-from β€” the bounce address used if the message cannot be delivered. Salesbuildr's email provider uses a dedicated bounce subdomain of your sending domain, such as em9954.yourcompany.com. That hostname is the mail_cname row on Settings > Email > Domain Names.

The bounce subdomain exists so delivery failures go back to Salesbuildr's email provider instead of mixing with your everyday inbox. You delegated that subdomain when you added the mail_cname CNAME. Seeing a hostname like em9954.yourcompany.com in the message headers is the normal result of delegated sending β€” not a hijacked or spoofed sender.

SPF is checked against that bounce subdomain, not against the From address. That is why SPF can pass while a client still notes that the bounce hostname and the From hostname are not identical.

DMARC is optional

DMARC (Domain-based Message Authentication, Reporting and Conformance) is a policy you publish yourself at your DNS provider. It tells receiving servers what to do when alignment fails. Salesbuildr does not show a DMARC record and does not require one to validate a sending domain.

You do not need to add DMARC to make Salesbuildr send mail, and you do not need to add it to "fix" the warning above. If your security team wants a DMARC policy anyway:

  1. Finish the three CNAME records and click Validate first. DMARC only works after SPF and DKIM are in place.
  2. Add a TXT record at _dmarc.yourcompany.com at your DNS provider.
  3. Start in monitoring mode β€” a policy of p=none β€” so you receive reports without changing how recipients deliver the mail. Do not jump to p=quarantine or p=reject until you have reviewed those reports and confirmed alignment for every system that sends as your domain, not only Salesbuildr.

If emails are blocked or go to spam (not just a warning banner), see Email & Notifications for outbound IP allowlisting.

Email signatures

Email signatures are added to outgoing quote emails. They are managed at the company level β€” not per user.

Managing signatures

Navigate to Settings > Email > Signature to create and manage signatures. Each signature has:

  • Name β€” A label to identify the signature

  • Header β€” HTML content that appears above the quote content in the email

  • Footer β€” HTML content that appears below (the actual signature block)

Email signatures management page with Name and Actions columns

Settings > Email > Signature β€” Mar 1, 2026

Create New Email Signature dialog with name, default toggle, header and footer rich text editors

Settings > Email > Signature > New β€” Mar 1, 2026

You can create multiple signatures for different purposes (e.g., formal vs. informal) and set one as the default. When sending a quote, the default signature is pre-selected but can be changed.

Tip: Avoid duplicating information that's already in your outgoing email template. If your email template includes your name and company, the signature should complement it β€” not repeat it.

AI-generated signatures

If OpenAI is enabled for your account, you can paste an existing email signature and Salesbuildr will reformat it automatically using AI.

Email templates

Salesbuildr sends emails at various points in the quote lifecycle. Each email type has a default template that you can customize.

Built-in email categories

Category

Templates

External quote notifications

Approval request, additional contact approval, retracted quote, expiring reminder, thank you / order confirmation

Internal notifications

Internal approval request, and other admin alerts

Sign-up

Email verification, invitation, internal user invitation

Email notification templates list showing sign-up, external quote, internal quote, and admin notification categories

Settings > Email > Templates > Notifications β€” Mar 1, 2026

Customizing email templates

Navigate to Settings > Email > Templates to edit built-in templates. Each template has:

  • Subject β€” Supports merge fields (e.g., {{quote.name}})

  • Body β€” Rich text HTML with merge fields

  • CC / BCC β€” Additional recipients

  • Attach PDF β€” Toggle to include a PDF version of the quote

  • Localization β€” Translate subject and body per language

Email template editor with subject, CC/BCC fields, rich text body editor, and live preview panel

Settings > Email > Templates > Edit template β€” Mar 1, 2026

Available template parameters with variable names and example values

Available template parameters with variable names and example values Feb 20, 2026

Custom email templates

You can create custom email templates for two purposes:

  • Custom approval emails β€” Override the default approval notification with a branded email

  • Marketing emails β€” Create promotional or informational email templates to send to contacts (see Snippets)

Custom quote email templates list with Create button

Settings > Email > Templates > Quotes β€” Mar 1, 2026

Marketing email templates list with Create button

Settings > Email > Templates > Marketing Email Templates β€” Mar 1, 2026

Manage marketing email templates at Quotes > Marketing Email Templates.

Logging outgoing emails to your HaloPSA opportunity

If you want outgoing Salesbuildr emails (quote sends, approval requests, etc.) to appear on the linked opportunity in HaloPSA, you can use HaloPSA's inbound mailbox logging feature.

How it works: HaloPSA monitors a configured inbound mailbox and threads any incoming email onto the matching opportunity when the email subject contains a reference tag in the format ##[ID]##, where [ID] is the HaloPSA opportunity ID.

Setup in Salesbuildr:

  1. Find your HaloPSA inbound mailbox address in HaloPSA under Configuration > Email > Mailbox Setup.

  2. In Salesbuildr, go to Settings > Email > Templates and open the relevant template (e.g. the approval request).

  3. In the BCC field, enter your HaloPSA inbound mailbox address.

  4. In the Subject field, append the following at the end of your subject line: ##{{quote.opportunity.externalIdentifier}}##

This will automatically tag each outgoing email with the correct opportunity ID, and HaloPSA will log it against the right record.

Note: This requires a HaloPSA inbound mailbox to be set up and actively monitored. The subject tag format (##[ID]##) is the default HaloPSA pattern β€” verify this matches your instance's configuration if emails are not logging as expected.

Template variables (merge fields)

All email templates, cover pages, and content widgets support Handlebars merge fields. Click the variables panel in the editor to browse available fields and click to insert.

Available variable categories:

Category

Examples

Recipient

{{recipient.firstName}}, {{recipient.lastName}}, {{recipient.company}}, {{recipient.email}}, {{recipient.phone}}, {{recipient.role}}

Quote

{{quote.number}}, {{quote.name}}, {{quote.link}}, {{quote.poNumber}}, {{quote.expiresAt}}, {{quote.note}}

Opportunity

{{quote.opportunity.externalIdentifier}}, {{quote.opportunity.externalLink}}, {{quote.opportunity.autotaskLink}} β€” same names in email templates, content widgets, and cover pages. Empty when the quote has no PSA opportunity id. Opportunity UDFs ({{quote.opportunity.udf.*}}) are email-only.

Quote owner

{{quote.owner.fullName}}, {{quote.owner.email}}, {{quote.owner.role}}, {{quote.owner.company}}, {{quote.owner.bookADemoUrl}}

Quote creator

{{quote.creator.fullName}}, {{quote.creator.email}} (same fields as owner)

Quote contact

{{quote.contact.firstName}}, {{quote.contact.lastName}}

Company

{{company.name}}, {{company.address.*}}, {{company.taxId}}, {{company.accountManager.*}}

Company UDFs

{{company.udf.*}} β€” Custom data points defined per company

Servicing branch

{{servicingBranch.name}}, {{servicingBranch.address.*}}

Sender / User

{{sender.fullName}}, {{user.fullName}}

Handlebars helpers:

  • Conditional: {{#if quote.total.month}}...{{/if}}

  • If/else: {{#if user}}{{user.fullName}}{{else}}an anonymous user{{/if}}

  • Iteration: {{#each quote.items}}<li>{{quantity}}x {{title}}</li>{{/each}}

  • Date formatting: {{date fieldName "format"}}

See also