ContactIn Pro pricing change log with all the notable changes
ContactIn Pro — Changelog
All notable changes to this project are documented below.
Contents
- 1.1.0 (2026-04-01)
- 1.0.8 (2026-03-25)
- 1.0.7 (2026-03-24)
- 1.0.6 (2026-03-23)
- 1.0.5 (2026-03-23)
- 1.0.4 (2026-03-23)
- 1.0.3 (2026-03-23)
- 1.0.2 (2026-03-23)
- 1.0.1 (2026-03-14)
- 1.0 (2026-02-13)
- 0.1.0 (2026-02-08)
1.1.0
2026-04-01
Added
- Global Require Phone / Require Subject settings — new global toggles to enforce phone and subject fields across all form profiles.
- Profile name wizard — profile creation now prompts for a human-readable name and auto-generates an editable slug.
- Inline profile editor in Gutenberg & Elementor — full profile create and edit workflow available directly inside the block inspector and Elementor widget panel without leaving the page editor.
- Block profile picker with guided overrides — per-block field customisation, save-as-profile, and auto-save profile edits without a separate save button.
- CinProfileCore shared module — centralised profile logic extracted into a shared JS module used by both the Gutenberg block and Elementor widget.
- AI intent classification in onboarding — Get Started card now surfaces intent classification guidance.
- Settings search —
data-searchattributes and amin_name_wordsfield added to the settings panel. - Global attachment ceiling — new site-wide cap on attachment storage independent of per-profile limits.
Fixed
- Intent classifier: 10 bugs corrected across keyword matching, scoring, and profile dispatch.
- Form profile validation and
form_idpropagation regressions. - Admin settings JS/CSS architecture conflicts.
- Attachment disable confirmation button (“Yes”) was non-functional.
- WP Pointer not enqueued on settings page.
- Plugin Check warnings resolved ahead of release.
Refactored
- Gutenberg block is now a pure profile selector; auto-override bug fixed.
- Elementor widget is now a pure profile selector; Backbone model API and mount-div search corrected.
show_phonerenamed toenable_phonefor consistency.
1.0.8
2026-03-25
Changed
- Documentation overhaul — updated plugin header description, readme tagline, features list, and FAQ to accurately reflect ML intent classification, queue deduplication engine, attachment sync guard, and premium cron self-healing added in recent releases.
- Added per-version upgrade notices for 1.0.7 and 1.0.8 in readme.txt.
- New FAQ entries covering CRM delete queue deduplication and the premium cron self-healing mechanism after license renewal.
1.0.7
2026-03-24
Fixed
- Freemius instance protection —
on_freemius_init()no longer overwrites the stored Freemius instance with a non-premium (free-slug) instance; preventscan_use_premium_features()returning false on sites where both free and pro slugs fire their init hooks. - Premature non-premium enforcement removed — removed
enforce_non_premium_restrictions()call fromon_freemius_init(); license state is not fully resolved at init time, causing crons to be incorrectly cleared on premium sites. Enforcement now happens only viaon_license_change()and the hourlyadmin_initself-heal. - License state label on non-standard folder names —
get_license_state()now shows “License expired” instead of “Free plan active” on pro-build installs where the plugin folder has a non-standard name; uses Freemius SDKis_premium()as a reliable fallback. - Subscription cancelled/resumed hook — added
fs_after_license_change_contactinhook so events fired on the free slug are also handled correctly. - Stale transient always cleared —
maybe_heal_premium_workloads()now unconditionally clears the stalecontactin_non_premium_restrictions_appliedtransient when premium is confirmed active, not only when crons are missing. - Admin-init self-heal — if Freemius reports an active premium license but premium crons are missing (e.g. after a license renewal while an older version was active), they are automatically re-scheduled; throttled to once per hour via transient.
1.0.6
2026-03-23
Fixed
- Replaced
Config::TEXTDOMAINconstant with string literal'contactin-pro'inAnalyticsDashboardAssetsi18n calls (WordPress Plugin Check error). - Sanitize and
wp_unslash()applied to$_SERVER['HTTP_HOST']/$_SERVER['SERVER_NAME']inis_live_environment()(WordPress Plugin Check warning). FreemiusIntegration::initialize()was never called — all license-lifecycle hooks (fs_after_license_change,fs_after_premium_version_activation,fs_after_init) were silently not registered; fixed by calling it at the top ofPlugin::init().contactinbox_fs()in freemius-bootstrap.php was not guarded withfunction_exists, risking a PHP fatal error on double inclusion.
1.0.5
2026-03-23
Security
- Replaced
__()withesc_html__()inwp_die()calls across OAuthCallbackHandler, GDPRHandler, InboxExportImport, GDPR, Contacts, PluginDetails, and GDPRLog (18 occurrences). - Replaced bare
json_encode()withwp_json_encode()in IntentClassifier checksum verification andreclassify()DB write.
1.0.4
2026-03-23
Fixed
CRON_RECLASSIFY_UNCLASSIFIEDwas silently re-scheduled for non-premium users by the cron health check — moved into the premium gate in CronJobs.restore_premium_workloads()now reads stored interval options instead of using a hardcoded schedule name, and also clears the cron health throttle transient so recovery runs immediately.is_live_environment()was hardcoded tofalse(sandbox mode) — now auto-detects localhost /.local/.test/.devand IP-only hosts as non-live.- Added
fs_after_premium_version_activationhook andon_premium_activation()handler as a safety net for fresh pro installs wherefs_after_license_changedoes not fire. - Corrected
contactinbox_fs()return type from\FS_Site|nulltoobject|null.
1.0.3
2026-03-23
Fixed
- Premium features and crons no longer remain disabled after a license is renewed or reactivated following expiry.
- CRM, attachment, and CRM-delete queue items that were neutralised during the expiry period are now automatically reset to pending on license renewal so they are retried immediately.
1.0.2
2026-03-23
Security
- Replaced
json_encode()withwp_json_encode()for JS HTML injection in REST API modal. - Fixed
esc_url_raw()used as output escaper — replaced withesc_url()in CSS/HTML output contexts. - Wrapped unescaped
__()calls withesc_html__()inwp_die()andwp_send_json_error().
Fixed
- i18n: replaced class constants as gettext text parameters with string literals (InboxAssets, SMTP, FormService, CRMStatus, templates).
- i18n: rewrote
CRMStatus::label()to use per-status string literals instead of__($variable). - Replaced hardcoded
wp-admin/admin-ajax.phpURL in CRM help modal withadmin_url(). - Added missing
GDPR_SUCCESS_DEFAULTconstant to Config.
Cleanup
- Removed sensitive
.bakand.backupfiles from distribution.
1.0.1
2026-03-14
Fixed
- Server-Side Form Validation Enforcement — AJAX submissions now respect the form rules saved in plugin settings. Required fields, enabled subject validation, configured minimum word counts, and character limits are enforced on the server before a submission is accepted.
- Queue Processor Improvement — CRM pending processor now syncs items immediately when Process CRM Pending Now is triggered, instead of just re-queuing them. Removed the condition that prevented legacy CRM items from processing when queue items existed.
- Stuck Queue Items Recovery — Added automatic recovery for queue records stuck in processing state for more than 10 minutes. Clicking Process CRM/Email Pending Now resets stuck items back to pending so they are retried immediately.
Improved
- Expired-License Renewal UX — Renewal actions are prioritised over upgrade or trial prompts, with clearer admin guidance, while Freemius account and pricing screens remain on native SDK behaviour.
1.0
2026-02-13
Highlights
- Official rebrand from Secure ContactUS Hub to ContactIn Pro.
- Strategic shift from basic form handling to intelligent inbox and CRM workflow.
Added
- AI-powered intent classification for sales, support, feedback, complaints, and questions.
- Unified admin inbox with search, filtering, notes, status tracking, and bulk operations.
- Automatic contact capture and profile updates including phone normalisation, deduplication, and CSV/JSON export.
- Multi-industry business-type classifier — 19 sector profiles (Generic, SaaS, E-commerce, Healthcare, Legal, Real Estate, and more).
- Real-time analytics dashboard for submissions and engagement insights.
- Salesforce CRM integration with queue-driven sync, field mapping, and reliability layer.
- GDPR controls including consent, retention, export/delete, and deletion logs (Pro).
- Multi-layer spam protection with reCAPTCHA v3, honeypot, rate limiting, and AI checks.
- Email automation with SMTP, templating, queueing, retries, and delivery tracking. SPF/DKIM/DMARC mismatch warnings.
- REST API and webhook-ready architecture for integrations.
- Gutenberg block, Elementor support, and shortcode embedding.
- Translation-ready internationalization support.
Changed
- Restructured architecture for maintainability and scalability.
- Updated product positioning, naming, and release presentation.
- Improved admin UI hierarchy and workflow clarity.
Fixed
- Freemius uninstall hook and integration reliability.
- Plugin details modal handler behaviour on WordPress.org flow.
- Diagnostic logging and error handling consistency.
0.1.0
2026-02-08
Added
- Initial ContactIn Pro public release.
- Core contact form system with inbox and analytics foundation.
- Intent classification and anti-spam baseline.
- CRM + email delivery integration groundwork.
Last updated: 2026-04-01 — v1.1.0
Capture Every Submission. Respond Faster. Grow with Confidence.
ContactIn Pro helps WordPress teams turn contact form submissions into organized, trackable workflows so sales, support, and operations teams have better visibility into every inquiry.
ContactIn Pro is a WordPress contact form entries plugin built for teams that need faster responses and fewer missed opportunities. Explore our Pricing, learn more About Us, review our Privacy Policy, or reach out through Contact Us.

