=== Integration for Zoho CRM and Zoho Bigin - Contact Form 7, WPForms, Elementor, Gravity Forms and More ===
Contributors: plugcrux, padmadev, integrazo
Tags: zoho crm, zoho bigin, contact form 7 zoho, gravity forms zoho, wpforms zoho
Requires at least: 6.0
Tested up to: 7.1
Requires PHP: 7.4
Stable tag: 2.0.0
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Connect Zoho CRM and Zoho Bigin. Create Leads, Contacts, Accounts, Deals, and Pipelines from any form submission.

== Description ==

This plugin sends form submissions from Contact Form 7, WPForms, Elementor Forms, Gravity Forms, and Formidable Forms to Zoho CRM and Zoho Bigin.

When a user submits a form, the plugin can create or update records—such as leads, contacts, or deals—in your Zoho CRM or Zoho Bigin account. This helps reduce manual data entry and keeps your CRM data consistent with your website forms.

---

**Why Use This Plugin?**

- Stop copying form data manually into Zoho
- Instantly create Leads, Contacts, Deals, or Pipeline records from form submissions
- Works with the most popular WordPress form plugins
- Supports all major Zoho CRM modules and all Zoho Bigin modules including Pipelines
- No coding or API knowledge required

---

**Supported WordPress Form Plugins**

