Summary (TL;DR): This guide covers how to create an online petition form and host it on your own website instead of a third-party platform. It compares an embeddable petition widget against hosted petition sites and hand-coded forms, walks through the exact fields to collect, explains the consent and data questions that decide whether signatures hold up, and shows how to keep momentum visible with a live signature count.

Most petitions do not fail because nobody agreed. They fail because the form asked for too much, loaded too slowly, or lived on a page that gave people no reason to believe the campaign was real.
A petition form is a very short conversion funnel. Someone arrives already sympathetic, and your only job is to not lose them between that first nod and a submitted signature. This guide covers the three ways to build one, the fields worth collecting, the consent wording that keeps you out of trouble, and how to display momentum without inventing it.
What an Online Petition Form Actually Needs to Do
Strip away the campaigning language and a petition form has four jobs.
- Capture a credible signature. A name plus a verifiable email, at minimum. Without verification, a total is just a number.
- Make the ask legible. The reader needs to know who is being asked, what for, and on whose behalf, before they sign.
- Prove momentum. Visible progress is the single strongest reason a hesitant visitor signs now rather than later.
- Keep the data usable. Deduplicated, exportable, and separated into campaign consent versus marketing consent.
Everything else, including the design, is downstream of those four. If you want the broader mechanics of form completion rather than petitions specifically, our guide to designing website forms people actually finish covers field order, validation timing and error copy in more depth.
Three Ways to Build a Petition Form
There are really only three routes, and they trade off differently on ownership, speed and reach.
Method 1: An Embeddable Petition Form Widget
You add a ready-made petition form to a page on your own website, style it to match, and it handles submission, storage and the signature count for you. This is the fastest route to something that lives on your own domain, which matters because the campaign page is usually also the page doing the persuading.
The practical advantage is ownership. The signatures land in your account, the email addresses are yours to export, the page is yours to optimise, and the traffic builds authority for your domain rather than someone else's. You can set one up with a petition form widget and have it collecting signatures the same afternoon, with no backend to maintain.
The limitation is discovery. A petition on your own site does not come with an audience, so you are responsible for driving people to it through email, social, press or search.
Method 2: A Hosted Petition Platform
Sites such as Change.org and Avaaz host your petition inside their own ecosystem. The draw is distribution: they already have users, recommendation surfaces and a recognised brand, and a petition that catches can travel a long way without you doing anything.
The trade-offs are real, though. You typically do not own the signer email addresses, the page carries the platform's branding and its calls to action rather than only yours, and the campaign's canonical URL lives on a domain you do not control. If the petition is a step toward an ongoing relationship, such as a membership, a mailing list or a local group, that lost contact data is the expensive part.
Method 3: A Custom Form Wired to Your Own Backend
The hand-built route: an HTML form posting to an endpoint you wrote, storing rows in your own database. It gives total control over fields, validation, verification flow and how the count is calculated.
It also gives you everything else to build. Double opt-in email verification, spam filtering, deduplication, an export path, an admin view, and the security and privacy obligations that come with holding named political opinions in your own database. That last point is worth pausing on: in the European Union, data revealing political opinions is a special category under Article 9 of the GDPR and attracts stricter handling requirements than an ordinary mailing list. Choose this route when you have a specific reason the other two cannot serve, not by default.
Comparing the Three Routes
| Petition widget on your site | Hosted platform | Custom build | |
|---|---|---|---|
| Time to live | Under an hour | Minutes | Days to weeks |
| Who owns the signer emails | You | Usually the platform | You |
| Lives on your domain | Yes | No | Yes |
| Built-in audience | No | Yes | No |
| Design control | Template plus styling | Minimal | Total |
| You maintain the backend | No | No | Yes |
| Best when | The campaign and the relationship are yours | Reach is the whole point | You have requirements nothing else meets |
Most campaigns run by an organisation with its own website land on the first column, and a good number publish on a platform as well for reach while keeping the version on their own domain as the canonical one.
Which Fields to Put on the Form
Every field you add costs you completions. The discipline is to ask only for what the campaign genuinely uses.
Collect these:
- Full name. The signature itself. One field, not two, unless you have a specific reason to split them.
- Email address. Your only route to verification and follow-up.
- Location, at the right granularity. A city or postcode when the decision maker is local or regional, a country when the campaign is international. This is often the field that turns a list into an argument, because it lets you say how many signatures came from the area the recipient answers to.
Think hard before adding these:
- A comment box. Powerful and quotable, and a real source of drop-off. Make it optional and label it as optional.
- Phone number. Only if you will actually call. Otherwise it reads as intrusive on a political form.
- Organisation or job title. Useful for professional or open-letter petitions, dead weight on a consumer campaign.
Leave these off: full postal address, date of birth, and anything else you cannot justify out loud. On a form that records a political opinion, every unnecessary personal field increases both your risk and your abandonment rate.
Writing the Petition Itself
The form is the mechanism. The petition text is what actually persuades, and it needs to answer four questions fast.
- Who is being asked? Name the specific decision maker, not "the government" or "the industry". A named recipient makes the ask real and tells the reader their signature has somewhere to go.
- What exactly are you asking for? One concrete, achievable action. "Reinstate the number 14 bus route" beats "improve public transport".
- Why now? A deadline, a vote, a closing consultation. Urgency that exists, rather than urgency you manufactured.
- Who is asking? Your name or your organisation, visible. Anonymous petitions convert badly for the obvious reason.
Keep the visible text short, around 150 to 300 words, with the ask in the first two sentences. Put the supporting detail below the form rather than above it, so that a reader who is already convinced is never made to scroll past your evidence to sign.
Keeping Signatures Credible
A total nobody believes is worse than a smaller total that holds up. Three layers do most of the work.
Verify the Email Address
Send a confirmation link and count the signature once it is clicked. This is double opt-in, borrowed from email marketing, and it is the single highest-value check available: it removes typos, throwaway addresses and most automated submissions in one step. It will lower your headline number and raise the quality of everything you do with the list afterwards.
Filter Automated Submissions
A honeypot field, which is a hidden input that humans never fill and bots often do, catches a surprising share of junk with zero friction for real signers. Add a CAPTCHA only if the honeypot is not holding, since it costs completions.
Deduplicate Before You Publish a Number
Deduplicate on normalised email address, lowercased and trimmed. Then be explicit in public about what your number means. "4,112 verified signatures, deduplicated by email" is a claim you can defend in a meeting. A bare "over 4,000 supporters" invites the first person who wants to dismiss you to ask how you counted.
Showing Momentum Without Overstating It
Visible progress is the strongest nudge on the page. A live signature count, a recent-signers list, or a progress bar toward a stated target all convert, because they turn an individual decision into a visible collective one.
Two rules keep it honest. First, only display counts you can stand behind, using the verified and deduplicated figure rather than raw submissions. Second, if you show a target, pick one you actually intend to act on, since a progress bar that sits at 97% for six months tells visitors the campaign is over.
If you display signer names publicly, that is a separate consent decision and it must be its own checkbox, not a line buried in a privacy policy. Plenty of people will sign a petition they would not want their employer to find their name on.
Consent and Data, Briefly but Properly
You are collecting named political opinions, which is a more sensitive category than a newsletter signup, so a few things are not optional.
- Say what you are collecting and why, in plain language, next to the form rather than only in a linked policy.
- Separate campaign updates from marketing. Updates about this petition are a reasonable expectation. Anything else needs its own unticked box.
- Say whether names appear publicly, before someone submits, not after.
- Have a deletion path. Someone will ask to be removed, and "we cannot do that" is not an acceptable answer.
Google's own guidance on creating helpful content is worth reading alongside this, because a campaign page that is transparent about its methods tends to be the same page that performs in search: clear authorship, a specific claim, and no exaggeration to unpick.
After the Form Is Live
The form going up is the start of the work, not the end of it.
- Write the thank-you state properly. The moment after signing is your highest-intent moment. Ask for one specific share, or one specific next action, not three.
- Send the first update within a week. Silence after signing is how a list goes cold.
- Watch where people drop. If completions lag views badly, the usual culprits are field count, an unclear ask, or a slow-loading page.
- Plan the handover. Decide in advance how and when you deliver the signatures, and tell signers that plan. It is the difference between a campaign and a form.
If the petition is one part of a wider contact and engagement setup, our guides to building a contact page that people trust and choosing between contact form widgets cover the neighbouring pieces, and connecting form submissions to the tools you already use covers where the data goes next.
Setting Up a Petition Form Step by Step
The order below is deliberate. It front-loads the decisions that are expensive to change later, so you are not rewriting the ask after a thousand people have already signed it.
Step 1: Fix the Ask and the Recipient
Before you touch a form builder, write two sentences: who you are asking, and what you want them to do. If you cannot name the recipient, the campaign is not ready, because a petition with no addressee has nowhere to be delivered. Keep this text in one place, since it will end up on the page, in the meta description, in your share copy and in the email you eventually send.
Step 2: Decide the Field List
Start from name, email and location, then justify every addition out loud. Anything you cannot explain a use for comes off. Mark optional fields as optional in the label itself rather than relying on the absence of an asterisk, because people scan forms rather than reading them.
Step 3: Build the Form and Put It on Its Own Page
Give the campaign a dedicated URL rather than a section of an existing page. A single-purpose page is easier to share, easier to rank, and easier to measure, and it lets you keep the entire pitch above the fold. Place the form itself high on the page, with the supporting evidence beneath it.
Step 4: Turn On Confirmation and Spam Filtering
Switch on the email confirmation step, add a honeypot field, and send yourself a test submission. Check the confirmation email actually arrives and does not land in spam, since a confirmation email that gets filtered quietly destroys your completion rate while every dashboard still looks healthy.
Step 5: Write the Thank-You State
Decide what happens the instant someone signs. Confirm the signature, tell them what happens next, and make exactly one further ask. This screen is the most persuadable moment in the whole campaign and it is the one most often left as a default success message.
Step 6: Test the Whole Path on a Phone
Load the page on a real handset over mobile data, not just a narrow browser window. Check the tap targets, the keyboard type for the email field, and how far the form is from the top of the screen. Most petition traffic arrives from a shared link on a phone, so the mobile path is the primary path, not a fallback.
Adding a Petition Form to Your Existing Website
How the form gets onto the page depends on what your site runs on, but the pattern is the same everywhere: you generate an embed snippet once and drop it into a block that accepts custom code.
- WordPress. Paste the snippet into a Custom HTML block in the block editor, or into a page template if you want it in a fixed position across several pages. Avoid pasting embed code into the visual editor of a classic theme, which can strip attributes.
- Wix. Use the Embed a Widget or Embed HTML element, then resize the container to the form's height so the layout does not clip the submit button.
- Squarespace. Add a Code Block to the page. Note that Code Blocks render only on the published site in some templates, so check the live URL rather than the preview.
- Shopify. Add the snippet to a page through the Custom Liquid section, which is the safest place for third-party embeds because it survives theme updates.
- Webflow. Drop an Embed element onto the canvas. Remember that Embed content does not render in the Designer, only on publish.
In each case the form itself is hosted for you, so there is no server to configure and no database to secure. The one thing worth doing on every platform is checking the page after publishing rather than trusting the editor preview, since embed rendering is exactly where editors and live pages disagree.
How to Tell Whether the Page Is Working
Four numbers tell you almost everything, and none of them is the raw signature total.
- Signature rate. Verified signatures divided by unique page views. This is the health of the page itself. If it is low while traffic is fine, the problem is the form or the ask, not the promotion.
- Confirmation rate. How many people who submit go on to click the confirmation link. A low rate usually means the email is landing in spam or the instruction on the thank-you screen is unclear, both of which are fixable in an afternoon.
- Field-level drop-off. Where people stop filling in. The field immediately before the abandonment is almost always the one to cut.
- Signatures by location. Not a vanity metric but the core of your argument, since concentration in the recipient's own constituency is what makes the list persuasive.
Track those four for a week before you change anything substantial. Petition traffic tends to arrive in sharp bursts after each share or piece of coverage, so a single day's figures will mislead you in whichever direction that day happened to go.
Common Mistakes That Cost Signatures
These come up repeatedly, and all of them are cheap to fix before launch and awkward to fix afterwards.
- Burying the form below the argument. Readers who arrive from a share are usually pre-sold. Making them scroll through your evidence to find the form loses the easiest signatures you will ever get.
- Asking for a postal address by reflex. It is the single most abandoned field on petition forms and almost never used afterwards.
- A vague recipient. "We demand action" gives the reader no mental image of the petition landing on anyone's desk.
- Bundled consent. One checkbox covering campaign updates, newsletters and partner offers is both a compliance problem and a trust problem.
- A dead counter. A signature count that is not live, or a progress bar stuck near its target, reads as an abandoned campaign.
- No plan for the list. Collecting thousands of email addresses and then never contacting them wastes the actual asset the petition produced.
- Dates in the page copy. Writing the current year into the title or headings means the page looks stale within months. Keep visible copy evergreen and let the publish date do that job.
Getting Started
If you want the shortest credible path: put the petition on a page on your own site, ask for name, email and location, turn on email confirmation, show a verified signature count, and keep the ask to one sentence at the top.
That setup takes an afternoon with an embeddable petition form widget, keeps the signer list in your hands, and gives you a page you can improve for as long as the campaign runs.



