Step-by-step guide

Build your campaign website

This guide takes you from nothing to a live website, one plain step at a time. No coding, and no step assumes you've done anything like this before. Start to finish, plan on about an afternoon — most of that is just gathering your photo and writing a few sentences about yourself.

Before you start

It helps to have three things on hand before you sit down:

  • A photo of yourself — a headshot or a clean photo from the shoulders up. A phone photo in good light is fine.
  • A few sentences about who you are and why you're running. You don't need to polish them; the chatbot will help shape them.
  • Your three to five issues, even just as rough notes.

You'll also create a few free accounts as you go. The next step covers each one.

01Create your free accounts

Three accounts do the work. Each is free, and each has one job. You can create them now, or as you reach the step that needs them.

An AI chatbot Free

This is the assistant that interviews you and builds your site. Set up a free account with the AI chatbot you'd like to use — for example, Claude at claude.ai.

Cloudflare Free

This publishes your finished site to the internet at no cost. Create an account at dash.cloudflare.com.

Formspree Free

This catches the email addresses of supporters who sign up on your site and sends them to you. Create an account at formspree.io.

Optional, later

If you later want to send a newsletter to your list, a tool like Mailchimp handles that. You don't need it to launch, so skip it for now and add it once you actually have people to email.

02Download the files

Everything you need is one small download: the finished site template and a prompt that tells your chatbot exactly what to build.

  1. Download stump-site-builder.zip and extract (unzip) it.
  2. Inside you'll find two files: template.html (the finished design) and stump-prompt.txt (the instructions).
  3. Open stump-prompt.txt and follow the short steps at the top — the next step walks through them too.

03Build your site with the chatbot

Following stump-prompt.txt, you'll do three quick things in your chatbot:

  1. Start a new, empty chat with your AI chatbot.
  2. Attach template.html — the finished design from the download.
  3. Copy everything in stump-prompt.txt below the "copy from here down" line and paste it in as your first message.

From there, the chatbot interviews you. It asks for, roughly in order:

  1. Your name as it should appear, the office you're seeking, and your election dates.
  2. A few sentences about yourself and why you're running.
  3. Your three to five issues.
  4. Your contact email, your social links, and any donate page you'd like to link to.
  5. Your colors (pick a ready-made look or give your own), and your "Paid for by" disclaimer.

Answer in your own words. If you give a one-line answer where more would help, the chatbot will ask a quick follow-up — that's normal, and it makes the site better. When it's done, the chatbot gives you your finished website as a file to download. Save it somewhere you'll find it again, like your Downloads folder.

Good to know

Stump never handles donations. If you have a donate page (on WinRed, Anedot, or ActBlue), your site simply links out to it. That keeps you clear of the rules that come with collecting money on your own site.

04Add your photo

Your downloaded site is a folder. Inside it is a folder called images. Put your photo there and name it exactly photo.jpg, replacing the placeholder. That exact name matters — it's how the page knows where to find your picture.

  • A portrait-shaped photo (taller than it is wide) fits best.
  • If your photo is a .png instead of a .jpg, just rename the file in the page to match, or ask the chatbot to do it for you.

05Turn on email sign-ups

Your site has a "Join our Team" box. To make it actually deliver addresses to you, connect it to your free Formspree account.

  1. Log in to Formspree and create a new form. Name it something like "Campaign sign-ups."
  2. Formspree gives the form a web address that ends in a short code, like formspree.io/f/abcdwxyz. That last part — abcdwxyz — is your form ID.
  3. In your site, find YOUR_FORMSPREE_ID and replace it with your form ID. If you'd rather, paste your form ID to the chatbot and it will put it in the right place for you.

From then on, every supporter who signs up lands in your Formspree inbox, and you can export the whole list whenever you want.

06Publish your site on Cloudflare Pages

This is the step that puts your site on the internet. It's drag-and-drop — no command line, no code.

  1. Log in to the Cloudflare dashboard.
  2. In the left menu, open Workers & Pages.
  3. Choose to create a new project, and pick the drag-and-drop (direct upload) option rather than the Git one.
  4. Give your project a name — this becomes your web address, so something like jane-for-council gives you jane-for-council.pages.dev.
  5. Drag your whole site folder into the upload area.
  6. Select Deploy site. After a moment, your site is live at your-name.pages.dev.

