Pro Website decoupled from PewSearch (2026-04-18)
Context
Pro Website ($19.95/mo) was originally launched on PewSearch in early 2026 as a $19.95/mo upsell card on pewsearch.com/pricing and pewsearch.com/pro-website. Cold-email outreach funneled pastors through pewsearch.com/starter-kit/[token] with a Pro Website CTA deep-linking to pewsearch.com/claim/[slug]?tier=pro_website.
In parallel, ChurchWiseAI developed its own canonical Pro Website pipeline: churchwiseai.com/pro-website marketing → churchwiseai.com/onboard?plan=cwa_pro_website → embedded Stripe checkout → /api/stripe/webhook → provisioning as plan='cwa_pro_website' with vanity_slug + admin dashboard at churchwiseai.com/admin/{token}.
Both pipelines used the same Stripe price (price_1TEJh4FaoK5IPzNojyaDlegM), same Supabase premium_churches table, and the same {vanity}.john316.church public render — but produced different plan column values (ps_pro_website vs cwa_pro_website) and different admin URLs.
Problem
Two parallel pipelines created split-brain:
- Customer confusion — "where do I log in?" For PewSearch-sourced signups:
pewsearch.com/admin/{token}. For CWA-sourced signups:churchwiseai.com/admin/{token}. Support surface doubles. - Metrics dilution — The readiness scorecard's Axis A cap (unlocks at the first real non-founder paying Pro Website customer) filters on
plan='cwa_pro_website'. A pewsearch-sourced conversion wouldn't move the metric. - Maintenance cost — Two webhooks, two admin UIs, two claim flows, two sets of marketing CTAs. Lockdown would freeze code duplication.
- Brand coherence — ChurchWiseAI is the AI product brand; PewSearch is the directory. Pro Website is an AI product (it bundles a chatbot). It belongs on ChurchWiseAI.
Actual conversion state at decouple: 0 pewsearch-sourced Pro Website signups (136 cold emails, 5 starter-kit clicks, 0 Pro Website CTA clicks). No customers to migrate.
Decision
Pro Website is sold exclusively on churchwiseai.com as the canonical plan key cwa_pro_website. PewSearch no longer offers Pro Website as a product.
Implementation (2026-04-18)
pewsearch.com
- Deleted
src/app/pro-website/page.tsx+TemplateShowcase.tsx next.config.ts:- 301
/pro-websiteand/pro-website/*→https://churchwiseai.com/pro-website - 302
/claim/:slug?tier=pro_website→https://churchwiseai.com/onboard?plan=cwa_pro_website&pewsearch_slug=:slug - 302
/claim/:slug?tier=ps_pro_website→ same - 302
/directory?tier=pro_website→https://churchwiseai.com/pro-website
- 301
- Homepage + pricing + header + cold-email starter-kit + church-detail + admin UpgradeTab + StickyClaimCTA + give/demo page all updated to either remove Pro Website mentions or cross-link to churchwiseai.com
/api/stripe/checkout— removedpro_website/ps_pro_websitefrom VALID_TIERS; any stale request 302s to churchwiseai.com/api/stripe/pre-checkout— returns 410 Gone for pro_website tier/api/stripe/checkout-link— removedps_pro_website/pro_websitefrom PEWSEARCH_PLANS/api/stripe/webhook— logs warning and skips newpro_website/ps_pro_websitecheckout.session.completed and customer.subscription.created events.activateChurch()branches for these tiers retained ONLY for 2 legacy demo rows.
churchwiseai.com
- No behavior change. Added deprecation comment headers to the 6 files that still reference
ps_pro_website/pro_website:src/lib/premium-shared.ts(PRO_WEBSITE_PLANS array)src/lib/tier-config.ts(isProWebsitePlan)src/app/s/[slug]/page.tsx(PRO_WEBSITE_PLANS array)src/lib/stripe-prices.ts(tier → price alias switch)src/app/api/stripe/webhook/route.ts(PEWSEARCH_TIERS skip list)
- Added Pro Website to the marketing footer (was missing from Products column).
- Wrote
memory/feedback_pro_website_cwa_only.md— loaded into agent context on every session. - Updated
knowledge/architecture/db/plan-column-contract.mdwith deprecation note.
Database
- No schema change.
premium_churches.planCHECK constraint still allows all three legacy values. - Demo rows (2) retain
plan='ps_pro_website'— both still render on{vanity}.john316.churchbecause/s/[slug]accepts all three keys. - Founder test preview row (1) retains
plan='ps_pro_website'— harmless.
Consequences
Immediate:
- Pewsearch.com
/pro-website301s; cold-email recipients clicking "Tell me more about Pro Website" land on churchwiseai.com/onboard with the church pre-matched viapewsearch_slug. Outreach attribution preserved viaref=outreach_{token}→metadata.ref→attributeOutreachConversion()on webhook. - Readiness Axis A cap can now be unlocked by any real signup (all new ones are
cwa_pro_websiteby construction). - One less thing to maintain. Code freeze post-test covers a unified surface.
Follow-ups (deferred):
- FA-047 — Migrate 2 demo rows from
ps_pro_website→cwa_pro_website. After this, the legacy array values can be narrowed in code. - FA-048 — Tighten
premium_churches.planCHECK constraint to dropps_pro_websiteandpro_websitefrom the allowlist (requires FA-047 first).
Not considered / rejected
- Unify on the backend (keep both pipelines, cross-sync rows) — over-engineered for <1 conversion/week at decouple time; doubles webhook complexity.
- Leave both pipelines running — defeats the lockdown goal; tech debt compounds.
References
- Manual review log:
knowledge/readiness/reports/pro-website-20260418-manual-review.md(Section 10a) - Plan column contract:
knowledge/architecture/db/plan-column-contract.md - PR #17 on pewsearch: feat/decouple-pro-website-from-pewsearch (merged)
- PR on churchwiseai-web: feat/pro-website-cwa-only-deprecation (this PR)