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
| Metric | Green | Amber — review | Pause / 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 drop | Any 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:
- 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. - 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.
- 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)
- Log in to GHL. Navigate to the club's sub-account.
- Go to Settings → Email Services → LC Email.
- Under Dedicated Sending Domain, click Add Domain.
- Enter the sending subdomain:
mail.<clubdomain>.co.uk- Use
mail.as the standard prefix. Ifmail.is already in use on that domain, fall back tonews.ormembers..
- Use
- GHL will display the DNS records it requires. Do not click Verify yet — complete Step 2 at the registrar first.
- Once DNS is live, return here and click Verify Domain.
- Under From Name, set:
[Club Name] Members— for example,Highgate Golf Club Members. - Under From Email, set:
info@mail.<clubdomain>.co.uk. This must exactly match the subdomain you created. A mismatch is a DMARC alignment failure. - 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. - 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 toinfo@<clubdomain>.co.ukwhilst 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 atmail.will leave the envelope domain uncovered, causing SPF alignment failures.
| Field | Value |
|---|---|
| Type | TXT |
| Host / Name | mail (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:
~allis a soft fail; correct during initial setup. Do not use-alluntil DMARC is enforced atp=rejectand all legitimate sending paths are confirmed.- There must be only one SPF TXT record per hostname. If a record already exists at
mail., merge theinclude:into that single record. - GHL commonly supplies a separate Return-Path / bounce CNAME (e.g.
email.mail.<clubdomain>.co.ukpointing 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.
| Field | Value |
|---|---|
| Type | TXT |
| Host / Name | GHL-provided — looks like <selector>._domainkey.mail |
| Value | GHL-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.
| Field | Value |
|---|---|
| Type | TXT |
| Host / Name | _dmarc at the root domain — i.e. _dmarc.<clubdomain>.co.uk |
| Initial value | v=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:
| Stage | Policy |
|---|---|
| Weeks 1–8 (until aggregate reports show 100% alignment) | p=none |
| Once alignment is confirmed clean | p=quarantine; pct=10, then pct=100 |
| Final state | p=reject; pct=100 |
Do not rush to
p=rejectduring 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.
| Field | Value |
|---|---|
| Type | CNAME |
| Host / Name | link — i.e. link.<clubdomain>.co.uk |
| Value | GHL-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.
| Record | Type | Host | Value | Where added |
|---|---|---|---|---|
| SPF (header domain) | TXT | mail | v=spf1 include:mailgun.org ~all (example) | Registrar |
| Return-Path / bounce | CNAME (or TXT) | As GHL specifies (e.g. email.mail) | GHL-provided Mailgun target | Registrar |
| DKIM | TXT | <selector>._domainkey.mail | v=DKIM1; k=rsa; p=<key> (from GHL) | Registrar |
| DMARC | TXT | _dmarc (root domain) | v=DMARC1; p=none; rua=mailto:... | Registrar |
| Tracking CNAME | CNAME | link | GHL-provided target | Registrar |
| PTR / rDNS | — | GHL-managed on shared IPs | — | No action needed |
| TLS | — | GHL-managed | — | No 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
- Go to https://postmaster.google.com and sign in with the agency's Google account.
- Click + → enter the root domain:
<clubdomain>.co.uk. - Google provides a TXT verification record — add it at the registrar:
- Type: TXT
- Host:
@(or<clubdomain>.co.ukdepending on your registrar) - Value:
google-site-verification=<provided-value>
- Click Verify in Postmaster Tools. Allow up to 24 hours.
- 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:
- Enter the club's sending domain (
mail.<clubdomain>.co.uk) and a reporting address. - Microsoft sends a complaint notification whenever an Outlook/Hotmail user marks your mail as junk.
- 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
- In GHL, navigate to the club's sub-account.
- Go to Email Marketing → Settings → Suppression List (or Email Services → Suppression).
- Click Import / Upload CSV.
- Map the
emailcolumn and import. - 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
- GHL → Contacts → Import Contacts (or Upload CSV).
- 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). - Under Import Settings, tick "Skip suppressed contacts".
- 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.
| Result | Action |
|---|---|
| Valid | Keep. Proceed to Tier segmentation in Step 6. |
| Invalid / hard failure | Suppress immediately. |
| Risky / catch-all | Tag as validation_risky. Exclude from Tier A and B sends. Place in Tier D or E. |
| Disposable / temporary | Suppress. |
| Unknown | Tag 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
| Tier | Definition | Ramp role |
|---|---|---|
| Tier A | Clicked, replied, booked, or otherwise actively engaged within the last 30 days (from Intelligent Golf data) | Start here — Day 1 of the ramp |
| Tier B | Engaged within 31–60 days | Add once Tier A metrics are stable (typically Days 4–7) |
| Tier C | Engaged within 61–90 days | Add in Days 8–14, only if bounces and complaints remain in green |
| Tier D | No measured engagement data but a current, active member with a legitimate relationship — or engagement data unavailable | 60-day fallback track only; add after stable warm-up signals |
| Tier E | No engagement for 90+ days, previously bounced, previously complained, or consent basis unclear | Suppress initially. If ever mailed, use a managed re-permission approach — never a bulk blast. |
Building Smart Lists in GHL
- Go to Contacts → Filters.
- Define the segment criteria. Example for Tier A:
ig_last_click_dateis after [today minus 30 days]- OR
ig_last_booking_dateis after [today minus 30 days] - AND
Suppressedisfalse - AND
Email Opt-outisfalse
- Click Save as Smart List. Name it
[Club Name] — Tier A (30-day engaged). - Repeat for Tiers B, C, D, and E with the appropriate date ranges.
- 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:
- Settings → Email Services → LC Email.
- Confirm "One-Click Unsubscribe" or "List-Unsubscribe Header" is toggled on.
- If no toggle is visible, inspect the raw source of a test email: Gmail → three-dot menu → Show Original → search for
List-Unsubscribe. BothList-UnsubscribeandList-Unsubscribe-Post: List-Unsubscribe=One-Clickmust be present.
Never remove or suppress these headers. Their presence is a compliance requirement and signals responsible sending behaviour to Gmail and Yahoo.
7.2 Visible Unsubscribe Link in Body
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.
7.3 Preference Centre (Recommended)
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:
- Sites → Surveys (or Forms).
- Create
[Club Name] Email Preferences. - 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)
- Map each field to a custom contact field in GHL.
- Build workflows to add/remove contacts from relevant Smart Lists based on preference selections.
- 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.
| Day | Audience | Daily volume | Hourly cap | Gate to proceed |
|---|---|---|---|---|
| Day 1 | Tier A only | Approximately 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–3 | Tier A | 100–150 emails | 20–30/hr | Complaint rate <0.10%, hard bounce <0.50% |
| Days 4–6 | Tier A + Tier B (best segment) | 150–250 emails | 30–50/hr | Previous stage metrics stable in green |
| Days 7–10 | Tier A + Tier B | 250–400 emails | 50–75/hr | Postmaster spam rate pass, no deferral pattern |
| Days 11–14 | Tier A + Tier B + controlled Tier C | 400–600 emails | 75–100/hr | All 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:
- Contacts → select the relevant Smart List (e.g.
[Club Name] — Tier A). - Select all contacts in the list.
- Bulk Actions → Send Email.
- Select the email campaign or template.
- Toggle Drip Mode ON.
- Set rate: e.g. 20 emails per hour.
- 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.
- Review the total send-time estimate GHL displays.
- 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-Resultsshowsspf=pass,dkim=pass, anddmarc=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-UnsubscribeandList-Unsubscribe-Postheaders 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:
| Format | Description | Use when |
|---|---|---|
| True plain text | No HTML, no images, no formatting | Maximum 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 included | The recommended default for the first send — recognition without design friction |
| Full glossy newsletter | Hero images, branded header, multiple CTAs, button blocks | Avoid 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:
| Metric | Where to check | Action trigger |
|---|---|---|
| Spam complaints | GHL Email Marketing → Analytics → Complaints | >0.10% — review and pause growth; >0.20% — pause all sends immediately |
| Hard bounces | GHL Email Marketing → Analytics → Bounces | >0.50% — investigate; >2.0% — pause new volume; >3.0% — stop and re-validate entire list |
| Unsubscribes | GHL Email Marketing → Analytics → Unsubscribes | >1.0% — review content and frequency |
| Authentication | GHL sending domain DNS check page | Any failure — pause and diagnose before next send |
| Block / deferral patterns | GHL email logs (filter by "failed" or "deferred") | Repeated 5xx blocks at any provider — hold that provider's share |
| Postmaster spam rate | postmaster.google.com → your subdomain → Spam Rate | Rising trend toward 0.10% — investigate content and audience |
| Postmaster domain reputation | postmaster.google.com → Domain Reputation | "Low" or "Bad" — reduce to Tier A only; verify DMARC alignment |
| JMRP complaints | Your reporting inbox | Suppress the complainant immediately; investigate if complaints cluster |
| Click / reply rate | GHL email analytics | Falling 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]Data Prep & Segmentation
Export, clean, and tier your Intelligent Golf contact list before a single email leaves the new sending domain.
Ramp Schedule
Engagement-gated volume ramp for migrating a UK golf club from Intelligent Golf to GHL LC Email — default 7–14 day track, 30/60-day fallback, provider-cap guidance, and manual throttling.