Techwave Form Sync for Zoho

Description

Techwave Form Sync for Zoho links the forms you already have to the Zoho apps you already use. When a visitor submits a form, the values you mapped are sent to the Zoho service configured for that form and a record is created in your Zoho account.

Each form is configured on its own, in one place. One form can create a lead in Zoho CRM, another a contact in Bigin, another a customer in Zoho Books, another a ticket in Zoho Desk, and another can subscribe someone to a Zoho Campaigns or Marketing Automation mailing list — with different forms pointing at different Zoho accounts, organizations and data centers if that is what you need.

What it covers

  • Ten form plugins, one mapping screen. Elementor Pro Forms, Contact Form 7, WPForms, Gravity Forms, Ninja Forms, Fluent Forms, Formidable Forms, Forminator, Happy Forms and SureForms — all configured in the WordPress admin, not inside each form plugin’s own editor, so a site running two form plugins still has one place to look.
  • Six Zoho apps, not just CRM. Zoho CRM, Zoho Bigin, Zoho Books, Zoho Desk, Zoho Campaigns and Zoho Marketing Automation.
  • Per-form feeds. A “feed” is one form one Zoho destination. A form can be pointed anywhere, cloned, disabled, or switched to another account without touching the form itself.
  • More than one Zoho account. Connect several accounts, each with its own data center and its own set of authorized apps, and pick per feed which one to use.
  • Every Zoho data center. US (.com), EU (.eu), India (.in), Australia (.com.au), Japan (.jp), Canada (.ca), Saudi Arabia (.sa) and China (.com.cn). Endpoints switch automatically for the data center each account was created in.
  • Field mapping with static values. Map each Zoho field to a form field or to a fixed value, with a duplicate check (upsert) for Zoho CRM and Zoho Bigin so the same person does not become two records.
  • Retries that do not lose submissions. Delivery happens during the submission itself. A first attempt that fails for a transient reason is retried in the background instead of being dropped.
  • Delivery logs and one-click resubmit. Every delivery is recorded with its outcome, the exact fields sent, and a link straight to the record in Zoho. Tokens and secrets are redacted.
  • Privacy tooling built in. Log entries are covered by WordPress’s own personal-data exporter and eraser, storing submitted values is off by default, and everything the plugin created can be erased when it is deleted.

Disclaimer

Techwave Form Sync for Zoho is an independent third-party plugin developed by Techwave Solutions and is not affiliated with, endorsed by, or sponsored by Zoho Corporation Pvt. Ltd. “Zoho”, “Zoho CRM”, “Bigin”, “Zoho Books”, “Zoho Desk”, “Zoho Campaigns” and “Zoho Marketing Automation” are trademarks of Zoho Corporation Pvt. Ltd. All other product names referenced here — including Elementor, Contact Form 7, WPForms, Gravity Forms, Ninja Forms, Fluent Forms, Formidable Forms, Forminator, Happy Forms and SureForms — are trademarks of their respective owners and are used only to describe which form plugins this plugin can read submissions from. Using Techwave Form Sync for Zoho requires your own Zoho account, which is subject to Zoho’s terms and pricing.

How mapping works

All mapping is done in the WordPress admin under Techwave Sync Forms, not inside any form plugin’s own editor. You create a feed: pick the form plugin, pick the form by name, then choose the Zoho app, account, organization (where the app needs one) and module, and map each Zoho field to a form field or a static value. To find the exact Zoho API names, open Techwave Sync Connections and use the Modules & fields button for that account.

External services

This plugin connects to Zoho, a third-party service operated by Zoho Corporation Pvt. Ltd. That connection is required for the plugin to do its job: without it there is nowhere to send a submission. Nothing is sent to Zoho until you connect an account and enable a feed on a specific form.

1. Zoho OAuth (accounts server)

  • What is sent: the Client ID and Client Secret you entered from your own Zoho API console, the redirect URI of your site, and the permission scopes for the Zoho apps you ticked when creating the connection. Afterwards, the refresh token belonging to your connection is sent to obtain a short-lived access token.
  • When: when you create or re-authorize a connection, and whenever a cached access token has expired and needs refreshing.
  • Why: to obtain and renew authorization to write records into your own Zoho account. No password is ever sent or stored — the plugin never sees your Zoho login.
  • Where: the accounts host for that connection’s data center, e.g. accounts.zoho.com, or the matching .eu, .in, .com.au, .jp, .ca, .sa, .com.cn host.

