From d8e3e40dda5b1e511929b8b2ad1500d63ad6f710 Mon Sep 17 00:00:00 2001 From: justin Date: Sat, 20 Jun 2026 09:37:02 -0500 Subject: [PATCH] healthcare emails: remove prices, fix click tracking, de-risk claims Diagnosing zero healthcare sales (11k sent, 5479 opens, 0 clicks, 0 orders). Root cause of clicks=0: Listmonk only registers a link for tracking when the href ends with the literal @TrackLink marker; all 10 hc templates lacked it (trucking/CRTC have it). So the entire funnel was unmeasurable below 'open'. Changes: - Click tracking: append @TrackLink + UTM to every /order/ CTA across all 10 templates (external gov self-verify links left untracked on purpose). - Remove all service prices from emails (99/49/49/99yr/9mo). Price is now revealed on the order page after value is established; catalog (api/src/service-catalog.ts) stays source of truth. Kept the 0,000 OIG penalty stat (regulatory fact, not our price). Added a neutral 'flat fee shown up front' reassurance block where the fee table used to be. - Compliance/honesty: the nppes_outdated email asserted a per-record 'FLAGGED OUT OF DATE / detected' status, but its selector only checks deliverability and the data has no NPPES last-updated field -> unsubstantiated for every recipient. Reframed to a generally-true periodic-attestation message ('PERIODIC REVIEW REQUIRED', 'most practices drift out of date'). Same hedging applied to npi_reactivation ('may be deactivated ... confirm on official sources'). Substantiated reval 'past due' claims (backed by the public CMS Revalidation list) were kept. - Fixed stale $299 OIG metadata in build script -> $79/mo (reference only). Docs: docs/healthcare-competitive-pricing.md (benchmark research) and docs/healthcare-email-compliance-review.md (CAN-SPAM / FTC / impersonation pass; flags SOC2/HIPAA/PCI badge claims for owner confirmation). Verified headless: all 10 render with 0 JS errors, exactly 1 tracked CTA each, no price leaks. --- data/hc_campaigns/hc_clia_renewal.html | 2 +- data/hc_campaigns/hc_compliance_bundle.html | 5 +- data/hc_campaigns/hc_npi_reactivation.html | 15 +-- data/hc_campaigns/hc_nppes_outdated.html | 19 ++- data/hc_campaigns/hc_oig_screening.html | 5 +- .../hc_revalidation_due_soon.html | 11 +- .../hc_campaigns/hc_revalidation_overdue.html | 11 +- .../hc_revalidation_overdue_personal.html | 2 +- .../hc_revalidation_personal.html | 2 +- .../hc_revalidation_turnover.html | 2 +- docs/healthcare-competitive-pricing.md | 126 ++++++++++++++++++ docs/healthcare-email-compliance-review.md | 98 ++++++++++++++ scripts/build_healthcare_campaigns.py | 6 +- 13 files changed, 256 insertions(+), 48 deletions(-) create mode 100644 docs/healthcare-competitive-pricing.md create mode 100644 docs/healthcare-email-compliance-review.md diff --git a/data/hc_campaigns/hc_clia_renewal.html b/data/hc_campaigns/hc_clia_renewal.html index 9fcee98..b62fb83 100644 --- a/data/hc_campaigns/hc_clia_renewal.html +++ b/data/hc_campaigns/hc_clia_renewal.html @@ -58,7 +58,7 @@

Let us take the CLIA renewal off your plate — the sooner we start, the better.

We submit most filings within 1-2 business days, then track it through CMS processing to confirmation.

- Renew my CLIA certificate → + Renew my CLIA certificate →
diff --git a/data/hc_campaigns/hc_compliance_bundle.html b/data/hc_campaigns/hc_compliance_bundle.html index aa54ad7..c235c36 100644 --- a/data/hc_campaigns/hc_compliance_bundle.html +++ b/data/hc_campaigns/hc_compliance_bundle.html @@ -18,14 +18,13 @@

What's included

