Skip to main content
WordPress Plugin v1.22.2

Groundswell for WordPress

Embed petitions, collect signatures, and create campaigns directly on your WordPress site. Visitors can sign without leaving your page.

Requirements

WordPress

6.4 or higher

PHP

8.1 or higher

License

GPLv2 or later

Installation

1

Upload the plugin

Download the groundswell.zip file and upload it via Plugins → Add New → Upload Plugin in your WordPress admin. Alternatively, extract the groundswell folder to /wp-content/plugins/.

2

Activate

Go to Plugins in your WordPress admin and click Activate on Groundswell for WordPress.

3

Configure your API key

Navigate to Settings → Groundswell and enter your API key, then use Test Connection to confirm it works. You can generate a key from your Groundswell dashboard. The key should start with gs_live_.

4

Add petitions to your pages

Use the Gutenberg blocks or the [groundswell] shortcode to embed petitions anywhere on your site, or create a dedicated Petition Page. A full in-plugin guide is available at Settings → Groundswell → How to Use.

Screenshot: WordPress admin settings page

Features

Gutenberg Blocks

Four blocks for the modern editor: embed a petition, show a list of petitions, let visitors start a new petition, or build a custom layout with the Petition Container.

Shortcodes

One [groundswell] shortcode with a type attribute covers every layout — for the classic editor, widgets, and page builders like Elementor.

Sign on Site

Visitors sign petitions without being redirected away from your site. The signing form is rendered inline or in a modal.

Real-time Counts

Signature counts are never cached — every count, progress bar, and recent-signers list reflects new signatures immediately.

Appearance & Branding

A site-wide Style Kit, reusable named presets you can edit anytime, light/dark/auto themes, per-element color and typography controls, and a Custom CSS box let petitions match your design.

Sharing & Donations

An optional post-signature flow can fire confetti, show a share popup (Facebook, X, WhatsApp, LinkedIn, Copy Link), and embed the petition's Donorbox campaign — no Donorbox plugin required.

Gutenberg Blocks

In the block editor, click + and search Groundswell. Four blocks are available. Every option lives in the editor sidebar.

Groundswell Petition

Embed a single petition with full signing capability. Pick a petition from your organization (or enter a slug), choose a layout, and configure display options.

Key Attributes

AttributeTypeDefaultDescription
slugstring""Petition slug (or use petitionId)
petitionIdstring""Petition UUID
cardTypestring"large-card"Layout: large-card, small-card, form, form-card, signatures, signatures-carousel, targets
descriptionModestring"expandable"full, expandable, or trimmed
showSignaturesbooleantrueShow signature count
showProgressbooleantrueShow progress bar
showShareButtonsbooleantrueShow social share buttons
recentSignaturesCountnumber0Recent signers to list (0–20; 0 hides)
recentLayoutstring"list"In-card recent signers as a list or carousel
recentAvatarbooleanfalseShow each recent signer's avatar
targetCount / targetAvatarnumber / boolean0 / falseDecision makers to show (0–10), and their avatars
localestring""Display language (en, es, fr, de, pt, it, zh)
themestring"auto"light, dark, or auto

A Colors panel (text, background, button, accent) and an Advanced Appearance panel (presets, fonts, radius, spacing, shadow, and a custom CSS class) are also available in the sidebar.

Screenshot: Groundswell Petition block in editor

Groundswell Petition List

Display a list of petitions, filtered by category and sorted by recency, popularity, or trending status.

Key Attributes

AttributeTypeDefaultDescription
sortOrderstring"newest"newest, most_signatures, or trending
categoryFilterstring""Filter by category
layoutstring"grid"grid or list
perPagenumber6Number of petitions to show
showSignatures / showProgressbooleantrueShow counts / progress bars
descriptionModestring"expandable"full, expandable, or trimmed
themestring"auto"light, dark, or auto

Like the Petition block, a Colors panel and an Advanced Appearance panel (presets, fonts, radius, spacing, shadow, and a custom CSS class) are available in the sidebar.

Screenshot: Groundswell Petition List block in editor

Groundswell Petition Form

Let visitors create new petitions directly from your WordPress site. The block renders a full petition creation form with configurable defaults.

Key Attributes

AttributeTypeDefaultDescription
categoryIdstring""Pre-select a category
defaultTagsstring[][]Pre-fill tags
redirectAfterCreatebooleantrueRedirect to petition after creation
showTargetFieldsbooleantrueShow decision maker fields
showImageUploadbooleanfalseAllow an image upload (max maxImageSizeMB, default 5)
enableRichDescriptionbooleanfalseRich-text description editor
themestring"auto"light, dark, or auto
Screenshot: Groundswell Petition Form block in editor

Groundswell Petition Container

