Back to services

Marketing Site Engineering

Your growth team is held hostage by its own website. Here’s the fix.

You know exactly what the marketing site should do. It lives in Framer, engineering has no time, and nobody wants to own a custom build. The fix is one person who lives and breathes marketing, engineering and product: port the site into code your team can change, run the growth experiments with you, and maintain it so the site becomes an asset instead of a liability.

This is for a technical Head of Growth or marketing lead at a software company: someone who can read a pull request and write a spec, but whose site is stuck in a page builder and whose engineers are booked on the product roadmap.

The situation

How a technical growth lead ends up stuck

You’re a technical Head of Growth. You can read the code, you know what the landing page should do, and you have a list of changes that would move the numbers. But the site lives in Framer, so anything beyond a copy change means a custom component, a code override or an embed, and the moment it does, it needs an engineer.

So you put a ticket into engineering’s backlog and wait. But engineering is booked on the product roadmap, your ticket sits behind the features that ship revenue this quarter, and a quick change becomes six weeks. So you do it yourself inside Framer’s limits: a tag here, an embed there, a script pasted into the head of every page. But every workaround adds weight the page carries on every visit, and nobody owns the pile. The site gets slower, the tracking gets less trustworthy, and the next change is harder than the last.

So you make the case for a custom site. But the first question back is “who maintains it?”, and the honest answer is the same engineering team that had no time in the first place. The case dies in the meeting, and you stay where you are: paying for a tool that can’t do what you need, unable to leave it, patching around it, and slowly losing the argument that growth needs engineering at all.

Listing the pain doesn’t fix it. What fixes it is someone who lives and breathes marketing, engineering and product at the same time: one person who ports the site into code your team can change, makes it measurably faster, runs the growth experiments with you and maintains it afterwards. That’s the job I do, so the website stops being the liability the product team resents and becomes the asset growth actually owns.

How to fix it

One person across marketing, engineering and product

  1. 01

    Move the site into code your team can change

    Port it, pixel for pixel, into Next.js with a CMS and inline editing. Copy, pages and layout become things marketing edits in the browser. Anything that needs an engineer gets one: me.

  2. 02

    Put one person across marketing, engineering and product

    Not a developer who takes tickets and not a marketer who writes them. Someone who reads the analytics, writes the spec, builds the change, ships it through your review process and reads the result. The gap between the teams closes because one person stands in it.

  3. 03

    Run the experiments and keep the site running

    Landing pages, pricing tests, onboarding flows, tag changes, integrations, upgrades. The growth backlog ships every week instead of waiting a quarter, and the performance budget holds because somebody is checking it.

But what about editing?

You don’t lose the editor. You stop needing it.

The natural worry: “But what if I need to edit the site? Do we lose everything Framer let us do?” No. You get your own CMS, built around what your team actually changes: copy, pages, sections, images and the blog. Editing is a browser tab, not a pull request.

If your team wants the page-builder feel, that exists too. Craft.js and similar what-you-see-is-what-you-get tools give you drag-and-drop sections and inline editing on the live page. The Jenni AI rebuild has it: anyone signed in appends ?edit to a page and works in place, while visitors never download a byte of the editor. But most teams find they don’t need it, so we decide together whether it is worth building rather than assuming it.

The part that changes is where design happens. You design in Figma, the way you already do, and I build it to match. That is faster than fighting a builder into a layout it wasn’t designed for, and it leaves the site with one source of truth. I train the team on all of it: the CMS, the editor if you have one, the deploy flow and how to read the performance and search numbers, so the capability lives with you rather than with me.

Why fix it

The site is the asset every channel depends on

  1. 01

    Every campaign lands on it

    Paid, organic, email, partnerships: all of it ends on the marketing site. A slow, unchangeable site taxes every channel at once, so fixing it moves every number you report.

  2. 02

    Speed is conversion and rankings

    A page that paints in thirteen seconds on a phone loses the visitor before the headline. Search treats the same thing as a ranking signal. The rebuild in the evidence below cut data on arrival by two thirds.

  3. 03

    Every week in the backlog is an experiment you didn’t run

    Growth compounds on the tests you ship. A six-week wait for a landing page is six weeks of learning you don’t get back, and the site is the cheapest place to learn.

  4. 04

    The maintenance cost exists either way

    You are already paying it in workarounds, in the builder’s subscription, in engineering’s reluctance and in the tracking nobody trusts. Paying it to one owner is cheaper than paying it everywhere.

