# White-Label Customization Guide for AcelleMail

> AcelleMail's Extended License allows full re-branding — every "AcelleMail" reference can be replaced with your brand name, every screen recoloured, every customer email sent from your domain. This guide walks every customisation point: branding settings, custom CSS, custom domain + TLS, transactional email templates, and the upgrade-safe pattern for layout/Blade overrides.

- Canonical URL: https://acellesend.com/kb/articles/white-label-customization-guide
- Author: Martin Keller, SaaS & Business Editor
- Category: SaaS & Multi-tenant — White-label, subscription plans, billing, tenant management, branding
- Content type: tutorial · Difficulty: intermediate
- Tags: Acellemail
- Published: 2026-05-25 · Last updated: 2026-08-15
- Reading time: 11 min
- Publisher: AcelleMail Knowledge Base, https://acellesend.com/kb

---

## What this is for

AcelleMail's [Extended License](https://codecanyon.net/item/acellemail-self-hosted-email-marketing-application/10149682) allows **full re-branding** — every "AcelleMail" reference can be replaced with your brand name, every screen recoloured, every customer email sent from your domain. The Regular License doesn't allow this.

This guide walks every customisation point in the order you'd typically apply them, ending with the upgrade-safe pattern for deeper Blade/CSS overrides.

**Before you start:** make a clone of your install (rsync to a staging server) and run customisations against the clone first. Some changes are subtle enough that you'll want to compare side-by-side with the original to confirm nothing broke.