Build your own petition layout from only the elements you want, in any order. Pick a petition, then drag in Groundswell Element blocks (title, image, count, progress, form, sign button, decision makers, recent signatures, social, donation, spacer, and more). The petition loads once and is shared by every element inside. Each element — and the container itself — exposes the same Colors and Advanced Appearance panels (presets, fonts, radius, spacing, shadow, and a custom CSS class) as the Groundswell Petition block. The full attribute reference is in the in-plugin How to Use guide and under Container Layout below.

Screenshot: Groundswell Petition Container block in editor

Shortcode Reference

There is one main shortcode — [groundswell] — and the type attribute picks the layout. Use it in the classic editor, widgets, or any page builder.

Layout Types

[groundswell type="large-card" slug="save-springfield-park"]
[groundswell type="form-card" slug="save-springfield-park" theme="dark"]
[groundswell type="list" limit="6" sort="trending"]
typeRenders
large-cardFull petition card (default)
small-cardCompact card, image beside the text
formJust the signing form, no card
form-cardCard with the signing form inline
listA list of petitions (uses limit / sort / category)
signaturesRecent signers as a vertical list (standalone)
signatures-carouselRecent signers as an auto-scrolling ticker
targetsThe decision makers for a petition (standalone)

Common Attributes

Every attribute is optional except a petition reference (slug or id), which is required for every type except list.

AttributeValuesDescription
slug / idslug or UUIDWhich petition (required except for list)
descriptionfull · expandable · trimmedHow much description to show (default expandable)
show-signatures / show-progresstrue · falseShow the signature count / progress bar (default true)
recent-signatures0–20Recent signers to list (0 hides)
recent-layoutlist · carouselIn-card recent signers as a list (default) or a carousel ticker
target / target-avatar0–10 · true/falseDecision makers to list, and whether to show avatars
languageen, es, fr, de, pt, it, zhShow a translated petition
themeauto · light · darkColor scheme
text-color, background-color, button-color, accent-colorany CSS colorCustomize colors (button text auto-contrasts)
preseta saved preset nameApply an Appearance & Branding preset
limit, sort, category1–20; recent/popular/trending; UUIDFor type="list" only

Advanced Styling Attributes

Every attribute below is optional and works on the [groundswell] shortcode, the [groundswell-container], and each [gs-el] element. Unset values fall through to the applied preset, then the Style Kit, then the plugin defaults.

AttributeValuesAffects
preseta saved preset nameApply an Appearance & Branding preset (other attributes override it)
classCSS class name(s)Add your own class to the rendered element
font-family, font-size, heading-size, font-weight, line-height, text-shadowCSS values; font-weight = 100–900Typography
text-align, self-align, marginleft·center·right·justify; start·center·end·stretch; CSS margin (e.g. 0 auto)An element's content alignment, the element box's own alignment, and outer spacing
radius, button-radius, button-style, button-align, border-width, border-style, border-colorCSS values; button-style = solid·outline·pill; button-align = left·center·right·full; border-style = solid·dashed·dotted·double·noneShape & borders
image-width, image-height, avatar-sizeCSS lengthsPetition image size; decision-maker / signer avatar size
padding, gap, shadow, opacity, carousel-speedCSS values; carousel-speed e.g. 40sSpacing, elevation, overlay opacity, and ticker speed

A fully-loaded example combining several options:

[groundswell type="form-card" slug="save-springfield-park" description="full" recent-signatures="5" recent-layout="carousel" target="2" target-avatar="true" preset="my-brand" accent-color="#16a34a"]

Donation Shortcodes

Place a Donorbox donation form, or a button that opens one in a modal, on any page. With no slug they use the current Petition Page's campaign.

[groundswell-donate slug="your-campaign"]
[groundswell-donate-button label="Donate" slug="your-campaign"]
[groundswell-donate-button title="Support us" subtitle="Every dollar helps"]

Both donation shortcodes also accept a class attribute to target the embed or button from your own CSS — the same passthrough available on [groundswell], [groundswell-container], and [gs-el].

Container Layout

Build your own petition layout from only the elements you want, in any order. In the block editor, add the Groundswell Petition Container block, pick a petition, then drag in Groundswell Element blocks. Or use the shortcode form — the petition loads once and is shared by every element inside:

[groundswell-container slug="save-springfield-park" max-width="600px" gap="1.5rem"]
  [gs-el type="count" label="people have signed"]
  [gs-el type="progress"]
  [gs-el type="form"]
  [gs-el type="social"]
[/groundswell-container]

