Site Search

Search pages, cities, blog posts, tools, and glossary terms

Platform Updates

Every update. Shipped.

Every update, feature, and fix shipped to TownFavorite.com, in reverse chronological order. Last updated: August 8, 2026.

Open ChangelogShipped Continuously12 Cities Covered
382
Releases
1641
Features shipped
12
Cities covered
15
Blog posts live

Not sure which product is right for your business?

Answer 6 questions and get a personalized recommendation. Takes 90 seconds.

Take the Audience Match Quiz
vPhase 1EFeatureAugust 8, 2026

Production Hardening Phase 1E — Final Commerce Acceptance

Closed the final 6 commerce integrity gaps: 13-field quote fingerprint guard (RC1), removed quoteConfirmed state (RC2), customerEmail/businessName now derived from order record server-side (RC3), removed dead attachStripeSession write path (RC4), back-link fallback changed from /birmingham-al to /cities (RC5), removed unused useSearch import and confirmed ?product= is non-authoritative (RC6). 32 new tests added. Total: 172/172 passing.

shared/quoteFingerprint.ts: new computeQuoteFingerprint() pure helper — 13-field deterministic fingerprint
CheckoutPage.tsx: RC1 fingerprint-based quote change detection replaces single-field ref
CheckoutPage.tsx: RC2 quoteConfirmed state removed
routers.ts + CheckoutPage.tsx: RC3 customerEmail/businessName removed from createCheckoutSession input
routers.ts: RC4 attachStripeSession procedure removed
CheckoutPage.tsx: RC5 back-link fallback changed to /cities
CheckoutPage.tsx: RC6 useSearch import removed, ?product= confirmed non-authoritative
server/phase1e.test.ts: 32 new tests (quote change guard, order identity, attach session, navigation, payment input)
vPhase 1CFixAugust 8, 2026

Production Hardening Phase 1C — Final Commerce Integrity Closure

Phase 1C closes the final commerce-integrity gaps identified in Phase 1B review. previewCheckout now requires orderId and validates order/slot relationship. Stripe line items are fully typed. APP_ORIGIN misconfiguration crashes the server before accepting traffic in production. The Payment step now calls previewCheckout to render server-authoritative values, refreshes the quote before Stripe, and shows a changed-quote warning if the total shifts. 35 new tests added (135 total). Dead-code search clean.

server/routers.ts: previewCheckout requires orderId, validates order/slot, requireReserved: true
server/routers.ts: Stripe line items typed as Stripe.Checkout.SessionCreateParams.LineItem[]
server/routers.ts: Stripe idempotency key checkout-session-order-{orderId}
server/_core/index.ts: APP_ORIGIN crashes server in production if missing/invalid
client/src/pages/CheckoutPage.tsx: Payment step calls previewCheckout, server quote drives all values
client/src/pages/CheckoutPage.tsx: changed-quote guard, loading/error states, quote refresh before Stripe
client/src/pages/CheckoutPage.tsx: isProductType() guard replaces as any cast
server/phase1c.test.ts: 35 new tests — PREVIEW, CLIENT/SERVER AGREEMENT, QUOTE REFRESH, STRIPE, APP_ORIGIN, TYPES
reports/production-hardening/rc9-app-origin-topology.md: environment topology documented
reports/production-hardening/rc10-11-stripe-persistence.md: persistence sequence and idempotency key limitation documented
v4.6.365FeatureAugust 8, 2026

Cities Page SEO — Description Shortened + Keywords Added

Shortened the /cities meta description from 178 characters to 121 (within the 50-160 limit). Added 6 focused meta keywords: direct mail advertising Birmingham metro, postcard mailers Jefferson County AL, direct mail Shelby County Alabama, Birmingham area direct mail cities, local advertising service areas, USPS EDDM Birmingham AL.

CitiesPage.tsx: meta description rewritten to 121 characters
CitiesPage.tsx: added 6 keywords via SeoHead keywords prop
v4.6.364FeatureAugust 8, 2026

Blog Index Page SEO — Keywords Added

Added 6 focused meta keywords to the /blog page: direct mail marketing blog, local advertising tips Birmingham AL, postcard mailer strategy, small business direct mail, direct mail advertising insights, USPS EDDM marketing tips.

BlogIndexPage.tsx: added 6 keywords via SeoHead keywords prop
v4.6.363FeatureAugust 8, 2026

Contact Page SEO — Title Shortened + Keywords Added

Shortened the /contact page title from 64 characters to 48 (within the 30-60 limit). New title: "Contact TownFavorite | Direct Mail Birmingham AL". Added 6 focused meta keywords: contact TownFavorite, direct mail advertising Birmingham AL, postcard mailer inquiry, book direct mail ad slot, direct mail company Birmingham, local advertising contact.

Contact.tsx: title rewritten to 48 characters
Contact.tsx: added 6 keywords via SeoHead keywords prop
v4.6.362FeatureAugust 8, 2026

Quiz Page SEO — Keywords Added

Added 6 focused meta keywords to the /quiz page: direct mail product quiz, best direct mail for my business, postcard advertising quiz Birmingham AL, direct mail recommendation tool, audience match quiz, direct mail product selector.

QuizPage.tsx: added 6 keywords via SeoHead keywords prop
v4.6.360FeatureAugust 8, 2026

ROI Calculator Page SEO — Keywords Added

Added 6 focused meta keywords to the /roi-calculator page: direct mail ROI calculator, postcard advertising ROI, direct mail return on investment, direct mail calculator Birmingham AL, postcard mailer ROI tool, local business advertising ROI.

RoiCalculatorPage.tsx: added 6 keywords via SeoHead keywords prop
v4.6.359FeatureAugust 8, 2026

Subscriptions Page SEO — Title Shortened + Keywords Added

Shortened the /subscriptions page title from 65 characters to 51 (within the 30-60 limit). New title: "Direct Mail Subscriptions | TownFavorite Birmingham". Added 6 focused meta keywords: direct mail subscription Birmingham AL, postcard mailer subscription, multi-drop direct mail, direct mail packages Alabama, USPS EDDM subscription, recurring postcard advertising.

SubscriptionPage.tsx: title rewritten to 51 characters
SubscriptionPage.tsx: added 6 keywords via SeoHead keywords prop
v4.6.358FeatureAugust 8, 2026

Pricing Page SEO — Description Shortened + Keywords Added

Shortened the /pricing meta description from 194 characters to 130 (within the 50-160 limit). Added 6 focused meta keywords: direct mail advertising pricing Birmingham AL, postcard mailer cost, USPS EDDM pricing, direct mail rates Alabama, community postcard advertising, local business direct mail.

PricingPage.tsx: meta description rewritten to 130 characters
PricingPage.tsx: added 6 keywords via SeoHead keywords prop
v4.6.357FeatureAugust 8, 2026

Homepage SEO — Meta Keywords + Hero Image Alt Text

Added meta keywords tag to the homepage with 6 focused keywords (direct mail advertising Birmingham AL, postcard mailers Birmingham, USPS EDDM advertising, local business advertising Birmingham, community postcard mailer, direct mail marketing Alabama). Fixed the hero background image alt attribute from empty string to a descriptive value to satisfy SEO audit tools. Added optional keywords prop to the shared SeoHead component so all pages can use it.

SeoHead.tsx: added optional keywords prop that renders <meta name="keywords"> when provided
Home.tsx: added 6 focused keywords to SeoHead call
Home.tsx: changed hero img alt from empty string to descriptive text

Showing 10 of 382 releases

Stay in the loop

New city hubs, campaign features, and platform improvements ship regularly. Follow along or read the blog for strategy guides.

View Available Campaigns