SpeakOut! Email Petitions


SpeakOut! Email Petitions allows you to easily create petition forms on your site.

When visitors to your site submit the petition form, a copy of your message will be sent to the email address you specified e.g. your mayor. They can also choose to have the email BCC’d to themselves (default). The petition message will be signed with the contact information provided by the form submitter. After signing the petition, visitors will have the option of sharing your petition page with their followers on Facebook or Twitter.

Signatures are stored in the WordPress database and can be easily exported to CSV format for further analysis (there is no import function). You may set a goal for the number of signatures you hope to collect and then watch as a progress bar tracks your petition’s advance toward it’s goal – the goal can even update automatically when a % of your goal is reached. Petitions may also be configured to stop accepting new signatures on a specified date.

More information about the plugin and how to upgrade to the fully featured Pro version can be found at the official SpeakOut! WordPress petition plugin website: https://speakout.123host.net.au


  • improvement: changed a page title – thanks Debbie P
  • bug fix: some required fields were not showing red border – thanks Debbie P
  • bug fix: redirect after signing not working – thanks Debbie P


  • bug fix: when clicking next in signature list it was displaying html – thanks Dan @tahninial


  • bug fix: slashes added to any apostrophes in email subject or greeting
  • bug fix: missing default value in free version


  • bug fix: missing character would cause error in certain circumstances – thanks heiko

  • bug fix: if WordPress was installed in a subfolder, some administrator links may not have worked. Thanks Calvin


  • bug fix: petition message kept adding slashes in editor when saved. Thanks Calvin
  • improvement: removed %%Your Signature%% from the petition message displayed on your site. It was causing confusion. Thanks Razvan
  • improvement: minor typo fixed
  • improvement: Dutch language imrovements – thanks Michiel


  • bug fix: petition message losing formatting – thanks @dcbuffalo
  • improvement: better data sanitization in signature list

  • bug fix: html being displayed in admin signature list
  • bug fix: file was being included twice
  • bug fix: reconfirming selected signatures wasn’t working

  • bug fix: settings not saving due to incorrect input sanitize function
  • improvement: German language update – thanks Mario

bug fix: in some circumstances an error was thrown in settings page – thanks Heiko

  • Policy compliance: Version 3 of SpeakOut! included a method of upgrading that turned out to be a WordPress plugin policy breach (4 months later!) and some potential security issues (after 10+ years!). This version remedies that and introduces a more cumbersome (for users), but compliant method of upgrading.
  • bug fix: various fixes of things found while creating V4
  • improvement: removed support for importing the original speakup plugin. After 10 years, it’s time.


  • bug fix: extra argument passed to function caused error sometimes – thanks Aurelian
  • bug fix: in some cases confirmation email may not have been sent
  • bug fix: dummy translation string was being displayed
  • improvement: added animated loader when verifying
  • improvement: added asterisks (*) for required fields on Add/Edit Petition page
  • improvement: blank petition title didn’t show an error despite it being required
  • improvement: upgraded “tested up to” to WordPress version 6.1

  • bug fix: who knew that defining a character set when creating a TINYINT database field would cause an error…


  • bug fix – extra character was preventing creation of petitions table on new installs only – thanks Aurelian


  • bug fix: typo in some custom fields caused fatal error – thanks Dick S
  • improvement: defined (rather than generic) custom field headers in CSV – thanks @shaimaaelbanna
  • improvement: if someone has chosen to be publicly anonymous, their surname is followed by ‘*’ in the CSV – thanks @shaimaaelbanna
  • improvement: all custom fields now included in CSV
  • improvement: extra spaces trimmed from custom field labels
  • improvement: if choosing to export CSV, you can’t select individual signatures. You can choose to delete when processing the CSV
  • improvement: tweaked font size for expiration date fields


  • bug fix: extra “/>” snuck into Pro version on settings page
  • bug fix: removed “/” if a single quote is used in a custom checkbox description – thanks Dick S.
  • bug fix: database updates for upgrades was left out of 3.1.1, re-added
  • bug fix: one Active Campaign field saved incorrectly
  • bug fix: remove extra spaces at the end of Custom Dropdown 1 label – thanks Dick S.
  • bug fix: added user agent for cURL call in Pro version to prevent firewall having a brain fart
  • improvement: changed logic for petition list display for free version
  • improvement: added some code to make verification debugging easier
  • improvement: added support for Sendy.com mailing service – thanks Dick S.
  • improvement: plugin automatically reloads after verification to reveal all features – perhaps 😛
  • improvement: update languages


  • bug fix: social media sharing button couldn’t be disabled in Pro version – thanks Juan
  • bug fix: Public Signature List style checkboxes didn’t save in Pro version – thanks Pieter
  • bug fix: CSV options weren’t being saved in Pro version – thanks Oliver
  • bug fix: unconfirmed signatures were showing in the public signature list – thanks Oliver
  • bug fix: removed quotes around integer in SQL statements
  • bug fix: fixed a “read more” link that wasn’t working
  • improvement: added “revoke license” button in Pro version
  • improvement: added auto-complete for some petition fields – thanks Cecilie


  • bug fix: undeclared variables in a couple of scripts
  • bug fix: signature custom CSS option not saved (Pro version)
  • bug fix: some unused options were generating PHP warnings
  • bug fix: empty email address was not caught as error. But this only happened once due to it being a duplicate (in this case blank) – thanks @goclones1
  • improvement: update to languages


  • improvement: clarified instructions for custom CSS from “use” to “create”

  • bug fix: In some cases sharing icons weren’t displaying
  • improvement: reworded sharing icons text slightly in admin area

  • bug fix: unable to toggle “allow anonymous” setting in Pro version


  • improvement: removed redundant option in the database
  • improvement: better logging of upgrades
  • bug fix: set default value for unchecked items to eliminate PHP warnings – thanks Oliver E.
  • bug fix: typo prevented adding the word “Pro” to the menu for upgraded versions – thanks @peterscholtens
  • bug fix: some settings weren’t being saved and even if they were, the button wasn’t checked (Pro version)

  • version bump

  • bug fix: recaptcha not displaying


  • improvement: added colour style to signature goal and social sharing texts.
  • bug fix: in some cases, petitions couldn’t be deleted


  • bug fix: hcaptcha and google recaptcha settings weren’t opening in Pro version – thanks Theo L.
  • improvement: tweaked verification logging

  • version push to get WordPress to send me release approval email – no code changes


  • improvement: better handling of locked, but previously set, fields in free version
  • bug fix: removed some code for an idea that didn’t happen
  • bug fix: “display flags” checkbox not checked when enabled – this setting will be lost in the free version and will need to be re-enabled in the Pro version
  • bug fix: the submit button text was deleted if any settings were updated – thanks Roger and Dominik
  • bug fix: function updated


  • bug fix: function being triggered by all users


  • bug fix: some undeclared variables were throwing a warning
  • bug fix: in certain circumstances the signature count wasn’t displaying properly
  • improvement: Version 3 introduces a Pro version of SpeakOut! I want the free version to still be very useful for users, but to enable all the features, there is a reasonable once-off payment for life. The major change is that the free version only lets you have 1 petition. If you currently have more than one, it will continue to work but you won’t be able to edit it. All existing options will remain working, but you may not be able to edit some of them. If you have ever made a donation in the past, contact me via https://SpeakOut.123host.net.au for a free license key.