Element type values: title, description, image, creator, count, progress, form, sign-button, status, recent-signatures (recent-layout list or carousel), targets (target-layout list or card), donation, social, and spacer. Both the container and each element accept the full styling attribute set of [groundswell]— every color, font, border, radius, shadow and text-shadow option, plus preset(a saved Appearance & Branding preset) and class. On an element they apply to that element only; on the container they set inherited defaults (a container presetapplies to every element, and an element's own values override it). The container also takes layout (column · row · grid), gap, max-width, align, and columns.

typeRendersElement options
titleThe petition titletag (h1·h2·h3·h4, default h3)
descriptionThe rich-text descriptiondescription (full·expandable·trimmed)
imageThe featured imageimage-width, image-height
creator“Started by” organization or creatoravatar (true·false, default true)
countThe signature countlabel (text or a template, e.g. “Join {{count}} supporters”), show-label (true·false)
progressProgress bar (only with a goal)label (template, e.g. {{percent}}% there), show-label (true·false)
form / sign-button / statusInline form / a button that opens the sign modal / a victory · closed badgesign-button takes label
recent-signaturesRecent signerscount (1–20), recent-layout (list·carousel), avatar (true·false), avatar-size
targetsDecision makerscount (1–10), target-layout (list·card), target-avatar (true·false), avatar-size
donationA Donorbox form or buttonvariant (embed·button), label, title, subtitle
socialA share-icons row (Facebook, X, LinkedIn, WhatsApp, Copy)networks (comma list; default all), label, share-url
spacerBlank space or a divider lineheight (e.g. 2rem), divider (true·false)

Labels on count / progress accept the placeholders {{count}}, {{goal}}, and {{percent}}so you can write your own text — e.g. label="{{count}} people have signed" or label="{{percent}}% of the way there".

The socialelement shares the petition's canonical link — set its base under Settings → Groundswell → Petition site URL.

Settings

Configure the plugin at Settings → Groundswell in your WordPress admin.

SettingDefaultDescription
API KeyYour Groundswell API key (starts with gs_live_). Stored encrypted in the database.
API Base URLOptional override of the API endpoint for staging or self-hosted setups. Leave blank to use production.
ThemeautoDefault theme for all embedded petitions. Options: light, dark, auto (matches your site).
Cache TTL5 minHow long API responses are cached using WordPress transients (1–60 minutes). Signature counts are never cached. A “Clear cache now” button purges everything on demand (works with Redis / Memcached too).

Two more panels live on the settings page: Appearance & Branding (a site-wide Style Kit, named presets, and a Custom CSS box) and Post-Signature Popups (confetti, a share popup, and a Donorbox donation popup). The How to Use guide opens from a link on the same page (full reference for every block option, shortcode, attribute, and the container elements).

Screenshot: Groundswell settings panel in WP Admin

Appearance & Branding

Set your brand once under Settings → Groundswell → Appearance & Branding. The site-wide Style Kit sets defaults for the same tokens listed in Advanced Styling Attributes above (colors, typography, shape & borders, image sizing, spacing, shadow, and more). Blocks and shortcodes can override any token per element, or apply a saved preset by name. The cascade is per-element override → preset → Style Kit → plugin default.

Presets

Configure the Style Kit, name it, and save it as a preset. Apply it on a block (Advanced Appearance → Style preset) or a shortcode. Each preset can be edited after saving (Presets → Edit), so different presets carry genuinely different looks — and the block editor previews the selected preset live, exactly as it renders on your site.

[groundswell type="large-card" slug="save-springfield-park" preset="my-brand"]

Custom CSS & classes

For anything the options don't cover, use the Custom CSS box (loaded after the plugin styles), or add your own class and target these stable class names:

  • .groundswell-petition-embed — single petition card
  • .groundswell-petitions-list — petition list wrapper
  • .groundswell-petition-card__sign-button — sign / donate button
  • .groundswell-recent-signatures — recent signatures (list + carousel)
  • .groundswell-targets — decision-maker targets

Post-Signature Popups

When someone signs, the plugin can celebrate and keep them engaged. Configure these under Settings → Groundswell → Post-Signature Popups.

  • Confetti— a celebratory burst on a successful signature.
  • Share popup— Facebook, X/Twitter, WhatsApp, LinkedIn, and Copy Link buttons, with a customizable title, subtitle, and share message.
  • Donation popup— after the share step, embeds the petition's Donorbox campaign automatically — no Donorbox plugin required.

These fire after the petition card's built-in sign form. A composable [gs-el type="form"] (and the form inside [groundswell-container]) instead shows only its own inline thank-you, so you can place your own [gs-el type="social"] and [gs-el type="donation"] elements wherever you like.

Petition Pages

Prefer each petition to have its own page? Go to Petition Pages → Add New, pick a petition (and language), and publish. Each gets its own URL, rendered through your active theme's template, and all of them are listed at /petitions/. Use a block or shortcode instead when you want to place a petition inside a page you are designing.

Screenshots

Visual walkthrough of the Groundswell WordPress plugin in action.

Screenshot: Plugin settings page in WP Admin

Plugin settings page

Screenshot: Groundswell Petition block in Gutenberg editor

Gutenberg block editor

Screenshot: Embedded petition on the frontend

Frontend petition embed

Screenshot: Petition creation form on WordPress

Petition creation form

Screenshot: Petition list shortcode output

Petition list display

Screenshot: Appearance & Branding (Style Studio)

Appearance & Branding

Ready to get started?

Download the plugin, add your API key, and start embedding petitions on your WordPress site in minutes.