Search, speed and ownership

What the site gets back once it is code

A marketing site is a search asset first. Every page is server-rendered HTML with the title, description, canonical, structured data and social preview you decide, not what the builder’s SEO panel allows. The blog, tag and author pages come with sitemaps chunked to scale to tens of thousands of URLs, and every old URL redirects to its new home, so the move costs you nothing in rankings and usually earns some back.

Speed is a ranking signal and a conversion lever at once. Core Web Vitals are measured from real visits, so a site that ships two thirds less data and paints in a third of the time moves both the search result and the number of people who stay on it. But that only holds if it stays fast, so the performance budget is checked on every deploy rather than once at launch.

Then there is the part a builder cannot do at all: pages generated from data. Comparison pages, use-case pages, integration pages, one per row of a spreadsheet or a database table, with internal links between them that a crawler can follow. That is how a site grows from fifty pages to five thousand without anyone building five thousand pages.

The same applies to how fast you move. A landing page is a CMS entry. An experiment is a branch with a preview link, reviewed and shipped the same day. The content model is yours: relations, fields and collections shaped around your product rather than around the plan you are on, exportable and queryable. But a builder’s CMS is a tool you rent, so you stop being its tenant and start owning the asset.

Evidence

What happened when I ported Jenni AI off Framer

Jenni AI, an AI writing product with a nine-thousand-post blog, ran its marketing site on Framer. On a simulated mid-range phone the homepage shipped 1.9 MB, made 125 requests and took thirteen and a half seconds to paint its largest element. So I rebuilt it in Next.js with a Payload CMS and inline editing, keeping the design pixel for pixel, and the clean build shipped 482 KB, painted in 3.6 seconds and scored 90.

But the site was never the whole problem. Putting the same twelve marketing scripts back, from Tag Manager and Cookiebot to Clarity, PostHog and Bing, ate most of the saving: 1.1 MB, 9.1 seconds, a score of 73. So I gated the optional tools behind consent and browser idle time and removed the page builder’s own analytics. The optimized site ships 622 KB and scores 79 on mobile and 99 on desktop, with every tool the growth team relies on still firing, and two thirds less data on arrival than the Framer original.

Framer today

The live homepage with its production scripts.

React foundation

The rebuilt homepage before any third-party tool.

React + same tools

All twelve scripts loading on arrival.

Optimized React

Consent first, optional tools after consent and idle.

Mobile, cold cache

Data on arrivalLower is better
Framer today1,946 KB
React foundation482 KB
React + same tools1,145 KB
Optimized React622 KB
JavaScriptLower is better
Framer today1,200 KB
React foundation232 KB
React + same tools896 KB
Optimized React373 KB
Largest contentful paintLower is better
Framer today13.5 s
React foundation3.6 s
React + same tools9.1 s
Optimized React5.4 s
Lighthouse performanceHigher is better
Framer today72
React foundation90
React + same tools73
Optimized React79

Desktop, cold cache

Data on arrivalLower is better
Framer today4,593 KB
React foundation541 KB
React + same tools1,206 KB
Optimized React684 KB
JavaScriptLower is better
Framer today1,326 KB
React foundation235 KB
React + same tools899 KB
Optimized React377 KB
Largest contentful paintLower is better
Framer today2.6 s
React foundation0.9 s
React + same tools0.9 s
Optimized React0.8 s
Lighthouse performanceHigher is better
Framer today84
React foundation99
React + same tools99
Optimized React99

Measured 19 September 2026. Lighthouse 13.4.1, five cold-cache runs per configuration, median values. Mobile: simulated 150 ms RTT, 1.6 Mbps, 4× CPU slowdown. Desktop: 40 ms RTT, 10 Mbps, 1× CPU. Homepage only, preview deployment; production route coverage was wider.

Selected work

9 projects
How it runs

