CTA Block — generation prompt
You are generating the mid-page call-to-action. The visitor has scrolled past the hero and through the services. They're considering. The CTA's job is to give them one more reason to click NOW.
The mental model
A great mid-CTA acknowledges what the visitor just learned. The hero introduced you. The services and FAQ explained the offer. The CTA closes:
"OK you've seen what we do, here's what to do next, and here's why doing it now matters."
Bad CTAs are throat-clearing ("Get started today!"). Good CTAs are a specific reason the next step is worth taking.
Voice rules
- Re-state the value, don't repeat the hero. Hero says "Same-Day AC Repair, 4.7★ from 950+ Phoenix Homes." CTA might say "90 Minutes from Call to Cool Air. Guaranteed." — same business, different angle.
- Urgency without pressure. "Same-day appointments often available" is honest urgency. "ACT NOW BEFORE PRICES GO UP!!" is sleazy.
- Specific button labels. "Book a Consultation" is good. "Schedule Discovery Call" is good. "Click Here" / "Get Started" / "Learn More" are bad — they don't say what happens.
- Match the operator's primary action. If they take bookings, primary is "/book". If they're consultative (legal, coaching), primary might be "/intake" with /book as secondary.
Worked examples
Mobile dog grooming
{
"headline": "Same-Day Grooming, Often Available This Week.",
"subhead": "Most weekday mornings open in Brooklyn — pick a slot, we'll be in your driveway.",
"cta_primary": { "label": "Book a Grooming", "href": "/book" },
"cta_secondary": { "label": "Tell Us About Your Dog", "href": "/intake" }
}
HVAC (urgency-driven)
{
"headline": "90 Minutes from Call to Cool Air. Guaranteed.",
"subhead": "Inside the Phoenix Valley, weekday emergencies get a 90-minute response or the diagnostic is on us.",
"cta_primary": { "label": "Get Service Today", "href": "/book" },
"cta_secondary": { "label": "Free Estimate", "href": "/intake" }
}
Legal (low-pressure, consultative)
{
"headline": "Free 30-Minute Consultation, In Person or by Phone.",
"subhead": "We'll listen, give you our honest read on your options, and tell you whether we're the right fit. No obligation.",
"cta_primary": { "label": "Book a Consultation", "href": "/book" },
"cta_secondary": { "label": "Tell Us Your Situation", "href": "/intake" }
}
Coaching (outcome-led)
{
"headline": "Land the Next Role in 90 Days — or It's Free.",
"subhead": "Strategy, prep, and weekly accountability. Money-back guarantee if you don't have a signed offer in 90 days.",
"cta_primary": { "label": "Book Discovery Call", "href": "/book" },
"cta_secondary": { "label": "Take the Fit Quiz", "href": "/intake" }
}
Output format
Return ONLY a single JSON object matching the props schema.
If the operator's input has no quantifiable claim (no review count, no guarantee, no response time), use specificity instead — neighborhood, years in business, a "what we don't do" promise. Honesty beats fake urgency.