- [Contact Form 7](https://wordpress.org/plugins/contact-form-7/) — most popular free form plugin
- [WPForms](https://wordpress.org/plugins/wpforms-lite/) — beginner-friendly drag and drop forms
- [Elementor Forms](https://wordpress.org/plugins/elementor/) — forms built inside Elementor page builder
- [Gravity Forms](https://www.gravityforms.com/) — advanced WordPress forms
- [Formidable Forms](https://wordpress.org/plugins/formidable/) — powerful form builder with calculations

---

**Supported Zoho CRM Modules**

Send form data to any Zoho CRM module:

- Leads — capture website leads directly into Zoho CRM
- Contacts — create or update contact records
- Accounts — sync company or organization data
- Deals/Pipelines — push deal information from forms
- Vendors, Campaigns, Price Books, Products
- Cases, Solutions
- Quotes, Sales Orders, Purchase Orders, Invoices
- Activities, Tasks, Events, Calls
- Projects, Notes, Attachments
- Custom Modules — sync data to any custom module you have created in Zoho CRM

---

**Supported Zoho Bigin Modules**

Send form data to any Zoho Bigin module:

- Pipelines — create new pipeline records (deals) in Zoho Bigin directly from form submissions
- Contacts — add or update contact records in Bigin
- Companies — sync company data from forms
- Products — push product information
- Activities, Tasks, Events, Calls, Notes

> **Zoho Bigin Pipelines:** If you use Zoho Bigin to manage your sales pipeline, this plugin lets you automatically add new pipeline entries whenever a form is submitted — perfect for lead capture forms, quote request forms, or any form that starts a sales process.

---

**How It Works**

1. A visitor submits a form on your WordPress site
2. The plugin receives the submission instantly
3. It maps each form field to the corresponding Zoho CRM or Bigin field
4. It creates or updates the record in Zoho via the API
5. The result is logged — success or failure — so you always know what happened

---

**Key Features**

- **Real-time sync** — form submissions are sent to Zoho immediately
- **All major modules** — Leads, Contacts, Deals, Pipelines, and more
- **Flexible field mapping** — map any form field to any Zoho field
- **Custom values** — send fixed text or dynamic values to Zoho fields
- **System field mapping** — automatically send page URL, submission time, and more
- **Duplicate handling** — choose to add, skip, or update existing records
- **Primary key support** — match records by email, phone, or any unique field
- **Conditional logic (filter criteria)** — only sync when specific conditions are met
- **Picklist helper** — see allowed values for Zoho picklist fields and copy them with one click
- **Notes field (Pro)** — attach a note to every record created in Zoho
- **File attachments (Pro)** — upload form file fields to Zoho record attachments
- **Tag support (Pro)** — add tags to Zoho records from form submissions
- **Detailed logs** — view every submission with status, request data, and Zoho response
- **Resync** — manually resync failed records from the Logs page (Pro)
- **Email notifications** — get notified when a record fails to sync
- **Multiple accounts** — connect more than one Zoho account
- **Enable or disable integrations** — pause any integration without deleting it

---

**Picklist Allowed Values Helper**

When mapping a Zoho picklist field (such as Lead Source, Salutation, Status, or any dropdown field), an info icon appears next to the field. Click or hover to see all allowed values. Click any value to copy it — then paste it as a custom value in your field mapping. This prevents errors caused by sending values that Zoho does not accept.

---

**Duplicate Record Handling**

Choose what happens when a matching record already exists in Zoho:

- **Add (ignore if exists)** — always create a new record
- **Skip if exists** — do not create if a matching record is found (Pro)
- **Add or update** — create if new, update if exists (Pro)
- **Update only** — only update existing records, never create (Pro)

---

**Filter Criteria (Conditional Logic)**

Control when form submissions are sent to Zoho. For example:

- Only sync if the user selects "Yes" to a question
- Only send to Zoho if the form includes a valid email
- Filter by dropdown selection, checkbox value, or any field

---

https://www.youtube.com/watch?v=ZWZcZjgKJ-Q

---

== Authentication ==

To connect your Zoho account:

1. Go to **Settings → Connections** in the plugin (older links to the Accounts tab open this page).
2. Click **+ Add Connection**.
3. Enter an identifiable account name (for example, "Main Zoho CRM Account").
4. Select the appropriate data center (for example, `zoho.com`, `zoho.eu`, `zoho.in`).
5. Click **Authenticate** to open the Zoho authorization page.
6. Log in to Zoho and approve the requested permissions.
7. After approval, you will be redirected back to WordPress and the connection will appear under Settings → Connections.

You can also connect or reconnect a Zoho account from the first step of the Add/Edit Integration screen.

== Add Integration ==

To create a new integration:

1. Go to the **Setup** page.
2. Click **Add Integration**.
3. Enter an integration name (for example, "Contact Form 7 to Zoho Leads").
4. Select the form plugin (Contact Form 7, WPForms, Elementor, Gravity Forms, or Formidable).
5. Choose the connected Zoho account.
6. Select the Zoho module (for example, Leads, Contacts, Pipelines, Deals).
7. Map your form fields to the corresponding Zoho fields.
8. Optionally set a duplicate handling rule and primary key field.
9. Optionally add filter criteria to control when records are created.
10. Click **Save Mapping**.

== Logs ==

The plugin provides a Logs section to monitor every form submission:

- View all submissions with their status (SUCCESS, or the error code of a failed one)
- Filter by status (Success, Failed or Skipped) — Skipped means the entry was not sent because it did not match the integration's filter
- See the full request sent to Zoho and the response received
- Search and filter logs by integration and message, and sort by newest, oldest or most retries
- Resync failed records individually or in bulk (Pro)
- Delete log entries one by one, in bulk, or all at once
- Press **Refresh** to load the newest logs on demand

== Settings ==

Global settings are on the **Settings** page, under the Connections, Notifications, General and License tabs. Saving settings does not reload the page:

- **Delete data on uninstall** — remove all plugin data when the plugin is deleted
- **Error email notification** — receive an email when a record fails to sync
- **Notification emails** — comma-separated list of email addresses for error alerts
- **Email subject** — customize the subject line for error notification emails
- **Deactivation alert** — send a notification email when the plugin is deactivated

== Privacy and Data Handling ==

- Form submission data is sent from your WordPress site to Zoho CRM or Zoho Bigin via their official API.
- The plugin does not send form data to any service other than the Zoho account you connect. The only other services it contacts are listed under "External services" below.
- All communication with Zoho uses HTTPS.
- Zoho modules and fields are cached on your site for a few hours (as WordPress transients) to speed up the admin screens. Use **Refresh from Zoho** to reload them; "Delete data on uninstall" removes the cache.
- The admin screens keep a short-lived copy of the pages you have opened in your browser's memory only; nothing is stored in cookies or browser storage.

== External services ==

This plugin connects to the services below. Nothing is sent until you connect a Zoho account or activate a license key.

**Zoho CRM and Zoho Bigin (accounts.zoho.* and www.zohoapis.*, depending on the data center you choose)**
Used to authorize your Zoho account, read the modules and fields you can map, and create or update records from your form submissions. Sent: OAuth authorization/refresh requests and the form values you have mapped in an integration. Zoho terms: https://www.zoho.com/terms.html — privacy policy: https://www.zoho.com/privacy.html

**Authorization redirect (https://integrazo.com/zoho_callback)**
This address is registered as the redirect URL of the Zoho application. After you approve access, Zoho sends your browser there with the authorization code, and you are returned to your own site, which then completes the connection.

**Integrazo license service (https://www.zohoapis.in/creator/custom/plugcrux/...)**
Only used if you activate a Pro license key: when you activate or deactivate the key, and when the plugin is deactivated with an active license. Sent: the license key, your site URL, the plugin name and version, and your PHP and WordPress versions. More information: https://integrazo.com/

**ip-api.com (http://ip-api.com/json/)**
Only used when an integration maps a visitor's city, state or country and no other geolocation data is provided (see the `iafwzc_get_user_location_data` filter). Sent: the visitor's IP address. Terms and privacy: https://ip-api.com/docs/legal

**Deactivation feedback form (creatorapp.zohopublic.in, a Zoho Creator form)**
Shown inside the deactivation dialog on the Plugins screen. It loads only when you click Deactivate, and receives only what you type into the form.

== Free and Paid Features ==

**Free version includes:**

- Connect as many Zoho accounts (connections) as you need
- Unlimited form integrations
- Standard field mapping (General Fields)
- Custom value support
- System field mapping (page URL, submission time, and more)
- Add record action (ignore duplicates)
- Error log view
- Email notifications for failed records

**Pro version adds:**

- Premium field mapping (Lead Source, Country, State, Phone, Industry, and more)
- Custom field mapping (map to any custom field in Zoho CRM)
- Custom module support (sync to custom modules in Zoho CRM)
- Advanced duplicate handling (skip, add or update, update only)
- Resync failed records from Logs, individually or in bulk
- Notes
- Tags
- File attachments
- Record image (profile photo)

Upgrade now: https://integrazo.com/products/integrate-any-form-with-zoho-crm

== Installation ==

**Automatic installation**

1. Go to **Plugins > Add New** in your WordPress dashboard.
2. Search for **Integrazo** or **Zoho CRM Contact Form 7**.
3. Click **Install Now** and then **Activate**.
4. Go to the plugin settings to connect your Zoho account.

**Manual installation**

1. Download the plugin ZIP file.
2. Go to **Plugins > Add New > Upload Plugin**.
3. Upload the ZIP and click **Activate**.
4. Go to the plugin settings and complete the setup.

== Screenshots ==

1. Setup list — all your form integrations at a glance
2. Add/Edit integration wizard — map form fields to Zoho module fields
3. Logs — every record sent to Zoho with status, request and response data
4. Settings → Connections — connect your Zoho CRM or Zoho Bigin accounts
5. Go Premium — compare Free and Pro features

== Frequently Asked Questions ==

= Which WordPress form plugins are supported? =

This plugin supports:

- Contact Form 7
- WPForms (free and paid)
- Elementor Forms
- Gravity Forms
- Formidable Forms

= Which Zoho products does this plugin support? =

This plugin supports both **Zoho CRM** and **Zoho Bigin**.

= Which Zoho CRM modules are supported? =

All major Zoho CRM modules are supported: Leads, Contacts, Accounts, Deals, Vendors, Campaigns, Price Books, Products, Cases, Solutions, Quotes, Sales Orders, Purchase Orders, Invoices, Activities, Tasks, Events, Calls, Projects, Notes, Attachments, and custom modules (Pro).

= Which Zoho Bigin modules are supported? =

All Zoho Bigin modules are supported: Pipelines, Contacts, Companies, Products, Activities, Tasks, Events, Calls, and Notes.

= Can I send form submissions to Zoho Bigin Pipelines? =

Yes. Select Zoho Bigin as the service and choose Pipelines as the module. The plugin will create a new pipeline record in Zoho Bigin every time a form is submitted.

= How do I integrate Contact Form 7 with Zoho CRM? =

1. Go to the plugin Setup tab.
2. Choose Contact Form 7 as the form type.
3. Select Zoho CRM and authenticate your account.
4. Choose the module (Leads, Contacts, Deals, and so on).
5. Map Contact Form 7 fields to Zoho CRM fields.
6. Save the integration.

= How do I integrate Contact Form 7 with Zoho Bigin? =

1. Go to the plugin Setup tab.
2. Choose Contact Form 7 as the form type.
3. Select Zoho Bigin and authenticate your account.
4. Choose the module (Pipelines, Contacts, and so on).
5. Map Contact Form 7 fields to Zoho Bigin fields.
6. Save the integration.

= How do I integrate WPForms with Zoho CRM or Zoho Bigin? =

1. Go to the plugin Setup section.
2. Select WPForms as the form type.
3. Choose Zoho CRM or Zoho Bigin and select a module.
4. Map WPForms fields to Zoho fields.
5. Save the integration.

= How do I integrate Gravity Forms with Zoho CRM? =

1. Go to the plugin Setup section.
2. Select Gravity Forms as the form type.
3. Choose Zoho CRM and select a module such as Leads or Deals.
4. Map Gravity Forms fields to Zoho CRM fields.
5. Save the integration.

= How do I integrate Elementor Forms with Zoho CRM or Zoho Bigin? =

1. Go to the plugin Setup section.
2. Select Elementor Forms as the form type.
3. Choose Zoho CRM or Zoho Bigin and select a module.
4. Map Elementor form fields to Zoho fields.
5. Save the integration.

= What happens if a record fails to sync? =

Failed records are saved in the Logs section with the full error message from Zoho. You can review the error, fix your field mapping if needed, and resync the record manually.

= Does this plugin support custom fields in Zoho CRM? =

Yes. Custom fields in Zoho CRM are available for field mapping in the Pro version.

= Can I send file attachments to Zoho? =

Yes (Pro). For supported form plugins, file upload fields can be mapped to the Attachment field in Zoho. The file will be uploaded and attached to the corresponding record in Zoho.

= Can I temporarily disable an integration? =

Yes. Each integration has an enable or disable toggle on the Setup page. Disabling an integration stops new submissions from being sent but keeps all configuration intact.

= Is this plugin an alternative to Uncanny Automator or Bit Integrations for Zoho CRM? =

Yes. If you are looking for a dedicated Zoho CRM and Zoho Bigin integration for WordPress forms — as an alternative to general automation plugins like Uncanny Automator, Bit Integrations, Zapier, Zoho Flow, WP Fusion, or Bit Flows — this plugin is built specifically for Zoho CRM and Zoho Bigin. It connects Contact Form 7, WPForms, Elementor Forms, Gravity Forms, and Formidable Forms directly to Zoho CRM and Zoho Bigin without needing a third-party automation service.

= Can I use this instead of Zapier or Zoho Flow to send WordPress form data to Zoho CRM? =

Yes. Instead of using Zapier, Zoho Flow, or Make (Integromat) to connect your WordPress forms to Zoho CRM or Zoho Bigin, this plugin handles the integration directly on your WordPress site — no external automation service or monthly subscription needed.

== Changelog ==

= 2.0.0 =
* New: Completely redesigned admin interface — Setup, Logs, Settings and Go Premium.
* New: Logs now record every record sent to Zoho — successes, failures and filter-skipped entries — with a Status filter.
* New: Faster admin — tabs, editing an integration and actions work without page reloads, with background preloading.
* New: Zoho modules and fields are cached, with a "Refresh from Zoho" button.
* New: Zoho UAE and Singapore data centers.
* New: Clear "Reconnect needed" alerts and detailed connection error logs.
* Improved: Logs load page by page, so large logs stay fast.
* Improved: Settings → Connections replaces the Accounts tab; connect as many Zoho accounts as you need.
* Improved: Zoho Canada data center support.
* Improved: Dates and times now show in your site timezone.
* Improved: File attachment handling for WPForms, Gravity Forms and Elementor Forms.
* Improved: Saved Zoho tokens of deleted connections are cleaned up automatically.
* Improved: Security, performance and translation-readiness.

= 1.0.19 =
* Checked: Tested and confirmed compatible with WordPress 7.1.

= 1.0.18 =
* Fixed: Missing spacing between the add (+) and remove (−) buttons in the field mapping table.

= 1.0.17 =
* Security: Hardened admin AJAX endpoints with proper capability checks across all handlers.
* Security: Fixed path traversal vulnerability in admin tab routing with strict allowlist validation.
* Security: Added nonce verification to OAuth callback handler.
* Security: Replaced innerHTML assignment with DOM-safe escaping to prevent XSS.
* Security: Improved input sanitization and output escaping across admin views.
* Added: Help dropdown in admin header for quick support access.
* Added: Deactivation feedback popup.
* Improved: Minor UI and code quality improvements.
* Checked: Tested and confirmed compatible with WordPress 7.0.

= 1.0.16 =
* Security: Added ABSPATH check to prevent direct file access across missing files.
* Fixed: License expiry notice now displays correctly for all expired licenses,
  regardless of how long ago the license expired.

= 1.0.15 =
* Added: Extended module support for Zoho CRM — all available modules are now supported including Contacts, Accounts, Leads, Deals, Vendors, Campaigns, Price Books, Products, Cases, Solutions, Quotes, Sales Orders, Purchase Orders, Invoices, Activities, Tasks, Events, Calls, Projects, Notes, and Attachments.
* Added: Extended module support for Zoho Bigin — all available modules are now supported including Pipelines (Deals), Contacts, Companies, Products, Activities, Events, Tasks, Calls, and Notes.
* Added: Custom modules support — custom modules created in Zoho CRM are now listed and available for field mapping (requires Pro).
* Added: Picklist allowed values helper — when a Zoho picklist field is selected in field mapping, an info icon appears showing all allowed values with click-to-copy support for easy custom value entry.

= 1.0.14 =
* Improved: Readme content clarity and wording for better understanding of supported forms and Zoho integrations.
* Updated: Short description to clearly mention support for other form submissions.
* Improved: Minor UI text refinements across admin pages.

= 1.0.13 =
* Changed: Replaced transient-based account authentication storage with WordPress options for improved reliability.
* Improved: Account authentication flow stability during Zoho OAuth redirects.
* Improved: Better handling of authentication errors and session recovery.
* Improved: Data sanitization and validation in the Accounts and Setup pages.
* Fixed: Edge cases where account data could be lost during browser refresh or delayed redirects.
* Checked: Fully tested with WordPress 6.9 and PHP 8.x.

= 1.0.12 =
* Checked: Plugin tested and confirmed compatible with WordPress 6.9.
* Updated: "Tested up to" value updated to 6.9 in readme.txt.

= 1.0.11 =
* Added: Deactivation Alert Email feature with automatic email notification when the plugin is deactivated.
* Added: Settings option to enable or disable deactivation alert and specify notification email addresses.
* Added: Professional email template informing users that Zoho CRM and Zoho Bigin integrations will stop working after deactivation.
* Improved: User experience by providing warnings for licensed users to reactivate plugin, re-enable integrations, and validate license key after reactivation.
* Fixed: Minor UI spacing improvements in the Settings sections.

= 1.0.10 =
* Fixed: Elementor free version form submissions not working.
* Changed: Removed cache-based account loading for more reliable performance.

= 1.0.9 =
* Changed: Updated Elementor Forms integration flow.
* Improved: Field mapping experience for Elementor Forms.
* Added: Dismissible admin notice reminding users to reconfigure Elementor Forms after update.

= 1.0.8 =
* Added: FAQ entry about disabling individual integrations.
* Fixed: All known error notices reported by WordPress debug logs.
* Checked: Tested with WordPress 6.8.

= 1.0.7 =
* Fixed: Elementor Forms field-loading issue.

= 1.0.6 =
* Added: Improved validation and sanitization.
* Fixed: Issue causing a blank page when selecting a list.

= 1.0.5 =
* Added: Compatibility with WordPress 6.8.
* Fixed: Removed unnecessary use of `$wpdb->prepare()` for static table names.
* Fixed: i18n issue by removing an empty `__()` string in `get_columns()`.

= 1.0.4 =
* Verified: Compatibility with WordPress 6.7.2.
* Updated: Applied recent Zoho API changes.
* Improved: User interface refinements.

= 1.0.3 =
* Added: Additional documentation screenshots.

= 1.0.2 =
* Improved: Security by validating plugin page URLs in the account section.
* Expanded: FAQ section with more detailed answers.
* Updated: Documentation for clarity.

= 1.0.1 =
* Added: Basic review and feedback section in the plugin.

= 1.0.0 =
* Initial release with:
  - Support for Contact Form 7, Gravity Forms, WPForms, Elementor Forms, and Formidable Forms.
  - Error logging and resync options for failed submissions.
  - Email notifications for integration failures.

== Support ==

If you need help or want to request a feature:

- https://integrazo.com/pages/contact
- https://integrazo.com/pages/request-feature

Website: https://integrazo.com/
Email: support@integrazo.com

== Additional Notes ==

This plugin supports WordPress multisite installations and has been tested for compatibility with recent WordPress versions. It works with both Zoho CRM free and paid plans, and with all Zoho Bigin plans.