Measure, port, put the tools back, run the experiments

  1. 01
    First week

    Measure the site you have

    I benchmark the live site, inventory every script it loads and freeze the design as the reference. We agree which changes your team needs to make without an engineer, because that list decides what the CMS has to do.

  2. 02
    The port

    Rebuild it as code your team can change

    The site is rebuilt in Next.js and React with a CMS for pages, a page builder for layout and inline editing for copy. Design parity is the brief, not a redesign. The blog, redirects, sitemaps and structured data come across so search rankings survive the move.

  3. 03
    Before launch

    Put the tools back deliberately

    Every analytics, advertising and consent script is loaded on a schedule: consent first, optional tools after a recorded choice and during idle time. Pageviews and conversions are verified against your own properties, not mine.

  4. 04
    After launch

    Run the experiments and stay on as the site’s engineer

    A monthly retainer covers the growth work: new landing pages, experiments, onboarding and pricing tests, tag changes, integrations and upgrades. I plan the tests with your team, build them, and read the results. The performance budget is re-checked whenever something ships, so the site never drifts back to where it started.

What you get

A site marketing can change, experiments that ship, and someone who owns it

  1. 01

    A site your growth team can change

    Copy, pages and layout are editable in the browser. New landing pages are a CMS entry, not a ticket.

  2. 02

    The same design, measurably faster

    The rebuild is held to the frozen reference. The speed comes from a smaller foundation and a loading policy for tools, not from stripping the page.

  3. 03

    Tracking you can trust again

    Each tool is loaded once, on purpose, after consent, and checked against the accounts you own.

  4. 04

    Growth experiments that ship weekly

    Landing pages, tests and flows go from idea to production with your team, without a ticket in the product backlog.

  5. 05

    An engineer who owns it

    The answer to “who maintains it?” is me. Product engineering is not on the hook for the marketing site.

  6. 06

    No lock-in

    Next.js, React, Postgres, a standard CMS and a Railway deployment your team controls. If you bring it in-house later, the handover is designed for that.

What's included

Everything from the first benchmark to the last deploy

  • A benchmark and script inventory of the current site, with the numbers in writing
  • A rebuild of the marketing site with design parity and a CMS your team edits
  • Blog, redirects, sitemaps and structured data migrated so rankings survive
  • A consent-led loading policy for every analytics and advertising tool
  • Tracking verified end to end against your own measurement properties
  • A performance budget and the tooling to re-run the comparison
  • Growth experiments planned, built and read with your team on the retainer
  • Ongoing maintenance on a monthly retainer, with product engineering never involved
Fit

When this is the right call

Good fit

  • Your marketing site is in Framer, Webflow or a similar builder and you have outgrown it
  • You or someone on the growth team is technical enough to spec the changes you want
  • Engineering cannot take marketing work this quarter, and you are tired of waiting
  • You care about speed, tracking and search rankings, not just how the site looks

Poor fit

  • You want a redesign; do that first, then port the result
  • The site is five pages, changes twice a year and the builder is fine
  • You have an engineer with time and appetite to own the marketing site
  • You want a new agency, a retainer for design or a content team
FAQ

What growth leads usually ask first

Do we have to leave Framer?

If you have outgrown it, yes, and the first week proves it with numbers rather than opinion. The case for a port is a smaller foundation, ownership of the content model and the ability to change the site without working around the builder. Tag governance improves either platform; it does not give you the other two.

Will the design change?

No. The live site is frozen as the reference and the rebuild is held to it. If you want a redesign, do it first and I will port the result.

What happens to our blog and search rankings?

Every URL is migrated with a redirect, the sitemaps are chunked for large archives, and structured data comes across. The example rebuild carried a nine-thousand-post blog.

Can marketing still edit copy without asking anyone?

Yes. Pages live in your own CMS, and if the team wants the page-builder feel, Craft.js gives inline editing on the live page. Visitors never download the editor. Design happens in Figma and I build it to match, with training for the team on all of it.

Who maintains it if you disappear?

The stack is deliberately ordinary: Next.js, React, Postgres, a standard CMS, deployed on Railway under your account. It is documented for handover, and any competent engineer can pick it up.

How is this different from an agency?

One senior engineer who also runs growth, with no account manager between you and the person writing the code. You get the measurements, the code, the experiments and the maintenance from the same pair of hands.

Start

Tell me what you can't change without an engineer

Send the site, the tool it lives in and the three changes you have been waiting on. We agree the first week on the call, you get the numbers and the plan for the port, and the backlog starts moving.