Conversion fix for the checkout drop-off (54 sessions reached an /order/ page over 3 days, 0 advanced to payment). Root cause was friction, not a bug: every order page dropped a cold email-click straight into a 28-field intake Wizard before showing any payment option. - New ExpressCheckout.astro: payment-first entry. Shows price + the minimal fields the API needs (prefilled from public records: ?dot= FMCSA census for trucking, ?npi= NPPES lookup for healthcare) + Continue to payment. Creates a single-service batch-of-one (POST /compliance-orders/batch, which does NOT gate Stripe on intake_data_validated) then create-session -> Stripe. Full intake is collected AFTER payment via the per-service 'Complete Your Intake Form' email the webhook already sends (links to /order/<slug>?order=CO-xxx, which re-enters the Wizard in paid-intake mode). - New OrderFlow.astro: single source of truth replacing ~50 near-identical thin Wizard wrappers. Trucking + healthcare default to payment-first (express on top, marketing hero moved BELOW the CTA). Telecom + corporate keep Wizard-first (rich pre-payment FCC/499 intake, no public-records prefill). Paid-intake re-entry (?order=/?token=) always renders the full Wizard. - Rewrote all 50 /order/*.astro pages to use OrderFlow (foreign-qualification keeps its multi-state toggle via slotted content). - Fixed the dead Tawk.to live-chat widget site-wide: the snippet set an invalid crossorigin='*' attribute, forcing the browser into anonymous CORS mode and blocking the script (0 chat requests fired anywhere). Removed it to match Tawk's official snippet (footer partial + 73 static public/*.html files). Verified: build clean; express on top with hero below; ?dot=/?npi= prefill; paid-intake re-entry swaps to Wizard; telecom stays wizard-first; batch-of-one -> live Stripe URL; both POST endpoints allow the prod origin via CORS.
14 lines
584 B
Text
14 lines
584 B
Text
---
|
|
import Base from "../../layouts/Base.astro";
|
|
import OrderFlow from "../../components/intake/OrderFlow.astro";
|
|
import { SERVICE_META } from "../../lib/intake_manifest";
|
|
|
|
const slug = "ct-highway-use-fee";
|
|
const meta = SERVICE_META[slug];
|
|
const title = meta ? `Order ${meta.name}` : "Order";
|
|
const description = "Connecticut Highway Use Fee registration for heavy multi-unit carriers operating in Connecticut.";
|
|
---
|
|
|
|
<Base title={title} description={description}>
|
|
<OrderFlow slug={slug} description={description} fallbackSteps={["state-trucking", "review", "payment"]} />
|
|
</Base>
|