Phase 5: contact, conversion and tracking hooks

- Contact page: Call/Text/WhatsApp at the top, hours, drop-off address,
  service area, map, and the quote form
- Quote form: device, problem, preferred contact; email required, phone
  optional; labels wired to inputs; _gotcha honeypot; AJAX submit to
  form.taxi with an inline "same day during business hours" message and
  an error fallback (still posts normally without JavaScript)
- Analytics hooks for click_call, click_text, click_email,
  submit_quote_form and click_google_reviews; no-ops until Plausible
  is installed
- /review redirects (307) to the Google review link
- Maps embed moved to one MapEmbed component

Co-Authored-By: Claude Opus 5.5 <[email protected]>
This commit is contained in:
asownerytandClaude Opus 5.5 committed 2026-09-30 20:48:56 +13:00
1 parent 9f5cf387dc
commit 4d901b351e
9 files changed
+293 -68

No files matched your search

+2 -8
View File
@@ -3,7 +3,7 @@ import Link from "next/link";
import styles from "./page.module.css";
import bgimage from "./assets/header-bg.jpg";
import Button from "./components/Button";
import { GoogleMapsEmbed } from "@next/third-parties/google";
import MapEmbed from "./components/MapEmbed";
import ContactForm from "./components/ContactForm";
import FaqList from "./components/FaqList";
import CtaBand from "./components/CtaBand";
@@ -319,13 +319,7 @@ export default function Home() {
</p>
</div>
<div className="w-full">
<GoogleMapsEmbed
apiKey="AIzaSyDbgQY55TQY5CefsCUwKbc8RfoOUe8U5gY"
width="100%"
height="400px"
mode="place"
q="place_id:ChIJz0ZoDYhADW0R0TDgWoWMq0M"
/>
<MapEmbed />
</div>
</section>