**Prerequisite:** the [SaaS setup guide](https://acellesend.com/kb/articles/setting-up-acellemail-as-a-saas-platform) is the typical context for white-labelling. You can also white-label a single-tenant install if you want a custom internal tool.

## Step 1 — Branding settings (covers ~80% of the work)

These four settings cascade to every screen + every system email:

In **Admin → Settings → General → Branding**:

| Field | Format | Where it shows |
|---|---|---|
| **App Name** | Plain text, ≤ 60 chars | Browser tab, navbar logo (if no logo image), email subject prefixes, "Powered by..." in system emails |
| **Logo** | PNG or SVG, recommended ≤ 200×60px transparent | Top-left of every authenticated page; in email headers (if email template references it) |
| **Logo Light (for dark backgrounds)** | PNG or SVG | Email header on dark themes; login page if dark mode |
| **Favicon** | 32×32 ICO or PNG | Browser tab icon |
| **Primary Color** | Hex (e.g. `#0066CC`) | Button backgrounds, link color, active-state highlights, email CTA button color |
| **Secondary Color** | Hex | Sub-actions, secondary buttons |
| **Email Footer Text** | Plain text | Bottom of every customer-facing system email (welcome, password reset, billing receipt, campaign-status notifications) |

Save → reload the admin to confirm. Then log in as a test customer to verify the customer-facing screens picked up the changes (some are cached for 5 min).

**Logo tips:**

- Use SVG when possible — scales perfectly at every resolution.
- For PNG, export at 2× the displayed size (e.g. 400×120 for a 200×60 slot) to look crisp on retina displays.
- Light variant: needed if your primary logo is a dark color and your email templates use a dark header.
- Test the favicon at small size — letterforms that look fine at 200px can be illegible at 32×32.

## Step 2 — System emails (transactional)

The system-email templates control what your customers see when AcelleMail sends them welcome / password-reset / verification / billing emails. **These are seen by every paying customer in their first 5 minutes** — they're the highest-leverage white-label work.

In **Admin → System Emails**:

| Template | When sent | Customisation priority |
|---|---|---|
| Welcome | After successful signup + email verification | **High** — first impression |
| Email Verification | Right after signup | **High** — must look legit, not phishy |
| Password Reset | On "forgot password" | Medium |
| Subscription Created | After Stripe checkout success | **High** — confirms billing worked |
| Subscription Cancelled | On cancellation | Medium — opportunity for re-engagement |
| Payment Failed | After failed renewal attempt | **High** — dunning |
| Plan Upgrade / Downgrade | On plan change | Medium |
| Campaign Status (Sent / Paused / etc.) | When customer's campaign changes status | Low |

For each template:

- Subject line: write in your brand voice; mention your app name explicitly
- Body: use the WYSIWYG to set header logo + footer
- **Test by sending to yourself.** Most issues are visible only in the rendered email, not the editor preview.

The system emails support these **merge tags** (insert at appropriate spots):

```
{NAME}              — customer's name
{EMAIL}             — customer's email
{APP_NAME}          — your branded app name (from Step 1)
{ADMIN_EMAIL}       — your admin email
{LOGIN_URL}         — link to login page
{VERIFICATION_URL}  — for the verification email
{RESET_URL}         — for the password-reset email
{PLAN_NAME}         — current plan name
{CANCEL_URL}        — link to cancel subscription
```

## Step 3 — Custom domain (per-tenant or app-wide)

There are **two distinct custom-domain features** in AcelleMail. Don't mix them up:

### 3a. Your white-label app domain (you operate)

Your SaaS app should live on **your** domain, not `app.acellemail.com`. If you've followed the [Ubuntu install guide](https://acellesend.com/kb/articles/install-acellemail-on-ubuntu-2404), your domain is already configured (the `server_name` in the nginx vhost). Verify it shows correctly in every email — Acelle uses `APP_URL` from `.env` for absolute links:

```bash
grep -E '^APP_URL' /var/www/acellemail/.env
# Should show: APP_URL=https://your-brand.com
```

If wrong, edit it and run `php artisan config:clear`.

### 3b. Per-customer custom domain (their customers)

Each paying customer can set up their own custom **tracking domain** (e.g. `click.theircompany.com`) — so tracking links in their campaigns show their brand, not yours. Enabled per plan via the `custom_domain_enabled` option (see [SaaS setup Step 3](https://acellesend.com/kb/articles/setting-up-acellemail-as-a-saas-platform#step-3--design-plans)).

The customer-facing flow:

1. Customer enters their desired subdomain in **Settings → Custom Tracking Domain**
2. AcelleMail tells them: "Add a CNAME from `click.theircompany.com` to `track.your-brand.com`"
3. Customer does it at their DNS provider; clicks Verify
4. AcelleMail attempts to provision a Let's Encrypt TLS cert (auto, via certbot)
5. On success, their campaign tracking links use `click.theircompany.com`

**Operational caveats:**

- Let's Encrypt rate-limits — at scale (100s of new custom domains/day) you may need a DNS-challenge setup or a wildcard. For Pro tier, single-domain HTTP-challenge is usually fine.
- If certbot fails (DNS not propagated, port 80 blocked), the customer sees a "Verifying..." spinner indefinitely. Add a status page or admin notification for this.

## Step 4 — Custom CSS (visual polish beyond Branding)

The Branding settings cover most visual customisation, but Acelle's Blade templates also support a **custom CSS file** for finer control.

Drop a `custom.css` file in `/var/www/acellemail/public/css/custom.css`. AcelleMail automatically loads it on every page (search `app.blade.php` for the `<link>` include). Target Acelle's existing classes:

```css
/* Tighter navbar */
.navbar-main { padding: 8px 16px; }

/* Custom button shape */
.btn-primary { border-radius: 24px; }

/* Hide "Powered by AcelleMail" text in footer (Extended License only) */
.app-footer .powered-by { display: none; }

/* Email preview header — match your brand */
.email-preview-header { background: linear-gradient(135deg, #0066CC, #6633CC); }
```

After editing, hard-refresh the admin (Ctrl+Shift+R / Cmd+Shift+R) to bypass browser cache.

**For email-template CSS** (different from app CSS), edit the system-email templates directly in **Admin → System Emails** — inline styles per the email-rendering rules in [Understanding Email Client Rendering Differences](https://acellesend.com/kb/articles/understanding-email-client-rendering-differences).

## Step 5 — Upgrade-safe Blade overrides

When the Branding settings + custom.css + system-email templates aren't enough, you can override Acelle's Blade views. The trick is doing it in a way that survives `patch-x.x.x.bin` upgrades.

**Wrong way** (will get overwritten by every upgrade):

```bash
# Don't do this:
vi /var/www/acellemail/resources/views/auth/login.blade.php
```

**Right way** — publish to a vendor-specific override directory:

```bash
mkdir -p /var/www/acellemail/resources/views/vendor/overrides
# Copy the file you want to override
cp /var/www/acellemail/resources/views/auth/login.blade.php \
   /var/www/acellemail/resources/views/vendor/overrides/auth-login.blade.php
# Edit the copy
vi /var/www/acellemail/resources/views/vendor/overrides/auth-login.blade.php
```

Then in your custom `AppServiceProvider` (or by patching the views finder), tell Laravel to look at the overrides directory first:

```php
// In a custom service provider's boot()
$this->loadViewsFrom(
    resource_path('views/vendor/overrides'),
    'overrides'
);

// And then in routes/web.php (or a router override), point the login route at:
Route::get('/login', fn () => view('overrides::auth-login'));
```

**Document every override** in a `OVERRIDES.md` file at the repo root:

```markdown
- /resources/views/vendor/overrides/auth-login.blade.php
  - Replaces /resources/views/auth/login.blade.php
  - Changes: removed "AcelleMail" wordmark, added custom social-proof block
  - Last reviewed against Acelle vN.N.N: 2026-05-16
```

When AcelleMail releases a new version, diff `auth/login.blade.php` against your override and re-apply any structural changes. Painful but unavoidable for deep customisations.

## Step 6 — Removing "Powered by AcelleMail" mentions

Under the Extended License, you can remove every reference. The places to check:

- ✅ App footer — Branding setting (Step 1)
- ✅ Email footer — Branding setting (Step 1) + System Email templates (Step 2)
- ✅ Page titles — Branding's App Name
- ⚠️ HTML `<meta name="generator">` — search `resources/views/layouts/app.blade.php`
- ⚠️ Email `X-Mailer` header — search `config/mail.php` and `app/Library/Mailer/`
- ⚠️ `.htaccess` / `robots.txt` comments — search for "AcelleMail"
- ⚠️ Any inline help links pointing to `acellemail.com/docs` — replace with your own KB

The `⚠️` items aren't user-visible to your customers but show up in source-view / email-headers / WHOIS-style checks. Audit twice if you're competing with AcelleMail-flavoured competitors.

```bash
# Quick audit grep:
sudo grep -rEi "acelle[a-z]*\\.com|powered.by.acelle" /var/www/acellemail/{resources,config,public,app} \
  | grep -v '/vendor/' | head -40
```

## Step 7 — Browser tests

After all of the above, run through this checklist:

- Open an incognito window → does the login page show your brand only?
- Sign up as a test customer → does the welcome email look like it came from your company?
- Verify the email → does the verification email look right?
- Log in → does the dashboard navbar / footer / colors all match?
- Trigger a password reset → does the reset email look right?
- Cancel the test subscription → does the cancellation email look right?
- View page source on dashboard → search for "acelle" — nothing should appear in user-visible text
- View email headers — `X-Mailer` should not say AcelleMail

## Common issues

| What you see | Likely cause | Fix |
|---|---|---|
| New logo not appearing | Browser cache | Hard-refresh (Ctrl+Shift+R); also clear AcelleMail cache: `php artisan cache:clear` |
| Email logo broken / shows alt text | Logo URL is relative; emails need absolute URL | Ensure `APP_URL` in `.env` is set to `https://your-brand.com`; re-clear config cache |
| Custom domain TLS provisioning hangs | Customer's DNS not propagated, or port 80 blocked | Check DNS: `dig +short click.theircompany.com`; check certbot logs at `/var/log/letsencrypt/letsencrypt.log` |
| Blade override not taking effect | `loadViewsFrom` not registered, or wrong namespace | Verify by `php artisan view:cache` and re-test; check `resource_path('views/vendor/overrides')` exists |
| Brand color not applied to buttons | Primary Color setting cached | Clear cache + hard-refresh; check the rendered `<button>` for the inline style |
| Email subject still shows "AcelleMail" | System email template not edited | Admin → System Emails → edit each template's subject line |
| `php artisan` after override changes fails | Custom service provider has a syntax error | Run `php -l` on the provider file; fix and re-run |

## FAQ

**Can I sell AcelleMail-derived code (not the SaaS) under my own license?** No. The Extended License lets you operate AcelleMail as a SaaS under your brand — it does not grant redistribution rights for the source code. If a customer wants on-prem, they buy their own AcelleMail license.

**Can I remove the AcelleMail footer entirely?** Yes — per the Extended License terms. The Regular License requires a "Powered by AcelleMail" link in the footer.

**What about the Acelle logo in marketing emails sent via my SaaS?** Customer-facing marketing emails (campaigns your customers send to *their* subscribers) don't have any AcelleMail branding by default — they're rendered from the customer's chosen template. No action needed unless the customer's template references AcelleMail.

**How do I theme dark mode?** AcelleMail's admin has a dark-mode toggle. Custom CSS can target `.theme-dark .your-class` for dark-mode-only rules. The Logo Light setting (Step 1) is for the dark theme.

**Can I use a Tailwind-style design system?** Yes via the `custom.css` route — but be aware that AcelleMail's existing Blade markup uses Bootstrap-flavoured class names. You'll either layer Tailwind alongside (cohabitation is fine) or replace existing classes via Blade overrides (Step 5). For most SaaS operators, the cohabitation route is enough.

**What about right-to-left (RTL) language support?** AcelleMail's UI has RTL support built-in. Set the language in Admin → Languages, and the layout flips. Custom CSS may need `[dir="rtl"]` selectors for any layout tweaks you've added.

**How often does the underlying AcelleMail UI change?** Minor (point) releases rarely touch user-visible HTML; major releases (e.g. v4 → v5) may. Plan to re-test your white-label after every major upgrade — budget 2–4 hours.

**Multi-brand from a single install?** Acelle doesn't natively support per-tenant theming (only per-customer custom domain). For multi-brand SaaS (you run two separate brands off one install), you'll need either separate AcelleMail installs (cleaner) or a Blade override that switches branding based on the requesting hostname (hacky, harder to upgrade).

## Related articles

- [Setting Up AcelleMail as a SaaS Platform](https://acellesend.com/kb/articles/setting-up-acellemail-as-a-saas-platform) — the technical SaaS setup (white-labelling sits inside this)
- [Building Your Email Marketing SaaS](https://acellesend.com/kb/articles/building-your-email-marketing-saas) — GTM / pricing context
- [Install AcelleMail on Ubuntu 24.04 LTS](https://acellesend.com/kb/articles/install-acellemail-on-ubuntu-2404) — your `APP_URL` is set here
- [Understanding Email Client Rendering Differences](https://acellesend.com/kb/articles/understanding-email-client-rendering-differences) — how the system-email templates will render across clients
- [Configuring Amazon SES with AcelleMail](https://acellesend.com/kb/articles/configuring-amazon-ses-with-acellemail) — for system-email sending
- [Post-Install Hardening Checklist](https://acellesend.com/kb/articles/post-install-hardening-checklist) — applies to white-labelled installs too
- [GDPR Compliance Guide for Email Marketing](https://acellesend.com/kb/articles/gdpr-compliance-guide-for-email-marketing) — required reading
- [Email Preheader Text — The Hidden Conversion Booster](https://acellesend.com/kb/articles/email-preheader-text-the-hidden-conversion-booster) — for the customer-facing system emails

---

## Related articles

- [Building Your Email Marketing SaaS](https://acellesend.com/kb/articles/building-your-email-marketing-saas): The technology side of an AcelleMail SaaS is solved. The hard part is the business: who you sell to, how you price, how you reach them, and how you keep them. This guide is the GTM + pricing playbook — opinionated, market-tested patterns for launching an email-marketing SaaS on the AcelleMail stack.
- [Setting Up AcelleMail as a SaaS Platform](https://acellesend.com/kb/articles/setting-up-acellemail-as-a-saas-platform): AcelleMail can be operated as a multi-tenant SaaS where each customer signs up, picks a plan, pays via Stripe, and gets an isolated workspace (lists, campaigns, automations, sending quotas). This guide walks the end-to-end setup: Extended License, Stripe (the only first-class subscription gateway today), plan design, customer onboarding flow, tenant isolation, and the operational realities of running this as a business.
- [Subscription Plan Design Strategy](https://acellesend.com/kb/articles/subscription-plan-design-strategy): The plans you offer drive your revenue more than any other product decision. Too many plans confuse buyers; too few leave revenue on the table. This guide walks the three-tier model (Starter / Growth / Pro) that 80% of email-marketing SaaS products use, the feature-gating principles that maximize upgrade conversions without frustrating low-tier users, the annual-billing discount math, and the free-trial vs freemium decision.
- [Sending Servers for a Plan: Shared Pool or Bring-Your-Own](https://acellesend.com/kb/articles/sending-server-for-plan): Every plan in AcelleMail answers one question before a customer on it can send a single email: whose sending server moves the message? You — the admin — decide that on the plan's Sending Servers tab. There are exactly two answers, and a customer on a given plan only ever sees one of them in their UI. This guide walks both options end-to-end with screenshots from the admin and the customer side, so you can pick the right mode for each plan you sell and know exactly what your customer will see after they subscribe.
- [How to create a subscription plan for your customers](https://acellesend.com/kb/articles/creating-subscription-plans-for-your-customers): Package what your customers get and pay for. Create a subscription plan in the admin panel — set its price, credits, quotas, and features — and make it available to customers at signup.
