Marketing wants to ship a landing page per campaign without filing a Jira ticket. Zoho Sites is the right tool if you build the foundations: templates, brand-locked components, form-to-CRM routing, and analytics. Without those, every page becomes a one-off and the brand drifts in a quarter.
Build a master template, not a master page
Sites lets you save sections as reusable blocks. Build the seven blocks marketing actually uses: hero, social proof, three-up benefits, screenshot, testimonial, pricing teaser, footer with form. New page = drop blocks, swap copy. Speed comes from constraint.
Lock brand: fonts, colors, spacing tokens
Under Site Settings, Theme, set the design tokens. Disable inline color and font overrides where the platform allows. If a marketer can pick comic-sans on a campaign page, eventually they will.
Form-to-CRM with hidden context fields
Every form on a landing page should pass the campaign context. Hidden fields: utm_source, utm_medium, utm_campaign, page_url, referrer. The Sites form connector pushes these to CRM Lead custom fields.
// On page load, populate hidden fields from URL
document.querySelector('[name="utm_source"]').value = new URLSearchParams(location.search).get('utm_source');
document.querySelector('[name="page_url"]').value = location.href;
Routing the lead to the right owner
The Lead lands in CRM with utm_campaign = “fall_webinar_2026”. A CRM Assignment Rule routes it to the campaign owner (lookup table per campaign). Stop letting webinar leads round-robin to the AE who happened to be next.
campaignOwner = {"fall_webinar_2026":"[email protected]","abm_pilot":"[email protected]"};
ownerEmail = campaignOwner.get(lead.utm_campaign);
if(ownerEmail != null)
{
user = zoho.crm.searchRecords("Users","(email:equals:" + ownerEmail + ")");
zoho.crm.updateRecord("Leads", lead.id, {"Owner":user.get(0).get("id")});
}
Page-load and core web vitals
Sites pages are not magically fast. Compress hero images, defer non-critical JS, drop the chat widget on conversion-critical pages. Run Lighthouse on every published page. Below 80 on mobile, fix or do not ship.
A/B testing without a separate tool
Sites supports built-in variants. Create variant B of the hero, set traffic split 50/50, attach the conversion event to form submit. Wait for 200+ conversions per variant before declaring a winner. Faster declaration is gambling.
Multi-language pages
Sites supports per-page language tags. For global campaigns, build the master in English, clone to localized variants, and use the same form connector with a Country hidden field. CRM gets the lead with locale already stamped, downstream campaigns send in the right language.
Sunset old pages with a checklist
Landing pages die. Webinars end. Set an Archived_Date on each page and a calendar reminder to redirect to the evergreen pillar page when the campaign ends. Otherwise paid traffic 18 months later lands on a dead form.
What to do this week: build the seven-block master template, lock the theme, and ship the next campaign page from blocks. Time to publish should be under an hour from copy approval.