{"id":336809,"date":"2026-07-13T06:16:42","date_gmt":"2026-07-13T06:16:42","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/zoho-oauth\/"},"modified":"2026-07-13T09:45:14","modified_gmt":"2026-07-13T09:45:14","slug":"penguinpeak-crm-sync","status":"publish","type":"plugin","link":"https:\/\/zh-sg.wordpress.org\/plugins\/penguinpeak-crm-sync\/","author":14921756,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.1","stable_tag":"trunk","tested":"7.0.1","requires":"5.0","requires_php":"7.4","requires_plugins":null,"header_name":"PenguinPeak CRM Sync for Zoho","header_author":"Penguinpeak Technologies Pvt. Ltd.","header_description":"Connect WordPress to Zoho CRM, Books, Inventory, Desk and more. Handles OAuth, user sync, form-to-lead, and field mapping across multiple environments.","assets_banners_color":"907d6f","last_updated":"2026-07-13 09:45:14","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/penguinpeak.com\/contact-us\/","header_author_uri":"https:\/\/penguinpeak.com\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":24,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":[],"upgrade_notice":{"1.0.1":"<p>Rebranded release with improved security.<\/p>","1.0.0":"<p>Initial release.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3605771,"resolution":"128x128","location":"assets","locale":"","width":128,"height":122},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3605771,"resolution":"256x256","location":"assets","locale":"","width":178,"height":169}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3605771,"resolution":"1544x500","location":"assets","locale":"","width":1484,"height":419},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3605771,"resolution":"772x250","location":"assets","locale":"","width":957,"height":183}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":[],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3605771,"resolution":"1","location":"assets","locale":"","width":1323,"height":585},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3605771,"resolution":"2","location":"assets","locale":"","width":1323,"height":585},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3605771,"resolution":"3","location":"assets","locale":"","width":1715,"height":608},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3605771,"resolution":"4","location":"assets","locale":"","width":1402,"height":882},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3605771,"resolution":"5","location":"assets","locale":"","width":606,"height":729}},"screenshots":{"1":"Connections management page","2":"Setup wizard","3":"User sync interface","4":"Form to Lead settings with activity log","5":"Settings and system information"}},"plugin_section":[],"plugin_tags":[1556,267101,1150,597,14392],"plugin_category":[58],"plugin_contributors":[271312],"plugin_business_model":[],"class_list":["post-336809","plugin","type-plugin","status-publish","hentry","plugin_tags-api","plugin_tags-contact-sync","plugin_tags-crm","plugin_tags-integration","plugin_tags-zoho","plugin_category-user-management","plugin_contributors-babaphp","plugin_committers-babaphp"],"banners":{"banner":"https:\/\/ps.w.org\/penguinpeak-crm-sync\/assets\/banner-772x250.png?rev=3605771","banner_2x":"https:\/\/ps.w.org\/penguinpeak-crm-sync\/assets\/banner-1544x500.png?rev=3605771","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/penguinpeak-crm-sync\/assets\/icon-128x128.png?rev=3605771","icon_2x":"https:\/\/ps.w.org\/penguinpeak-crm-sync\/assets\/icon-256x256.png?rev=3605771","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/penguinpeak-crm-sync\/assets\/screenshot-1.png?rev=3605771","caption":"Connections management page"},{"src":"https:\/\/ps.w.org\/penguinpeak-crm-sync\/assets\/screenshot-2.png?rev=3605771","caption":"Setup wizard"},{"src":"https:\/\/ps.w.org\/penguinpeak-crm-sync\/assets\/screenshot-3.png?rev=3605771","caption":"User sync interface"},{"src":"https:\/\/ps.w.org\/penguinpeak-crm-sync\/assets\/screenshot-4.png?rev=3605771","caption":"Form to Lead settings with activity log"},{"src":"https:\/\/ps.w.org\/penguinpeak-crm-sync\/assets\/screenshot-5.png?rev=3605771","caption":"Settings and system information"}],"raw_content":"<!--section=description-->\n<p>PenguinPeak CRM Sync for Zoho is a powerful WordPress plugin that manages Zoho OAuth connections across multiple environments (local, development, staging, production). It supports multiple Zoho products including CRM, Books, Inventory, Desk, and Creator.<\/p>\n\n<h4>Key Features<\/h4>\n\n<ul>\n<li><strong>Multi-Environment Support<\/strong> \u2014 Manage separate OAuth credentials for local, development, staging, and production environments.<\/li>\n<li><strong>Multiple Zoho Products<\/strong> \u2014 CRM, Books, Inventory, Desk, Creator \u2014 authorize one or all.<\/li>\n<li><strong>Dynamic Field Mapping<\/strong> \u2014 Field API names are discovered dynamically from Zoho metadata (no hardcoded fields).<\/li>\n<li><strong>User Sync<\/strong> \u2014 Sync WordPress users to Zoho CRM Contacts with full field mapping, progress tracking, and bulk operations.<\/li>\n<li><strong>Form-to-Lead<\/strong> \u2014 Automatically create Zoho Leads from form submissions. Supports Contact Form 7, Gravity Forms, WPForms, and more via pluggable adapters.<\/li>\n<li><strong>Secure OAuth Flow<\/strong> \u2014 Authorization code replay prevention, persistent redirect URI tracking, and region-aware token exchange.<\/li>\n<li><strong>Admin Dashboard<\/strong> \u2014 Connections management, setup wizard, settings with system info, debug log viewer, and sync UI.<\/li>\n<li><strong>Lead Log<\/strong> \u2014 View all form-to-lead submissions with detailed field mapping, status, and error messages.<\/li>\n<li><strong>Import\/Export<\/strong> \u2014 Export and import connection settings between environments.<\/li>\n<li><strong>WP-CLI Support<\/strong> \u2014 Manage connections via command line (documentation included).<\/li>\n<\/ul>\n\n<h4>Supported Zoho Products<\/h4>\n\n<ul>\n<li>Zoho CRM<\/li>\n<li>Zoho Books<\/li>\n<li>Zoho Inventory<\/li>\n<li>Zoho Desk<\/li>\n<li>Zoho Creator<\/li>\n<\/ul>\n\n<h4>Supported Form Plugins<\/h4>\n\n<ul>\n<li>Contact Form 7<\/li>\n<li>Gravity Forms<\/li>\n<li>WPForms<\/li>\n<li>Extensible via <code>penguinpeak_crm_sync_map_form_field<\/code> filter for any form plugin<\/li>\n<\/ul>\n\n<h3>External Services<\/h3>\n\n<p>This plugin connects directly to Zoho's API services (https:\/\/www.zoho.com\/) to synchronize data. Here is what you need to know:<\/p>\n\n<ul>\n<li><strong>Service<\/strong>: Zoho CRM, Zoho Books, Zoho Inventory, Zoho Desk, Zoho Creator<\/li>\n<li><strong>What it does<\/strong>: Fetches module field metadata from Zoho CRM to enable dynamic field mapping; creates\/updates Contacts (user sync) and Leads (form-to-lead) in Zoho CRM via server-side API requests.<\/li>\n<li><strong>Data sent to Zoho<\/strong>: WordPress user data (name, email, role, etc.) when user sync is enabled; form submission data (name, email, phone, message, etc.) when form-to-lead sync is enabled.<\/li>\n<li><strong>When<\/strong>: Data is sent only when you explicitly sync users or when a form submission triggers lead creation.<\/li>\n<li><strong>Authentication<\/strong>: OAuth 2.0 \u2014 the plugin redirects users to Zoho's authorization page. No credentials are stored on Zoho's servers beyond the access and refresh tokens required for API access.<\/li>\n<li><strong>Service Terms<\/strong>: https:\/\/www.zoho.com\/terms.html<\/li>\n<li><strong>Privacy Policy<\/strong>: https:\/\/www.zoho.com\/privacy.html<\/li>\n<li><strong>Opt-out<\/strong>: The plugin only sends data to Zoho when you explicitly configure and activate connections. No data is sent automatically without your consent.<\/li>\n<\/ul>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>penguinpeak-crm-sync<\/code> folder to <code>\/wp-content\/plugins\/<\/code>.<\/li>\n<li>Activate the plugin through the Plugins screen in WordPress.<\/li>\n<li>Go to the new <strong>CRM Sync<\/strong> menu in the admin sidebar.<\/li>\n<li>Click <strong>Add New Connection<\/strong> and enter your Zoho Client ID and Client Secret from the Zoho API Console.<\/li>\n<li>Use the <strong>Setup Wizard<\/strong> for guided configuration.<\/li>\n<li>Click <strong>Connect<\/strong> to authorize the plugin with Zoho.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"do%20i%20need%20a%20zoho%20api%20console%20account%3F\"><h3>Do I need a Zoho API Console account?<\/h3><\/dt>\n<dd><p>Yes. You need to create an OAuth client in the Zoho API Console (https:\/\/api-console.zoho.com\/) to obtain your Client ID and Client Secret.<\/p><\/dd>\n<dt id=\"can%20i%20use%20different%20credentials%20for%20different%20environments%3F\"><h3>Can I use different credentials for different environments?<\/h3><\/dt>\n<dd><p>Yes. Each connection has an environment field (Local, Development, Staging, Production). You can create separate connections with different credentials for each environment.<\/p><\/dd>\n<dt id=\"does%20the%20plugin%20support%20custom%20zoho%20fields%3F\"><h3>Does the plugin support custom Zoho fields?<\/h3><\/dt>\n<dd><p>Yes. Field API names are dynamically fetched from Zoho metadata, so both standard and custom fields are supported automatically.<\/p><\/dd>\n<dt id=\"is%20the%20plugin%20translation-ready%3F\"><h3>Is the plugin translation-ready?<\/h3><\/dt>\n<dd><p>Yes. The plugin includes a <code>.pot<\/code> file in <code>\/languages\/<\/code> and uses WordPress i18n functions throughout.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Rebranded to PenguinPeak CRM Sync for Zoho.<\/li>\n<li>Updated text domain to penguinpeak-crm-sync.<\/li>\n<li>Improved security and sanitization.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release.<\/li>\n<li>Multi-environment OAuth connection manager.<\/li>\n<li>User-to-Contact sync with batch operations.<\/li>\n<li>Form-to-Lead sync with pluggable form plugin support.<\/li>\n<li>Dynamic field metadata discovery.<\/li>\n<li>Secure OAuth with replay prevention.<\/li>\n<li>Admin dashboard with system info and debug log.<\/li>\n<li>Lead activity log.<\/li>\n<li>Import\/export connections.<\/li>\n<\/ul>","raw_excerpt":"Multi-environment Zoho OAuth connection manager with support for CRM, Books, Inventory, Desk, and more.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/zh-sg.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/336809","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/zh-sg.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/zh-sg.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/zh-sg.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=336809"}],"author":[{"embeddable":true,"href":"https:\/\/zh-sg.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/babaphp"}],"wp:attachment":[{"href":"https:\/\/zh-sg.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=336809"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/zh-sg.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=336809"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/zh-sg.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=336809"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/zh-sg.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=336809"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/zh-sg.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=336809"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/zh-sg.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=336809"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}