=== GemCRM - CRM, Email Marketing, Newsletter & Marketing Automation ===
Contributors: kodezen, tusharimran
Tags: crm, email marketing, newsletter, marketing automation, sms marketing
Requires at least: 6.8
Tested up to: 7.0
Requires PHP: 8.1
Stable tag: 1.5.3
License: GPLv3 or later
License URI: https://www.gnu.org/licenses/gpl-3.0.html

WordPress CRM to manage contacts, send email & SMS campaigns, automate marketing, and track deals — no per-subscriber fees, ever.

== Description ==

**GemCRM is an all-in-one WordPress CRM to manage contacts, automate email/SMS/WhatsApp campaigns, and grow sales.**

GemCRM runs your entire customer relationship workflow inside WordPress. Manage contacts, leads, and companies. Send email campaigns and newsletters with a drag-and-drop builder. Capture subscribers with opt-in forms. Track every open and click. No monthly per-subscriber fees — one lightweight plugin, one dashboard.

Beyond email, GemCRM is a full marketing automation platform: drip sequences, recurring campaigns, dynamic segments, SMS and WhatsApp messaging, a visual sales pipeline, and abandoned cart recovery — everything you need to turn contacts into customers.

And it's native to your WordPress data. Contacts sync automatically from StoreEngine and Academy LMS — no exports, no third-party sync tools, no manual work.