2. Zoho application APIs

  • What is sent: the form field values you mapped for that feed (and only those — unmapped fields are not sent), plus the module or resource name, the selected account, and the organization/department where the Zoho app requires one. This can include personal data, because form submissions usually do: names, email addresses, phone numbers and message text.
  • When: each time a visitor submits a form that has an enabled feed pointing at Zoho, and again on an automatic background retry if the first attempt failed for a temporary reason. Also when you press Resubmit on the Logs screen. Metadata reads (listing modules, fields, mailing lists, tags, departments) happen only while you are configuring a feed in wp-admin.
  • Why: to create the record — lead, contact, customer, ticket or list subscription — that the feed is configured to create.
  • Where: the API host for the connection’s data center: www.zohoapis.com for CRM, Bigin and Books; desk.zoho.com for Desk; campaigns.zoho.com for Campaigns; marketingautomation.zoho.com for Marketing Automation — each with the regional variant matching the chosen data center.

Zoho’s own terms govern what happens to the data once it arrives:

  • Zoho Privacy Policy: https://www.zoho.com/privacy.html
  • Zoho Terms of Service: https://www.zoho.com/terms.html

3. Deactivation feedback (optional, opt-in)

When you deactivate Techwave Form Sync for Zoho from the Plugins screen, the plugin asks why. Answering is entirely optional and can be skipped, and the plugin deactivates either way.

  • What is sent: the reason you pick from the list, the note you type if you type one, and the plugin’s version number. Nothing else — no site address, no account or email address, no user details, no WordPress/PHP/server information, and no identifier of any kind. There is nothing in the request that says which site it came from.
  • When: only when you press Send Feedback & Deactivate. Pressing Skip & Deactivate, closing the dialog, or deactivating with JavaScript disabled sends no request at all. Nothing is sent at any other time.
  • Why: so the developer knows which problems make people stop using the plugin. It has no effect on how the plugin works.
  • Where: the developer’s own feedback collector at https://feedback.techwavesolutions.net/index.php, operated by Techwave Solutions. Service terms and privacy policy: https://techwavesolutions.net/
  • Failures are ignored: if the request fails or the service is unreachable, deactivation still completes and you are never asked to retry.

Site owners who would rather it never ran can switch it off with one line in wp-config.php, which stops the request being made at all:

define( 'FORM2ZOHO_FEEDBACK_ENDPOINT', '' );

The filter form2zoho_feedback_endpoint does the same from a plugin or mu-plugin.

Nothing else leaves your site. Apart from the three cases above, the plugin sends no analytics, telemetry, usage statistics, site address, admin email, WordPress/PHP version or installation identifier anywhere. It loads no script, stylesheet, font or image from a remote host, and it downloads no code.

Data stored on your own site

  • Delivery logs are written to a table in your own database (timestamp, outcome, Zoho app, module, record id, and the error text when something failed). Submitted values are included only if you switch Store submitted values in the log on; it is off by default. Log entries are deleted automatically after the retention period on the Settings tab (30 days by default).
  • Retry data. If a delivery temporarily fails and a retry is scheduled, the submitted values required for the retry may be temporarily stored by WordPress — in a transient on your own site — until the retry is completed or the retry data expires (at most two hours). It is deleted as soon as the retry runs, whether that attempt succeeds or fails for good, and it is never sent anywhere other than Zoho.
  • Credentials. Client secrets and refresh tokens are encrypted (AES-256-GCM) before being saved; access tokens are short-lived and cached in transients.

Privacy

Form submissions usually contain personal data, and this plugin’s whole purpose is to transmit the mapped fields of a submission to Zoho, a third-party service, as described under External services above. Review Zoho’s privacy policy and make sure your own privacy notice covers this transfer.

On your own site, the plugin stores delivery log entries in a custom database table — including the submitted field values when Store submitted values in the log is enabled, which it is not by default — for the configured retention period (30 days by default). A submission waiting on an automatic retry is held in a WordPress transient until the retry runs or that copy expires, at most two hours.

The plugin registers a personal-data exporter and eraser, so log entries mentioning a given email address are included in, and removed by, WordPress’s own Tools Export/Erase Personal Data flows. Suggested privacy-policy text is added to Settings Privacy.

Access tokens, refresh tokens, client secrets and authorization headers are never written to the logs in readable form.

The optional deactivation feedback described under External services carries no personal data and nothing that identifies your site — only the reason you pick, the note you choose to type, and the plugin version — and it is sent only if you press the send button.

Screenshots