Earlier Changelog


  • Albanian sq_AL Incomplete

  • Arabic ar_AR

  • Arabic ar (Faisal Kadri)

  • Catalan ca (Alberto Canals)

  • Czech cs_CZ (Petr Štepán, Michal Hradecký)

  • Danish da_DK (A. L.)

  • Dutch nl_NL (Kris Zanders, Petronella van Leusden)

  • Finnish fi_FI

  • French fr_FR

  • German de_DE (Hannes Heller, Armin Vasilico, Andreas Kumlehn, Frank Jermann)

  • Hebrew he_IL (Oren L)

  • Korean ko_KO (Paul Lawley-Jones)

  • Icelandic is_IS (Hildur Sif Thorarensen)

  • Italian it_IT (MacItaly, Davide Granti, Simone Apollo)

  • Norwegian nb_NO (Howard Gittela)

  • Polish pl_PL (Damian Dzieduch)

  • Portuguese (Brazil) pt_BR (Tel Amiel)

  • Romanian ro_RO (Web Hosting Geeks)

  • Russian ru_RU (Teplitsa)

  • Serbian sr_SE (Mikhailo Matovic)

  • Slovak sk_SK (@Beata)

  • Slovenian sl_SI (MA-SEO)

  • Spanish es_ES

  • Swedish sv_SE (Susanne Nyman Furugård @sunyfu)

If you would like to request or contribute a specific translation not listed above, visit the SpeakOut! Email Petitions website and use the contact form.

Emailpetition Shortcode Attributes

The following attributes may be applied when using the ‘[emailpetition]’ shortcode


The ID number of your petition (required). To display a basic petition, use this format:

‘[emailpetition id=”1″]’


This sets the width of the wrapper “


div>” that surrounds the petition form. Format as you would a width rule for any standard CSS selector. Values can be denominated in px, pt, em, % etc. The units marker (px, %) must be included.

To set the petition from to display at 100% of it’s container, use:

‘[emailpetition id=”1″ width=”100%”]’

A petition set to display at 500 pixels wide can be achieved using:

‘[emailpetition id=”1″ width=”500px”]’


This sets the height of the petition message box (rather than the height of the entire form). Format as you would a height rule for any standard CSS selector. Values can be denominated in px, pt, em, % etc. The units marker (px, %) must be included.

