CAPTURECAPTURE Team
Email Warm-up & Migration (Operator Guide)

Setup Runbook (GHL / LC Email)

This runbook covers every step an operator must complete before the first member email leaves the new sending infrastructure. Work through the steps in order — each one is a dependency for the next. Steps that require registrar access are marked [REGISTRAR]; steps that require GHL UI access are marked [GHL].

Applies to: UK golf clubs (500–1,000 members) migrating from Intelligent Golf into GoHighLevel / LC Email. Sending identity: one dedicated subdomain per club — mail.<clubdomain>.co.uk. IP: GHL's shared Mailgun pool. Dedicated IPs require 100,000+ emails per month to sustain reputation — this volume is 2–3 orders of magnitude below that floor. Shared IP is correct and deliberate; a dedicated IP would actively harm a club at this scale.

Authentication is the true gate, not volume. Complete every DNS and Postmaster step before sending a single email.


Key Thresholds — Refer to These Throughout

MetricGreenAmber — reviewPause / stop
Gmail spam complaint rate<0.10%0.10–0.20%>0.20% urgent; ≥0.30% hard stop
Hard bounce rate<0.50%0.50–2.0%>2.0% pause new volume; >3.0% stop and re-validate entire list
Unsubscribe rate>1.0% review content and frequency
Authentication pass rate~100%Any unexplained dropAny meaningful downward trend — pause scaling
Soft bounce / deferral rate<2%2–5%>5% at a single major provider — hold that provider's ramp

Do not measure success by open rate. Apple Mail accounts for roughly 49% of email opens, and Mail Privacy Protection pre-fetches tracking pixels for those users. Google does not verify third-party open counts, and Gmail retired its domain/IP reputation dashboard on 30 September 2025. Judge every stage by complaints, hard bounces, blocks/deferrals, Postmaster spam rate, clicks, replies, and real club conversions.


Step 0 — Prime Members Before the New Subdomain Sends Anything

[REGISTRAR / CLUB] This step happens before any GHL configuration. It is the single highest-leverage action in the entire process.

Because Intelligent Golf's sending infrastructure is already trusted by your members' inboxes, use it one final time to do three things:

  1. Send a final broadcast from Intelligent Golf announcing the new sender name and the new address (mail.<clubdomain>.co.uk). Ask members to check their junk folder and add the new address to their contacts. Keep it short — one paragraph, from a named human at the club.
  2. Mirror the notice on the member-portal login page (the screen members see when they log in to Intelligent Golf). Even a single line — "We're updating our email address — look out for emails from mail.<clubdomain>.co.uk" — is enough.
  3. Add a note in the clubhouse and pro shop (a small printed sign or counter card). "Our emails now come from mail.<clubdomain>.co.uk — add us to your contacts."

This rides IG's existing trust to prime members before your new domain sends a single byte. Members who recognise the new address are materially less likely to mark it as spam — which protects your domain reputation from day one.

A one-off transition SMS reinforces the same message on Day 1, fired in parallel with the Trust Bridge email (Step 10.3). It is a strictly neutral service message and is governed by its own page — build it to the rules in the SMS Transition Policy before sending.

Do not skip this step. The Trust Bridge email in Step 10 is not a substitute — it is the first send from the new domain, not a pre-primer.


Pre-flight: check the club's root domain first

The new sending subdomain inherits a small head start from its parent domain — so verify the root is healthy before building on it:

  • Look up the root domain on the Spamhaus blocklist checker and the MXToolbox blacklist check
  • Confirm the root publishes an SPF record, and either already has a DMARC record or tolerates adding one (Step 2.3 publishes DMARC at the root)
  • Ask the club whether the root domain has ever been used for bulk sending, or has had any past deliverability incidents
  • If the root is blocklisted or has a burned sending history, escalate before proceeding — do not build the subdomain on a damaged parent

This is a two-minute job. Do it before creating anything.


Step 1 — Create the Dedicated Sending Subdomain and From Identity

[GHL] GHL agency account → relevant sub-account (club)

  1. Log in to GHL. Navigate to the club's sub-account.
  2. Go to Settings → Email Services → LC Email.
  3. Under Dedicated Sending Domain, click Add Domain.
  4. Enter the sending subdomain: mail.<clubdomain>.co.uk
    • Use mail. as the standard prefix. If mail. is already in use on that domain, fall back to news. or members..
  5. GHL will display the DNS records it requires. Do not click Verify yet — complete Step 2 at the registrar first.
  6. Once DNS is live, return here and click Verify Domain.
  7. Under From Name, set: [Club Name] Members — for example, Highgate Golf Club Members.
  8. Under From Email, set: info@mail.<clubdomain>.co.uk. This must exactly match the subdomain you created. A mismatch is a DMARC alignment failure.
  9. Under Reply-To, set the club manager's real address (e.g. manager@<clubdomain>.co.uk) so replies land in a human inbox and generate positive engagement signals.
  10. Save. GHL will show the domain as Active once DNS propagates (up to 48 hours; most resolve within 2–4 hours).