-
Revalidation monitoring & filing, NPPES updates/attestation, and your first OIG/SAM exclusion screening — one flat annual price, all tracked, all documented. Continue monthly exclusion monitoring afterward for $79/month (optional, cancel anytime).
+
Revalidation monitoring & filing, NPPES updates/attestation, and your first OIG/SAM exclusion screening — one flat annual price, all tracked, all documented. Continue monthly exclusion monitoring afterward (optional, cancel anytime).
-
NPI{{ .Subscriber.Attribs.npi }}
Practice{{ .Subscriber.Attribs.practice }}
Our service fee$899/yr
Performance West -

Provider Enrollment Alert

-

Deactivated enrollment detected

+

Provider Enrollment Check

+

Make sure your Medicare enrollment is still active

Hi {{ .Subscriber.Name }},

Your enrollment looks deactivated — let's fix it fast

-

Our compliance monitoring flagged the enrollment for {{ .Subscriber.Attribs.practice }} (NPI {{ .Subscriber.Attribs.npi }}) as deactivated or inactive.

+

Our compliance monitoring suggests the enrollment for {{ .Subscriber.Attribs.practice }} (NPI {{ .Subscriber.Attribs.npi }}) may be deactivated or inactive — it is worth confirming on the official sources below.

Why it matters

@@ -42,12 +42,9 @@
- +
- - - -
Our service fee to reactivate it for you$449
+

Simple, flat fee — shown up front before you pay anything. No logins, no hourly billing, no surprises.

Performance West -

NPPES Data Alert

-

Outdated registry information detected

+

NPPES Data Check

+

Keep your registry record current & attested

Hi {{ .Subscriber.Name }},

Outdated NPPES data can hold up your payments

-

The public NPPES registry record for {{ .Subscriber.Attribs.practice }} (NPI {{ .Subscriber.Attribs.npi }}) appears out of date.

+

CMS requires every provider to keep their NPPES registry record current and to periodically attest to it. Records for {{ .Subscriber.Attribs.practice }} (NPI {{ .Subscriber.Attribs.npi }}) and most practices drift out of date over time — it is worth a 60-second check.

Why it matters

@@ -32,20 +32,17 @@ - +
NPI{{ .Subscriber.Attribs.npi }}
Registered to{{ .Subscriber.Attribs.practice }}
Record statusFLAGGED OUT OF DATE
AttestationPERIODIC REVIEW REQUIRED
-

Source: NPPES NPI Registry (npiregistry.cms.hhs.gov). Staleness flagged by our compliance monitoring — confirm on the official registry below.

+

Source: NPPES NPI Registry (npiregistry.cms.hhs.gov). CMS requires periodic NPPES attestation — review your current record on the official registry below.

- +
- - - -
Our service fee to update it for you$349
+

Simple, flat fee — shown up front before you pay anything. No logins, no hourly billing, no surprises.

We run and document your OIG/SAM exclusion screening.

-

Monthly checks with an audit-ready record — $79/month, cancel anytime.

- Set up exclusion screening → +

Monthly checks with an audit-ready record — cancel anytime.

+ Set up exclusion screening →
diff --git a/data/hc_campaigns/hc_revalidation_due_soon.html b/data/hc_campaigns/hc_revalidation_due_soon.html index 9a28c1d..db476bc 100644 --- a/data/hc_campaigns/hc_revalidation_due_soon.html +++ b/data/hc_campaigns/hc_revalidation_due_soon.html @@ -50,14 +50,9 @@ Verify on CMS.gov ↗
- +
- - - - - -
Our service fee to file it for you$599
+

Simple, flat fee — shown up front before you pay anything. No logins, no hourly billing, no surprises.

@@ -71,7 +66,7 @@

We file your PECOS revalidation for you, well before the deadline.

Most filings submitted within 1-2 business days.

- Start my revalidation → + Start my revalidation →
diff --git a/data/hc_campaigns/hc_revalidation_overdue.html b/data/hc_campaigns/hc_revalidation_overdue.html index 8204a56..9ecea5b 100644 --- a/data/hc_campaigns/hc_revalidation_overdue.html +++ b/data/hc_campaigns/hc_revalidation_overdue.html @@ -50,14 +50,9 @@ Verify on CMS.gov ↗
- +
- - - - - -
Our service fee to file it for you$599
+

Simple, flat fee — shown up front before you pay anything. No logins, no hourly billing, no surprises.

@@ -71,7 +66,7 @@

We file your PECOS revalidation for you, before the clock runs out.

Most filings submitted within 1-2 business days.

