Title: SendToMP
Author: Mike Rouse
Published: <strong>July 11, 2026</strong>
Last modified: July 12, 2026

---

Search plugins

![](https://ps.w.org/sendtomp/assets/icon-128x128.png?rev=3604181)

# SendToMP

 By [Mike Rouse](https://profiles.wordpress.org/binarybeagle/)

[Download](https://downloads.wordpress.org/plugin/sendtomp.2.0.1.zip)

 * [Details](https://zh-sg.wordpress.org/plugins/sendtomp/#description)
 * [Reviews](https://zh-sg.wordpress.org/plugins/sendtomp/#reviews)
 *  [Installation](https://zh-sg.wordpress.org/plugins/sendtomp/#installation)
 * [Development](https://zh-sg.wordpress.org/plugins/sendtomp/#developers)

 [Support](https://wordpress.org/support/plugin/sendtomp/)

## Description

SendToMP lets your website visitors send verified messages directly to their Member
of Parliament or a member of the House of Lords. Every message goes through a double
opt-in confirmation flow, so only genuine constituents can contact their representatives.

Built by a former parliamentary assistant who understands how MP offices process
inbound correspondence, SendToMP is designed to produce messages that get read and
acted upon.

Every feature is available to everyone. There is no paid tier, no licence key, no
message quota, and nothing is held back.

**How it works:**

 1. A visitor fills in your form with their name, email address, postcode, and message.
 2. SendToMP looks up their MP from the postcode, or lets them search for a Peer by
    name.
 3. A confirmation email is sent to the visitor to verify their identity.
 4. The visitor clicks through and confirms on your site. Only then is the message 
    sent.
 5. The MP or Peer receives a properly formatted email and can reply to the constituent
    directly.

**Form plugin support:**

 * Gravity Forms
 * WPForms
 * Contact Form 7
 * A webhook / REST API endpoint for custom integrations

**Key features:**

 * Double opt-in confirmation, so a message is only ever sent by the person whose
   inbox it came from
 * Postcode-based MP lookup against the UK Parliament Members API
 * House of Lords member search and selection
 * Configurable email templates with merge tags
 * Submission logging with delivery status tracking
 * Rate limiting and anti-spam protection, per email address, per IP, and per postcode
 * Address overrides, for when a member’s published address is wrong or missing
 * Email delivery through your existing SMTP plugin, your own SMTP server, or Brevo
 * A copy-and-paste privacy notice describing exactly what the plugin stores and
   sends

**A note on data.** The constituent’s postcode is sent to the UK Parliament Members
API in order to identify their representative. Nothing else leaves your site for
that lookup: not their name, not their email address, and not their message. If 
you configure Brevo as your email provider, the message is sent to Brevo for delivery.
See the External services section below for the detail.

### External services

This plugin relies on one external service to function, and optionally on a second
if you choose it as your email provider.

**1. UK Parliament Members API (required)**

The plugin uses the UK Parliament Members API to work out which MP or Peer represents
a constituent, and to obtain the contact address that Parliament publishes for that
member. The plugin cannot do this locally: the mapping from postcode to constituency
to sitting member changes with boundary reviews, by-elections and appointments, 
and only Parliament publishes it. No account or API key is required, and the plugin
sends no credentials.

Data sent, and when it is sent:

 * When a visitor uses the “Find my MP” preview on your form, their postcode is 
   sent, so the matched MP can be shown before they submit.
 * When a visitor submits the form, their postcode is sent, to resolve the member
   the message will go to.
 * When an administrator searches for a member by name in the plugin’s admin screens,
   the search text is sent.
 * Once a member has been identified, the plugin requests that member’s public profile
   and published contact details using their Parliament member ID.

The constituent’s name, email address, and message content are never sent to Parliament.
Responses are cached in your site’s transients so the same postcode is not looked
up repeatedly.

Service: UK Parliament Members API, https://members-api.parliament.uk/
 Terms of
use (Open Parliament Licence): https://www.parliament.uk/site-information/copyright-
parliament/open-parliament-licence/ Privacy policy: https://www.parliament.uk/site-
information/data-protection/

**2. Brevo (optional)**

Brevo is one of the email delivery providers you may choose on the Email Delivery
tab. It is only contacted if you select it and enter your own Brevo API key. If 
you use your existing SMTP plugin, your own SMTP server, or the WordPress default
mailer instead, the plugin never contacts Brevo.

Data sent, and when it is sent: when Brevo is the selected provider, each outgoing
email is sent to Brevo’s transactional email API at the moment it is delivered. 
That includes the recipient’s address, the constituent’s name and email address 
as the reply-to, the subject, and the message body. This applies both to the confirmation
email sent to the constituent and to the message delivered to the MP or Peer.

Service: Brevo, https://www.brevo.com/
 Terms of use: https://www.brevo.com/legal/
termsofuse/ Privacy policy: https://www.brevo.com/legal/privacypolicy/

The plugin contacts no other external service. It sends no analytics, usage data,
or telemetry anywhere.

## Screenshots

[⌊Looking up an MP by postcode within a Gravity Form⌉⌊Looking up an MP by postcode
within a Gravity Form⌉[

Looking up an MP by postcode within a Gravity Form

[⌊Settings page — configure your email templates, rate limits, and form field mappings⌉⌊
Settings page — configure your email templates, rate limits, and form field mappings⌉[

Settings page — configure your email templates, rate limits, and form field mappings

[⌊Delivery log — track every submission with status, timestamps, and MP details⌉⌊
Delivery log — track every submission with status, timestamps, and MP details⌉[

Delivery log — track every submission with status, timestamps, and MP details

[⌊Configuring a Gravity Form feed to send submissions to your visitor's MP⌉⌊Configuring
a Gravity Form feed to send submissions to your visitor's MP⌉[

Configuring a Gravity Form feed to send submissions to your visitor’s MP

[⌊Custom field type in Gravity Forms⌉⌊Custom field type in Gravity Forms⌉[

Custom field type in Gravity Forms

## Installation

 1. Upload the `sendtomp` folder to `/wp-content/plugins/`, or install it from the 
    Plugins screen.
 2. Activate the plugin through the Plugins menu in WordPress.
 3. Go to SendToMP in the admin menu to configure your settings.
 4. Build a form using any supported form plugin.
 5. Map the required fields: name, email, postcode, subject, and message body.

**Requirements:**

 * At least one supported form plugin must be installed and active.
 * A reliable way to send email. Configure a provider on the Email Delivery tab,
   or use an SMTP plugin such as WP Mail SMTP or FluentSMTP. WordPress’s built-in`
   wp_mail()` is unreliable for parliamentary inboxes.

## FAQ

### Why does SendToMP require email confirmation?

Double opt-in ensures that only the actual owner of the email address can send a
message to a representative. It prevents abuse, it records explicit consent, and
it means the messages that arrive are genuine constituent correspondence. Messages
sent this way carry more weight in an MP’s office, because the office can trust 
they are real.

### Which form plugins are supported?

Gravity Forms, WPForms, and Contact Form 7. There is also a webhook / REST API endpoint
for custom integrations with platforms like Zapier, n8n, Make, or a CRM. All of 
them are available to every user.

### Does this work with the House of Lords?

Yes. Visitors can search for and select a Peer by name.

### How does the postcode lookup work?

The postcode is sent to the UK Parliament Members API, which returns the constituency
and its sitting MP, along with the contact address Parliament publishes for them.
Only the postcode is sent. See the External services section for full detail.

### What if Parliament doesn’t publish an email address for a member?

Some members, particularly in the Lords, have no published email address. SendToMP
will tell the visitor it cannot deliver the message rather than accepting it and
failing silently. As the site owner you can supply an address yourself under SendToMP
Address Overrides, which takes precedence over the published one. That is also the
place to correct an address that has changed.

### Do I need an SMTP plugin?

You need some reliable way to send mail. WordPress’s default `wp_mail()` uses PHP’s`
mail()`, which is unreliable, and parliamentary mail gateways are strict. You can
configure Brevo or your own SMTP server directly in SendToMP on the Email Delivery
tab, or install an SMTP plugin such as WP Mail SMTP, FluentSMTP, or Post SMTP.

### What data does SendToMP store, and for how long?

The constituent’s name, email address, postcode, and message are stored on your 
own site. The message itself is held encrypted in a pending record until it is confirmed,
and that record is deleted when the confirmation link expires. A row in the submission
log recording the name, email address, postcode, subject, and status is kept for
the log retention period, which defaults to 90 days, and is then deleted automatically.
That log row is kept whether or not the message was ever confirmed.

The Privacy tab includes a suggested privacy-policy paragraph that describes this
accurately, using your site’s own configured expiry and retention values. You are
welcome to copy it into your privacy policy.

### How do I handle a right-to-erasure request?

Go to SendToMP  Privacy and use the Erase Data tool. Enter the person’s email address
and the plugin deletes their submission log entries and any pending submissions.

### Can I enable auto-updates?

Yes. Updates come from WordPress.org. Click “Enable auto-updates” next to SendToMP
on the Plugins screen.

### Is there a paid version?

No. Every feature in this plugin is free and fully functional.

## Reviews

There are no reviews for this plugin.

## Contributors & Developers

“SendToMP” is open source software. The following people have contributed to this
plugin.

Contributors

 *   [ Mike Rouse ](https://profiles.wordpress.org/binarybeagle/)

[Translate “SendToMP” into your language.](https://translate.wordpress.org/projects/wp-plugins/sendtomp)

### Interested in development?

[Browse the code](https://plugins.trac.wordpress.org/browser/sendtomp/), check out
the [SVN repository](https://plugins.svn.wordpress.org/sendtomp/), or subscribe 
to the [development log](https://plugins.trac.wordpress.org/log/sendtomp/) by [RSS](https://plugins.trac.wordpress.org/log/sendtomp/?limit=100&mode=stop_on_copy&format=rss).

## Changelog

#### 2.0.1

 * **House of Lords fallback restored.** When Parliament publishes no contact address
   for a Peer, the message now goes to the House of Lords Enquiry Service with a
   courteous covering note, instead of failing. You can still set a specific address
   for any member under SendToMP  Address Overrides.
 * **Address Overrides simplified.** Overrides are now purely site-level and take
   precedence over the address returned by the Parliament API. Removed leftover 
   references to an older two-tier “global” override system that no longer exists.
 * **Clearer, safer confirmation page.** Removed a duplicate “Confirm & Send” button
   that appeared above the message preview and consent text, so confirming always
   comes after the constituent has seen exactly what will be sent.
 * **More accurate reply-to wording.** The plugin now only tells the recipient —
   and the constituent — that replies go directly to the sender when your Reply-
   To setting actually routes them that way.
 * Added a Credits & Acknowledgements section to the settings sidebar.
 * Tidied up admin copy left over from the 2.0.0 rework, pointed the share button
   at X, and set the Gravity Forms partner link.

#### 2.0.0

 * **Everything is free.** The licence system has been removed entirely. BCC, the
   WPForms and Contact Form 7 adapters, the webhook/REST endpoint, local address
   overrides, full email template customisation, House of Lords targeting, and CSV
   export are now available to everyone. The 25 messages per month cap on the free
   plan is gone. No licence key, no tiers, no quota.
 * **Member lookup now goes directly to the UK Parliament Members API.** Previously
   the plugin resolved members through a middleware service operated by the plugin
   author. It now queries `members-api.parliament.uk` directly, with no API key 
   and no intermediary. Parliament is the source of truth for who represents a postcode
   and where to write to them.
 * **The plugin no longer contacts the author’s servers at all.** Removed the delivery
   telemetry that sent a constituent’s postcode, the member ID, and your site URL
   on every confirmed message; removed the daily licence check; removed the licence
   deactivation call on uninstall; and removed the Brevo setup enquiry form. The
   plugin sends no analytics or usage data anywhere.
 * **“Powered by” attribution is now off by default** and appears on visitor-facing
   pages and emails only if you explicitly turn it on under Settings  General.
 * **New:** when Parliament publishes no email address for a member, the plugin 
   now fails at lookup time with a clear message, instead of accepting the message
   and failing after the constituent has already confirmed. Use Address Overrides
   to supply an address yourself.
 * **Fix:** the MP’s photo on the confirmation page never actually rendered. The
   pipeline was dropping `thumbnail_url` before the page could read it. Introduced
   in 1.6.10, fixed now.
 * **Fix:** the suggested privacy-policy text told site owners to publish a promise
   that unconfirmed data is “automatically deleted” after 24 hours. That was not
   true: the submission log row survived for the full retention period. The template
   now describes what the plugin actually does, using your own configured values.
 * **Fix:** the readme claimed a WP-CLI command existed for right-to-erasure requests.
   It never did. The Erase Data tool on the Privacy tab is the real mechanism, and
   the readme now says so.
 * **Fix:** the readme claimed licensed users received plugin updates directly from
   Bluetorch. No such updater has shipped since 1.3.1. Updates come from WordPress.
   org.
 * Documented every external service the plugin contacts, with links to their terms
   and privacy policies.
 * Inline `<style>` and `<script>` blocks on the confirmation, thank-you, and error
   pages, in the admin, and in the Gravity Forms editor are now properly enqueued.
 * The webhook adapter now maps the Parliament API’s error conditions to sensible
   HTTP status codes.
 * Housekeeping: WordPress.org directory assets (banner, icon, screenshots) no longer
   ship inside the plugin ZIP.

#### 1.6.11

 * Address Overrides tab clarity: the field previously labelled “Override Email”
   is now “Send to this email address instead”, with description copy explaining
   what actually happens when the override fires. Column header in the existing-
   overrides table retitled to match.
 * Fix a bug in the member picker on the Address Overrides form where selecting 
   a Lord or MP didn’t reliably record which house they belong to — saves could 
   silently default to “commons” for Peers.

#### 1.6.10

 * **Confirmation page overhaul.** The page the constituent lands on when they click
   the email link now resolves `{mp_name}`, `{mp_constituency}`, postcode and all
   Gravity Forms merge tags in both the subject and body preview — previously the
   raw placeholders leaked straight to the screen.
 * Added a “Confirm & Send” button at the top of the card as well as at the bottom,
   so long messages don’t force a scroll to the action.
 * **New “Redirect after confirming” setting** on the Confirmation tab — pick any
   WordPress page to send the constituent to after they’ve confirmed.
 * **Conversion metrics now derivable from the log.** Each submission is now represented
   by a single log row whose status transitions from `pending_confirmation` to `
   confirmed` when the constituent clicks the link. Adds a `pending_id` column linking
   log rows to the pending record, plus a `confirmed_at` timestamp.
 * Auto-resend log entry now uses a distinct `pending_resent` status so it no longer
   inflates the “emails sent” denominator.

#### 1.6.9

 * Fix a fatal `TypeError` that could fire when a constituent submitted the form
   a second time while an earlier confirmation was still pending.
 * Fix a related silent failure on the admin “Resend confirmation email” button.

#### 1.6.8

 * **Bulk actions on the submission log.** Each row now has a checkbox, with a “
   Select all” toggle. A Bulk Actions dropdown lets you delete or export the selected
   entries in one go.

#### 1.6.7

 * **Auto-resend on duplicate submissions.** When a constituent fills in the form
   a second time before confirming the first submission, SendToMP now re-sends the
   original confirmation email using the same token.

#### 1.6.6

 * **Submission log overhaul.** Full detail page per row, colour-coded status pills,
   error messages surfaced, resend confirmation, delete, and a CSV export button.

#### 1.6.5

 * Second “Confirm and send my message” button after the message preview.
 * Fix a bug where the MP email and confirmation preview showed “My post code is.”
   with an empty postcode.

#### 1.6.4

 * **Live preview on the Confirmation tab**, a Media Library picker for the confirmation
   email logo, and sensible defaults pre-populated.

#### 1.6.3

 * **Rich HTML confirmation email** with a prominent confirm button and a styled
   preview of the message. Plain-text fallback still sent alongside.

#### 1.6.2

 * Fix the “Find My MP” custom field not being used for postcode lookup when a feed
   also had a legacy mapping pointing at a deleted text field.

#### 1.6.1

 * Email Delivery tab shows a success banner and a tick on the active provider tile
   when delivery is configured.

#### 1.6.0

 * **New: provider tile picker on the Email Delivery tab** — detected SMTP plugin,
   Brevo via direct HTTP API, Custom SMTP, or the WordPress default.
 * **New: built-in Brevo integration** and **bring-your-own SMTP**. Credentials 
   are encrypted at rest via AES-256-GCM, optionally with an external key via the`
   SENDTOMP_SECRET_KEY` constant.
 * Mailer refactored around a provider interface.

#### 1.5.0

 * **New: “Find My MP” custom Gravity Forms field**, draggable straight from the
   field picker, pre-wired to the postcode lookup.

#### 1.4.0

 * New Status dashboard showing which form plugins are installed and whether email
   delivery is set up.

#### 1.3.1

 * Removed the custom plugin updater. Updates are distributed via WordPress.org.

#### 1.0.0

 * Initial release.

Older entries have been trimmed. The full history is in the plugin’s repository.

## Meta

 *  Version **2.0.1**
 *  Last updated **22 hours ago**
 *  Active installations **Fewer than 10**
 *  WordPress version ** 6.0 or higher **
 *  Tested up to **7.0.1**
 *  PHP version ** 7.4 or higher **
 *  Language
 * [English (US)](https://wordpress.org/plugins/sendtomp/)
 * Tags
 * [advocacy](https://zh-sg.wordpress.org/plugins/tags/advocacy/)[democracy](https://zh-sg.wordpress.org/plugins/tags/democracy/)
   [mp](https://zh-sg.wordpress.org/plugins/tags/mp/)[parliament](https://zh-sg.wordpress.org/plugins/tags/parliament/)
 *  [Advanced View](https://zh-sg.wordpress.org/plugins/sendtomp/advanced/)

## Ratings

No reviews have been submitted yet.

[Your review](https://wordpress.org/support/plugin/sendtomp/reviews/#new-post)

[See all reviews](https://wordpress.org/support/plugin/sendtomp/reviews/)

## Contributors

 *   [ Mike Rouse ](https://profiles.wordpress.org/binarybeagle/)

## Support

Got something to say? Need help?

 [View support forum](https://wordpress.org/support/plugin/sendtomp/)