If the button is hard to find

Cloudflare occasionally tucks the drag-and-drop option behind a small "Get started" or "Upload assets" link under the Pages section. Look for the upload or direct-upload choice rather than the option that connects to GitHub.

07Use your own domain name (optional)

Your free .pages.dev address works perfectly well. If you'd rather have something like janeforcouncil.com, you can buy a domain (often around $10 a year) and point it at your site.

  1. Buy the domain from any registrar, or directly through Cloudflare.
  2. In your Pages project, open Custom domains and add your domain.
  3. Cloudflare walks you through the one DNS setting to change. Once it takes effect, your site answers at your own name, with https included.

08Turn on analytics (optional, recommended)

If you'd like to see how many people visit your site, Cloudflare has free, privacy-friendly analytics built in. It needs no code and sets no cookies, which keeps things simple.

  1. In the Cloudflare dashboard, open your Pages project.
  2. Go to Metrics, then select Enable under Web Analytics.
  3. That's it — Cloudflare adds what it needs on your next deploy, and your visitor numbers show up in the dashboard.

See the FAQ below if you specifically want Google Analytics instead.

09Editing your site later

Campaigns change. When something needs updating — a new endorsement, a moved town hall, a fixed typo — you don't start over:

  1. Go back to your chatbot and say what changed, in plain words: "Add an endorsement from the firefighters' union," or "Change the town hall to the 14th."
  2. The chatbot gives you an updated file.
  3. Replace the old file, and drag your folder into Cloudflare Pages again. Your live site updates in a couple of minutes.

FAQs

Does this really cost nothing?

Yes. Stump is a giveaway from the Center for Campaign Innovation, and every tool it uses has a free tier that comfortably covers a campaign site. The only thing you'd ever pay for is an optional custom domain name, which is about $10 a year and entirely up to you.

What about Google Analytics?

You can use it, but we recommend Cloudflare's built-in Web Analytics instead. It's free, it tells you what most campaigns want to know (how many people visited and where they came from), it needs no code, and it doesn't use cookies — so you avoid the cookie-consent questions that come with Google's tracking.

If you do want Google Analytics, your site has a clearly marked spot to paste your GA4 measurement ID (it looks like G-XXXXXXXXXX). Until you paste a real ID there, nothing loads, so it's safe to leave alone.

Do I need to know how to code?

No. You type answers into a chat, drag a folder, and paste one short ID. If you can attach a photo to an email, you can do this.

Can I take donations on my site?

Your site links out to a donation page if you have one (on WinRed, Anedot, or ActBlue), but it never collects money itself. That's deliberate: handling contributions directly brings compliance rules you don't want on a simple campaign site. The link-out keeps it clean.

How do I get the email addresses people sign up with?

They collect in your Formspree account. Log in any time to see your sign-ups, and export the whole list as a spreadsheet when you're ready to email people or load them into another tool.

What photo should I use?

A clear headshot or shoulders-up photo, taller than it is wide. A phone photo in good light works. Save it as photo.jpg in your site's images folder.

How do I change my colors or text after it's built?

Tell the chatbot what you want changed and it regenerates the file. Then re-publish by dragging your folder into Cloudflare again (see step 9).

What should my "Paid for by" disclaimer say?

Most campaigns need a line like "Paid for by [Committee Name]." The exact required wording is set by your state, and sometimes your local election office, so confirm it with them. Your site puts the disclaimer in place; you just supply the right words.

Do I need a cookie or consent banner?

With the recommended setup (Cloudflare analytics, no Google tag), your site doesn't set tracking cookies, so for a typical US local campaign there's nothing to consent to. If you add Google Analytics, that changes — which is one more reason we suggest the Cloudflare option.

Is my site secure?

Yes. Cloudflare serves your site over https automatically, with the padlock in the browser, at no extra step.

How do I update my election dates?

Same as any other change: tell the chatbot the new dates and re-publish. If your race has no primary, the primary date simply isn't shown.

If you get stuck

The fastest help is the chatbot itself — describe what you're seeing in plain words ("I dragged my folder in but the photo isn't showing") and it will walk you through it. For anything specific to your account, each tool has its own help center: your AI chatbot's support site, Cloudflare Pages, and Formspree.

← Back to Stump