- Start my revalidation → + Start my revalidation →
diff --git a/data/hc_campaigns/hc_revalidation_overdue_personal.html b/data/hc_campaigns/hc_revalidation_overdue_personal.html index 7e6a9d4..0391951 100644 --- a/data/hc_campaigns/hc_revalidation_overdue_personal.html +++ b/data/hc_campaigns/hc_revalidation_overdue_personal.html @@ -58,7 +58,7 @@

Let us get your past-due revalidation filed right away.

We submit most filings within 1-2 business days, then track it through CMS processing to confirmation.

- Handle my revalidation → + Handle my revalidation →
diff --git a/data/hc_campaigns/hc_revalidation_personal.html b/data/hc_campaigns/hc_revalidation_personal.html index 40dfef2..b60b497 100644 --- a/data/hc_campaigns/hc_revalidation_personal.html +++ b/data/hc_campaigns/hc_revalidation_personal.html @@ -57,7 +57,7 @@

Let us take revalidation off your plate — the sooner we start, the better.

We submit most filings within 1-2 business days, then track it through CMS processing to confirmation.

- Handle my revalidation → + Handle my revalidation →
diff --git a/data/hc_campaigns/hc_revalidation_turnover.html b/data/hc_campaigns/hc_revalidation_turnover.html index fddba67..0d4c7cc 100644 --- a/data/hc_campaigns/hc_revalidation_turnover.html +++ b/data/hc_campaigns/hc_revalidation_turnover.html @@ -57,7 +57,7 @@

Let us take revalidation off your plate — the sooner we start, the better.

We submit most filings within 1-2 business days, then track it through CMS processing to confirmation.

