{"id":290409,"date":"2026-06-08T09:27:17","date_gmt":"2026-06-08T09:27:17","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/pointerdev-ai-chat\/"},"modified":"2026-06-08T09:27:05","modified_gmt":"2026-06-08T09:27:05","slug":"pointerdev-ai-chat","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/pointerdev-ai-chat\/","author":23466429,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"0.1.2","stable_tag":"0.1.2","tested":"7.0","requires":"6.0","requires_php":"8.0","requires_plugins":null,"header_name":"PointerDev AI Chat","header_author":"PointerDev","header_description":"Connect WordPress to PointerDev AI chat APIs using your agent publishable key.","assets_banners_color":"f0f8fd","last_updated":"2026-06-08 09:27:05","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/pointerdev.ai\/integration\/wordpress","header_author_uri":"https:\/\/pointer.dev","rating":0,"author_block_rating":0,"active_installs":0,"downloads":26,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"0.1.2":{"tag":"0.1.2","author":"pointerdev","date":"2026-06-08 09:27:05"}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3564398,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3564398,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256},"icon.svg":{"filename":"icon.svg","revision":3564398,"resolution":false,"location":"assets","locale":false}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3564398,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3564398,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["0.1.2"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3564398,"resolution":"1","location":"assets","locale":"","width":1200,"height":900},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3564398,"resolution":"2","location":"assets","locale":"","width":1200,"height":900}},"screenshots":{"1":"Polished setup screen with grouped connection settings, status checks, and masked secret key handling.","2":"Appearance controls with widget labels, launcher style options, color controls, and a live preview."}},"plugin_section":[],"plugin_tags":[2353,5707,266165,1104],"plugin_category":[41],"plugin_contributors":[266166],"plugin_business_model":[],"class_list":["post-290409","plugin","type-plugin","status-publish","hentry","plugin_tags-ai","plugin_tags-chat","plugin_tags-pointerdevai","plugin_tags-support","plugin_category-communication","plugin_contributors-pointerdev","plugin_committers-pointerdev"],"banners":{"banner":"https:\/\/ps.w.org\/pointerdev-ai-chat\/assets\/banner-772x250.png?rev=3564398","banner_2x":"https:\/\/ps.w.org\/pointerdev-ai-chat\/assets\/banner-1544x500.png?rev=3564398","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":"https:\/\/ps.w.org\/pointerdev-ai-chat\/assets\/icon.svg?rev=3564398","icon":"https:\/\/ps.w.org\/pointerdev-ai-chat\/assets\/icon.svg?rev=3564398","icon_2x":false,"generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/pointerdev-ai-chat\/assets\/screenshot-1.png?rev=3564398","caption":"Polished setup screen with grouped connection settings, status checks, and masked secret key handling."},{"src":"https:\/\/ps.w.org\/pointerdev-ai-chat\/assets\/screenshot-2.png?rev=3564398","caption":"Appearance controls with widget labels, launcher style options, color controls, and a live preview."}],"raw_content":"<!--section=description-->\n<p>PointerDev AI Chat provides:<\/p>\n\n<ul>\n<li>Admin settings page under Settings &gt; PointerDev AI Chat<\/li>\n<li>Frontend shortcode <code>[pointerdevai_chat]<\/code> that loads the widget bundle<\/li>\n<li>Guest mode and login-required mode support<\/li>\n<li>Server-side end-user token mint endpoint for logged-in WordPress users<\/li>\n<li>Runtime session token lifecycle support for server-side AJAX proxy flows (exchange, refresh, revoke)<\/li>\n<\/ul>\n\n<p>The widget JavaScript is bundled locally with this plugin. No JavaScript, CSS, or image assets are loaded from a CDN.<\/p>\n\n<h3>External Service<\/h3>\n\n<p>This plugin connects your WordPress site to the PointerDev AI service. A PointerDev AI account, project ID, publishable key, and, for login-required mode, secret key are required.<\/p>\n\n<p>When visitors use the chat widget, the plugin sends chat messages, project credentials, anonymous visitor identifiers or logged-in user token data, and configured metadata to the API Base URL saved in Settings &gt; PointerDev AI Chat. The default service endpoint is <code>https:\/\/pointerdev.ai\/<\/code>, but site administrators may configure their own PointerDev AI API base URL.<\/p>\n\n<p>Service provider: PointerDev AI\nService URL: https:\/\/pointerdev.ai\/\nPrivacy policy: https:\/\/pointerdev.ai\/privacy-policy\nTerms: https:\/\/pointerdev.ai\/terms-of-service<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>pointerdev-ai-chat<\/code> folder to <code>\/wp-content\/plugins\/<\/code>.<\/li>\n<li>Activate the plugin through the WordPress admin.<\/li>\n<li>Go to Settings &gt; PointerDev AI Chat and save:\n\n<ul>\n<li>API Base URL<\/li>\n<li>Project ID<\/li>\n<li>Publishable Key<\/li>\n<li>Secret Key (required for login_required mode)<\/li>\n<li>Optional widget title, subtitle, launcher label, icon style, icon text, and colors<\/li>\n<\/ul><\/li>\n<li>Add shortcode <code>[pointerdevai_chat]<\/code> to any page.<\/li>\n<\/ol>\n\n<p>To show a round chat bubble launcher, choose Chat bubble icon for Launcher Icon Style and leave Launcher Label empty.<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"how%20does%20login_required%20mode%20work%3F\"><h3>How does login_required mode work?<\/h3><\/dt>\n<dd><p>When <code>auth_mode<\/code> is <code>end_user<\/code> (or <code>auto<\/code> with logged-in users), plugin mints end-user tokens server-side using your stored secret key and feeds them to the widget.<\/p>\n\n<p>Primary filter <code>pointerdevai_end_user_token<\/code> can override the generated token.\nLegacy filter <code>pointerai_end_user_token<\/code> is still available for custom overrides.\nWhen this filter returns a token, it overrides built-in token minting for widget auth.\nThe same server-side minting path is used by the plugin AJAX proxy when needed.<\/p>\n\n<p>Default <code>sub<\/code> derivation is multisite-aware (<code>blog_id:user_id<\/code>). If you need Laravel-style parity (<code>user_id<\/code> only), use filter <code>pointerdevai_end_user_subject_seed<\/code>.\nLegacy filter <code>pointerai_end_user_subject_seed<\/code> still works.<\/p><\/dd>\n<dt id=\"can%20i%20use%20this%20for%20anonymous%20chat%3F\"><h3>Can I use this for anonymous chat?<\/h3><\/dt>\n<dd><p>Yes. Set auth mode to <code>anonymous<\/code> or <code>auto<\/code>.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>0.1.2<\/h4>\n\n<ul>\n<li>Redesign the settings screen with clearer setup sections, connection status, masked secret key handling, and widget preview.<\/li>\n<li>Add WordPress.org banner, icon, and screenshot assets for the plugin listing.<\/li>\n<\/ul>\n\n<h4>0.1.1<\/h4>\n\n<ul>\n<li>Bundle widget locally, add appearance settings, and fix anonymous chat after WordPress logout.<\/li>\n<\/ul>\n\n<h4>0.1.0<\/h4>\n\n<ul>\n<li>Initial release.<\/li>\n<\/ul>","raw_excerpt":"Connect your WordPress site to PointerDev AI using your agent project credentials and embed the official PointerDev AI widget.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/290409","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=290409"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/pointerdev"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=290409"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=290409"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=290409"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=290409"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=290409"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=290409"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}