{"id":376499,"date":"2026-09-29T07:01:28","date_gmt":"2026-09-29T07:01:28","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/contactbridge-by-tsambasis\/"},"modified":"2026-09-29T07:00:12","modified_gmt":"2026-09-29T07:00:12","slug":"kontelio","status":"publish","type":"plugin","link":"https:\/\/ast.wordpress.org\/plugins\/kontelio\/","author":23280000,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.0","stable_tag":"1.0.0","tested":"7.1.2","requires":"6.6","requires_php":"7.4","requires_plugins":null,"header_name":"Kontelio - Contact Forms","header_author":"Tsambasis & Tsambasis","header_description":"Free, ad-free contact forms with email, Telegram, WhatsApp and optional protected local inquiries.","assets_banners_color":"41796a","last_updated":"2026-09-29 07:00:12","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"https:\/\/tsambasis.net\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":42,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"solutionfirst","date":"2026-09-29 07:00:12","revision":3718415}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3718415,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3718415,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500-de.png":{"filename":"banner-1544x500-de.png","revision":3718415,"resolution":"1544x500","location":"assets","locale":"de","width":1544,"height":500},"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3718415,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250-de.png":{"filename":"banner-772x250-de.png","revision":3718415,"resolution":"772x250","location":"assets","locale":"de","width":772,"height":250},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3718415,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0"],"block_files":[],"assets_screenshots":{"screenshot-1-de.png":{"filename":"screenshot-1-de.png","revision":3718415,"resolution":"1","location":"assets","locale":"de","width":1540,"height":1120},"screenshot-1.png":{"filename":"screenshot-1.png","revision":3718415,"resolution":"1","location":"assets","locale":"","width":1540,"height":1120},"screenshot-2-de.png":{"filename":"screenshot-2-de.png","revision":3718415,"resolution":"2","location":"assets","locale":"de","width":1540,"height":1120},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3718415,"resolution":"2","location":"assets","locale":"","width":1540,"height":1120},"screenshot-3-de.png":{"filename":"screenshot-3-de.png","revision":3718415,"resolution":"3","location":"assets","locale":"de","width":330,"height":993},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3718415,"resolution":"3","location":"assets","locale":"","width":330,"height":938},"screenshot-4-de.png":{"filename":"screenshot-4-de.png","revision":3718415,"resolution":"4","location":"assets","locale":"de","width":646,"height":842},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3718415,"resolution":"4","location":"assets","locale":"","width":646,"height":842},"screenshot-5-de.png":{"filename":"screenshot-5-de.png","revision":3718415,"resolution":"5","location":"assets","locale":"de","width":1540,"height":1120},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3718415,"resolution":"5","location":"assets","locale":"","width":1540,"height":1120},"screenshot-6-de.png":{"filename":"screenshot-6-de.png","revision":3718415,"resolution":"6","location":"assets","locale":"de","width":1540,"height":1120},"screenshot-6.png":{"filename":"screenshot-6.png","revision":3718415,"resolution":"6","location":"assets","locale":"","width":1540,"height":1120},"screenshot-7-de.png":{"filename":"screenshot-7-de.png","revision":3718415,"resolution":"7","location":"assets","locale":"de","width":582,"height":1513},"screenshot-7.png":{"filename":"screenshot-7.png","revision":3718415,"resolution":"7","location":"assets","locale":"","width":582,"height":1337},"screenshot-8-de.png":{"filename":"screenshot-8-de.png","revision":3718415,"resolution":"8","location":"assets","locale":"de","width":1338,"height":403},"screenshot-8.png":{"filename":"screenshot-8.png","revision":3718415,"resolution":"8","location":"assets","locale":"","width":1338,"height":383}},"screenshots":{"1":"Simple design mode with presets and live preview.","2":"Advanced layout, spacing, colors and appearance.","3":"Responsive contact form on mobile.","4":"Dark theme on desktop.","5":"Delivery channels with extended privacy controls.","6":"Form builder with custom fields and ordering.","7":"Email, SMTP and content-free diagnostics.","8":"Protected local inquiry inbox and retention information."}},"plugin_section":[],"plugin_tags":[358,267,80,9171,3160],"plugin_category":[41,43],"plugin_contributors":[243826],"plugin_business_model":[],"class_list":["post-376499","plugin","type-plugin","status-publish","hentry","plugin_tags-contact-form","plugin_tags-email","plugin_tags-shortcode","plugin_tags-telegram","plugin_tags-whatsapp","plugin_category-communication","plugin_category-customization","plugin_contributors-solutionfirst","plugin_committers-solutionfirst"],"banners":{"banner":"https:\/\/ps.w.org\/kontelio\/assets\/banner-772x250.png?rev=3718415","banner_2x":"https:\/\/ps.w.org\/kontelio\/assets\/banner-1544x500.png?rev=3718415","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/kontelio\/assets\/icon-128x128.png?rev=3718415","icon_2x":"https:\/\/ps.w.org\/kontelio\/assets\/icon-256x256.png?rev=3718415","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/kontelio\/assets\/screenshot-1.png?rev=3718415","caption":"Simple design mode with presets and live preview."},{"src":"https:\/\/ps.w.org\/kontelio\/assets\/screenshot-2.png?rev=3718415","caption":"Advanced layout, spacing, colors and appearance."},{"src":"https:\/\/ps.w.org\/kontelio\/assets\/screenshot-3.png?rev=3718415","caption":"Responsive contact form on mobile."},{"src":"https:\/\/ps.w.org\/kontelio\/assets\/screenshot-4.png?rev=3718415","caption":"Dark theme on desktop."},{"src":"https:\/\/ps.w.org\/kontelio\/assets\/screenshot-5.png?rev=3718415","caption":"Delivery channels with extended privacy controls."},{"src":"https:\/\/ps.w.org\/kontelio\/assets\/screenshot-6.png?rev=3718415","caption":"Form builder with custom fields and ordering."},{"src":"https:\/\/ps.w.org\/kontelio\/assets\/screenshot-7.png?rev=3718415","caption":"Email, SMTP and content-free diagnostics."},{"src":"https:\/\/ps.w.org\/kontelio\/assets\/screenshot-8.png?rev=3718415","caption":"Protected local inquiry inbox and retention information."}],"raw_content":"<!--section=description-->\n<p>Kontelio connects a flexible WordPress contact form to email, Telegram and the WhatsApp Cloud API. Enable any combination of channels, or send private notifications that link to an encrypted local inbox.<\/p>\n\n<ul>\n<li>Free: no ads, paid features, analytics or remote assets.<\/li>\n<li>WordPress mail\/TLS SMTP, Telegram and WhatsApp Cloud API.<\/li>\n<li>Private notifications, encrypted inbox and adjustable\/permanent retention.<\/li>\n<li>Six field types, 1\u201320 fields, ordering and required\/optional controls.<\/li>\n<li>Four presets, light\/dark\/auto, round\/square, seamless embedding and live preview.<\/li>\n<li>English source text, WordPress-language default for new installations, and optional German language packs; custom text and styling.<\/li>\n<li>Server validation, honeypot, timing, rate limits and duplicate protection.<\/li>\n<\/ul>\n\n<p>Hosting, email providers and Meta may charge. WhatsApp needs business onboarding, a Cloud API number, token and approved template, not a personal account. No affiliation with Telegram, WhatsApp or Meta; no legal-compliance guarantee.<\/p>\n\n<h4>Extended privacy and the local inbox<\/h4>\n\n<p>Enable Extended privacy per channel. It sends only a generic notice, site name and admin link: no visitor name, email, phone, subject or answers. Email omits visitor Reply-To. Provider credentials and routing metadata remain necessary. Channels with this mode off still receive full content.<\/p>\n\n<p>If an active channel uses extended privacy, validated details are stored in this site's database using AES-256-GCM before delivery. OpenSSL is required. Storage failure blocks ALL channels; there is no plaintext fallback. Successful storage counts as acceptance even if notifications fail. Check the inbox and diagnostics; there is no retry queue.<\/p>\n\n<p>Links contain an ID, not an access token. Access requires WordPress login and manage_options. No public\/search\/REST exposure. Admins can delete inquiries; WordPress personal-data export\/erasure matches email fields.<\/p>\n\n<p>Retention: 30 days by default, 1\u201336500 whole days or 0 permanently. Unsupported timestamp ranges are rejected. Changes affect NEW inquiries only. Expired items become unreadable and receive bounded hourly\/admin cleanup. WP-Cron needs visits or server cron. Permanent items remain until deletion\/uninstall; backups may retain copies.<\/p>\n\n<p>Encryption uses WordPress security salts. Losing\/changing keys makes existing inquiries unreadable; securely back them up. Database plus keys permit decryption. Use HTTPS; protect accounts, hosting and backups. Disabling privacy leaves existing inquiries.<\/p>\n\n<h4>Fields and delivery limits<\/h4>\n\n<p>Use text, email, telephone, textarea, select or checkbox fields. Set labels, placeholders, requirements, widths and up to 20 options. Original fields are removable; consent stays separate. Editing needs JavaScript; submissions do not. Unknown\/removed fields are ignored; at least one answer is required.<\/p>\n\n<p>Full-content email\/Telegram include ordered labelled answers; the first completed valid email supplies Reply-To only for full-content email. Limits: 12,000 combined characters, plus field limits; full-content Telegram 4,000 UTF-16 units; full-content WhatsApp 500 labelled characters and 900 across five parameters. Provider content limits exclude privacy notifications. Oversized submissions are rejected, not truncated.<\/p>\n\n<h4>Shortcode, design and language<\/h4>\n\n<p>Use <code>[kontelio]<\/code>. Existing <code>[contact_bridge]<\/code> shortcodes from earlier development builds remain supported; use <code>[kontelio]<\/code> for new content. Override an instance with <code>theme=\"light|dark|auto\"<\/code>, <code>shape=\"rounded|square\"<\/code>, <code>heading=\"Your heading\"<\/code> or <code>embedded=\"true|false\"<\/code>.<\/p>\n\n<p>Seamless embedding removes the outer card, keeping fields\/maximum width. Match colors to your theme. Preview never saves\/sends; tests send notifications. Presets preserve content and privacy settings.<\/p>\n\n<p>Set the consent link's label, URL and tab behavior. <code>{privacy_link}<\/code> positions it; otherwise it is appended. Without a URL it is text. Executable HTML\/URL schemes are rejected.<\/p>\n\n<p>New installations follow the WordPress language; English is the source and fallback language. Existing saved language choices and custom text are preserved. A complete German translation is maintained separately in the repository translations\/ directory and a separate language-pack ZIP. Translation catalogs are not included in the installable plugin ZIP. Until a WordPress.org German language pack is available, copy kontelio-de_DE.mo to wp-content\/languages\/plugins\/ and choose German or a German WordPress locale. Without an installed matching language pack, the plugin displays English. German language packs are distributed through WordPress.org once the translations are approved.<\/p>\n\n<h4>External services<\/h4>\n\n<p>Providers are contacted for enabled deliveries, requested tests and Telegram confirmation, never form\/preview views. They see the server connection and routing\/account data; notifications omit visitor IPs. Tests use sample data or a privacy notification with an inbox overview link, never the administrator's email as sample content.<\/p>\n\n<p><strong>Email<\/strong><\/p>\n\n<p>Use WordPress mail or your provider's SMTP host. Sender\/recipient are separate. SMTP supports STARTTLS\/implicit TLS and password\/app-password login with certificate verification. No OAuth client is included. Settings affect this plugin only; existing mail integrations may take over. Full content includes labelled answers and optional visitor Reply-To; privacy sends notice, site name and admin URL. Provider\/recipient retention applies. Acceptance does not prove arrival.<\/p>\n\n<p><strong>Telegram Bot API<\/strong><\/p>\n\n<p>Uses <code>https:\/\/api.telegram.org\/bot&lt;TOKEN&gt;\/sendMessage<\/code>: token, chat ID and full content or privacy notification. Link previews are disabled. Requested <code>getUpdates<\/code> confirmation saves a private chat only after matching the admin's temporary code. Chat members can read messages; bot chats are not Secret Chats.<\/p>\n\n<ul>\n<li>API: https:\/\/core.telegram.org\/bots\/api<\/li>\n<li>Terms: https:\/\/telegram.org\/tos<\/li>\n<li>Developer terms: https:\/\/telegram.org\/tos\/bot-developers<\/li>\n<li>Privacy: https:\/\/telegram.org\/privacy<\/li>\n<\/ul>\n\n<p><strong>WhatsApp Business Platform \/ Meta Cloud API<\/strong><\/p>\n\n<p>Uses <code>https:\/\/graph.facebook.com\/&lt;API_VERSION&gt;\/&lt;PHONE_NUMBER_ID&gt;\/messages<\/code>: Bearer token, sender ID, operator number, template name\/language and parameters. Full content uses five body parameters: name, email, subject, labelled details, site name. Privacy requires a SEPARATE approved template with two: site name, admin URL. Meta\/recipient process this data; the recipient must agree to notifications. Meta determines approval, availability and charges.<\/p>\n\n<ul>\n<li>API: https:\/\/developers.facebook.com\/docs\/whatsapp\/cloud-api\/<\/li>\n<li>Terms: https:\/\/www.whatsapp.com\/legal\/WhatsApp-Terms-for-WhatsApp-Business-Platform<\/li>\n<li>Messaging policy: https:\/\/business.whatsapp.com\/policy<\/li>\n<li>Privacy: https:\/\/www.whatsapp.com\/legal\/privacy-policy\/<\/li>\n<li>Data-processing terms: https:\/\/www.whatsapp.com\/legal\/business-data-processing-terms<\/li>\n<\/ul>\n\n<h4>Other stored data<\/h4>\n\n<p>Full-content-only setups create no inquiry archive. Keyed IP\/request hashes enforce five attempts\/ten minutes; done status lasts one hour, locks two minutes, health 24 hours and Telegram codes ten minutes. No raw IP is stored. Optional email logs: up to 50 events\/seven days, containing time, method, context, result and safe error category. No addresses, subjects, bodies, passwords or raw server replies. Admins can clear\/disable logs. Hosting\/software may keep other records.<\/p>\n\n<p>SMTP passwords use salt-based encryption or <code>TSCB_SMTP_PASSWORD<\/code>; changed salts require re-entry. Messenger tokens are unencrypted, non-autoloading options, or use <code>TSCB_TELEGRAM_TOKEN<\/code> \/ <code>TSCB_WHATSAPP_TOKEN<\/code> in wp-config.php. Protect backups. Uninstall removes inquiries, database runtime data and logs; settings\/credentials only if enabled. External-cache keys expire. Provider messages, backups and wp-config constants need separate handling.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload\/activate the ZIP in Plugins &gt; Add New.<\/li>\n<li>Open Settings &gt; Kontelio (German: Einstellungen &gt; Kontelio).<\/li>\n<li>Configure channels, privacy and retention; save and test.<\/li>\n<li>Add <code>[kontelio]<\/code> to a Shortcode block.<\/li>\n<li>Adapt your privacy notice; test the public form and inbox.<\/li>\n<\/ol>\n\n<p>Folder migration: back up the database and WordPress keys, deactivate an earlier build and remove its folder via FTP\/file manager without uninstall; then install the kontelio\/ ZIP. Do NOT use WordPress Delete on the old plugin: uninstall removes inquiries. Activate only the new build and verify saved settings\/inquiries. Keep site keys unchanged.<\/p>\n\n<p>If WordPress.org directory details are unavailable, the plugin provides a local details fallback. Tsambasis &amp; Tsambasis opens https:\/\/tsambasis.net\/ when clicked.<\/p>\n\n<h4>Telegram<\/h4>\n\n<p>Create a bot with @BotFather and save its token. Send the TSCB-... code to the intended private chat and confirm within ten minutes; \/start alone is insufficient. For groups\/channels or existing webhooks, enter the chat ID manually and grant posting permissions. Webhooks are not removed.<\/p>\n\n<h4>WhatsApp<\/h4>\n\n<p>Enter Graph version (default v24.0), production token, Phone Number ID, international recipient, template name\/language. Full-content templates require five positional body variables and at most 124 fixed-text characters. No header, button or named parameters.<\/p>\n\n<p>Privacy needs its separate approved two-variable template, e.g. <code>New inquiry on {{1}}. Open securely: {{2}}<\/code>. Meta decides approval. Switching privacy off uses the configured five-variable template.<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"is%20signal%20supported%3F\"><h3>Is Signal supported?<\/h3><\/dt>\n<dd><p>No. Unofficial signal-cli needs a maintained service.<\/p><\/dd>\n<dt id=\"can%20caching%20or%20spam%20affect%20the%20form%3F\"><h3>Can caching or spam affect the form?<\/h3><\/dt>\n<dd><p>Do not cache\/block admin-ajax.php or admin pages. Without JavaScript, exclude form pages from long-lived caching. Changed fields may require reload. Shared IPs share quotas; distributed attacks need hosting protection.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release.<\/li>\n<\/ul>","raw_excerpt":"Free contact forms with email, Telegram, WhatsApp, a field builder and optional private inbox. No ads or tracking.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/ast.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/376499","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ast.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/ast.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/ast.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=376499"}],"author":[{"embeddable":true,"href":"https:\/\/ast.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/solutionfirst"}],"wp:attachment":[{"href":"https:\/\/ast.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=376499"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/ast.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=376499"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/ast.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=376499"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/ast.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=376499"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/ast.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=376499"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/ast.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=376499"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}