Purlin template documentation — everything you need to launch.
Purlin template documentation
Template guide

Set up Purlin in an afternoon.

Everything you need to customize, populate, and launch your roofing site — no code required for the basics, and clearly-labeled knobs when you want to go deeper.

Customize, populate, and launch your roofing site — no code for the basics, clear knobs when you want more.

19 page layouts8 CMS collectionsFully responsiveGSAP-powered · CWV-safe
Getting started
Images
CMS
Components
Animations
Financing
Forms
Support
01 — GETTING STARTED

Global styles, color & type

Purlin ships with a single source of truth for color and typography. Update these once and every page follows. In Webflow, open Style Manager → Variables to find them.

/* Color variables */
--cream:        #F4F1EA   /* page background */
--forest:       #283730   /* primary dark */
--orange:       #CE4318   /* CTA only */
--ink:          #1F2823   /* body text */
--card:         #FBFAF6   /* surfaces */
  • Swap the logo: select the logo mark in the nav symbol, delete the placeholder, and drop in your SVG (keep it ~26px tall).
  • Change the fonts: the display face is Schibsted Grotesk, body is Hanken Grotesk. Replace both in Project Settings → Fonts, then reassign in the two base text styles.
  • Reserve orange for CTAs — it's the one accent that signals "click." Don't use it for body text or icons.

SWAPPING IMAGES

Swapping images

Most images update the same way: select the image on the canvas, open the Settings panel, and choose Replace image (or drag a new file into the Assets panel first, then reselect it there). Hero photography, before/after shots, and team photos all work like this — swapping the file doesn't touch layout, cropping, or classes. CMS-driven images (service, project, and blog post covers) live on the Collection item itself, so update them from the CMS panel rather than the page canvas. The Open Graph preview image for each page is set separately under Page settings → Open Graph and won't update automatically when you change an on-page hero image.

02 — CMS GUIDE

Adding your content

Eight CMS collections power the dynamic pages and local SEO. Add an item to Services, Projects, Service Areas, or Blog Posts and its detail page builds itself from the matching template.