Alignment rule: the domain in the visible From address, the DKIM signing domain, and the SPF-authorised domain must all be mail.<clubdomain>.co.uk. Never set the From to info@<clubdomain>.co.uk whilst signing from the subdomain — that is an alignment failure and will trigger SMTP rejection at Gmail and Yahoo.


Step 2 — DNS Records at the Registrar

[REGISTRAR] You need login credentials and the ability to create DNS records on <clubdomain>.co.uk. Common UK registrars: 123-reg, GoDaddy, Namecheap, Heart Internet, names.co.uk.

Work through each record type below in order. After adding all records, return to GHL (Step 1) and click Verify Domain.

Golden rule: publish exactly the records GHL displays for the sending domain — copy each host and value from GHL's setup screen rather than hand-authoring them. The example values below show the shape of each record so you can recognise it; where GHL's displayed value differs, GHL's value always wins.

2.1 SPF Record

What it does: tells receiving mail servers which infrastructure (Mailgun / LC Email) is authorised to send on behalf of your sending domain.

Do not hand-author the SPF value. SPF is evaluated against the envelope (RFC5321.MailFrom / Return-Path) domain, not the visible From address. On Mailgun / LC Email, the Return-Path is typically a Mailgun-controlled bounce subdomain. GHL will ask you to add both an SPF record for the header subdomain (mail.<clubdomain>.co.uk) and a Return-Path CNAME (so the envelope domain authenticates and aligns for DMARC). Add every record GHL shows — publishing only a single hand-typed SPF at mail. will leave the envelope domain uncovered, causing SPF alignment failures.

