From 618fafe1d55f28248ca5980cb8242a8a92c81fa3 Mon Sep 17 00:00:00 2001 From: justin Date: Thu, 25 Jun 2026 11:32:48 -0500 Subject: [PATCH] order: payment-first express checkout + fix dead Tawk chat widget 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/?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. --- site/public/404.html | 2 +- site/public/about/index.html | 2 +- site/public/accessibility/index.html | 2 +- site/public/account/reset-password/index.html | 2 +- site/public/admin/index.html | 2 +- site/public/contact/index.html | 2 +- site/public/index.html | 2 +- site/public/order/canada-crtc/index.html | 2 +- site/public/order/cancel/index.html | 2 +- site/public/order/cancelled/index.html | 2 +- site/public/order/crypto-pay/index.html | 2 +- site/public/order/dot-compliance/index.html | 2 +- site/public/order/fcc-499a/index.html | 2 +- site/public/order/fcc-499q/index.html | 2 +- .../order/fcc-carrier-registration/index.html | 2 +- site/public/order/fcc-compliance/index.html | 2 +- site/public/order/formation/index.html | 2 +- .../public/order/identity-complete/index.html | 2 +- site/public/order/neca-ocn/index.html | 2 +- site/public/order/state-puc/index.html | 2 +- site/public/order/success/index.html | 2 +- .../order/trucking-new-carrier/index.html | 2 +- site/public/portal/domain-search/index.html | 2 +- site/public/portal/manage-services/index.html | 2 +- site/public/portal/setup/index.html | 2 +- site/public/portal/sign/index.html | 2 +- site/public/pricing/bundles/index.html | 2 +- site/public/pricing/index.html | 2 +- site/public/privacy/index.html | 2 +- site/public/security/index.html | 2 +- .../corporate/annual-reports/index.html | 2 +- .../dexit-reincorporation/index.html | 2 +- .../services/corporate/formation/index.html | 2 +- site/public/services/corporate/index.html | 2 +- .../corporate/registered-agent/index.html | 2 +- .../corporate/state-registration/index.html | 2 +- .../contractor-classification/index.html | 2 +- .../services/employment/flsa-audit/index.html | 2 +- .../employment/handbook-review/index.html | 2 +- site/public/services/employment/index.html | 2 +- .../employment/policy-development/index.html | 2 +- site/public/services/index.html | 2 +- .../privacy/breach-response/index.html | 2 +- .../services/privacy/ccpa-audit/index.html | 2 +- .../services/privacy/data-mapping/index.html | 2 +- site/public/services/privacy/index.html | 2 +- .../privacy/privacy-policy/index.html | 2 +- .../services/tcpa/campaign-review/index.html | 2 +- .../services/tcpa/consent-audit/index.html | 2 +- .../services/tcpa/dnc-compliance/index.html | 2 +- site/public/services/tcpa/index.html | 2 +- .../services/telecom/canada-crtc/index.html | 2 +- site/public/services/telecom/cpni/index.html | 2 +- .../telecom/database-management/index.html | 2 +- .../services/telecom/fcc-499a/index.html | 2 +- .../guides/cores-registration/index.html | 2 +- .../guides/cpni-certification/index.html | 2 +- .../telecom/guides/fcc-499a/index.html | 2 +- .../telecom/guides/fcc-499q/index.html | 2 +- .../telecom/guides/rmd-filing/index.html | 2 +- .../guides/usac-account-setup/index.html | 2 +- site/public/services/telecom/index.html | 2 +- .../services/telecom/ipes-isp/index.html | 2 +- .../services/telecom/state-puc/index.html | 2 +- .../services/telecom/stir-shaken/index.html | 2 +- site/public/terms/index.html | 2 +- site/public/tools/contractor-quiz/index.html | 2 +- .../public/tools/corporation-check/index.html | 2 +- .../tools/dot-compliance-check/index.html | 2 +- .../tools/fcc-compliance-check/index.html | 2 +- site/public/tools/formation-guide/index.html | 2 +- site/public/tools/privacy-check/index.html | 2 +- site/public/tools/tcpa-check/index.html | 2 +- .../components/intake/ExpressCheckout.astro | 363 ++++++++++++++++++ site/src/components/intake/OrderFlow.astro | 157 ++++++++ site/src/pages/order/bdc-broadband.astro | 33 +- site/src/pages/order/bdc-filing.astro | 33 +- site/src/pages/order/bdc-voice.astro | 33 +- site/src/pages/order/boc3-filing.astro | 31 +- site/src/pages/order/ca-mcp-carb.astro | 30 +- site/src/pages/order/calea-ssi.astro | 33 +- site/src/pages/order/cdr-analysis.astro | 33 +- site/src/pages/order/clia-renewal.astro | 27 +- .../pages/order/cores-frn-registration.astro | 33 +- site/src/pages/order/cpni-certification.astro | 33 +- site/src/pages/order/ct-highway-use-fee.astro | 30 +- site/src/pages/order/dc-agent.astro | 33 +- site/src/pages/order/dot-audit-prep.astro | 31 +- site/src/pages/order/dot-drug-alcohol.astro | 31 +- .../src/pages/order/dot-full-compliance.astro | 31 +- site/src/pages/order/dot-registration.astro | 31 +- site/src/pages/order/fcc-499-initial.astro | 33 +- site/src/pages/order/fcc-499a-499q.astro | 33 +- site/src/pages/order/fcc-499a.astro | 33 +- .../pages/order/fcc-63-11-notification.astro | 33 +- .../pages/order/fcc-compliance-checkup.astro | 33 +- .../src/pages/order/fcc-full-compliance.astro | 33 +- .../pages/order/foreign-qualification.astro | 72 ++-- site/src/pages/order/hazmat-phmsa.astro | 30 +- site/src/pages/order/ifta-application.astro | 30 +- site/src/pages/order/ifta-quarterly.astro | 30 +- .../pages/order/intrastate-authority.astro | 30 +- site/src/pages/order/irp-registration.astro | 30 +- .../src/pages/order/ky-kyu-registration.astro | 30 +- site/src/pages/order/mc-authority.astro | 31 +- site/src/pages/order/mcs150-update.astro | 31 +- .../src/pages/order/medicare-enrollment.astro | 32 +- site/src/pages/order/new-carrier-bundle.astro | 35 +- site/src/pages/order/nm-weight-distance.astro | 30 +- site/src/pages/order/npi-reactivation.astro | 32 +- site/src/pages/order/npi-revalidation.astro | 32 +- site/src/pages/order/nppes-update.astro | 32 +- .../src/pages/order/ny-hut-registration.astro | 30 +- site/src/pages/order/ocn-registration.astro | 33 +- site/src/pages/order/oig-sam-screening.astro | 32 +- site/src/pages/order/or-weight-mile-tax.astro | 30 +- site/src/pages/order/osow-permit.astro | 30 +- .../order/provider-compliance-bundle.astro | 32 +- site/src/pages/order/rmd-filing.astro | 35 +- .../pages/order/state-dot-registration.astro | 30 +- site/src/pages/order/state-emissions.astro | 30 +- .../pages/order/state-trucking-bundle.astro | 30 +- site/src/pages/order/stir-shaken.astro | 33 +- site/src/pages/order/ucr-registration.astro | 31 +- site/src/pages/order/usdot-reactivation.astro | 30 +- site/src/partials/footer.html | 1 - 126 files changed, 766 insertions(+), 1518 deletions(-) create mode 100644 site/src/components/intake/ExpressCheckout.astro create mode 100644 site/src/components/intake/OrderFlow.astro diff --git a/site/public/404.html b/site/public/404.html index 5ba7ac9..1068d96 100644 --- a/site/public/404.html +++ b/site/public/404.html @@ -67,7 +67,7 @@ Send reset link s1.async=true; s1.src='https://embed.tawk.to/69d5a9ca0d1c3f1c37998081/1jll9ufph'; s1.charset='UTF-8'; - s1.setAttribute('crossorigin','*'); + s0.parentNode.insertBefore(s1,s0); })(); \ No newline at end of file diff --git a/site/public/about/index.html b/site/public/about/index.html index e2a6c5e..06e2553 100644 --- a/site/public/about/index.html +++ b/site/public/about/index.html @@ -81,7 +81,7 @@ Send reset link s1.async=true; s1.src='https://embed.tawk.to/69d5a9ca0d1c3f1c37998081/1jll9ufph'; s1.charset='UTF-8'; - s1.setAttribute('crossorigin','*'); + s0.parentNode.insertBefore(s1,s0); })(); \ No newline at end of file diff --git a/site/public/accessibility/index.html b/site/public/accessibility/index.html index 4d2d356..0e24a79 100644 --- a/site/public/accessibility/index.html +++ b/site/public/accessibility/index.html @@ -75,7 +75,7 @@ Send reset link s1.async=true; s1.src='https://embed.tawk.to/69d5a9ca0d1c3f1c37998081/1jll9ufph'; s1.charset='UTF-8'; - s1.setAttribute('crossorigin','*'); + s0.parentNode.insertBefore(s1,s0); })(); \ No newline at end of file diff --git a/site/public/account/reset-password/index.html b/site/public/account/reset-password/index.html index f099099..7f05fd8 100644 --- a/site/public/account/reset-password/index.html +++ b/site/public/account/reset-password/index.html @@ -64,7 +64,7 @@ Send reset link s1.async=true; s1.src='https://embed.tawk.to/69d5a9ca0d1c3f1c37998081/1jll9ufph'; s1.charset='UTF-8'; - s1.setAttribute('crossorigin','*'); + s0.parentNode.insertBefore(s1,s0); })(); \ No newline at end of file diff --git a/site/public/admin/index.html b/site/public/admin/index.html index 07c3d20..8fb49bc 100644 --- a/site/public/admin/index.html +++ b/site/public/admin/index.html @@ -62,7 +62,7 @@ Send reset link s1.async=true; s1.src='https://embed.tawk.to/69d5a9ca0d1c3f1c37998081/1jll9ufph'; s1.charset='UTF-8'; - s1.setAttribute('crossorigin','*'); + s0.parentNode.insertBefore(s1,s0); })(); \ No newline at end of file diff --git a/site/public/contact/index.html b/site/public/contact/index.html index 828d8b9..25968e0 100644 --- a/site/public/contact/index.html +++ b/site/public/contact/index.html @@ -68,7 +68,7 @@ Send reset link s1.async=true; s1.src='https://embed.tawk.to/69d5a9ca0d1c3f1c37998081/1jll9ufph'; s1.charset='UTF-8'; - s1.setAttribute('crossorigin','*'); + s0.parentNode.insertBefore(s1,s0); })(); \ No newline at end of file diff --git a/site/public/index.html b/site/public/index.html index ea2e4d4..39227f4 100644 --- a/site/public/index.html +++ b/site/public/index.html @@ -80,7 +80,7 @@ Send reset link s1.async=true; s1.src='https://embed.tawk.to/69d5a9ca0d1c3f1c37998081/1jll9ufph'; s1.charset='UTF-8'; - s1.setAttribute('crossorigin','*'); + s0.parentNode.insertBefore(s1,s0); })(); \ No newline at end of file diff --git a/site/public/order/canada-crtc/index.html b/site/public/order/canada-crtc/index.html index 1689b4d..981e299 100644 --- a/site/public/order/canada-crtc/index.html +++ b/site/public/order/canada-crtc/index.html @@ -110,7 +110,7 @@ Send reset link s1.async=true; s1.src='https://embed.tawk.to/69d5a9ca0d1c3f1c37998081/1jll9ufph'; s1.charset='UTF-8'; - s1.setAttribute('crossorigin','*'); + s0.parentNode.insertBefore(s1,s0); })(); \ No newline at end of file diff --git a/site/public/order/cancel/index.html b/site/public/order/cancel/index.html index 3a71910..f9b003c 100644 --- a/site/public/order/cancel/index.html +++ b/site/public/order/cancel/index.html @@ -67,7 +67,7 @@ Send reset link s1.async=true; s1.src='https://embed.tawk.to/69d5a9ca0d1c3f1c37998081/1jll9ufph'; s1.charset='UTF-8'; - s1.setAttribute('crossorigin','*'); + s0.parentNode.insertBefore(s1,s0); })(); \ No newline at end of file diff --git a/site/public/order/cancelled/index.html b/site/public/order/cancelled/index.html index a3906cb..18bb114 100644 --- a/site/public/order/cancelled/index.html +++ b/site/public/order/cancelled/index.html @@ -64,7 +64,7 @@ Send reset link s1.async=true; s1.src='https://embed.tawk.to/69d5a9ca0d1c3f1c37998081/1jll9ufph'; s1.charset='UTF-8'; - s1.setAttribute('crossorigin','*'); + s0.parentNode.insertBefore(s1,s0); })(); \ No newline at end of file diff --git a/site/public/order/crypto-pay/index.html b/site/public/order/crypto-pay/index.html index b63bc20..e0a0b4a 100644 --- a/site/public/order/crypto-pay/index.html +++ b/site/public/order/crypto-pay/index.html @@ -67,7 +67,7 @@ Send reset link s1.async=true; s1.src='https://embed.tawk.to/69d5a9ca0d1c3f1c37998081/1jll9ufph'; s1.charset='UTF-8'; - s1.setAttribute('crossorigin','*'); + s0.parentNode.insertBefore(s1,s0); })(); \ No newline at end of file diff --git a/site/public/order/dot-compliance/index.html b/site/public/order/dot-compliance/index.html index d2ec0f2..3c51c1d 100644 --- a/site/public/order/dot-compliance/index.html +++ b/site/public/order/dot-compliance/index.html @@ -753,7 +753,7 @@ document.getElementById("pw-batch-form").addEventListener("submit", function(e) }); }); - +

How can we help?

Choose a category and tell us what you need.