Search by

refineddigital / cms-form-builder-zoho

refineddigital

Zoho integration for Form Builder

Package info

github.com/refined-digital/refined-cms-form-builder-zoho

pkg:composer/refineddigital/cms-form-builder-zoho

Statistics

Installs: 33

Dependents: 0

Suggesters: 0

Stars: 0

Open Issues: 0

v1.1.0 2026-10-27 03:56 UTC

This package is auto-updated.

Last update: 2026-10-27 03:56:56 UTC


README

A Zoho CRM integration for RefinedCMS Form Builder. On submit, the form's mapped field values are posted to Zoho's Web-to-Lead endpoint, creating a lead. No SDK or API token: it uses Laravel's HTTP client and the keys of a Zoho Web-to-Lead form.

Install

composer require refineddigital/cms-form-builder-zoho
php artisan refinedCMS:install-form-builder-zoho

The install command publishes the config (config/zoho.php) and appends ZOHO_ERROR_EMAIL= to your .env if it isn't there.

Zoho setup

  1. In Zoho CRM go to Setup → Developer Hub → Webforms and create a Leads web form.
  2. From its embed code, copy the hidden xnQsjsdp, xmIwtLD and actionType values.
  3. Set ZOHO_URL if the account isn't on the Australian data centre (default https://crm.zoho.com.au/crm/WebToLeadForm).

Connecting a form

  1. Edit the form, open Integrations and toggle Zoho CRM on.
  2. Set each field's Merge Field to the Zoho field name: First Name, Last Name, Email, Phone, Zip Code, a custom field such as LEADCF2…
  3. Add the web form keys and any fixed lead values as hidden fields where the site renders the form. Use __ for a space in a name (Lead__Source is sent as Lead Source):
{!! forms()->load(1)->setAdditionalHiddenFields([
    (object) ['view' => 'hidden', 'field_name' => 'xnQsjsdp', 'value' => '…'],
    (object) ['view' => 'hidden', 'field_name' => 'xmIwtLD', 'value' => '…'],
    (object) ['view' => 'hidden', 'field_name' => 'actionType', 'value' => 'TGVhZHM='],
    (object) ['view' => 'hidden', 'field_name' => 'Lead__Source', 'value' => 'Website'],
])->render() !!}

Behaviour

  • Description. Every field mapped to Description is sent as one Label: value line in the lead's description, so several questions can share it.
  • Pass-through. Any posted value that isn't a form field (and isn't the CSRF token or captcha) is sent as-is, which is how the hidden fields above arrive.
  • Configure. Fields toggled off in the Configure modal aren't sent. A form whose modal was never saved sends every mapped field.
  • Checkbox / multi-select values are joined with ;.
  • Failures never block a submission. HTTP errors are report()ed. If ZOHO_ERROR_EMAIL is set, an alert with the form name and reason goes there.
  • No email. Notifications are the form's own Email Notifications. The integration never sends them.