FieldValue
TypeTXT
Host / Namemail (plus any additional host(s) GHL specifies for the Return-Path / bounce domain)
Value (example — use GHL's value)v=spf1 include:mailgun.org ~all

Notes:

  • ~all is a soft fail; correct during initial setup. Do not use -all until DMARC is enforced at p=reject and all legitimate sending paths are confirmed.
  • There must be only one SPF TXT record per hostname. If a record already exists at mail., merge the include: into that single record.
  • GHL commonly supplies a separate Return-Path / bounce CNAME (e.g. email.mail.<clubdomain>.co.uk pointing to a Mailgun target). Add it. Skipping it is the most common SPF-alignment failure.

Verify in GHL: Settings → Email Services → LC Email → your domain → Check DNS. SPF and Return-Path rows should show a green tick.

Verify externally (presence check): MXToolbox SPF Lookup with host mail.<clubdomain>.co.uk.

Verify alignment (the check that actually matters): send the seed test (Step 9) and inspect Authentication-Results in the raw message source. You are looking for spf=pass on the aligned domain alongside dkim=pass and dmarc=pass. If SPF passes on a non-aligned domain, fix the Return-Path record before going live.


2.2 DKIM Record

What it does: cryptographically signs outgoing email so receiving servers can verify the message was not tampered with in transit and genuinely originates from an authorised sender.

Key size: 2048-bit — stronger than the 1024-bit minimum Google requires. GHL/Mailgun provisions this automatically; confirm in the record GHL displays.

FieldValue
TypeTXT
Host / NameGHL-provided — looks like <selector>._domainkey.mail
ValueGHL-provided — a long string beginning v=DKIM1; k=rsa; p=...

Copy these values exactly from GHL's DNS setup screen. A single character error causes permanent signing failure.

Verify in GHL: Settings → Email Services → LC Email → your domain → Check DNS. DKIM row should show a green tick.

Verify externally: MXToolbox DKIM Lookup with the selector and domain GHL provided. Confirm dkim=pass on the aligned domain in the seed test's Authentication-Results.


2.3 DMARC Record

What it does: tells receiving mail servers what to do with messages that fail SPF/DKIM alignment, and where to send aggregate reports so you can monitor authentication health.

Start at p=none (monitoring only — messages that fail are still delivered). This is correct for the first 4–8 weeks whilst you confirm all sending paths are authenticated.

FieldValue
TypeTXT
Host / Name_dmarc at the root domain — i.e. _dmarc.<clubdomain>.co.uk
Initial valuev=DMARC1; p=none; rua=mailto:dmarc-reports@<clubdomain>.co.uk; fo=1; adkim=r; aspf=r

Replace dmarc-reports@<clubdomain>.co.uk with a real monitored inbox — the club manager's address or a dedicated alias.

Progression path:

StagePolicy
Weeks 1–8 (until aggregate reports show 100% alignment)p=none
Once alignment is confirmed cleanp=quarantine; pct=10, then pct=100
Final statep=reject; pct=100

Do not rush to p=reject during the ramp. Moving to enforcement before all legitimate sending paths are verified will cause mail to be rejected.

Verify in GHL: Settings → Email Services → LC Email → your domain → Check DNS. DMARC row should show a green tick.

Verify externally: MXToolbox DMARC Lookup with domain <clubdomain>.co.uk.


2.4 Custom Tracking CNAME

What it does: routes link-click tracking through a subdomain that matches the club's own domain family, rather than GHL's shared tracking domain. This maintains alignment, avoids reputation cross-contamination, and removes the via ghl-link.com appearance in link previews.

FieldValue
TypeCNAME
Host / Namelink — i.e. link.<clubdomain>.co.uk
ValueGHL-provided target (e.g. tracking.leadconnectorhq.com)

Configure in GHL: Settings → Email Services → LC Email → Tracking Domain → Add Custom Tracking Domain → enter link.<clubdomain>.co.uk → save → GHL displays the CNAME value.

Verify: once DNS propagates, the tracking domain screen in GHL should show Verified. Also run dig CNAME link.<clubdomain>.co.uk in a terminal. GHL auto-provisions an SSL certificate — confirm the URL resolves over HTTPS in a browser.


2.5 PTR / Reverse DNS

What it does: maps a sending IP address back to a hostname. Google, Yahoo, and Microsoft all require valid PTR records on sending IPs.

Because you are using GHL's shared IP pool, GHL and Mailgun manage PTR records on those IPs. No action is required from you. Confirm with GHL support or LC Email documentation that the shared IPs carry valid forward-confirmed reverse DNS.


2.6 TLS

What it does: encrypts email in transit between sending and receiving mail servers. Google and Yahoo require STARTTLS for all bulk mail.

TLS is enabled by default on LC Email / Mailgun infrastructure. No DNS record is required. Verify it is active by sending a test email to a Gmail address and viewing the message source — look for TLS in the Received: header chain.


2.7 DNS Records Summary

Publish the exact host and value GHL displays for each record. The example values below show the shape only.

RecordTypeHostValueWhere added
SPF (header domain)TXTmailv=spf1 include:mailgun.org ~all (example)Registrar
Return-Path / bounceCNAME (or TXT)As GHL specifies (e.g. email.mail)GHL-provided Mailgun targetRegistrar
DKIMTXT<selector>._domainkey.mailv=DKIM1; k=rsa; p=<key> (from GHL)Registrar
DMARCTXT_dmarc (root domain)v=DMARC1; p=none; rua=mailto:...Registrar
Tracking CNAMECNAMElinkGHL-provided targetRegistrar
PTR / rDNSGHL-managed on shared IPsNo action needed
TLSGHL-managedNo action needed

Do not skip the Return-Path / bounce record. SPF is evaluated against the envelope domain. The From-domain SPF record alone is insufficient for clean SPF alignment. If GHL lists a Return-Path or bounce record, it is mandatory.

Allow up to 48 hours for full propagation, though most records resolve within 2–4 hours. Do not proceed to Step 3 until all records show green in GHL's DNS check. Final confirmation of alignment comes from the seed test in Step 9 — not from MXToolbox alone.


Step 3 — Google Postmaster Tools on Root Domain and Subdomain

[GHL / GOOGLE] Enrol both the root domain and the sending subdomain in Google Postmaster Tools before the first send. Postmaster is where you read the spam-rate signal that Google actually uses to make filtering decisions.

Set expectations now: at club volume, Postmaster will often show no data at all for days or weeks after the first send — its dashboards stay blank below meaningful Gmail volume, and a blank Postmaster is normal, not a green light. The operational gates during the ramp read from Mailgun events — see Monitoring.

3.1 Root Domain

  1. Go to https://postmaster.google.com and sign in with the agency's Google account.
  2. Click + → enter the root domain: <clubdomain>.co.uk.
  3. Google provides a TXT verification record — add it at the registrar:
    • Type: TXT
    • Host: @ (or <clubdomain>.co.uk depending on your registrar)
    • Value: google-site-verification=<provided-value>
  4. Click Verify in Postmaster Tools. Allow up to 24 hours.
  5. The Domain Reputation and Spam Rate graphs appear within 48–72 hours once mail starts flowing.

3.2 Sending Subdomain

Repeat the process for mail.<clubdomain>.co.uk:

  • Add the verification TXT record at the subdomain level (host: mail).
  • Verify in Postmaster Tools.

Subdomain reputation is what matters most — this panel shows complaint and spam-placement signals directly tied to your LC Email sends. Monitoring both root and subdomain lets you detect spillover effects and confirm the subdomain is being assessed independently.

3.3 Microsoft JMRP

Because you are on GHL's shared IP pool, SNDS IP-level access is unavailable — GHL manages the IP relationship. Enrol JMRP (Junk Mail Reporting Programme) instead:

  1. Enter the club's sending domain (mail.<clubdomain>.co.uk) and a reporting address.
  2. Microsoft sends a complaint notification whenever an Outlook/Hotmail user marks your mail as junk.
  3. Suppress every JMRP-reported address immediately upon receipt.

UK golf club lists typically carry a meaningful share of Outlook/Hotmail/Live addresses (particularly older members) — enrol JMRP at every migration.


Step 4 — Import the Suppression List First

[GHL] This step must happen before any contacts are imported. Mailing a previous unsubscribe or complainant on a brand-new domain is both a UK GDPR/PECR breach and a deliverability catastrophe.

The right to object to direct marketing is absolute. Changing email platforms does not reset or expire a previous opt-out.

4.1 Export from Intelligent Golf

  • All historical unsubscribes
  • All historical hard bounces
  • All historical spam complaints (if the platform surfaces them)
  • Any members who lodged a formal objection to marketing communications

Combine into a single CSV with at minimum an email column.

4.2 Import into GHL

  1. In GHL, navigate to the club's sub-account.
  2. Go to Email Marketing → Settings → Suppression List (or Email Services → Suppression).
  3. Click Import / Upload CSV.
  4. Map the email column and import.
  5. Confirm the count matches your export exactly.

4.3 Document the Count

Record the suppression list size in the club's migration log. This is your compliance evidence that historical opt-outs have been carried forward. The ICO may ask.


Step 5 — Import Contacts and Run LC Email Validation

[GHL]

5.1 Pre-Import List Hygiene

Work through this checklist before uploading the CSV:

  • Deduplicate — one row per email address. Remove exact duplicates.
  • Syntax check — remove addresses with obvious typos (double @, missing TLD, spaces).
  • Hard bounces — remove all addresses that previously hard-bounced in Intelligent Golf.
  • Suppression cross-reference — remove any address already in the Step 4 suppression list.
  • Role addresses — suppress generic role inboxes: info@, office@, admin@, bookings@, enquiries@. For club-stakeholder roles (captain@, secretary@, manager@, proshop@), verify individually — include only if the address belongs to a real, named, opted-in individual.
  • Shared / family addresses — one record per address. Common in joint memberships.
  • Engagement columns — include last click date, last reply date, last booking/tee time date from Intelligent Golf. These drive Tier segmentation in Step 6.
  • Consent / lawful basis column — tag each record (e.g. soft_opt_in, explicit_consent, member_2024).
  • Member status column — tag each record: current_member, lapsed_member, visitor, prospect, staff.
  • Domain breakdown audit — count the distribution of email domains (Gmail, Outlook/Hotmail/Live, Yahoo, iCloud, corporate). Note the percentages — you will use these when planning per-provider batches in Step 8.
  • Chronically unengaged contacts — suppress anyone with no engagement signal in 12+ months and no recent transactional touchpoint. Do not import them into the active send pool.

5.2 Import

  1. GHL → Contacts → Import Contacts (or Upload CSV).
  2. Map all columns to GHL contact fields. Create custom fields for engagement data not covered by standard GHL fields (e.g. ig_last_click_date, ig_last_booking_date, ig_engagement_tier).
  3. Under Import Settings, tick "Skip suppressed contacts".
  4. Complete the import.

5.3 LC Email Validation

GHL's built-in email validation checks for invalid, risky, or problematic addresses before your first send. Cost: approximately $2.50 per 1,000 contacts.

After the import completes, go to Email Marketing → Settings → Email Validation (search "email validation" in GHL Help if the menu location has moved). Select the imported contacts and run validation.

ResultAction
ValidKeep. Proceed to Tier segmentation in Step 6.
Invalid / hard failureSuppress immediately.
Risky / catch-allTag as validation_risky. Exclude from Tier A and B sends. Place in Tier D or E.
Disposable / temporarySuppress.
UnknownTag as validation_unknown. Include in Tier C or D only after warm-up signals are stable.

Document the result breakdown in the migration log.


Step 6 — Build Tier A–E Smart Lists

[GHL] Smart Lists are saved filtered contact views that update dynamically. Build one per tier using the engagement data imported in Step 5.

Tier Definitions

TierDefinitionRamp role
Tier AClicked, replied, booked, or otherwise actively engaged within the last 30 days (from Intelligent Golf data)Start here — Day 1 of the ramp
Tier BEngaged within 31–60 daysAdd once Tier A metrics are stable (typically Days 4–7)
Tier CEngaged within 61–90 daysAdd in Days 8–14, only if bounces and complaints remain in green
Tier DNo measured engagement data but a current, active member with a legitimate relationship — or engagement data unavailable60-day fallback track only; add after stable warm-up signals
Tier ENo engagement for 90+ days, previously bounced, previously complained, or consent basis unclearSuppress initially. If ever mailed, use a managed re-permission approach — never a bulk blast.

Building Smart Lists in GHL

  1. Go to Contacts → Filters.
  2. Define the segment criteria. Example for Tier A:
    • ig_last_click_date is after [today minus 30 days]
    • OR ig_last_booking_date is after [today minus 30 days]
    • AND Suppressed is false
    • AND Email Opt-out is false
  3. Click Save as Smart List. Name it [Club Name] — Tier A (30-day engaged).
  4. Repeat for Tiers B, C, D, and E with the appropriate date ranges.
  5. Create an additional Smart List: [Club Name] — All Mailable (suppression-clean, opted-in, validation status not invalid or disposable).

If Intelligent Golf does not provide engagement-window data, treat all contacts conservatively. Place in Tier D unless there is a documented recent interaction (e.g. a tee booking in the last 60 days from a separate system). Use the 60-day ramp track.


Step 7 — One-Click Unsubscribe and Preference Centre

[GHL]

7.1 RFC 8058 One-Click Unsubscribe Headers

Google and Yahoo require machine-readable List-Unsubscribe and List-Unsubscribe-Post headers on all marketing emails at bulk scale. GHL's LC Email includes this natively.

Verify it is enabled:

  1. Settings → Email Services → LC Email.
  2. Confirm "One-Click Unsubscribe" or "List-Unsubscribe Header" is toggled on.
  3. If no toggle is visible, inspect the raw source of a test email: Gmail → three-dot menu → Show Original → search for List-Unsubscribe. Both List-Unsubscribe and List-Unsubscribe-Post: List-Unsubscribe=One-Click must be present.

Never remove or suppress these headers. Their presence is a compliance requirement and signals responsible sending behaviour to Gmail and Yahoo.

Every marketing email must contain a visible unsubscribe link in the body, not just in the header. GHL's standard templates include an unsubscribe footer token — verify it is present. In GHL templates, use:

{{contact.unsubscribe_link}}

Yahoo requires unsubscribe requests to be honoured within two days. GHL processes opt-outs automatically — test this by clicking unsubscribe on a seed email and confirming the contact is suppressed in GHL within minutes.

A preference centre lets members choose which types of communication they receive. This materially reduces total unsubscribes by giving members an alternative to opting out entirely.

Build in GHL using a Survey or Form:

  1. Sites → Surveys (or Forms).
  2. Create [Club Name] Email Preferences.
  3. Add checkboxes for each communication type:
    • Competition results and draw sheets
    • Course conditions and maintenance notices
    • Member events and social calendar
    • Pro shop news and offers
    • Essential member communications only (renewals, AGM, course closure)
  4. Map each field to a custom contact field in GHL.
  5. Build workflows to add/remove contacts from relevant Smart Lists based on preference selections.
  6. Link from every email footer: Manage your email preferences: {{preference_centre_url}}

A preference centre does not replace the right to unsubscribe entirely. A member who wants to stop all marketing emails must be able to do so with a single click. The preference centre is an additional option offered before the global opt-out.


7.4 Verify Reply Routing (Do Not Skip)

Replies to the subdomain address should route via Mailgun inbound into GHL's Conversations inbox. Replying from Conversations sends from the subdomain address — a 1-to-1, eagerly-awaited send from the new domain, and the best follow-on reputation signal available. If inbound replies are instead forwarded to the manager's Outlook, the manager will reply from the club's root-domain address and the subdomain earns nothing from the exchange.

  • Send a test reply to the From address and confirm it appears in GHL Conversations
  • Check the LC Email reply settings and confirm inbound replies are not being forwarded to an external address — if a forwarding address is set, remove it
  • Name the reply owner — the specific person who will monitor Conversations and answer member replies during the ramp

The full reply protocol, including the exception for genuinely personal or sensitive matters, is at Templates.


Step 8 — Manual Throttling at Cutover

[GHL] This step is one of the most commonly skipped, and one of the most damaging if ignored.

GHL has no native send-throttling for broadcasts. When you trigger a bulk send, GHL bursts the entire queue against Mailgun's shared-pool rate limits (~300 emails per hour on the Flex plan default). On a brand-new sending domain, blasting even a few hundred emails simultaneously causes deferrals, rate-limit blocks, and reputation damage that takes weeks to recover from. Manual batching is mandatory.

8.1 The Default Ramp — Engagement-Gated, 7–14 Days

The shared Mailgun IP is already warm. You are not warming an IP — you are building reputation for a new subdomain. The correct mental model is: widen your audience in steps gated on metrics, not on a calendar.

DayAudienceDaily volumeHourly capGate to proceed
Day 1Tier A onlyApproximately 15% of the active base (about 50–150 for a typical club; ~105 for a 700-member club)15–20/hr— (first send)
Days 2–3Tier A100–150 emails20–30/hrComplaint rate <0.10%, hard bounce <0.50%
Days 4–6Tier A + Tier B (best segment)150–250 emails30–50/hrPrevious stage metrics stable in green
Days 7–10Tier A + Tier B250–400 emails50–75/hrPostmaster spam rate pass, no deferral pattern
Days 11–14Tier A + Tier B + controlled Tier C400–600 emails75–100/hrAll metrics in green for 3+ consecutive days

Scale-up is gated on metrics, not the calendar. If Day 3 shows a 0.12% complaint rate, hold at Day 1–2 volume until it falls below 0.10% — even if that takes a week.

30/60-day fallback tracks exist for clubs with genuinely messy or stale data — see Ramp Schedule for the full staged tables.

8.2 How to Manually Batch in GHL

GHL's Drip Mode (bulk action) is the closest built-in tool to controlled throttling:

  1. Contacts → select the relevant Smart List (e.g. [Club Name] — Tier A).
  2. Select all contacts in the list.
  3. Bulk Actions → Send Email.
  4. Select the email campaign or template.
  5. Toggle Drip Mode ON.
  6. Set rate: e.g. 20 emails per hour.
  7. Set start time: always use an off-the-hour start — e.g. 09:13, not 09:00. Many senders fire at the hour; off-the-hour starts avoid congestion at receiving servers.
  8. Review the total send-time estimate GHL displays.
  9. Click Send.

For Tier A on Day 1 with 80 contacts at 20/hr, the send completes in about 4 hours — that is correct and intentional.

8.3 Monitoring Delivery via Postmaster and Mailgun

GHL's in-platform view on a custom SMTP domain shows opens and clicks only. It does not surface delivery failures, bounces, or deferrals with the granularity you need during a ramp. Use both:

  • Google Postmaster Tools → Spam Rate and Domain Reputation (your primary signal).
  • Mailgun analytics (accessible via LC Email's connected Mailgun account or GHL's email logs filtered by "failed" / "deferred") → bounce and deferral detail.

8.4 Scale-Up Gate Checklist

Before advancing to the next ramp stage, all of the following must be true:

  • Previous stage's Gmail spam complaint rate: <0.10%
  • Previous stage's hard bounce rate: <0.50%
  • No active block or deferral pattern at any major provider
  • Authentication pass rate: ~100%
  • Click or reply signals stable or rising
  • Google Postmaster domain reputation: not "Low" or "Bad"

If any metric is amber, hold for a further 3–5 days and recheck. If any metric hits the pause threshold, stop immediately — do not advance.

8.5 Sending Hours

Schedule sends to land during normal club operating hours: roughly 08:30–17:30, Monday–Friday. Avoid late evenings and weekends during the first two weeks — members are less likely to engage, which reduces positive signals during the critical early period.


Step 9 — Seed Panel QA Before the First Member Send

[OPERATOR] This step must complete before any email reaches a club member. Its purpose is to verify inbox placement, authentication, content rendering, and the unsubscribe mechanism all work correctly.

9.1 The Seed Panel

James's real, years-old personal inboxes across Gmail, Outlook, iCloud, and Yahoo serve as the seed panel. These are genuine accounts with normal history — they provide a representative diagnostic of how the first member sends will behave across major providers, and give a light one-time positive signal on the first 1–3 sends.

Rules for seed panel behaviour:

  • Stagger seed receives over 2–3 hours. Do not send to all seeds simultaneously.
  • Each inbox should perform a different, natural action:
    • 1–2 inboxes: open and read (scroll through the email)
    • 1 inbox: reply with a short genuine response (e.g. "Looks good, thanks")
    • 1–2 inboxes: click the main CTA link
    • 1 inbox: add the From address to contacts
    • 1 inbox: leave unread (simulates a real non-opener)
  • Only mark "Not Spam" if the email actually landed in spam. Never manually move an email from spam if it was correctly detected as problematic.
  • Do not repeat this on every campaign. The seed panel is a placement diagnostic and a one-time positive nudge on the first 1–3 sends only — not an ongoing engagement routine. Dormant seed inboxes used repeatedly can trigger dead-list penalties; automated seed-marking routines are detected by Gmail and Microsoft as artificial behaviour.

The seed panel is a real but marginal signal. It is also the only practical per-domain Outlook placement diagnostic available (SNDS is IP-level on the shared pool and is managed by GHL). Its value comes from genuineness, not volume.

9.2 QA Checklist

Run every item before the first member send:

Authentication:

  • View email source in Gmail. Confirm Authentication-Results shows spf=pass, dkim=pass, and dmarc=pass
  • Confirm SPF passes on the aligned / authenticated domain (the envelope / Return-Path domain GHL supplied — see Step 2.1), not merely on some unrelated domain
  • From domain in the email header exactly matches mail.<clubdomain>.co.uk
  • No via [third-party domain] warning visible in Gmail sender line
  • List-Unsubscribe and List-Unsubscribe-Post headers present in raw source

Inbox placement:

  • Gmail: Primary inbox (not Promotions, not Spam)
  • Outlook / Hotmail: Inbox (not Junk)
  • iCloud / Apple Mail: Inbox
  • Yahoo: Inbox

If any seed email lands in Spam: stop. Diagnose before proceeding to member sends. Common causes: DMARC alignment failure (often a missing Return-Path / envelope record from Step 2.1), missing unsubscribe header, content triggers (URL shorteners, image-only body, spam-flagged phrases). Do not send to members until inbox placement is confirmed clean on all providers.

Content and rendering:

  • Subject line renders correctly (no encoding artefacts)
  • From name shows as expected (e.g. Highgate Golf Club Members)
  • Email renders correctly on mobile and desktop
  • All links work and resolve to the correct destinations
  • No broken images
  • Unsubscribe link is visible and working — click it and confirm the contact is suppressed in GHL within minutes
  • Preference centre link works (if included)
  • Plain-text version is present and readable (check raw source)

Tracking:

  • Click-tracking URLs resolve through link.<clubdomain>.co.uk (hover over links to verify)
  • GHL shows the seed panel's opens and clicks in email analytics

Step 10 — The Trust Bridge: First Member Email

[GHL] Once the seed QA passes on all providers, the first member email goes to Tier A only.

10.1 Email Format

The Trust Bridge is not a newsletter. It is a plain, human message whose job is replies, add-to-contacts actions, and reputation — not design showcase.

There are three format tiers:

FormatDescriptionUse when
True plain textNo HTML, no images, no formattingMaximum replies, least polished — appropriate if the club has a very conversational voice
Lightly-branded HTML (recommended)One small logo with alt text, system fonts, single column, mostly real text, ≤1 link, plain-text multipart alternative includedThe recommended default for the first send — recognition without design friction
Full glossy newsletterHero images, branded header, multiple CTAs, button blocksAvoid for the first 1–3 sends. Graduate to this once warm-up signals are stable.

A small logo aids member recognition, which lowers complaint rates — a deliverability win. Alt text is mandatory; if images are blocked, the email must still read clearly.

10.2 Trust Bridge Template

From: [Manager Name] at [Club Name] <info@mail.<clubdomain>.co.uk>
Reply-To: manager@<clubdomain>.co.uk
Subject: A quick note from [Club Name]

Hi [First name],

Just a brief note to let you know that [Club Name] has updated the system we use to send member emails. Future communications — including competition results, course updates, and member news — will now arrive from this address.

Everything else stays the same.

Hit reply and say hello — it genuinely helps make sure our emails reach your inbox reliably going forward.

If this message landed in your junk folder, please mark it as "Not Junk." And if you'd like to update which emails you receive from us, you can do that here: [Preference centre link]

See you at the club soon.

[Manager Name] [Club Name] [Phone number]


You're receiving this because you are a [Club Name] member. To unsubscribe: [unsubscribe link]


Why reply is the hero CTA: a direct reply to a new domain is the strongest positive signal a mailbox provider can receive. Even a small number of genuine member replies in the first week substantially accelerates domain trust-building. "Add to contacts" is a secondary nudge — include it, but do not imply it guarantees inbox delivery; it is not a Gmail allow-list.

10.3 Transition SMS (One-Off Service Message)

Send a single SMS to the club's member list at the same time as Day 1 of the ramp. This is a service message, not a marketing message. The full PECR rationale, approved wording, and the rules on what this message must never contain are documented in the SMS Transition Policy — read it before building the send.

Correct text:

[Club Name]: We now email you from [Manager Name] at mail.[clubdomain].co.uk.
Please check your junk folder and mark it as safe.

Critical rules:

  • Do not include "Reply STOP to unsubscribe." A STOP line reframes the message as marketing under PECR. DUAA 2025 (in force from 1 January 2026) raised maximum fines to £17.5m. A purely informational service message needs no opt-out line.
  • Do not include any offer or promotional element. The moment the message contains a promotion, it becomes marketing and requires its own PECR basis — with a STOP opt-out in every message.
  • Send this once only. This is not a per-campaign automation and must never be framed as "you didn't open our email."

Post-Launch: Daily Monitoring During the Ramp

[OPERATOR] Check the following every day during the ramp period:

MetricWhere to checkAction trigger
Spam complaintsGHL Email Marketing → Analytics → Complaints>0.10% — review and pause growth; >0.20% — pause all sends immediately
Hard bouncesGHL Email Marketing → Analytics → Bounces>0.50% — investigate; >2.0% — pause new volume; >3.0% — stop and re-validate entire list
UnsubscribesGHL Email Marketing → Analytics → Unsubscribes>1.0% — review content and frequency
AuthenticationGHL sending domain DNS check pageAny failure — pause and diagnose before next send
Block / deferral patternsGHL email logs (filter by "failed" or "deferred")Repeated 5xx blocks at any provider — hold that provider's share
Postmaster spam ratepostmaster.google.com → your subdomain → Spam RateRising trend toward 0.10% — investigate content and audience
Postmaster domain reputationpostmaster.google.com → Domain Reputation"Low" or "Bad" — reduce to Tier A only; verify DMARC alignment
JMRP complaintsYour reporting inboxSuppress the complainant immediately; investigate if complaints cluster
Click / reply rateGHL email analyticsFalling engagement while volume rises — slow the ramp and improve content

Migration Log Template

Keep a record for each club. This is both the operational handover document and your compliance evidence.

Club: [Club Name]
Domain: [clubdomain].co.uk
Sending subdomain: mail.[clubdomain].co.uk
From address: info@mail.[clubdomain].co.uk
Tracking domain: link.[clubdomain].co.uk
GHL sub-account ID: [ID]

DNS records added: [Date]
GHL domain verified: [Date]
Google Postmaster (root) verified: [Date]
Google Postmaster (subdomain) verified: [Date]
JMRP enrolled: [Date / N/A]

Step 0 IG broadcast sent: [Date]
Step 0 portal notice live: [Date / N/A]

Suppression list imported: [Date] — [count] addresses
Contacts imported: [Date] — [count] total
LC Email validation run: [Date] — [count] valid, [count] invalid/suppressed, [count] risky/tagged
Tier A count: [count]
Tier B count: [count]
Tier C count: [count]
Tier D count: [count]
Tier E count (suppressed): [count]

Consent basis: [Soft opt-in / Explicit consent / Mixed — document per segment]
Engagement data available from IG: [Yes / No / Partial]
Ramp track selected: [7–14 day default / 30-day / 60-day fallback]

Day 1 send date: [Date]
Day 1 volume: [count] emails
Day 1 complaints: [X]% | Hard bounces: [X]% | Unsubscribes: [X]%
Day 1 Postmaster spam rate: [Pass / Fail / Not yet visible]

[Continue per stage]

Full active base reached: [Date]

On this page

Key Thresholds — Refer to These ThroughoutStep 0 — Prime Members Before the New Subdomain Sends AnythingPre-flight: check the club's root domain firstStep 1 — Create the Dedicated Sending Subdomain and From IdentityStep 2 — DNS Records at the Registrar2.1 SPF Record2.2 DKIM Record2.3 DMARC Record2.4 Custom Tracking CNAME2.5 PTR / Reverse DNS2.6 TLS2.7 DNS Records SummaryStep 3 — Google Postmaster Tools on Root Domain and Subdomain3.1 Root Domain3.2 Sending Subdomain3.3 Microsoft JMRPStep 4 — Import the Suppression List First4.1 Export from Intelligent Golf4.2 Import into GHL4.3 Document the CountStep 5 — Import Contacts and Run LC Email Validation5.1 Pre-Import List Hygiene5.2 Import5.3 LC Email ValidationStep 6 — Build Tier A–E Smart ListsTier DefinitionsBuilding Smart Lists in GHLStep 7 — One-Click Unsubscribe and Preference Centre7.1 RFC 8058 One-Click Unsubscribe Headers7.2 Visible Unsubscribe Link in Body7.3 Preference Centre (Recommended)7.4 Verify Reply Routing (Do Not Skip)Step 8 — Manual Throttling at Cutover8.1 The Default Ramp — Engagement-Gated, 7–14 Days8.2 How to Manually Batch in GHL8.3 Monitoring Delivery via Postmaster and Mailgun8.4 Scale-Up Gate Checklist8.5 Sending HoursStep 9 — Seed Panel QA Before the First Member Send9.1 The Seed Panel9.2 QA ChecklistStep 10 — The Trust Bridge: First Member Email10.1 Email Format10.2 Trust Bridge Template10.3 Transition SMS (One-Off Service Message)Post-Launch: Daily Monitoring During the RampMigration Log Template