Services
Title, icon, summary, "what's included" list, process steps → renders the Service Detail template. Icon (image): a 24px SVG icon (forest #283730) shown on the services grid card — leave empty to fall back to the built-in wrench icon. Dark card (switch): turns the card into the dark forest style with gold text, for highlighting one service (e.g. Commercial Roofing). Show badge (switch): shows the "Most requested" ribbon on that service's card. Testimonial quote / name / meta / initials: the client quote shown on that service's detail page.
Projects
Cover, gallery, before/after, location, material → feeds the Gallery list and Project Detail. Testimonial quote / name / meta / initials: the client quote shown on that project's detail page.
Service Areas
City, county, local copy, nearby towns → renders the localized Service Area Detail. Area reviews (multi-reference): pick the 3 reviews shown on that area's page — add real reviews to the Reviews collection, then link them here. Nearby areas (multi-reference): the 3 nearby-town cards shown at the bottom of the area page.
Blog Posts
Category, cover, author, body, read-time → feeds the Blog list and Blog Post template.
Reviews
Customer name, rating, quote, platform → feeds the Reviews page and Home testimonials.
Team
Name, role, photo, bio → feeds the About page team grid.
Blog Categories
Category name and description → powers Blog filter chips and category badges.
Project Categories
Category name and description → powers Gallery filter chips.
Updating your phone number, address & license

Your phone number, business address, and license number appear in several places. Update them here to keep every page in sync:

  1. Components (change once, updates every page): Navbar (phone link, Call pill), Mobile Menu (CALL US block), Footer (phone, address, license number), Sticky CTA Bar (phone), CTA Band & Orange CTA Band (phone button), Announcement Bar (the phone number shown in the top bar).
  2. Footer exception: the 404 and Style Guide pages don't use the Footer component — they ship with a simplified static footer, so update their phone number, address, and license separately if you change them elsewhere.
  3. Contact page (page-specific, not covered by components): the Call card and Address card in the contact rail, business hours, the emergency line ((512) 555-0199), and the form field placeholder text.
  4. CMS content: some Blog Post, Service, and Project entries mention the phone number or a place name in their body copy — search for these in the Editor and update per-entry.
  5. Google Map component: the address already appears in the map caption paragraph — update it there too so it doesn't fall out of sync with the Footer.
03 — COMPONENTS

Reusable building blocks

The shared pieces are Webflow Components — edit one instance and every page updates. You'll find them in the Components panel:

Navbar           — announcement bar + sticky nav
Nav Docs         — docs-page nav variant (Instructions, Licenses, Changelog)
Footer           — multi-column footer + back-to-top
Mobile Menu      — full-screen mobile nav overlay
Sticky CTA Bar   — fixed bottom call/quote bar (mobile)
Trust Bar        — trust/stat strip
CTA Band         — quote CTA section
Orange CTA Band  — shared final-CTA band (About/Service Areas/Blog/Projects/Reviews)
Google Map       — embedded map block

Repeating cards (services, projects, reviews, blog posts) use shared classes rather than Components — edit the class to restyle every card at once.

Google Map uses a single Component — change the address once in its settings and it updates on every page (requires a Google Maps API key in Project Settings).

GOOGLE MAPS

Setting up Google Maps

The Contact and Service Areas pages use Webflow's native Map element. Add your own Google Maps API key in Site Settings → Integrations → Google Maps to remove the development watermark. Service Area detail pages link out to Google Maps and need no key.

04 — ANIMATIONS

How to Edit GSAP Animations

All motion on this template runs on GSAP 3.12.5, loaded from cdnjs, plus a handful of registered site-footer scripts. Every animation only ever animates transform and opacity — the two GPU-cheap properties that never trigger layout — and everything auto-disables under prefers-reduced-motion: reduce via gsap.matchMedia.

ELEMENT MAP
Hookdata-reveal attribute
EffectScroll-triggered fade + 22px rise (fires once, at 88% from top)
ScriptrlMotionInit2
RemoveDelete the attribute from the element
Hook.rl-stat-num / .rl-abtp-stat-num
EffectAnimated count-up (1.4s)
ScriptrlMotionInit2
RemoveRemove the class
Hook.rl-nav-bar
EffectNav hides on scroll + adds shadow
ScriptrlMotionInit2
RemoveRemove the script to disable
Hook.rl-fab
EffectBack-to-top smooth scroll
ScriptrlMotionInit2
RemoveDelete the element
Hook.rl-mtoggle .rl-mclose .rl-menu-wrap .rl-menu-1
EffectMobile menu open/close (with focus trap)
ScriptPurlin Mobile Menu Scroll
Remove
Hookdata-filter-group data-filter data-tags
EffectBlog/Projects filter chips (GSAP fade)
ScriptPurlin Filter Chips
RemoveDelete the attributes
Hook.rl-nav + current page match
EffectNav current-page underline
ScriptPurlin Nav Active GSAP
RemoveRemove the script to disable

To change speed or distance, go to Project Settings → Custom Code, find the relevant registered script (for example rlMotionInit2), and edit the literal numeric values inside — e.g. duration:.7 (the animation duration in seconds) or y:22 (the rise distance in pixels). A short excerpt of the reveal animation:

gsap.from(el, {
  opacity: 0,
  y: 22,
  duration: .7,
  ease: "power2.out"
});
HOW TO REMOVE ALL ANIMATIONS
  1. Go to Site Settings → Custom Code and delete the Purlin scripts (GSAP core, ScrollTrigger, Mobile Menu Scroll, Motion Init, Hero Typer, Nav Active GSAP, Filter Chips, Load More, FAQ GSAP, UI Micro GSAP, Back To Top GSAP, TOC Spy GSAP, Sticky CTA GSAP, Chips Scroll Hint).
  2. Leftover data-reveal and similar attributes on elements are harmless once the scripts are gone — they do nothing without the script.
  3. If you don't need any motion at all, you can also delete the two GSAP CDN <script> tags.
REGISTERED SCRIPTS
  • gsapCore — loads the GSAP 3.12.5 core library
  • gsapScrollTrigger — GSAP plugin that fires animations on scroll position
  • Purlin Mobile Menu Scroll — opens/closes the mobile nav with a focus trap
  • rlMotionInit2 — reveal, count-up, nav-hide, and back-to-top-click behavior
  • Purlin Hero Typer v2 — animated typewriter effect in the hero headline
  • Purlin Nav Active GSAP — underlines the current page in the nav and animates the link hover underline
  • Purlin Back To Top GSAP — smooth-scrolls to top and shows/hides the .rl-fab back-to-top button as you scroll
  • Purlin UI Micro GSAP — nav link hover underline, CTA arrow micro-motion, phone-icon wiggle, and hero image crossfade
  • Purlin FAQ GSAP — smooth expand/collapse animation for the FAQ accordion items
  • Also registered — Purlin Load More (paginates the Blog/Projects grids), Purlin TOC Spy GSAP (highlights the active section in this page's table of contents), Purlin Sticky CTA GSAP (shows/hides the mobile sticky CTA bar as you scroll), and Purlin Chips Scroll Hint (nudges users to scroll the filter-chip row)
  • Purlin Filter Chips — GSAP fade for the Blog/Projects filter chip UI
05 — FINANCING EXAMPLE

About the financing example

The Financing section on the Home page now shows static example monthly payments for a typical project, so there's no calculator script to configure. An interactive financing calculator with live APR, term, and material inputs is available to template customers as a free cloneable companion project — just reach out through support to get access.

FORM SUBMISSIONS

Where form submissions go

The instant-quote form on the homepage and the form on the Contact page both use Webflow's native form handling, so no extra script or third-party service is required. Set a notification email in Site Settings → Forms → Form notifications so new submissions land in your inbox instead of only the Webflow dashboard. While you're working on the staging (.webflow.io) domain, Webflow captures every submission automatically — add your own address before you publish to a custom domain, or you'll miss early leads. You can review or export every submission at any time from Site Settings → Forms → Submissions.

06 — SUPPORT

Support & changelog

Need something this guide doesn't cover? Here's where to look next.

  • Changelog — version history for every template update.
  • Licenses — full licensing information for fonts, icons, and code.
  • Style Guide — the design system reference: colors, type, components, and more.
(512) 555-0142Get a free quote