LP Automation Pipeline
Overview
The LP automation pipeline replaces the old WordPress + Elementor workflow. You fill in a brief form and within 10 minutes get a live Cloudflare Pages preview URL with a complete landing page — copy written by Claude, layout from the MM template, branded to the client.
You then review the copy, upload the logo and hero image, add the conversion tracking tags, and merge the PR. Cloudflare Pages auto-deploys in ~30 seconds.
How it works
mm-lp-pipeline Worker with an authentication header.mm-lp-[clientslug]) if it doesn't exist, creates a branch (lp/[service]-[suburb]), commits the HTML, and opens a PR with a review checklist.The brief form
The brief form is a 3-step React app. Access it at: mm-lp-brief.mechanicmarketing.co ↗
Step 1 — Business details
- Business name, phone number, address
- Domain (e.g.
performanceplus.net.au) - Client slug — short, lowercase, no spaces (e.g.
performance-plus). Used as the repo name. - Google Maps embed URL and directions URL
Step 2 — Campaign details
- Service (e.g. "Car Servicing") and suburb (e.g. "Queanbeyan")
- 3 selling points — what makes this client different
- 3 real customer reviews (name + review text)
- GA4 Measurement ID (e.g.
G-XXXXXXX) - Primary CTA preference — Call or Form
Step 3 — Brand details
- 5 brand colours with live preview panel
- Heading font and body font (Google Fonts names)
After you submit
You'll get a Slack message in the MM channel within a few minutes. It contains:
- The Cloudflare Pages preview URL — open it to review the page
- A link to the GitHub PR — this is where you'll merge when ready
If you don't get a Slack message within 5 minutes, something went wrong. Check the Worker logs or flag to Teddi.
Your job before merging
The pipeline generates the copy and structure. Before you merge the PR, you need to:
index.html file.src in the header. Accepted formats: SVG, PNG, WebP.img src.<head> of the page.Template block order
The MM template has a fixed block order. You can show/hide blocks by commenting them out in the HTML — don't delete them.
| # | Block | Notes |
|---|---|---|
| 1 | HEAD / META | Title, description, GTM, fonts |
| 2 | HEADER | Sticky, logo + phone. Already has sticky CTA per Josh's rule. |
| 3 | TRUST BAR | 4 trust items, secondary brand colour background |
| 4 | HERO A — Call CTA | Default hero. Swap to Hero B for form-primary clients. |
| 5 | HERO B — Form CTA | Commented out by default |
| 6 | SERVICES | 3-column card grid |
| 7 | SERVICE CHECKLIST | 8–12 items, 2-col grid with checkmarks |
| 8 | BENEFIT CARDS | 4–6 cards, dark background |
| 9 | HOW IT WORKS | 3-step process, numbered circles |
| 10 | WHY CHOOSE US | Primary brand colour background |
| 11 | MID-PAGE CTA STRIP | Secondary brand colour background |
| 12 | ABOUT | Split layout, optional owner photo |
| 13 | FAQ | Pure CSS accordion, first item open by default |
| 14 | SERVICE AREA | Map embed + fallback link |
| 15 | REVIEWS | 3 review cards |
| 16 | FOOTER CTA | Primary brand colour background |
| 17 | FOOTER | Secondary colour, "Powered by MM" line |
Troubleshooting
| Problem | What to check |
|---|---|
| No Slack message after 5 minutes | Flag to Teddi — check Worker logs in Cloudflare dashboard |
| Preview URL returns 404 | Cloudflare Pages may not be connected to the repo yet. Flag to Teddi. |
| Copy looks wrong or generic | Edit directly in the PR file before merging. Minor edits are expected. |
| Brand colours look off | Check the CSS variables in the :root block of index.html. Update hex values if the form submission had an error. |
| Map not showing | The Google Maps embed URL in the brief may have been invalid. Replace the iframe src with a fresh embed URL from Google Maps. |