Installation

  1. Upload the plugin folder to /wp-content/plugins/, or install the zip from Plugins Add New Upload Plugin.
  2. Activate the plugin.
  3. In your Zoho API console (https://api-console.zoho.com), create a Server-based Application. Set the Authorized Redirect URI to the value shown on the plugin’s Connections tab.
  4. Copy the Client ID and Client Secret.
  5. In wp-admin go to Techwave Sync Connections Create Connection: pick your data center, paste the Client ID and Secret, and tick the Zoho app(s) this account will actually send to. Then connect and approve access on Zoho’s own consent screen.
  6. For Elementor: edit your form and, under Form settings Additional Options, set a unique Form Name, then save the page. For every other supported plugin the form’s own title is used, so no extra setup is needed. Either way, no submit action needs to be added — the plugin listens for submissions itself.
  7. Go to Techwave Sync Forms Add New. Choose the form plugin, pick the form, choose the Zoho app, account, organization and module, map your fields, and save the feed. New submissions are sent from then on.

FAQ

Which form plugins are supported?

Elementor Pro Forms, Contact Form 7, WPForms, Gravity Forms, Ninja Forms, Fluent Forms, Formidable Forms, Forminator, Happy Forms and SureForms. Pick one source per feed; you only need the form plugin you actually use.

Which Zoho apps are supported?

Zoho CRM, Zoho Bigin, Zoho Books, Zoho Desk, Zoho Campaigns and Zoho Marketing Automation.

Do I need Elementor Pro?

Only if you want to use Elementor forms as a feed’s source. Any of the other supported plugins works without it.

Which permissions does the plugin ask Zoho for?

Only the ones needed by the app(s) you tick when creating the connection — CRM permissions if you picked CRM, Desk permissions if you picked Desk, and so on. Nothing is pre-selected, and no app you did not pick is requested. You can widen a connection’s access later with Edit access on the Connections tab, which re-runs Zoho’s consent screen for the updated list.

Which data centers are supported?

All of them: US, EU, India, Australia, Japan, Canada, Saudi Arabia and China. You choose the data center per connected account and the correct endpoints are used automatically.

Where are my tokens stored?

Refresh tokens and client secrets are encrypted (AES-256-GCM) before being saved in your WordPress database, using a key derived from a per-site secret and your AUTH_KEY salt. Access tokens are short-lived and cached as transients. The plugin refuses to save credentials on a server without the OpenSSL extension rather than storing them unencrypted.

What happens if a request to Zoho fails?

A failure that looks temporary (a network problem, a rate limit, Zoho briefly unavailable) is retried in the background a few times with an increasing delay. A failure that will never succeed on a retry — a rejected value, a bad mapping, a missing required field — is recorded immediately instead. Either way the outcome ends up on the Logs screen, and a form2zoho_submission_failed action fires when a submission is given up on.

Is form data stored on my site?

Only if you ask for it. Store submitted values in the log is off by default: log entries then record the submitted field names but never their contents. Turning it on stores the values too, which is what makes the Logs screen’s one-click Resubmit possible — and means whatever your forms collect, including personal data, is kept in the log table for the retention period. Separately, a submission awaiting an automatic retry is held briefly in a transient (see External services above). Access tokens, refresh tokens and client secrets are always redacted from logs.

My submission did not reach Zoho. What do I check?

Make sure the form has a name and that a feed points at that exact form (pick it from the dropdown). Then open Techwave Sync Logs and look for the entry — the error text there is the reason Zoho gave.

How do I remove everything the plugin created?

Turn on Erase all plugin data when the plugin is deleted under Techwave Sync Settings, then delete the plugin from the Plugins screen. That drops the log table and removes every option, connection, feed, cached token and scheduled event belonging to this plugin — and nothing else. The setting is off by default so an accidental deactivate-and-reinstall does not destroy your setup. Deactivating alone never deletes anything; it only stops scheduled work.

Reviews

There are no reviews for this plugin.

Contributors & Developers

“Techwave Form Sync for Zoho” is open source software. The following people have contributed to this plugin.

Contributors

Changelog

1.0.0 – 3 August 2026

Initial release.

  • Send form submissions to Zoho CRM, Bigin, Books, Desk, Campaigns and Marketing Automation.
  • Works with Elementor Pro Forms, Contact Form 7, WPForms, Fluent Forms, Forminator, Ninja Forms, Gravity Forms, Formidable Forms, Happy Forms and SureForms.
  • Per-feed field mapping, duplicate-record protection, and organisation/department targeting where the connected Zoho app needs it.
  • OAuth 2.0 connection with encrypted token storage and automatic refresh, across every Zoho data center. Only the permissions for the app(s) you pick are requested.
  • Instant delivery on submit, with automatic background retries if a first attempt fails for a transient reason. An unreachable or overloaded Zoho gives up after 10 seconds on the front end instead of holding the visitor’s page; the filters form2zoho_api_timeout and form2zoho_oauth_timeout change those values.
  • Live-updating Logs screen with per-entry details, bulk delete, “Select failed”, and one-click resubmit using each feed’s current configuration.
  • Storing submitted values in the log is off by default; delivery logging itself stays on.
  • Optional one-question feedback prompt when the plugin is deactivated. Skippable, sends only the reason, your note and the version number, never blocks deactivation, and can be turned off from wp-config.php.
  • Personal-data exporter and eraser, suggested privacy-policy text, and opt-in full data erasure on uninstall.
  • Fully translatable, keyboard accessible, and usable from 320px up.