{"id":392010,"date":"2026-10-26T16:37:51","date_gmt":"2026-10-26T16:37:51","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/sensorpro-signup-forms\/"},"modified":"2026-10-26T16:37:42","modified_gmt":"2026-10-26T16:37:42","slug":"sensorpro","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/sensorpro\/","author":23591860,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.1","stable_tag":"1.0.1","tested":"7.1.4","requires":"6.0","requires_php":"7.4","requires_plugins":null,"header_name":"SensorPro Signup Forms","header_author":"SensorPro","header_description":"Add a GDPR-friendly signup form to your site that adds contacts straight into your SensorPro account.","assets_banners_color":"","last_updated":"2026-10-26 16:37:42","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/github.com\/SensorPro\/wordpress","header_author_uri":"https:\/\/sensorpro.net\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":60,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.1":{"tag":"1.0.1","author":"sensorpro","date":"2026-10-26 16:37:42","revision":3766916}},"upgrade_notice":{"1.0.1":"<p>Security hardening of form input sanitization.<\/p>","1.0.0":"<p>First release.<\/p>"},"ratings":[],"assets_icons":[],"assets_banners":[],"assets_blueprints":{},"all_blocks":{"sensorpro\/signup-form":{"$schema":"https:\/\/schemas.wp.org\/trunk\/block.json","apiVersion":3,"name":"sensorpro\/signup-form","title":"SensorPro Signup Form","category":"widgets","icon":"email-alt","description":"Signup form that adds contacts to SensorPro.","keywords":["newsletter","signup","email","subscribe"],"textdomain":"sensorpro","attributes":{"title":{"type":"string","default":""},"tags":{"type":"string","default":""},"buttonText":{"type":"string","default":""}},"supports":{"html":false,"align":["wide","full"]},"editorScript":"file:.\/index.js","editorStyle":"sensorpro-form-editor"}},"tagged_versions":["1.0.1"],"block_files":[],"assets_screenshots":[],"screenshots":{"1":"The signup form.","2":"Settings &gt; SensorPro."}},"plugin_section":[],"plugin_tags":[264,131785,455,10255,2482],"plugin_category":[41,42],"plugin_contributors":[288750],"plugin_business_model":[],"class_list":["post-392010","plugin","type-plugin","status-publish","hentry","plugin_tags-email-marketing","plugin_tags-gdpr","plugin_tags-newsletter","plugin_tags-signup-form","plugin_tags-subscribe","plugin_category-communication","plugin_category-contact-forms","plugin_contributors-sensorpro","plugin_committers-sensorpro"],"banners":[],"icons":{"svg":false,"icon":"https:\/\/s.w.org\/plugins\/geopattern-icon\/sensorpro.svg","icon_2x":false,"generated":true},"screenshots":[],"raw_content":"<!--section=description-->\n<p>SensorPro Signup Forms connects WordPress to <a href=\"https:\/\/sensorpro.net\/\">SensorPro<\/a>, the email marketing platform. Visitors who sign up are added to your SensorPro contacts and tagged the way you choose.<\/p>\n\n<ul>\n<li>Shortcode <code>[sensorpro_form]<\/code>, a \"SensorPro Signup Form\" block and a classic widget.<\/li>\n<li>Email (required), optional first and last name.<\/li>\n<li>Consent checkbox with your own wording, plus an optional consent record saved to a contact field.<\/li>\n<li>Tags applied to every signup, with extra tags per form.<\/li>\n<li>Optional SensorPro welcome email (off by default).<\/li>\n<li>People who unsubscribed earlier are resubscribed when they sign up again and tick the consent box.<\/li>\n<li>Submits without reloading the page, and still works without JavaScript.<\/li>\n<li>Spam protection: nonce, hidden honeypot field and per-IP rate limit.<\/li>\n<li>Your API credentials stay on your server. They are never sent to the browser or shown in full in the admin.<\/li>\n<\/ul>\n\n<p>You need a SensorPro account with an API user to use this plugin.<\/p>\n\n<h4>Shortcode options<\/h4>\n\n<pre><code>[sensorpro_form title=\"Join our newsletter\" tags=\"Website, Footer\" button=\"Sign me up\"]\n<\/code><\/pre>\n\n<ul>\n<li><code>title<\/code> \u2013 heading above the form.<\/li>\n<li><code>tags<\/code> \u2013 extra SensorPro tags for this form (added to the default tags).<\/li>\n<li><code>button<\/code> \u2013 button text.<\/li>\n<\/ul>\n\n<h3>External services<\/h3>\n\n<p>This plugin connects to the SensorPro REST API, provided by SensorPro, to add the people who sign up through your form to your SensorPro account. It cannot work without this service.<\/p>\n\n<p>The API address is set on the settings page and is https:\/\/apinie.sensorpro.net by default. The plugin calls it in these cases:<\/p>\n\n<ul>\n<li><strong>Test connection<\/strong> (only when an administrator clicks the button on Settings &gt; SensorPro) and <strong>whenever no valid session token is stored<\/strong> (about once an hour while the form is in use): it signs in at <code>\/auth\/sys\/signin<\/code>, sending your SensorPro API key, organization, API user name and password. SensorPro returns a temporary session token, which is stored on your server.<\/li>\n<li><strong>When a visitor submits the form<\/strong>: it sends the visitor's email address, first and last name (if those fields are shown), the tags you configured, the source name (\"WordPress\" by default) and, if enabled, a consent record (date, time and site address) to <code>\/api\/Contact\/UpdateAdd<\/code>.<\/li>\n<li><strong>When a visitor who already exists in SensorPro submits the form with the consent box ticked<\/strong>: it looks up that email address at <code>\/api\/Contact\/GetContacts<\/code> and, only if the contact had unsubscribed, resubscribes them at <code>\/api\/Contact\/ChangeOptOutStatus<\/code>.<\/li>\n<\/ul>\n\n<p>Nothing is sent to SensorPro when a page with the form is simply viewed. The visitor's IP address is not sent by the plugin.<\/p>\n\n<p>SensorPro privacy policy: https:\/\/sensorpro.net\/privacy\/\nSensorPro acceptable use policy (terms of use): https:\/\/sensorpro.net\/aup\/\nSensorPro data processing agreement: https:\/\/sensorpro.net\/privacy\/dpa.pdf<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Install the plugin from Plugins &gt; Add New, or upload the zip from Plugins &gt; Add New &gt; Upload Plugin.<\/li>\n<li>Activate the plugin.<\/li>\n<li>In SensorPro, create an API user and note your API key (API &gt; API keys).<\/li>\n<li>In WordPress go to Settings &gt; SensorPro, enter the API key, organization, API user and password, save, and click Test connection.<\/li>\n<li>Add the form with the shortcode, the block or the widget.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"which%20list%20do%20contacts%20go%20into%3F\"><h3>Which list do contacts go into?<\/h3><\/dt>\n<dd><p>SensorPro uses tags. Every signup gets the tags you set under Settings &gt; SensorPro plus any tags set on the form. Tags that do not exist yet are created. The contact's source (ImportName) is set to \"WordPress\" by default.<\/p><\/dd>\n<dt id=\"does%20it%20send%20a%20welcome%20email%3F\"><h3>Does it send a welcome email?<\/h3><\/dt>\n<dd><p>Only if you turn on \"Welcome email\" under Settings &gt; SensorPro. It is off by default.<\/p><\/dd>\n<dt id=\"what%20happens%20if%20the%20email%20is%20already%20in%20sensorpro%3F\"><h3>What happens if the email is already in SensorPro?<\/h3><\/dt>\n<dd><p>The contact is updated (matched by email) and the new tags are added. If they had unsubscribed and they tick the consent box, they are resubscribed. If the consent box is turned off, an unsubscribed contact stays unsubscribed.<\/p><\/dd>\n<dt id=\"test%20connection%20mentions%20my%20ip%20address\"><h3>Test connection mentions my IP address<\/h3><\/dt>\n<dd><p>Contact SensorPro support.<\/p><\/dd>\n<dt id=\"i%20use%20page%20caching\"><h3>I use page caching<\/h3><\/dt>\n<dd><p>The form includes a security token that expires after about a day. If pages are cached longer than that, exclude pages with the form from the cache or lower the cache lifetime.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Security hardening: every submitted form field is now sanitized as soon as it is read (no-JS and REST submissions), before validation or any filter runs.<\/li>\n<li>Settings input is sanitized field by field.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>First release: signup form (shortcode, block, widget), settings page with connection test, consent checkbox, resubscribe on consent, honeypot and rate limiting.<\/li>\n<\/ul>","raw_excerpt":"Add a GDPR-friendly signup form to your site that adds contacts straight into your SensorPro email marketing account.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/392010","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=392010"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/sensorpro"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=392010"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=392010"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=392010"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=392010"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=392010"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=392010"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}