Zaptilo WhatsApp
Free WordPress / Woocommerce plugin to send WhatsApp Business messages via Zaptilo API.
by Zaptilo · github.com/zaptilo/wordpress-whatsapp-plugin · website
Install
No release zip yet. The repository archive installs, but the folder name will carry the branch suffix and updates will not flow:
wp plugin install https://github.com/zaptilo/wordpress-whatsapp-plugin/archive/refs/heads/main.zipZaptilo WhatsApp — WordPress Plugin
Send WhatsApp Business messages from WordPress and WooCommerce — form notifications, order updates, COD verification, abandoned cart recovery — via the Zaptilo WhatsApp API.
This is the source repository for the Zaptilo WhatsApp WordPress plugin. The plugin lives at wp-content/plugins/zaptilo-whatsapp/ after install.
Features (all free)
| Category | Feature |
|---|---|
| Connection | API token + base URL + default country code |
| Forms | Contact Form 7, Gravity Forms, Elementor Pro Forms, WPForms |
| WooCommerce | Order placed → WhatsApp |
| WooCommerce | Order shipped → WhatsApp |
| WooCommerce | Order completed → WhatsApp |
| WooCommerce | COD verification (reduces RTO 25-40%) |
| WooCommerce | Abandoned cart recovery (1h, 6h, 24h sequence) |
| Diagnostics | Message log with delivery status |
Requirements
- WordPress 5.6+
- PHP 7.4+
- A free Zaptilo account (for the API token)
- WooCommerce 6+ (only if you want WooCommerce features)
Install
From the WordPress.org plugin repository (recommended once published)
Plugins → Add New → search "Zaptilo WhatsApp" → Install Now → Activate
Manual install
- Download a release zip from this repo or build from source:
git clone https://github.com/zaptilo/wordpress-whatsapp-plugin.git zaptilo-whatsapp zip -r zaptilo-whatsapp.zip zaptilo-whatsapp - WordPress Admin → Plugins → Add New → Upload Plugin → choose the zip
- Activate
- Open Settings → Zaptilo WhatsApp and configure your API token + per-event templates
Configuration
1. Get a Zaptilo API token
Sign up at web.zaptilo.ai → Developer Tools → Access Tokens → copy the token.
2. Submit message templates to Meta (via Zaptilo dashboard)
For each event you want to use, submit an approved template. Examples:
| Event | Template name | Body |
|---|---|---|
| Form submission | contact_thanks |
Hi {{1}}, thanks for reaching out. Our team will get back to you shortly. |
| Order placed | order_confirmation |
Hi {{1}}, your order #{{2}} for {{3}} is confirmed. |
| Order shipped | order_shipped |
Hi {{1}}, your order #{{2}} is shipped. Track at {{3}}. |
| Order delivered | order_delivered |
Hi {{1}}, your order #{{2}} has been delivered. Hope you love it! |
| COD verification | cod_verification |
Hi {{1}}, please confirm your COD order #{{2}} for {{3}}. |
| Abandoned cart 1h | abandoned_cart_1h |
Hi {{1}}, you left items in your cart. Complete your order: {{2}} |
| Abandoned cart 6h | abandoned_cart_6h |
Hi {{1}}, your cart of {{2}} is waiting. Checkout now: {{3}} |
| Abandoned cart 24h | abandoned_cart_24h |
Hi {{1}}, last chance — complete your order: {{2}} |
Meta typically approves Utility templates within an hour.
3. Configure each event in WordPress admin
Each setting takes the format:
template_name | language_code | field1, field2, field3
For example, for Order placed:
order_confirmation | en | customer_first_name, order_number, order_total
This sends template order_confirmation (English) with {{1}} = customer first name, {{2}} = order number, {{3}} = order total.
4. Available field tokens
WooCommerce events:
customer_first_name,customer_last_name,customer_full_nameorder_number,order_total,order_status,order_urltracking_number,tracking_url(from order meta_tracking_number/_tracking_url)shop_name
Abandoned cart:
customer_first_name,cart_total,cart_items_count,cart_url,shop_name
Form integrations:
- Use the actual field name from your form (e.g.
your-namefor Contact Form 7's[your-name]).
Architecture
zaptilo-whatsapp.php ← main plugin file (entrypoint, hooks)
includes/
class-zaptilo-client.php ← REST API wrapper (wp_remote_post)
class-zaptilo-settings.php ← admin settings page
class-zaptilo-logger.php ← message log + custom DB table
integrations/
cf7.php ← Contact Form 7
gravity-forms.php ← Gravity Forms
elementor-forms.php ← Elementor Pro Forms
wpforms.php ← WPForms
woocommerce.php ← order placed / shipped / completed
woocommerce-cod.php ← COD verification (only on payment_method=cod)
woocommerce-abandoned-cart.php ← cart capture + hourly cron
admin/views/
settings.php ← /wp-admin settings page
logs.php ← /wp-admin message log page
assets/css/admin.css ← admin styling
uninstall.php ← clean up tables + options on uninstall
readme.txt ← WP.org plugin repository metadata
Database tables created
| Table | Purpose |
|---|---|
wp_zaptilo_wa_log |
API call log (auto-prunes to last 5000 entries) |
wp_zaptilo_wa_abandoned_cart |
Cart capture for the abandoned-cart cron |
Both are dropped automatically on plugin uninstall.
Cron
The plugin schedules an hourly WP-cron event called zaptilo_wa_abandoned_cart_cron for the abandoned-cart sequence. WP-cron only fires when there's site traffic — for low-traffic sites, set up a real cron hitting wp-cron.php.
Support
- Plugin docs: https://zaptilo.ai/wordpress-whatsapp-plugin
- Pricing & sign-up: https://zaptilo.ai
- Issues: open one in this GitHub repo
- Email: connect@zaptilo.ai
License
GPLv2 or later — see LICENSE.