Join Our Newsletter!

Keep up to date with our latest blog posts, new widgets and features, and the Common Ninja Developer Platform.

How to Create an Online Petition Form for Your Website

Sergei Davidov, · Updated Aug 11, 2026

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.

How to Create an Online Petition Form for Your Website

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 siteHosted platformCustom build
Time to liveUnder an hourMinutesDays to weeks
Who owns the signer emailsYouUsually the platformYou
Lives on your domainYesNoYes
Built-in audienceNoYesNo
Design controlTemplate plus stylingMinimalTotal
You maintain the backendNoNoYes
Best whenThe campaign and the relationship are yoursReach is the whole pointYou 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.

  1. 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.
  2. What exactly are you asking for? One concrete, achievable action. "Reinstate the number 14 bus route" beats "improve public transport".
  3. Why now? A deadline, a vote, a closing consultation. Urgency that exists, rather than urgency you manufactured.
  4. 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.

Sergei Davidov

Sergei Davidov

Sergei Davidov is a Growth Manager at Common Ninja with nearly a decade of experience spanning content strategy, SEO, conversion optimization, and business development. He's helped launch products, optimize funnels, and build marketing systems across e-commerce and SaaS. When he's not dissecting funnel metrics, he writes fiction and experiments in the kitchen.

LinkedIn

FAQ

At minimum, a full name and an email address. The name is what makes a signature a signature, and the email is what lets you verify it and follow up. Many campaigns also collect a city, region or postcode, because a decision maker cares far more about signatures from the constituency they answer to. Ask for a phone number only if you genuinely intend to call, since it measurably reduces completions.

Generally no. An online petition is a demonstration of public support, not a legal instrument, and in most jurisdictions it creates no obligation on the recipient. The exceptions are formal processes that specifically accept petitions, such as some government e-petition systems and shareholder or union procedures, and those set their own rules on wording, eligibility and verification. Check the rules of the specific process before you start collecting.

Host it on your own site when the campaign is yours and the relationship with the signers matters, because you keep the email list, the analytics and the branding. Use a hosted platform when discovery is the goal and you want its existing audience to find your petition. Many campaigns do both, with the canonical version on their own domain and a copy on a platform for reach.

Three layers cover most of it. Require a valid email format and send a confirmation link so the address has to exist. Add a spam check such as a honeypot field or a CAPTCHA to filter automated submissions. Then deduplicate on email address before you present the total. No online petition can prove identity, so state your verification method openly rather than implying more rigour than you have.

Yes, and it should be specific. Tell people what you are collecting, who will see it, and whether their name will be displayed publicly. If you intend to email them about anything beyond this campaign, ask for that separately with an unticked box, because bundling campaign updates and marketing into one implied consent is exactly what data protection rules such as the GDPR are designed to prevent.

There is no universal number, and chasing one is usually the wrong instinct. What persuades a decision maker is relevance and concentration: several hundred signatures from the specific community affected tends to land harder than tens of thousands scattered worldwide. If you are feeding a formal e-petition process, the threshold is published, so treat that as the target and everything else as momentum.