
內容簡介
Joinotify 是一款讓網站事件轉換為 WhatsApp 訊息的外掛,無需撰寫程式碼。用戶可以透過視覺化的工作流程編輯器輕鬆設置觸發器、條件和訊息,提升網站自動化與即時通訊的效率。
【主要功能】
• 視覺化工作流程編輯器,支持拖放操作
• 支援多種 WhatsApp 訊息類型,包括文本和媒體
• 整合 WooCommerce,處理訂單和退款
• 提供即時訊息送達確認功能
• 支援多個 WhatsApp 商業帳號管理
外掛標籤
開發者團隊
原文外掛簡介
Joinotify — from join and notify — turns things that happen on your site into WhatsApp messages, without writing code. You draw the automation on a canvas: pick a trigger (an order is paid, a form is submitted, a user registers), add conditions, delays and loops, and attach the messages you want sent.
The plugin is free and has no locked features. Building, saving, testing and exporting workflows all work out of the box. Sending messages requires a Joinotify account, because messages are delivered through the official WhatsApp Cloud API — see External services below.
Visual workflow builder
Drag-and-drop canvas with triggers, actions, conditions, delays and loops
Branching logic with true/false paths
Placeholders and custom variables to personalise every message
Import and export workflows as JSON
Ready-made workflow templates
WhatsApp messaging
Text, media, audio, documents and stickers
Interactive messages: reply buttons, option lists and link buttons
Location messages, contact cards and reactions
Meta-approved message templates, listed inside the builder with preview, language and approval status
Real delivery confirmation: sent, delivered, read and failed, with the reason reported by Meta
Multiple numbers and multiple WhatsApp Business Accounts on the same account
Integrations
WooCommerce — order status, refunds, subscriptions, digital product delivery, abandoned carts
WPForms, Elementor Forms and Flexify Checkout
WordPress user events
Telegram and Resend (e-mail) as additional delivery channels
AI-generated message content through the WordPress AI Client, using the provider set up in Settings → Connectors (optional)
Operations
Message history with per-message status
Processing queue for scheduled and retried messages
Debug log with configurable retention
Passwordless login (OTP) over WhatsApp
A PHP extension API: register your own actions, triggers, integrations, conditions, placeholders, REST routes and channels with filters only
External services
This plugin connects to external services. Nothing is contacted until you supply the corresponding credential in the setup wizard or in the settings screen.
The AI actions are the exception: they do not call any provider directly. They go through the WordPress AI Client, so the request is made by WordPress to whichever provider you configured in Settings → Connectors, under that provider’s own terms.
Joinotify API — https://api.joinotify.com
Delivers your WhatsApp messages through the official WhatsApp Cloud API, lists the numbers on your account, syncs Meta-approved message templates, serves the catalogue of ready-made workflow templates shown in the template picker, and receives delivery events. Used only once you paste the API key issued for your site. Each request sends your API key, the recipient phone number and the message content you configured. When you connect the site from the Joinotify panel, that one request also sends your site address, so the key can be named and revoked from there.
Terms: https://joinotify.com/terms-and-conditions — Privacy: https://joinotify.com/policy-privacy
Joinotify telemetry — https://api.joinotify.com/telemetry
Optional and off by default. Contacted only after you switch on “Share anonymous usage data”, either in the setup wizard or in Settings → About. It receives a random identifier generated on your site, your Joinotify API key (the same one used to send messages), the plugin, WordPress and PHP versions, your locale and time zone, whether the site is multisite and whether WooCommerce, Elementor and HTTPS are in play, how many workflows exist, which integrations are switched on, and a list of named events: which feature ran, whether a message succeeded or failed, and normalized error codes. It never receives your site address, admin e-mail, phone numbers, contacts, message content or workflow content. Sent at most once every few hours, and once more when you switch the option off — that last request is what tells the service to stop counting this installation. To have the data already collected for your installation erased, use the removal request page below.
Terms: https://joinotify.com/terms-and-conditions — Privacy: https://joinotify.com/policy-privacy — Data removal: https://joinotify.com/remove-data
Joinotify panel — https://app.joinotify.com
Opened in your browser when you click to create or manage an API key. No data is sent from your site by the plugin itself.
Terms: https://joinotify.com/terms-and-conditions — Privacy: https://joinotify.com/policy-privacy
Telegram Bot API — https://api.telegram.org
Optional. Contacted only if you enable the Telegram integration and supply a bot token. It receives the chat id and message content of Telegram actions.
Terms: https://telegram.org/tos — Privacy: https://telegram.org/privacy
Resend — https://api.resend.com
Optional. Contacted only if you enable the Resend integration and supply an API key. It receives the recipient address, subject, body and attachments of e-mail actions.
Terms: https://resend.com/legal/terms-of-service — Privacy: https://resend.com/legal/privacy-policy
Usage data
Sharing anonymous usage data is off by default and entirely optional. If you turn it on, the setup wizard shows you the exact payload and sample events beforehand. It never includes your site address, admin e-mail, phone numbers, contacts, message content, workflow content or any credential.
Your site is identified by a random value generated on the site itself — never derived from your address — together with the API key you already use to send messages. Reports are batched and sent at most once every few hours, from a scheduled task, never during a page load. The identifier is shown in Settings → About so you can quote it in a support ticket, since the service has no way to look your site up by domain.
Switching the option off stops collection, deletes anything still waiting to be sent, and sends one last request asking the service to stop counting this installation. If you would rather it stayed completely silent, the Joinotify/Telemetry/Send_Opt_Out filter suppresses that final request.
Switching it off stops future reports but does not erase what was already received. To request the erasure of the data tied to your installation, use https://joinotify.com/remove-data and quote the identifier shown in Settings → About.
Source code and build
Nothing here is obfuscated, and no compiled file ships without the source that produced it.
The plugin’s own code
The PHP under admin/src and templates/ is not compiled: it is the code that runs.
The admin screens are Vue 3 applications bundled with Vite. Their complete, unminified source ships inside the package under app/src (242 files, of which 167 are Vue components), together with app/package.json, app/package-lock.json, app/vite.config.js, app/tailwind.config.js, app/postcss.config.js and app/tsconfig.json. To reproduce app/dist from it:
cd app && npm install && npm run build
PHP dependencies are declared in admin/composer.json and installed with cd admin && composer install --no-dev.
The development repository, including the script that assembles the release package, is public at https://github.com/meumouse/joinotify
Bundled third-party libraries
app/dist also carries the libraries below. Each is installed from npm and used unmodified; the version in this release is pinned in `app/package.json` and `app/package-lock.json`, both shipped. Their source is at:
Vue — https://github.com/vuejs/core (MIT)
Pinia — https://github.com/vuejs/pinia (MIT)
Vue Flow, with the background, controls and minimap plugins — https://github.com/bcakmakoglu/vue-flow (MIT)
Headless UI — https://github.com/tailwindlabs/headlessui (MIT)
VueUse — https://github.com/vueuse/vueuse (MIT)
Boxicons for Vue — https://github.com/box-icons/boxicons-vue (MIT)
intl-tel-input — https://github.com/jackocnr/intl-tel-input (MIT)
vue3-emoji-picker — https://github.com/delowardev/vue3-emoji-picker (MIT)
@wordpress/i18n — https://github.com/WordPress/gutenberg (GPL-2.0-or-later)
The country-name chunks under app/dist/chunks/index-*.js are intl-tel-input’s translated country lists, split out by Vite so a screen only downloads the locale it needs.
admin/vendor holds the Composer dependencies, installed with `composer install --no-dev` from `admin/composer.json`:
giggsey/libphonenumber-for-php-lite — https://github.com/giggsey/libphonenumber-for-php (Apache-2.0) — used to validate and format phone numbers. The “lite” build of the same library, without the offline geocoding, carrier and timezone datasets the plugin never reads
symfony/polyfill-mbstring — https://github.com/symfony/polyfill-mbstring (MIT) — a dependency of the above