A few notes on using percentages:

Using a % value only works when the “Allow messages to be edited” feature is turned off—because the petition message will be displayed in a ‘


div>’. When “Allow messages to be edited” is turned on, the petition message is displayed in a ”, which cannot be styled with % heights. Use px to set the height on petitions that allow message customization.

To set the message box to scale to 100% of the height of the message it contains, use any % value (setting this to 100%, 0%, 200% or any other % value has the same result). Use px if you want the box to scale to a specific height.


‘[emailpetition id=”1″ height=”500px”]’

‘[emailpetition id=”1″ height=”100%”]’


Sets the width of the outer progress bar. The filled area of the progress bar will automatically scale proportionally with the width of the outer prgress bar. Provide a numeric value in pixels only. Do not include the px unit marker.

To display the progress bar at 300 pixels wide, use:

‘[emailpetition id=”1″ progresswidth=”300″]’


Adds an arbitrary class name to the wrapper ‘


div>’ that surrounds the petition form. Typically used to assign the alignright, alignleft or aligncenter classes to the petition in order to float the petition form to one side of its container. To assign multiple classes, separate the class names with spaces.


‘[emailpetition id=”1″ class=”alignright”]’

‘[emailpetition id=”1″ class=”style1 style2″]’

Signaturelist Shortcode Attributes


The ID number of your petition (required). To display a basic signature list, use this format:

‘[signaturelist id=”1″]’


The number of signature rows to display in the table. This will override the default value provided on the Settings page. To display 10 rows, use:

‘[signaturelist id=”1″ rows=”10″]’


Format of values in the date column. Use any of the standard PHP date formating characters. Default is ‘M d, Y’. A date such as “Sunday October 14, 2012 @ 9:42 am” can be displayed using:

‘[signaturelist id=”1″ dateformat=”l F d, Y @ g:i a”]’


The text that displays in the previous signatures pagination button. Default is <.


The text that displays in the next signatures pagination button. Default is >.

signaturecount Shortcode

Display the number (as text) of signatures collected for a given petition:


The ID number of your petition (required).

‘[signaturecount id=”3″]’

signaturegoal Shortcode

Display the number (as text) of goal for a given petition:


The ID number of your petition (required).

‘[signaturegoal id=”3″]’


Use the automatic installer. Or…

  1. Download and unzip the the plugin zip file.

  2. Upload the ‘speakout’ folder to your ‘/wp-content/plugins/’ directory

  3. Activate SpeakOut! Email Petitions through the “Plugins” menu in the WordPress admin.


Where is the FAQ?



May 18, 2022
Absolutely amazing as a free plugin. The environmental group I built a site for needed public email petitions, and it fills the bill. They moved their main site to SquareSpace but keep a separate WP site just to retain SpeakOut's functionality.
April 7, 2022
Fantastic, great plugin. Thank you so much for sharing it. I can not ask for more. It has custom fields, email confirmation, captcha... shortcodes to put it wherever you want... THANK YOU
February 4, 2022
Tiny few bugs that get squashed, easy to use, responsive developer, actively developed software, really nice
October 17, 2021 2 replies
I've had the plugin installed for almost a year and never used it until last week. This plugin is GREAT!!! We have been able to send over 800 emails in 4 days, and the plugin performed flawlessly. My only complaints are: There should be a way to sort signatures by the opt-in and download just the opt-in signers to a csv to import the opt-in users to a subscription system easily. Currently, we need to edit the CSV file before uploading the users into our subscription system. The plugin is not very good-looking and requires a lot of CSS to style. Ofcorese, this is necessary for any plugin with a user frontend, and I would have done it anyway, so not an issue for me. One user did have a problem with Rcapacha that was never figured out, and he couldn't get it to approve his submission. Maybe Rcapacha was doing its job? Anywho, five stars for giving us a way to voice our opinion. Thank you! I'll be making a generous donation. Where do I send it?
September 3, 2021
I don't often leave plugin reviews, but in this case, it is deserved. I was looking for a simple, no-fuss plugin for petitions. SpeakOut! is well designed and coded and does exactly what I wanted. Support has been outstanding. We had a small glitch that was worked on and a fix was released very quickly. If you find this plugin useful please donate. More plugins and developers like this need to be supported.
August 6, 2021
I was impressed how simple and well designed this Plugin is. No worries if you need petitions this is the one. Any questions Support is quick, friendly and professional. Make sure you donate because great plugins like this are almost never free. Thank you for one of the best plugins I've come across in years
Read all 39 reviews

Contributors & Developers

“SpeakOut! Email Petitions” is open source software. The following people have contributed to this plugin.


“SpeakOut! Email Petitions” has been translated into 4 locales. Thank you to the translators for their contributions.

Translate “SpeakOut! Email Petitions” into your language.

Interested in development?

Browse the code, check out the SVN repository, or subscribe to the development log by RSS.