The sales we got came at $79 + a 24hr coupon; cutting MCS-150 to $39 flat removed urgency and conversions did NOT improve (a permanent low price sets a new anchor and lets people defer). Restore the higher anchor and let an expiring discount create the now-or-lose-it decision. - Restore MCS-150 anchor $39 -> $79 (catalog single source + regenerated). - build_trucking_campaigns.py: mint ONE random 5-letter coupon per send-day (40% off, valid through 23:59:59 ET that day) into the existing discount_codes table; inject coupon_code/pct/expires + a ?code= LP link into every email. Idempotent per day; service-fee-only scope (gov/pass-through fees never cut). - Listmonk MCS-150 (186) + Inactive USDOT (188) templates: lead with the struck-through anchor + sale price + code + 'expires tonight', and point the primary CTA at the order page (with code) instead of the 'free check' tool. - OrderPriceBanner: validates ?code= via /api/v1/discount and shows was/now + expiry; Wizard forwards the code to order creation. - Verified: code gen, expiry math, scope enforcement, discount API (40% off $79 = $47.40), site+api builds clean.
38 lines
1.5 KiB
Text
38 lines
1.5 KiB
Text
---
|
|
import Base from "../../layouts/Base.astro";
|
|
import VerticalOrderHeader from "../../components/VerticalOrderHeader.astro";
|
|
import Wizard from "../../components/intake/Wizard.astro";
|
|
import OrderPriceBanner from "../../components/OrderPriceBanner.astro";
|
|
|
|
import TruckingValueNotice from "../../components/TruckingValueNotice.astro";
|
|
import { INTAKE_MANIFEST, SERVICE_META } from "../../lib/intake_manifest";
|
|
|
|
const slug = "ifta-quarterly";
|
|
const steps = INTAKE_MANIFEST[slug];
|
|
const meta = SERVICE_META[slug];
|
|
const title = meta ? `Order ${meta.name}` : "Order";
|
|
const description = "Quarterly IFTA fuel-tax return preparation and filing through your base state.";
|
|
---
|
|
|
|
<Base title={title} description={description}>
|
|
<main>
|
|
<section class="pw-order-intro">
|
|
<h1>{meta?.name}</h1>
|
|
<p class="pw-desc">{description}</p>
|
|
</section>
|
|
|
|
<VerticalOrderHeader vertical="trucking" />
|
|
|
|
<OrderPriceBanner priceCents={meta?.price_cents} govFeeLabel={meta?.gov_fee_label} serviceSlug={slug} note="Choose card, ACH, or PayPal at payment." />
|
|
<TruckingValueNotice slug={slug} />
|
|
|
|
<Wizard service_slug={slug} steps={steps ?? ["state-trucking", "review", "payment"]} title={meta?.name ?? slug} />
|
|
</main>
|
|
</Base>
|
|
|
|
<style>
|
|
main { max-width: 900px; margin: 0 auto; padding: 2rem 1.25rem 4rem; }
|
|
.pw-order-intro { margin-bottom: 1.5rem; }
|
|
.pw-order-intro h1 { margin: 0 0 0.25rem; color: var(--pw-navy, #1a2744); }
|
|
.pw-desc { color: var(--pw-muted, #64748b); max-width: 48rem; }
|
|
</style>
|