- Handle my revalidation → + Handle my revalidation →
diff --git a/docs/healthcare-competitive-pricing.md b/docs/healthcare-competitive-pricing.md new file mode 100644 index 0000000..1fa22e3 --- /dev/null +++ b/docs/healthcare-competitive-pricing.md @@ -0,0 +1,126 @@ +# Healthcare services — competitive pricing research + +**Date:** 2026-06-20 +**Purpose:** Benchmark our healthcare compliance prices against what other firms +charge, to inform email copy (price removal), landing-page pricing, and offer design. + +## Methodology & honest caveat + +Automated web search (Google / Bing / DuckDuckGo) and direct vendor-page scraping +were attempted and largely **bot-blocked**, and nearly every specialist firm +(ProviderTrust, Verisys, Streamline Verify, Exclusion Screening LLC, most +credentialing companies) **gates pricing behind a "schedule a call" sales motion**. +That gating is itself a signal: this market is sales-led and quote-based, which is +exactly the friction our flat-fee, no-login, self-serve checkout is designed to +undercut. + +The figures below are from **established market knowledge** of the healthcare +credentialing / compliance space, with **confidence levels marked**. Specific +vendor quotes were NOT fabricated — where a number could not be verified live it +is presented as a market range, not a vendor-attributed price. Government fees +(CLIA) are public but the CMS pages are JS-rendered and did not scrape cleanly; +amounts below are flagged for re-verification. + +> **Action item:** when we can get live quotes (mystery-shop a few competitors, or +> pull their gated PDFs), replace the ranges here with sourced, dated, vendor-named +> figures. + +## Our current prices (source of truth: `api/src/service-catalog.ts`) + +| Service | Slug | Our price | Billing | +|---|---|---:|---| +| Medicare PECOS Revalidation | `npi-revalidation` | **$599** | one-time | +| Medicare Enrollment (PECOS) | `medicare-enrollment` | **$699** | one-time | +| NPI Reactivation | `npi-reactivation` | **$449** | one-time | +| NPPES Data Update / Attestation | `nppes-update` | **$349** | one-time | +| CLIA Certificate Renewal | `clia-renewal` | **$449** | one-time (+ govt fee) | +| OIG/SAM Exclusion Screening | `oig-sam-screening` | **$79** | **per month** (recurring) | +| Provider Compliance Bundle (Annual) | `provider-compliance-bundle` | **$899** | per year | + +> Note: the build script `scripts/build_healthcare_campaigns.py` SEGMENTS dict had +> a stale `"price": "$299"` for OIG — that is **dead metadata** not used at +> checkout (catalog says $79/mo). Worth cleaning up to avoid confusion, but it +> never affected what a customer was charged. + +## Benchmarks by service + +### 1. Medicare Revalidation / PECOS enrollment filing — our $599 / $699 +- **Market:** credentialing/enrollment firms typically charge **~$200-$500 per + provider, per payer** for enrollment, often inside a broader credentialing + retainer. Medicare-specific revalidation a-la-carte commonly **~$150-$400**; + full new Medicare enrollment (855I/855B) often **~$300-$600**. Many bill hourly + ($50-$150/hr) inside a retainer rather than flat. +- **Verdict:** our $599 reval / $699 enrollment is **at or slightly above** the + a-la-carte midpoint, but **defensible** as flat-fee, no-login, done-for-you, + single provider. Confidence: **medium-high** (the per-payer model is well + established). + +### 2. OIG/SAM exclusion screening — our $79/month ← most mispriced +- **Market:** specialist exclusion monitoring is almost always **per-covered-life / + per-employee, per-month**, roughly **$1-$3 per name per month**, often with + **annual minimums ~$300-$1,000+** for a small practice. One-time single-name + searches run **~$5-$15**. +- **Verdict:** a flat **$79/month for the whole practice** is **cheap-to-mid** for a + 10+ person office but potentially **expensive for a solo provider** screening + 1-3 names — who can DIY free on the public LEIE / SAM.gov sites (which our own + email tells them to do). The flat model is fine; the **recurring** ask is the + hard part in cold email vs the perceived free-DIY alternative. Confidence: + **medium-high** on the per-life model. + +### 3. NPPES / NPI update — our $349 ← looks high +- **Market:** NPI registration/update is **commodity work**; services that file NPI + applications charge roughly **$50-$200**, and some credentialing firms bundle it + **free** with enrollment. +- **Verdict:** **$349 for an NPPES update looks high** relative to perceived effort + (the provider knows NPPES is a free government portal). Widest price-to-perceived- + value gap of any item → likely a conversion drag. Confidence: **medium**. + +### 4. NPI reactivation — our $449 +- **Market:** tied to restoring Medicare billing; more defensible than a plain + update because the stakes (claims paying again) are high. Comparable to a reval + filing in effort. Confidence: **medium**. + +### 5. CLIA renewal — our $449 service fee (+ government fee, separate) +- **Government CLIA certificate fee** (paid to CMS, separate from any service fee): + Certificate of Waiver / PPM historically **~$180**; Certificate of + Compliance/Accreditation **scales with annual test volume from ~$180 up to + several thousand**. *(Re-verify current amounts on the CMS CLIA fee schedule — + CMS updates them; page is JS-rendered and did not scrape cleanly.)* +- **Verdict:** a **$449 service fee** to prepare/submit the CMS-116 is reasonable, + **but the email/landing copy must make clear it's on top of the government fee**. + Confidence: **high** that a separate govt fee exists; **medium** on exact current + amounts. + +## Synthesized ranges (low / typical / high) + +| Service | Market low | Market typical | Market high | Ours | Read | +|---|---:|---:|---:|---:|---| +| Medicare revalidation (a-la-carte) | $150 | $250-350 | $500 | **$599** | slightly high, defensible (flat, no-login) | +| Medicare new enrollment | $300 | $400-500 | $600+ | **$699** | top of range; justify with done-for-you | +| NPI reactivation | $150 | $300 | $500 | **$449** | upper-mid, OK (billing at stake) | +| NPPES/NPI update | $50 | $100-150 | $200 | **$349** | **high vs perceived value** | +| CLIA renewal service fee | $150 | $300 | $600 | **$449** | mid; must separate govt fee | +| OIG/SAM screening (small practice) | ~$25/mo | ~$50-100/mo | $300+/mo (per-life) | **$79/mo** | mid, but recurring = hard cold ask | + +## Takeaways for the campaign + +1. **Removing price from the cold email is the right call** — it kills the biggest + objection at the worst moment, lets price be revealed on the landing page after + value is established, and sidesteps NPPES/OIG sticker shock. Catalog prices stay + the source of truth at checkout. +2. **Best-priced / most defensible:** revalidation ($599), reactivation ($449), + CLIA ($449) sit at sensible levels. +3. **Mispriced-feeling (review):** NPPES update **$349** reads high for "update a + free form"; OIG **$79/mo recurring** competes against free DIY. Consider a lower + NPPES anchor or a one-time OIG option as an entry product. +4. **Differentiator to lean on:** competitors are sales-led and quote-gated. Our + edge is **transparent flat pricing + no-login done-for-you + instant checkout**. + That should be the wedge, not undercutting on raw price. + +## Confidence summary +- Per-payer credentialing model & ranges: **medium-high** +- Exclusion-screening per-life model: **medium-high** +- NPI update being commodity-cheap: **medium** +- Exact CLIA government fee amounts: **medium (re-verify on CMS)** +- All specific dollar figures: **ranges, not vendor-attributed quotes** — upgrade + with live mystery-shopping when possible. diff --git a/docs/healthcare-email-compliance-review.md b/docs/healthcare-email-compliance-review.md new file mode 100644 index 0000000..4aeca4d --- /dev/null +++ b/docs/healthcare-email-compliance-review.md @@ -0,0 +1,98 @@ +# Healthcare cold-email compliance review (2026-06-20) + +Reviewed all 10 templates in `data/hc_campaigns/` after removing prices, fixing +click tracking, and de-risking unsubstantiated status claims. + +## Scope of the pass +1. **Removed all service prices** from the emails (price is now revealed on the + order page, after value is established). Catalog (`api/src/service-catalog.ts`) + remains the source of truth. +2. **Fixed click tracking** — appended `@TrackLink` + UTM to every conversion CTA + (root cause of clicks=0; Listmonk only registers links with that marker). +3. **Reframed unsubstantiated per-record status assertions** to honest, hedged, + generally-true statements (defamation / FTC-deception risk). +4. This compliance review. + +## Compliance posture — item by item + +### CAN-SPAM (US) — PASS +- **Physical postal address** present in every footer (Performance West Inc., 525 + Randall Ave Ste 100-1195, Cheyenne, WY 82001). ✓ +- **Unsubscribe** present in every template + `List-Unsubscribe` / + `List-Unsubscribe-Post` one-click headers set by the build script. ✓ +- **No deceptive subject lines** — subjects are hedged ("may be out of date", + "appears deactivated", "Are you screening for…"). ✓ +- **Accurate From / Reply-To** — `FROM_EMAIL` / `REPLY_TO` real, monitored. ✓ + +### Truth-in-advertising / FTC deception — FIXED +The biggest risk was **asserting a specific provider's record status as fact when +we don't actually measure it**. Addressed: + +| Template | Was | Now | +|---|---|---| +| `nppes_outdated` | "record … appears **out of date**", header "Outdated registry information **detected**", row "**FLAGGED OUT OF DATE**", footnote "Staleness **flagged by our compliance monitoring**" | General true statement ("most practices drift out of date over time"), header "NPPES Data Check / keep your record current & attested", row "**PERIODIC REVIEW REQUIRED**", footnote cites the real CMS periodic-attestation requirement | +| `npi_reactivation` | header "Deactivated enrollment **detected**", body "**flagged** … as deactivated" | header "Provider Enrollment Check", body "**may be** deactivated … worth confirming on the official sources" | + +**Why this matters:** the `nppes_outdated` audience selector (`institutional_verified`) +only checks **deliverability**, never staleness — and the harvested data has **no +NPPES last-updated field**, so a per-record "out of date / FLAGGED" claim was +literally unsubstantiated for every recipient. Now the copy is true for everyone +(CMS does require periodic NPPES attestation) and still invites them to self-verify. + +### Substantiated claims that were KEPT (verified backed by data) +- `revalidation_overdue` "**is past due** / PAST DUE · N days overdue" — **OK**: the + `reval_overdue` selector requires `reval_status == "overdue"` AND a real overdue + day count derived from the **public CMS Revalidation Due Date List**. The email + also links the provider to that exact government list to self-verify. Legitimate. +- `revalidation_due_soon` "deadline is coming up" — backed by `reval_status == + "upcoming"` from the same CMS list. ✓ +- OIG "**civil monetary penalties up to $20,000 per claim**" — this is a real OIG + penalty figure (kept; it is a regulatory fact, not a price). ✓ + +### Government-affiliation / impersonation — PASS +- Every template carries the disclaimer **"Performance West is an independent + compliance firm, not affiliated with CMS / Medicare / OIG / SAM.gov."** ✓ +- "Official record · CMS Medicare Revalidation Due Date List" refers to the **CMS + public dataset we cite** (and link to), not a claim that we are CMS. The + "Don't take our word for it — check the official CMS record" framing reinforces + that we are pointing them AT the government source, not posing as it. ✓ +- No CMS/HHS logos, seals, or government-lookalike sender identity. ✓ + +### "No-login / done-for-you" claims — PASS (already vetted) +- Matches the verified capability map in `docs/healthcare-no-login-value-add.md` + and `docs/healthcare-filing-tiers-verified.md`. The one honesty caveat (the + provider must personally **sign** the 855; we cannot sign for them) is respected: + copy says "the only thing we may need is a one-minute e-signature," never claims + we sign on their behalf. ✓ + +### Guarantee / absolute-language scan — ACCEPTABLE +Scanner flagged `guarantee / never / 100% / will not`. Reviewed in context — all +benign and substantiable: +- "**100% satisfaction guarantee**" + "we'll make it right" — standard puffery / + service promise, paired with "fixed pricing, no billable hours." Acceptable. +- "You **never** share your password / you **will not** pay billable hours" — + factual descriptions of how the service works, not outcome guarantees. ✓ +- No claims guaranteeing a CMS approval/outcome (which WOULD be a problem). ✓ + +### Trust/credibility badges — VERIFY (flag for owner) +Footers assert **"SOC 2 Type II hosting · HIPAA & PCI compliant · 256-bit TLS."** +These are factual compliance claims and must be **literally true**: +- ⚠️ **Action for Justin:** confirm we can substantiate SOC 2 Type II + HIPAA + PCI + (or soften to "encrypted, secure Stripe payments" if any is aspirational). False + compliance badges are an FTC and contractual risk. Not changed in this pass — + needs owner confirmation. + +## HTML / deliverability QA — PASS +- All 10 templates render with **0 JS errors** headless, each has **exactly one + tracked `/order/...@TrackLink` CTA**, and **no price leaks** (only the $20,000 + OIG penalty stat remains, intentionally). +- External self-verify links (oig.hhs.gov, sam.gov, npiregistry, data.cms.gov) left + **untracked** on purpose (they're trust links, not conversions). + +## Outstanding (not blocking, recommended next) +1. **Confirm SOC 2 / HIPAA / PCI badge claims** are literally true (above). +2. **OIG $79/mo & NPPES $349 pricing** flagged as high/hard in + `docs/healthcare-competitive-pricing.md` — consider a one-time OIG entry option + and a lower NPPES anchor. (Pricing strategy, separate from compliance.) +3. **Add the free `/tools/npi-compliance-check`** as a soft secondary CTA / lead + magnet so non-buyers are captured and nurtured (funnel, separate effort). diff --git a/scripts/build_healthcare_campaigns.py b/scripts/build_healthcare_campaigns.py index bb89d24..fb37d5c 100644 --- a/scripts/build_healthcare_campaigns.py +++ b/scripts/build_healthcare_campaigns.py @@ -45,7 +45,9 @@ OUT_DIR = os.path.join(os.path.dirname(__file__), "..", "data", "hc_campaigns") # subject listmonk campaign subject line # template HTML file under data/hc_campaigns/ (the canonical body) # cta_path order page the CTA links to (NPI appended as ?npi=) -# price headline price (for reference / docs; lives in the template) +# price reference price only (catalog in api/src/service-catalog.ts is +# the source of truth). NOT shown in the email anymore — price is +# revealed on the order page after the value is established. # list_name listmonk-hc list this segment is warmed into # campaign_name listmonk-hc campaign name prefix (dated per build) # selector which warmup-CSV rows belong to this segment (see cron) @@ -90,7 +92,7 @@ SEGMENTS = { "subject": "Are you screening for OIG / SAM exclusions?", "template": "hc_oig_screening.html", "cta_path": "/order/oig-sam-screening", - "price": "$299", + "price": "$79/mo", "list_name": "HC Warmup - OIG Screening", "campaign_name": "HC Warmup - OIG Screening", "selector": "institutional_verified",