# CMS-FIELD MAP - Gritting Service page

Every token below marks a spot that must be an editable CMS field, so marketing
can change copy without a developer. Tokens use `{{ }}` so they are safe in most
legacy template engines; swap the delimiters for your CMS syntax.

| Token | Field type | Location | Notes |
|---|---|---|---|
| `{{page_title}}` | text (<60 chars) | `<title>` | See COPY-DECK.md for SEO/PPC options |
| `{{meta_description}}` | textarea (<160) | `<meta name=description>` | |
| `{{canonical_url}}` | url | `<link rel=canonical>` | Self-referencing |
| `{{hero_eyebrow}}` | text | `.cwc-eyebrow` | Seasonality cue |
| `{{page_h1}}` | text | `<h1>` | One H1 per page |
| `{{hero_subheadline}}` | textarea | hero `<p>` | 2 lines max |
| `{{hero_image}}` | image | `.cwc-hero__media img` | 1600×700, WebP + JPG fallback |
| `{{hero_image_alt}}` | text | alt attribute | Required |
| `{{primary_cta_label}}` | text | hero primary button | |
| `{{phone_display}}` / `{{phone_e164}}` | text | all `tel:` links | Keep both in sync |
| `{{benefit_tiles}}` | repeater (icon, title, body) | Benefits section | 3-6 items |
| `{{process_steps}}` | repeater (title, body) | How it works | 3-4 items |
| `{{plans}}` | repeater (name, bullets, cta) | Two ways to buy | |
| `{{testimonials}}` | repeater (quote, attribution) | Trust section | **Only approved, verifiable quotes** |
| `{{client_logos}}` | media repeater | Logo strip | Only clients with permission |
| `{{faqs}}` | repeater (question, answer) | FAQ | Must be mirrored into FAQPage JSON-LD |
| `{{sectors}}` | list | Coverage | |
| `{{form_action}}` | url | `#cwcQuoteForm action` | Existing enquiry handler |
| `{{gtm_id}}`, `{{gads_conversion_id}}`, `{{gads_label}}`, `{{meta_pixel_id}}` | text | analytics blocks | Never hard-code |

## Locked regions (NOT CMS-editable)

- The header include (`/includes/header.html`) - nav is generated by the CMS
  navigation loop; nothing else may be edited.
- The footer include (`/includes/footer.html`) - except registered address,
  copyright year and the Klaviyo embed.
- `cwc-shell.css` - changing it breaks header/footer parity with the rest of the site.

## Rollback-safe variant

If the CMS strips `<style>` / `<script>`:

1. Move the critical CSS block into `/cwc/assets/cwc-critical.css` and link it.
2. Replace inline SVGs with `<img src="/cwc/assets/icons/*.svg" alt="">`.
3. The page still functions with zero JS: FAQ panels render open, the form
   posts natively with HTML5 validation, and the sticky bar is CSS-only.
