{"id":11230,"date":"2026-05-28T04:29:48","date_gmt":"2026-05-27T20:29:48","guid":{"rendered":"https:\/\/aeosub.com\/proofing-pins\/"},"modified":"2026-05-28T04:29:48","modified_gmt":"2026-05-27T20:29:48","slug":"proofing-pins","status":"publish","type":"post","link":"https:\/\/aeosub.com\/zh\/proofing-pins\/","title":{"rendered":"Proofing Pins"},"content":{"rendered":"<div class=\"post-img\" style=\"margin-bottom: 25px\"><img decoding=\"async\" src=\"https:\/\/ps.w.org\/proofing-pins\/assets\/banner-1544x500.png?rev=3551226\" alt=\"Proofing Pins\" style=\"width: 100%;height: auto;border-radius: 12px\"><\/div>\n<div class=\"plugin-info-card\" style=\"border: 1px solid #e2e8f0;border-radius: 10px;overflow: hidden;margin-bottom: 30px;font-family: -apple-system, system-ui, sans-serif;background: #fff\">\n<table style=\"width: 100%;border-collapse: collapse;font-size: 14px\">\n<tr style=\"border-bottom: 1px solid #edf2f7\">\n<th style=\"padding: 15px 20px;text-align: left;width: 35%;color: #4a5568;background: #fcfcfc\"><img decoding=\"async\" src=\"https:\/\/s.w.org\/plugins\/geopattern-icon\/proofing-pins_192f5c.svg\" style=\"width: 40px;height: 40px;border-radius: 6px;margin-right: 12px;vertical-align: middle\"> Developer<\/th>\n<td style=\"padding: 15px 20px;font-weight: 500\"><a href=\"https:\/\/profiles.wordpress.org\/punjabideveloper\/\" target=\"_blank\" rel=\"noopener\">Lovedeep<\/a><\/td>\n<\/tr>\n<tr style=\"border-bottom: 1px solid #edf2f7\">\n<th style=\"padding: 12px 20px;text-align: left;color: #4a5568;background: #fcfcfc\">Version<\/th>\n<td style=\"padding: 12px 20px\">v0.1.1<\/td>\n<\/tr>\n<tr style=\"border-bottom: 1px solid #edf2f7\">\n<th style=\"padding: 12px 20px;text-align: left;color: #4a5568;background: #fcfcfc\">Active Installs<\/th>\n<td style=\"padding: 12px 20px\">0 +<\/td>\n<\/tr>\n<tr style=\"border-bottom: 1px solid #edf2f7\">\n<th style=\"padding: 12px 20px;text-align: left;color: #4a5568;background: #fcfcfc\">Requires \/ Tested<\/th>\n<td style=\"padding: 12px 20px\">6.3 \/ 7.0<\/td>\n<\/tr>\n<tr style=\"border-bottom: 1px solid #edf2f7\">\n<th style=\"padding: 12px 20px;text-align: left;color: #4a5568;background: #fcfcfc\">Last Updated<\/th>\n<td style=\"padding: 12px 20px\">2026-05-27 7:46pm GMT<\/td>\n<\/tr>\n<tr>\n<th style=\"padding: 12px 20px;text-align: left;color: #4a5568;background: #fcfcfc\">Official Link<\/th>\n<td style=\"padding: 12px 20px\"><a href=\"https:\/\/wordpress.org\/plugins\/proofing-pins\/\" target=\"_blank\" style=\"text-decoration: none;color: #4a3bca;font-weight: bold\" rel=\"noopener\">View Details \u2192<\/a><\/td>\n<\/tr>\n<\/table><\/div>\n<div class=\"plugin-short-desc\" style=\"margin: 20px 0;padding: 12px 15px;background: #f9fafb;border-left: 4px solid #4a3bca;border-radius: 6px;font-style: italic;color: #4a5568\">Pin-point client feedback on any page with screenshots. Optional AI suggestions, Microsoft Teams notifications, 1-click Apply for Elementor.<\/div>\n<p>Proofing Pins lets clients and reviewers click anywhere on your site&#8217;s frontend to drop a comment pinned to that exact spot. Each pin is captured with a viewport screenshot so developers see what the reviewer saw. All comments live in a focused Proofing dashboard in wp-admin \u2014 no more &#8220;the button under the banner thing&#8221; emails.<\/p>\n<p><strong>Core features<\/strong><\/p>\n<ul>\n<li><strong>Pin-point comments:<\/strong> reviewers click, type, submit \u2014 pin is saved with a screenshot that has the pin baked into the image at the click location.<\/li>\n<li><strong>Modern capture:<\/strong> uses the html-to-image library (SVG foreignObject renderer) for reliable screenshots even on Elementor or block-theme pages.<\/li>\n<li><strong>Responsive anchoring:<\/strong> pins are stored against the clicked element (selector + percentage-within-element), so they follow the element across viewport sizes.<\/li>\n<li><strong>Threaded replies:<\/strong> native WordPress comments attached to each pin for discussion between reviewers and developers.<\/li>\n<li><strong>Admin dashboard:<\/strong> list + grid views, status workflow (Open \/ In Progress \/ Resolved \/ Archived), bulk actions.<\/li>\n<li><strong>Guest comments:<\/strong> optional \u2014 let logged-out visitors leave pins with a one-time name\/email prompt (cookie-remembered for 30 days), with honeypot + per-IP rate limiting.<\/li>\n<li><strong>AI suggestions (optional, BYO key):<\/strong> bring your own OpenAI, Anthropic, Google Gemini, or OpenRouter API key. Each pin gets a one-paragraph suggestion on what to change.<\/li>\n<li><strong>Elementor-aware Apply button:<\/strong> when the AI proposes an allowlisted change (heading text, button text, color), a before\/after preview appears with an &#8220;Apply to Elementor&#8221; button. Applies the change to the live page, saves a WordPress revision, one-click revert available.<\/li>\n<li><strong>Microsoft Teams notifications (optional):<\/strong> post pin activity directly to a Teams channel using a Workflow webhook. Pick which events you want \u2014 new pins, replies, and per-status transitions (Open \/ In Progress \/ Resolved \/ Archived). Each notification is an Adaptive Card with the comment, author, page, status, and (where small enough) the screenshot. Webhook URL is stored encrypted at rest; one-click &#8220;Send test message&#8221; verifies the wire.<\/li>\n<\/ul>\n<p><strong>Data, privacy, and third-party services<\/strong><\/p>\n<ul>\n<li>The plugin does not send any data to third parties by default.<\/li>\n<li>The AI feature is <strong>opt-in<\/strong>. You provide your own API key; requests go directly from your WordPress server to the provider you configure (OpenAI, Anthropic, Google, or OpenRouter). No data is sent to the plugin author. When enabled, each new pin&#8217;s comment text, captured element HTML, and metadata are sent to the configured provider so it can generate a suggestion \u2014 consult your provider&#8217;s privacy policy.<\/li>\n<li>The Microsoft Teams integration is <strong>opt-in<\/strong>. You provide your own Teams Workflow webhook URL; notifications are posted directly from your WordPress server to that webhook (typically a Microsoft-hosted Azure Logic Apps endpoint). No data is sent to the plugin author. Payloads include the pin comment, author name, page URL, status, and a heavily compressed thumbnail when one fits \u2014 see &#8220;External Services&#8221; below for the exact contract.<\/li>\n<li>Screenshots are stored locally in your WordPress uploads folder \u2014 never uploaded elsewhere.<\/li>\n<li>Guest identities (name + email) are stored in a cookie (<code>proopin_guest_identity<\/code>) for 30 days only on the visitor&#8217;s own browser.<\/li>\n<li>When guest commenting is enabled, the plugin stores a short hash of each guest submitter&#8217;s IP address (first 16 characters of the MD5 hash) for the sole purpose of rate-limiting abusive submissions. Raw IP addresses are never stored.<\/li>\n<\/ul>\n<h3>External Services<\/h3>\n<p>This plugin can connect to third-party services only when their corresponding integration is explicitly enabled. <strong>Every integration is opt-in and disabled by default.<\/strong> No external connections are made unless you turn on a feature and provide its credential (API key for AI, webhook URL for Teams) in the plugin&#8217;s settings screens.<\/p>\n<p>When AI is enabled and a new pin is created (or you manually trigger a suggestion), the following data is sent from your WordPress server directly to your configured AI provider: the pin&#8217;s comment text, the page URL, the page title, the clicked element&#8217;s tag name and a short HTML snippet, and the element&#8217;s CSS selector. No data is sent to the plugin author at any time.<\/p>\n<p>When Microsoft Teams is enabled, the following data is sent from your WordPress server directly to the Workflow webhook you configured (typically a Microsoft-hosted endpoint at logic.azure.com): the pin&#8217;s comment text, the author&#8217;s display name (or guest name), the page URL, the pin status, the event type, and \u2014 only when it fits inside Teams&#8217; card-size budget \u2014 a heavily compressed JPEG thumbnail of the pin&#8217;s screenshot. The webhook URL is supplied by you and points to whatever channel\/workflow you set up in Teams; the plugin does not contact any other Microsoft endpoint. No data is sent to the plugin author at any time.<\/p>\n<p>Only the providers you configure are contacted. Each supported service is documented below.<\/p>\n<h4>OpenAI<\/h4>\n<p>Used for: generating AI pin suggestions and listing available models.<br \/>\nData sent: pin comment, page URL, element context (tag, HTML snippet, selector).<br \/>\nSent when: AI suggestions are enabled and a pin is created (if auto-suggest is on), or when you click &#8220;Regenerate suggestion&#8221; in the pin detail view.<\/p>\n<ul>\n<li>Service: https:\/\/openai.com\/<\/li>\n<li>Terms of Use: https:\/\/openai.com\/policies\/terms-of-use<\/li>\n<li>Privacy Policy: https:\/\/openai.com\/policies\/privacy-policy<\/li>\n<\/ul>\n<h4>Anthropic<\/h4>\n<p>Used for: generating AI pin suggestions and listing available models.<br \/>\nData sent: pin comment, page URL, element context (tag, HTML snippet, selector).<br \/>\nSent when: AI suggestions are enabled and a pin is created (if auto-suggest is on), or when you click &#8220;Regenerate suggestion&#8221;.<\/p>\n<ul>\n<li>Service: https:\/\/www.anthropic.com\/<\/li>\n<li>Terms of Service: https:\/\/www.anthropic.com\/legal\/consumer-terms<\/li>\n<li>Privacy Policy: https:\/\/www.anthropic.com\/legal\/privacy<\/li>\n<\/ul>\n<h4>Google Gemini (Generative Language API)<\/h4>\n<p>Used for: generating AI pin suggestions and listing available models via Google&#8217;s Generative Language API (generativelanguage.googleapis.com).<br \/>\nData sent: pin comment, page URL, element context (tag, HTML snippet, selector).<br \/>\nSent when: AI suggestions are enabled and a pin is created (if auto-suggest is on), or when you click &#8220;Regenerate suggestion&#8221;.<\/p>\n<ul>\n<li>Service: https:\/\/ai.google.dev\/<\/li>\n<li>Terms of Service: https:\/\/ai.google.dev\/gemini-api\/terms<\/li>\n<li>Privacy Policy: https:\/\/policies.google.com\/privacy<\/li>\n<\/ul>\n<h4>OpenRouter<\/h4>\n<p>Used for: generating AI pin suggestions and listing available models via the OpenRouter gateway (openrouter.ai).<br \/>\nData sent: pin comment, page URL, element context (tag, HTML snippet, selector).<br \/>\nSent when: AI suggestions are enabled and a pin is created (if auto-suggest is on), or when you click &#8220;Regenerate suggestion&#8221;.<\/p>\n<ul>\n<li>Service: https:\/\/openrouter.ai\/<\/li>\n<li>Terms of Service: https:\/\/openrouter.ai\/terms<\/li>\n<li>Privacy Policy: https:\/\/openrouter.ai\/privacy<\/li>\n<\/ul>\n<h4>Microsoft Teams (via user-configured Workflow webhook)<\/h4>\n<p>Used for: posting pin activity (new pin, new reply, status change) to a Microsoft Teams channel as Adaptive Cards.<br \/>\nData sent: pin comment, author display name (or guest name), page URL, pin status, event type, and \u2014 when small enough to fit Teams&#8217; card payload budget \u2014 a heavily compressed JPEG thumbnail of the pin screenshot.<br \/>\nSent when: the Teams integration is enabled, a webhook URL is configured, and the corresponding event happens on a pin. Also sent on demand when the admin clicks &#8220;Send test message&#8221; on the Teams settings screen.<\/p>\n<p>The destination URL is provided entirely by you. The plugin only posts to whichever Workflow webhook URL you save (typically a Microsoft-hosted endpoint at https:\/\/*.logic.azure.com\/ \u2014 created by Teams&#8217; &#8220;Post to a channel when a webhook request is received&#8221; workflow template). The webhook URL is stored encrypted at rest.<\/p>\n<ul>\n<li>Service: https:\/\/www.microsoft.com\/en-us\/microsoft-teams\/group-chat-software<\/li>\n<li>Terms of Service: https:\/\/www.microsoft.com\/en-us\/servicesagreement\/<\/li>\n<li>Privacy Statement: https:\/\/privacy.microsoft.com\/en-us\/privacystatement<\/li>\n<\/ul>\n<h3>Third-Party Libraries<\/h3>\n<ul>\n<li><strong>html-to-image<\/strong> (bubkoo\/html-to-image, MIT License) \u2014 bundled as <code>assets\/js\/html-to-image.min.js<\/code>. Used for client-side viewport screenshot generation.<\/li>\n<\/ul>","protected":false},"excerpt":{"rendered":"<p>Pin-point client feedback on any page with screenshots. Optional AI suggestions, Microsoft Teams notifications, 1-click Apply for Elementor.<\/p>","protected":false},"author":1,"featured_media":9317,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"inline_featured_image":false,"footnotes":""},"categories":[252],"tags":[2329,2028,566,1279,2330,555],"class_list":["post-11230","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-trends","tag-client-review","tag-comments","tag-elementor","tag-feedback","tag-proofing","tag-wordpress-plugin"],"_links":{"self":[{"href":"https:\/\/aeosub.com\/zh\/wp-json\/wp\/v2\/posts\/11230","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/aeosub.com\/zh\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/aeosub.com\/zh\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/aeosub.com\/zh\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/aeosub.com\/zh\/wp-json\/wp\/v2\/comments?post=11230"}],"version-history":[{"count":0,"href":"https:\/\/aeosub.com\/zh\/wp-json\/wp\/v2\/posts\/11230\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/aeosub.com\/zh\/wp-json\/wp\/v2\/media\/9317"}],"wp:attachment":[{"href":"https:\/\/aeosub.com\/zh\/wp-json\/wp\/v2\/media?parent=11230"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/aeosub.com\/zh\/wp-json\/wp\/v2\/categories?post=11230"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/aeosub.com\/zh\/wp-json\/wp\/v2\/tags?post=11230"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}