{"id":338619,"date":"2026-07-10T19:25:47","date_gmt":"2026-07-10T19:25:47","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/tyo-by-vaivatta\/"},"modified":"2026-07-10T20:43:53","modified_gmt":"2026-07-10T20:43:53","slug":"vaivatta","status":"publish","type":"plugin","link":"https:\/\/su.wordpress.org\/plugins\/vaivatta\/","author":23530785,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"0.2.1","stable_tag":"0.2.1","tested":"7.0.1","requires":"6.0","requires_php":"7.4","requires_plugins":null,"header_name":"ty\u00f6. by vaivatta.","header_author":"vaivatta","header_description":"Add an AI front desk to your site: every visitor message is drafted by AI and approved by a person before it's sent. EU-hosted. English &amp; Finnish.","assets_banners_color":"fcfdff","last_updated":"2026-07-10 20:43:53","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/tyo.vaivatta.fi","header_author_uri":"https:\/\/vaivatta.fi","rating":0,"author_block_rating":0,"active_installs":0,"downloads":40,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"0.2.1":{"tag":"0.2.1","author":"vaivatta","date":"2026-07-10 20:43:53"}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3603379,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3603379,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3603379,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3603379,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["0.2.1"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3603379,"resolution":"1","location":"assets","locale":"","width":1280,"height":800},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3603379,"resolution":"2","location":"assets","locale":"","width":1280,"height":800},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3603379,"resolution":"3","location":"assets","locale":"","width":1280,"height":800}},"screenshots":{"1":"The ty\u00f6 settings page in WordPress admin \u2014 connect your workspace and configure widget options.","2":"The \"Connect with ty\u00f6\" flow \u2014 authenticate on vaivatta, pick your workspace, and return automatically.","3":"The chat widget on a live site \u2014 visitors can start a conversation; replies require team approval before sending."}},"plugin_section":[],"plugin_tags":[2353,5707,2368,2379,1104],"plugin_category":[41,47],"plugin_contributors":[270967],"plugin_business_model":[],"class_list":["post-338619","plugin","type-plugin","status-publish","hentry","plugin_tags-ai","plugin_tags-chat","plugin_tags-customer-service","plugin_tags-live-chat","plugin_tags-support","plugin_category-communication","plugin_category-education-and-support","plugin_contributors-vaivatta","plugin_committers-vaivatta"],"banners":{"banner":"https:\/\/ps.w.org\/vaivatta\/assets\/banner-772x250.png?rev=3603379","banner_2x":"https:\/\/ps.w.org\/vaivatta\/assets\/banner-1544x500.png?rev=3603379","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/vaivatta\/assets\/icon-128x128.png?rev=3603379","icon_2x":"https:\/\/ps.w.org\/vaivatta\/assets\/icon-256x256.png?rev=3603379","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/vaivatta\/assets\/screenshot-1.png?rev=3603379","caption":"The ty\u00f6 settings page in WordPress admin \u2014 connect your workspace and configure widget options."},{"src":"https:\/\/ps.w.org\/vaivatta\/assets\/screenshot-2.png?rev=3603379","caption":"The \"Connect with ty\u00f6\" flow \u2014 authenticate on vaivatta, pick your workspace, and return automatically."},{"src":"https:\/\/ps.w.org\/vaivatta\/assets\/screenshot-3.png?rev=3603379","caption":"The chat widget on a live site \u2014 visitors can start a conversation; replies require team approval before sending."}],"raw_content":"<!--section=description-->\n<p><strong>ty\u00f6. by vaivatta.<\/strong> adds a chat widget to your site so visitors can start a conversation any time. What makes ty\u00f6 different: <em>no message reaches a customer without a person reviewing and approving it first<\/em>. The AI drafts a suggested reply; your team decides whether to send it, edit it, or ignore it.<\/p>\n\n<p><strong>How it works<\/strong><\/p>\n\n<ol>\n<li>A visitor types a message in the widget on your site.<\/li>\n<li>ty\u00f6's AI drafts a suggested reply based on your workspace knowledge base.<\/li>\n<li>Your team sees the draft in the ty\u00f6 dashboard, edits if needed, and clicks Send.<\/li>\n<li>Only then does the reply reach the visitor.<\/li>\n<\/ol>\n\n<p>Nothing is sent automatically. There is no \"bot\" that replies on your behalf without your approval.<\/p>\n\n<p><strong>Key features<\/strong><\/p>\n\n<ul>\n<li>AI-assisted drafts \u2014 save time without sacrificing quality or accuracy.<\/li>\n<li>Human-in-the-loop \u2014 every outgoing message is reviewed and sent by a real person.<\/li>\n<li>EU data residency \u2014 visitor messages and AI processing stay within the European Union.<\/li>\n<li>English &amp; Finnish \u2014 the widget and dashboard support both languages out of the box.<\/li>\n<li>Simple setup \u2014 paste your workspace ID or use one-click Connect to link your ty\u00f6 workspace.<\/li>\n<li>Free to start \u2014 works on the free tier; optional paid plans unlock higher volumes and features.<\/li>\n<li>Minimized launcher \u2014 the widget loads as a small chat bubble and opens on click (new default; the always-open mode remains available in settings).<\/li>\n<li>Inline contact form \u2014 the [vaivatta_form] shortcode embeds a quote-request form anywhere on your site; submissions arrive as normal conversations for your team.<\/li>\n<\/ul>\n\n<p><strong>EU data residency<\/strong><\/p>\n\n<p>All visitor data, conversation history, and AI processing are handled on EU-hosted infrastructure. vaivatta does not transfer personal data outside the European Union.<\/p>\n\n<p><strong>Requirements<\/strong><\/p>\n\n<ul>\n<li>A ty\u00f6 account (free at vaivatta.fi).<\/li>\n<li>Your ty\u00f6 workspace ID (found in your dashboard under the customer chat link).<\/li>\n<\/ul>\n\n<h3>External services<\/h3>\n\n<p>This plugin relies on the external <strong>ty\u00f6<\/strong> service (by vaivatta). By installing and configuring this plugin, visitor chat messages entered in the widget on your site are transmitted to ty\u00f6 servers for processing. If you enable the \"Connect with ty\u00f6\" flow and opt in to site learning, your site's public URL is also sent to ty\u00f6 so the AI can learn from your public site content.<\/p>\n\n<p><strong>What data is sent and when:<\/strong><\/p>\n\n<ul>\n<li><strong>Visitor chat messages<\/strong> \u2014 sent to ty\u00f6 whenever a visitor types a message in the chat widget.<\/li>\n<li><strong>Site URL<\/strong> \u2014 sent to ty\u00f6 only if the site owner initiates the \"Connect with ty\u00f6\" flow and opts in to site content learning (optional; presented as a checkbox during connect).<\/li>\n<\/ul>\n\n<p><strong>Service endpoints:<\/strong><\/p>\n\n<ul>\n<li>Chat widget: <code>https:\/\/chat.vaivatta.fi<\/code><\/li>\n<li>Platform API: <code>https:\/\/tyo.vaivatta.fi<\/code><\/li>\n<\/ul>\n\n<p><strong>Legal:<\/strong><\/p>\n\n<ul>\n<li>Terms of Service: https:\/\/tyo.vaivatta.fi\/terms<\/li>\n<li>Privacy Policy: https:\/\/tyo.vaivatta.fi\/privacy<\/li>\n<\/ul>\n\n<p>vaivatta is EU-hosted; all processing takes place within the European Union.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>vaivatta<\/code> folder to the <code>\/wp-content\/plugins\/<\/code> directory, or install via the WordPress plugin screen.<\/li>\n<li>Activate the plugin through the <strong>Plugins<\/strong> menu in WordPress.<\/li>\n<li>Go to <strong>Settings \u2192 ty\u00f6<\/strong>.<\/li>\n<li>Click <strong>Connect with ty\u00f6<\/strong> to link your workspace (recommended), or paste your workspace ID manually under <strong>Advanced<\/strong>.<\/li>\n<li>The chat widget appears on all pages of your site once a workspace ID is saved.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"is%20ty%C3%B6%20free%3F\"><h3>Is ty\u00f6 free?<\/h3><\/dt>\n<dd><p>Yes \u2014 ty\u00f6 has a free tier that lets you get started at no cost. Optional paid plans \u2014 Team (\u20ac39\/month) and Front Desk (\u20ac89\/month) \u2014 unlock higher conversation volumes, additional team members, and priority support. Payment is handled entirely by vaivatta; the plugin never processes payments.<\/p><\/dd>\n<dt id=\"do%20replies%20send%20automatically%3F\"><h3>Do replies send automatically?<\/h3><\/dt>\n<dd><p>No. ty\u00f6 never sends a reply to a visitor without a team member reviewing and approving it first. The AI drafts a suggested reply; a person on your team decides to send it, edit it, or discard it. This is a core design principle, not a setting.<\/p><\/dd>\n<dt id=\"does%20ty%C3%B6%20store%20visitor%20messages%3F\"><h3>Does ty\u00f6 store visitor messages?<\/h3><\/dt>\n<dd><p>Visitor messages are transmitted to and stored by the ty\u00f6 service (EU-hosted) so your team can review and respond to them. See the vaivatta Privacy Policy at https:\/\/tyo.vaivatta.fi\/privacy for full details.<\/p><\/dd>\n<dt id=\"where%20is%20visitor%20data%20stored%3F\"><h3>Where is visitor data stored?<\/h3><\/dt>\n<dd><p>All data \u2014 including visitor messages, conversation history, and AI processing \u2014 stays within EU-hosted infrastructure. vaivatta does not transfer personal data outside the European Union.<\/p><\/dd>\n<dt id=\"what%20languages%20does%20the%20widget%20support%3F\"><h3>What languages does the widget support?<\/h3><\/dt>\n<dd><p>The widget supports English and Finnish. The language can be set to match your site's language automatically, or fixed to English or Finnish in the plugin settings.<\/p><\/dd>\n<dt id=\"how%20do%20i%20embed%20the%20contact%20form%3F\"><h3>How do I embed the contact form?<\/h3><\/dt>\n<dd><p>Add the shortcode <code>[vaivatta_form]<\/code> to any page or post. Optional attributes: <code>extra_label<\/code> adds one extra field with your label (e.g. <code>[vaivatta_form extra_label=\"Rekisterinumero\"]<\/code>), <code>lang<\/code> fixes the language (<code>fi<\/code> or <code>en<\/code>), and <code>height<\/code> sets the iframe height in pixels. Your page provides the heading around the form.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>0.2.1<\/h4>\n\n<ul>\n<li>Widget launcher CSS\/JS now load through the WordPress enqueue API (wp_add_inline_style \/ wp_add_inline_script) instead of printed tags. No functional changes.<\/li>\n<\/ul>\n\n<h4>0.2.0<\/h4>\n\n<ul>\n<li>Widget now starts minimized as a chat bubble with an unread badge (new default). The always-open behavior is available under Settings \u2192 ty\u00f6 \u2192 Widget display.<\/li>\n<li>New [vaivatta_form] shortcode: embed an inline contact\/quote form; submissions create normal conversations.<\/li>\n<li>Widget language setting now takes effect inside the messenger.<\/li>\n<\/ul>\n\n<h4>0.1.0<\/h4>\n\n<ul>\n<li>Initial release \u2014 chat widget embed, EN\/FI support, Connect with ty\u00f6 flow, EU-hosted.<\/li>\n<\/ul>","raw_excerpt":"AI drafts every reply; a human approves before it reaches customers. EU-hosted. English &amp; Finnish.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/su.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/338619","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/su.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/su.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/su.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=338619"}],"author":[{"embeddable":true,"href":"https:\/\/su.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/vaivatta"}],"wp:attachment":[{"href":"https:\/\/su.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=338619"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/su.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=338619"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/su.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=338619"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/su.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=338619"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/su.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=338619"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/su.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=338619"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}