[GemCRM](https://gemcrm.net/) | [Docs](https://gemcrm.net/docs/) | [GemCRM Pro](https://gemcrm.net/pricing/) | [Public Roadmap](https://gemcrm.net/roadmap/)

= 🎯 Built for anyone who needs to grow an audience =

* **Store owners** — turn WooCommerce and StoreEngine customers into repeat buyers
* **Course creators** — nurture Academy LMS or any other LMS students automatically as they enroll
* **Service & booking businesses** — follow up on appointments with automated campaigns
* **Bloggers & publishers** — grow a subscriber list and send newsletters that land
* **Agencies & marketers** — run campaigns and automations for every client from WordPress
* **Sales teams** — track leads, deals, and a full pipeline in one place

= 📇 Contact & Lead Management — Free =

Create and manage contacts, leads, and companies from a unified dashboard. Add custom fields (text, number, date, email, single-select, multi-select), assign contact types, apply tags, lists, and labels for flexible segmentation, and view full purchase history from WooCommerce and StoreEngine directly on the contact record. Bulk actions, contact stats, and growth dashboards are all included at no cost.

= ✉️ Email Campaigns & Newsletters — Free =

Build beautiful emails with the built-in drag-and-drop Mail Builder — no third-party editor needed. Save and reuse templates. Send campaigns in the background via your own SMTP or any transactional email service. Track every open, click, and bounce in real time.

What's included free:

* Drag-and-drop email builder with reusable template library
* A/B testing — compare subject lines and content, automatically send the winner
* Follow-up emails — auto-resend to contacts who didn't open
* Open and click tracking with real-time analytics
* Bounce handling for Amazon SES, Mailgun, SendGrid, and Pepipost
* Unlimited campaigns, no sending caps from the plugin

= 🧲 Capture Leads with Forms & Webhooks — Free =

Build subscription forms with a visual builder, set custom layouts, add a post-signup redirect, and drop them anywhere with a shortcode. Every new signup auto-creates a contact in GemCRM. Capture leads from external funnels and landing pages through incoming webhooks without writing any code.

Pair with native [aBlocks](https://ablocks.pro/) for high-converting opt-in pages, or use native [QuizPress](https://quizpress.pro/) to turn quiz and survey answers into contact data automatically.

= 🔄 Sync & Import Contacts — Free, Zero Setup =

Contacts from StoreEngine and Academy LMS flow into GemCRM automatically — no manual export, no third-party sync tool, no setup required. WooCommerce customers and WordPress users are also included out of the box.

Extended sync (also free): Tutor LMS, LifterLMS, Easy Digital Downloads, FluentCart, WP Fusion.

Platform migration: import your existing list from Mailchimp, ActiveCampaign, ConvertKit, Drip, or MailerLite — full custom-field mapping via CSV included.

= ⚙️ Marketing Automation — Sequences, Segments & Smart Links (Pro) =

* **Email sequences** — multi-step drip journeys that nurture contacts on autopilot
* **Recurring campaigns** — schedule emails on a daily, weekly, or monthly cadence, automatically
* **Dynamic segments & advanced filters** — target precise audiences by any contact field, number, date, or string value, updated live
* **Smart links** — trackable, branded links with auto-signin, redirects, and click analytics

= 💬 SMS & WhatsApp Marketing — Omnichannel Messaging (Pro) =

Send SMS and WhatsApp campaigns alongside email from one platform. GemCRM supports multiple providers so you are never locked into a single vendor.

* Supported SMS providers: Twilio, Vonage, BulkSMSBD
* Supported WhatsApp providers: WhatsApp Cloud API, 360dialog

Built-in compliance: per-contact SMS and WhatsApp consent tracking, a global suppression list that survives contact deletion (GDPR-safe), and STOP-keyword handling so opt-outs are always respected. Full delivery logs and campaign stats for every message sent.

= 💼 Sales Pipeline & Abandoned Cart Recovery (Pro) =

* **Visual deal pipeline** — Kanban board with custom stages, tasks, notes, and a full activity log
* **Deals linked to contacts and companies** — full context on every opportunity in one view
* **Abandoned cart recovery** — track WooCommerce carts, trigger recovery workflows automatically, win back lost revenue
* **Role-based permissions** — control team access per section (contacts, campaigns, deals, forms)
* **Role-based tag mapping** — auto-apply tags when a user's WordPress role changes

Closed a deal? Hand off delivery to native [GemBoards](https://gemboards.com/), the Kodezen Kanban project and task manager.

= 🔌 Integrations & Developer Tools — Free =

* **Native Kodezen ecosystem** — StoreEngine and Academy LMS connect automatically, zero configuration
* **No-code automation** — connect any app or trigger any workflow through native [Zaplane](https://zaplane.app/)
* **Third-party integrations** — WooCommerce, Tutor LMS, LifterLMS, Easy Digital Downloads, FluentCart, WP Fusion
* **Full REST API** — build headless or custom workflows against all CRM data
* **WP-CLI support** — manage GemCRM from the command line
* **Outgoing webhooks** — push contact and campaign events to any external system
* **Incoming webhooks** — pull leads from external forms, funnels, and pages
* **GDPR-ready** — built on the WordPress Privacy API with full data export and erasure support

= 💎 Why GemCRM Over a SaaS CRM or Email Platform? =

**No per-subscriber fees.** Platforms like Mailchimp and ActiveCampaign charge you based on your list size — costs that grow automatically as your audience grows, whether you send or not. GemCRM has no subscriber tiers.

**No per-email charges from the plugin.** You use your own SMTP or transactional service, which is the necessary sending cost regardless of what platform you use. The plugin itself adds zero sending overhead.

**Everything lives in WordPress.** Your contacts, campaigns, and data stay on your server — not on a third-party SaaS platform you don't control.

**A free tier that actually works.** Contact management, unlimited campaigns, the drag-and-drop builder, forms, A/B testing, open/click tracking, and multi-platform sync — all free, not locked behind a paid plan.

**Genuinely omnichannel.** Email, SMS, and WhatsApp from one dashboard, with unified contact records across every channel.

**Native to your data.** Store customers, LMS students, and booking clients flow in automatically. No exports, no Zapier bridges, no manual CSV uploads.

**Fast and lightweight.** A single plugin with one dashboard — no bloat, no site slowdown.

**Get started with GemCRM.** From your first newsletter to a fully automated, multi-channel marketing engine, GemCRM gives you the complete WordPress CRM toolkit in one lightweight plugin. Install [GemCRM](https://gemcrm.net/), sync your contacts, and send your first campaign in minutes.

= 🔥 The Kodezen Ecosystem — Everything Works Together, Natively =

GemCRM is part of a connected family of WordPress plugins built to run your whole business from one platform:

* [StoreEngine](https://storeengine.pro/) — sell digital & physical products, subscriptions, and memberships
* [Academy LMS](https://academylms.net/) — the top-rated WordPress LMS to create, sell, and manage courses
* [aBlocks](https://ablocks.pro/) — design fast, high-performance pages with 100+ Gutenberg blocks, no code
* [ZenCommunity](https://zencommunity.pro/) — communities, discussions, support tickets, and live chat
* [QuizPress](https://quizpress.pro/) — advanced quizzes, polls, surveys, and exams, 20+ question types
* [GameEngine](https://gameengine.pro/) — gamify engagement with points, badges, levels, and rewards
* [ZenAppBuilder](https://academylms.net/zenappbuilder/) — turn your Academy LMS site into a native mobile app
* [GemBooking](https://gembooking.net/) — accept and automate bookings for appointments and services
* [GemBoards](https://gemboards.com/) — manage projects, tasks, and teams with modern Kanban boards
* [Easy Content Manager (ECM)](https://easycontentmanager.pro/) — build custom post types, fields, and taxonomies, no code
* [Zaplane](https://zaplane.app/) — automate WordPress workflows across your favorite apps, no code

Once contacts are nurtured, keep them close: build a members community with native [ZenCommunity](https://zencommunity.pro/), or gamify engagement with native [GameEngine](https://gameengine.pro/) points and badges.

== Installation ==

1. Upload the `gemcrm` folder to the `/wp-content/plugins/` directory, or install the plugin through the **Plugins → Add New** screen in WordPress.
2. Activate the plugin through the **Plugins** screen in WordPress.
3. Open the **GemCRM** menu in the admin sidebar to configure settings and create your first list, contacts, and campaign.
4. To display a subscription form on the front end, create a form under **GemCRM → Forms** and add its shortcode (for example `[gemcrm_form id="123"]`) to any post, page, or widget.

GemCRM uses the Action Scheduler library (bundled) to send email in the background, so no extra setup is required for queued sending.

== Frequently Asked Questions ==

= Does GemCRM send email on its own server? =

No. GemCRM sends through your site's normal WordPress email (`wp_mail`), so it works with whatever SMTP/mail setup your site already uses.

= Can I import my existing contacts? =

Yes. You can import contacts from a `.csv` file with custom-field mapping under **GemCRM → Import**. Optional connectors are also available to import from third-party email services (see *External services* below).

= How do I show a subscription form on my site? =

Create a form under **GemCRM → Forms**, then place its shortcode — for example `[gemcrm_form id="123"]` — in any post, page, or text widget.

= Does GemCRM work without any third-party plugins? =

Yes. All core features (contacts, lists, tags, campaigns, forms, import) work on their own. Integrations only activate when the related plugin is installed.

== Screenshots ==

1. Dashboard with subscriber growth, open-rate, and click-rate statistics.
2. Contact list with tags, lists, and bulk actions.
3. Email campaign editor.
4. Subscription form builder.
5. Settings and integrations.

== External services ==

GemCRM works without contacting any external service for its core functionality. The Roboto webfont used in the admin interface is bundled with the plugin and served locally — no request is made to Google Fonts. The following optional features connect to third-party services only in the situations described below.

**Email import connectors (user-initiated)**
When you choose to import contacts from another email service and enter your own API credentials, GemCRM sends requests to that provider's API to read your contacts. No data is sent unless you start an import. Supported providers and endpoints:

* Mailchimp — https://&lt;dc&gt;.api.mailchimp.com (Terms: https://mailchimp.com/legal/terms/ , Privacy: https://www.intuit.com/privacy/statement/)
* Drip — https://api.getdrip.com (Terms: https://www.drip.com/terms , Privacy: https://www.drip.com/privacy)
* ConvertKit (Kit) — https://api.convertkit.com (Terms: https://kit.com/terms , Privacy: https://kit.com/privacy)
* ActiveCampaign — your own account API URL, e.g. https://&lt;account&gt;.api-us1.com (Terms: https://www.activecampaign.com/legal/terms-of-service , Privacy: https://www.activecampaign.com/legal/privacy-policy)
* MailerLite — https://connect.mailerlite.com (Terms: https://www.mailerlite.com/terms-of-service , Privacy: https://www.mailerlite.com/legal/privacy-policy)

**Amazon SNS (bounce handling)**
If you enable Amazon SES bounce handling, GemCRM confirms the Amazon SNS subscription by sending a one-time request to the confirmation URL contained in the SNS notification (an `*.amazonaws.com` address). This only occurs if you configure Amazon SES bounce handling. See AWS terms (https://aws.amazon.com/service-terms/) and privacy notice (https://aws.amazon.com/privacy/).


== Changelog ==

= 1.5.3 - 16/07/2026 =

 * Added: Breadcrumb navigation across the admin topbar, with dynamic crumbs for contact, company, deal, campaign, sequence, segment, and report screens, plus the import wizard.
 * Added: Contact status filter tabs with per-status count pills, a collapsible overflow, and a Filter toggle for the list/tag/search row.
 * Added: Section subtitles on the Contacts and Email Sequences pages.
 * Improved: Redesigned the Add Custom Field modal into a two-pane field-type picker with validation, read-only slug, and a smoother create-then-edit flow.
 * Improved: Revamped the Lists and Tags tables and unified the bulk-action snackbar (with a selected-count badge) across Contacts, Lists, and Tags.
 * Improved: Pro and addon teasers now show the correct call to action — "Activate addon" when Pro is active but the addon is off, "Upgrade to Pro" otherwise — with a consistent Pro badge colour.
 * Improved: Smoother page-to-page transition and reduced UI jumping on route and Settings tab changes.
 * Improved: Notification/toast sizing, License page UI, and the automation promo screen.
 * Improved: Spacing, borders, and consistency across Settings, the Email Template editor, Email Sequence, the Deal modal, and the Recurring Campaign steps.
 * Fixed: Contact table per-status counts were all showing 0 after the first status (query-builder clone bug).
 * Fixed: License page rendering blank.
 * Fixed: Email template table pagination stuck at total 0.
 * Fixed: Email subject field jumping while typing.
 * Fixed: Custom field modal validation and auto-close behaviour.

= 1.5.2 - 15/07/2026 =

 * Fixed: Campaign Create issue.
 * Fixed: Email template Form reset issue.
 * Improved: overall Table UI.

= 1.5.1 - 14/07/2026 =

 * Improved: Addon page UI.
 * Improved: Promo UI for all Pro Feature with title & description.
 * Improved: Table Pagination Button UI.
 * Improved: Setting Border color updated.

= 1.5.0 - 13/07/2026 =

 * Important: Minimum required PHP is now 8.1.
 * Added: Email Inbox — a two-way inbox that captures replies to your campaigns and one-to-one emails, auto-matches them to contacts, and lets you read and reply from inside GemCRM, with drafts, search, and filters; connect Gmail, Outlook, Zoho, IMAP, or POP3 mailboxes. (Pro)
 * Added: SMS & WhatsApp messaging — send message campaigns alongside email, with templates, per-contact consent, a global suppression list, and delivery reports. (Pro)
 * Added: Sales pipeline — a visual deal board linked to contacts and companies, with stages, tasks, notes, and role-based access. (Pro)
 * Added: Abandoned cart recovery — track WooCommerce carts and trigger automated recovery workflows. (Pro)
 * Added: Marketing automation — dynamic segments with advanced filters, multi-step email sequences, and recurring campaigns. (Pro)
 * Added: Merge and copy for Lists and Tags.
 * Added: Contact bulk actions.
 * Added: Import contacts straight into a List or Tag from its row, using the full importer (CSV, paste, or another email provider).
 * Improved: Major admin UI refresh across Contacts, Campaigns, Settings, and Forms — searchable dropdowns, cleaner modals and drawers, consistent inputs, and clearer loading states.
 * Improved: Unified contact-import modal shared across the campaign, sequence, and recurring composers.
 * Fixed: Automations page crashed with a JavaScript error when Zaplane was active.
 * Fixed: Settings subscription-form fatal error and a tab scroll-position issue.
 * Fixed: Contact import template issues and an addon-activation reload issue.
 * Fixed: Missing icons across the Inbox, Messaging, and Deals screens.
 * Developer: Migrated the admin interface styling to Tailwind CSS.

= 1.4.0 - 24/06/2026 =

 * Fix: Email template migration did not run on upgrade — legacy templates now reliably migrate to the new editor.
 * Updated: Schema and data migrations now apply via a per-migration ledger, so they run without requiring a version bump.

= 1.3.1 - 14/06/2026 =

 * Updated: Contact table added unlisted filter clear button.
 * fix: Contact import custom field option UI breck issue .

= 1.3.0 - 11/06/2026 =

 * Updated: Contact Import custom field support.
 * Added: Campaign A/B testing result feature.
 * Added: Contact storeengine/woocommerce purchase history.

= 1.2.4 - 05/07/2026 =

 * Security: Escape all exception messages before they can surface as output (WordPress escaping guideline).
 * Security: Escape subscription-form field id attributes on output.
 * Security: Validate outbound tracked-link and post-confirmation redirect URLs (http/https only) to prevent open redirects.
 * Security: Validate the test-email recipient with sanitize_email()/is_email() before sending.
 * Fixed: Corrected exception handling in the email-link redirect handler.
 * Improved: Ensured the bundled JavaScript and its source contain no third-party license references.

= 1.2.3 - 28/06/2026 =

 * Security: Validate the Amazon SNS SubscribeURL host (HTTPS + *.amazonaws.com) before fetching it, preventing SSRF via the bounce webhook.
 * Security: Use constant-time comparisons (hash_equals) for webhook and background-process auth tokens.
 * Security: Unslash request input before sanitizing in the shared input handler.
 * Security: Validate recipient emails in the Mailgun, SendGrid and PepiPost bounce webhooks.
 * Security: Strictly validate the subscription-form placeholder color before it is output to CSS.
 * Improved: Self-host the Roboto admin webfont; no request is made to Google Fonts.
 * Improved: Move the admin menu to a lower position so it no longer sits among core WordPress menu items.
 * Improved: Replaced a third-party validation dependency with a lightweight in-house validator to keep the bundled JavaScript fully GPL-compatible.
 * Developer: Ship the full JavaScript build source with the plugin.

= 1.2.2 - 19/06/2026 =

 * Removed: Bundled third-party licensing SDK; updates are handled by WordPress.org.
 * Security: Removed an unused helper that could set an authentication cookie programmatically.
 * Security: Tightened REST permission checks (campaign listing now requires authentication; send-email and form-preview use action-appropriate capabilities).
 * Updated: Action Scheduler library to 4.0.0.
 * Fixed: Corrected the ActiveCampaign terms-of-service link in the External services documentation.
 * Improved: Subscription form preview now applies placeholder styling through an enqueued stylesheet instead of an inline `<style>` tag.
 * Improved: Production JavaScript build is minified for the directory release.

= 1.2.0 - 26/05/2026 =

 * Added: Subscription Form Builder.

= 1.1.0 - 21/05/2026 =

 * Added: Subscription Form Feature (beta).
 * Added: Tools settings tab feature.
 * Added: Integration setting with third party plugin (academy , storeengine, wpfusion, lifterlms,tutor lms, fluent cart, easy digital download)
 * Updated: general campaign table statistic.
 * Fixed : stepper last step conflict issue.
 * Added: skeleton UI for loading


= 1.0.5 - 06/05/2026 =
  * Fixed: setting page blank issue.
  * fixed: Integration setting issue
  * Added: Contact Bulk action.
  * Added : Campaign action new meta object.

= 1.0.4 - 30/04/2026 =
  * fixed: campaign send lazy issue.
  * Added : Easy Mail Builder Integrate.

= 1.0.3 - 26/04/2026 =
  * fixed: editor source Wise markup added.
  * Added : Email Campaign Action Features.

= 1.0.1 - 19/04/2026 =
  * fixed: editor image upload issue
  * Added : send specific mail to user.
  * Added : integrate Automation with Zaplane.

= 1.0.0 - 12/04/2026 =
 * Added : New Dashboard stats (email link click, email open stats, subscriber growth) .
  * Added : Follow Up mail send features for General campaign.
 * Improved : Contact table performance optimized.
 * Improved : General campaign UI.
 * Improved : Select Dropdown Pagination system.

= 0.0.9 - 02/04/2026 =

 * Improved : General Campaign statistic.
 * Improved : Email Template table header filter options.
 * Fixed : Contact Unnecessary Api call.
 * Fixed : Setting update formik issue.
 * Fixed : Contact Details formik issue.
 * Added: Incoming webhook

= 0.0.8 - 19/03/2026 =

 * Added : Resent campaign to un-sent users.
 * Added: Contact custom Field Setting.
 * Added: Contact type Field.
 * Fix: Email template Extra gap issue with heading.


= 0.0.7 - 06/03/2026 =

* Fixed - Proper spacing for empty elements in templates.
* Fixed - Email template CRUD issues.
* Fixed - Editor alignment issue.
* Improved - Accurate counting for specific campaign unsubscribers.
* Improved - Import contacts from other CRM systems via .csv file with custom fields support.
* Added - Email bounce handling settings.
* Added - Campaign maximum failed attempt count setting.

= 0.0.6 - 26/02/2026 =

* Fixed - Resolve editor issues
* Fixed - Import Template page blank issues
* Fixed - Contact import issue
* Fixed - Settings page blank issue
* Improved - Tag's & List's Select Search implement
* Improved - Contact table Leads Stats.
* Improved - Campaign statistics calculation Update
