It is possible to post information gathered on a contact form on your website directly into your OpenCRM system. First of all, you will need the web form package which can be obtained by contacting us at support@opencrm.co.uk.
Requirements
- Web form package - this will be supplied to you by us
- API Keys - this will be supplied to you by us
- PHP 5.6+ - Your web server must be running PHP 5.6+ in order to run the web forms package in its standard installation. PHP is used to submit the data from the form to OpenCRM. If you do not have this available, you can use an alternative web scripting language, or if neither that or PHP is available for you, we can host your form processing. Please refer to the "Alternative Hosting Options" section at the end of this FAQ.
Recommendations
- Email notification - we recommend adding your own email notifications to your webforms or secondary submission collection so that if there is an issue with your web forms connection to OpenCRM, submissions are not lost.
- Spam protection - we recommend enabling spam protection on your webforms to prevent junk data from being submitted to your OpenCRM system. The sample forms provided in the standard package have support for Google reCaptcha v2 built in - see customisation options for how to enable this.
Standard Installation
1. Extract the contents of the web form package to a folder on your website. Make sure that it is possible to run PHP scripts from this folder. Extract all files to the same folder.
2. Open up the file "form_config.php" and set the following variables:
$key = ''; You will be provided with two API keys with the form package sent to you - put these in these two variables - they must be in the right order. This authenticates the form with your OpenCRM site
$key2 = '';
3. Three sample forms are provided to give you a starting point (leadform.html, contactform.html and companyform.html) . These should now work and you can customise these yourself (some brief instructions below).
Customisation of Webforms
Adding new fields
You can add as many additional fields to your form as you like. You need to ensure the "name" element on the field matches the name of the field in OpenCRM (you can check this by inspecting the source field you wish to post to in the OpenCRM interface). Alternatively contact OpenCRM support for a list of the field names that you require.
Validation
The sample forms include some built in validation functionality
- Mandatory fields - add a "required" tag to the input field:
- Email validation - to check for a valid email address being added, add 'type=email' to your input field:
- Error text: To specify the error text which is displayed if validation on a field fails, add or change the "data-error-text' element on the input field:
Spam Protection
The sample forms have Google reCaptcha (v2) support built-in. To enable this:
- You will need to sign up for a Google reCaptcha account first
- Find and activate the commented code in the standard web forms, entering your reCaptcha site key into the space provided:
Thank You message/ page
You can customise the thank you message by editing the file thankyou.php.
Alternatively, you can change the page which the user is redirected to by changing the following hidden field:
Additional Standard Webform Features
The following features are available as customisations to the standard package web forms, or can be included on your own custom built forms.
Sending a notification
To send a notification of the newly created record from the web form, add a hidden field named "notifyuserid" to the webform and set the value to be the user ID (e.g. 1,2,3,4,5) of the user to notify. This needs to be the users ID, not their username or email address.
Sending a confirmation email
You can instruct OpenCRM to send a templated email in response to the web form submission to the email address of the record created in OpenCRM (so you will need to make sure the email address field is on your form).
Add a hidden field named "emailtemplate" to the form. Set the value of this field to be the ID of the template which you wish to send as your confirmation email.
Post to Contacts, Leads or Companies
The sample forms are set to post to the correct module in OpenCRM. If you build your own forms and wish to set which module your form posts to, this is done with a hidden form field 'module'.
Duplicate check?
To prevent duplicates being created from webform submissions, it is possible to add duplicate check criteria and options to your forms.
- Add a hidden field "dupecheckfields" to specify the fields you wish to duplicate check on - contact support for help populating this field correctly.
- Add a hidden field "updateexisting" - to specify whether to update an existing record if a match is found (set to "No" to not update existing records)
- Add a hidden field "newfieldsonly" - to specify of the fields on your form, which ones should only be updated on new records (i.e. if a matching record is found, these fields won't be updated on this record but all other fields would)
- Add a hidden field "appendfields" - to specify of the fields on your form, which fields should have the new data APPENDED to them as opposed to replacing the old value. This may be useful for e.g. Description or source fields where you want to maintain a history of information.
Advanced Customisation / Building your own forms
If you wish to build your own forms, adapt your existing web forms, or do more advanced customisation, you are free to do this. Read the information below for more details on how to make sure your form works correctly.
In order for your forms to work, you need to remember the following:
- Fieldnames need to match those in OpenCRM
- A hidden field called "module" needs to be set with the correct module to post to
- the file send_data_ajax.php is used to submit your form data to OpenCRM, and you should either submit to this from your custom built forms, or look at this file and what it does and recreate that for your custom built forms
For more advanced requirements, you may wish to consider building your forms to use your OpenCRM REST API.
Submitting data to OpenCRM
Option 1 - Local processing (PHP Required)
The standard installation posts the form data to a local PHP script which in turn posts the data to OpenCRM. This is the recommended configuration as it allows you more control and customisation on what happens when submitting data to OpenCRM.
Data is processed from the web form by a php script "send_data_ajax.php". In the samples provided, this is done via a javascript AJAX call, but you could alternatively set your forms action variable to the script:
Data is passed to OpenCRM from the webform package using a SOAP call. The Nusoap component is included in the package in the case that you do not have PHP's in built SOAP client available or enabled.
The following lines of code are important - they show the connection being made to the webform service with the nusoap client, the authentication to create a sessionid and then passing the form data to the web form service including the authenticated sessionid.
...
$client=new nusoap_client($SYSTEM_URL.'/webformservice.php?wsdl');
//authenticate your API key
$sessionid=$client->call('login', array($key1, $key2));
$result=$client->call('receive_webform_data',array($sessionid, $_SERVER['HTTP_REFERER'],$webform_data));
...
$webform_data - the format of this needs to be a serialized array of data in the following format:
$webform_data["lastname"]="Bloggs";
$webform_data["email"]="fred@bloggs.com";
Option 2 - Alternative to PHP
If you do not have PHP available but do have another web scripting language available, it would be possible to use the send_data_ajax.php file as an example and re-code in another language. We do not have sample files or code for other languages, however.
Option 3 - No scripting available - direct submission
If you have no scripting available on your web server, it is also possible to directly submit the data from the form to the processing code on the OpenCRM server. Your web server would then only need to host HTML forms (plus any associated stylesheet/validation scripts). please note this is not our recommended option and may require additional professional service time or subscription cost to implement this. Please contact us to discuss your requirements.
Alternative Hosting Options (What if I don't have PHP?)
If you do not have PHP available and do not have another scripting option available or do not have the development knowledge to implement the form processing in that alternative option, we can host your form processing code for you but please note this is not our recommended option and may require additional professional service time or subscription cost to implement this. Please contact us to discuss your requirements.
Need More Help?
If you have any questions, just start a Live Chat, "Click" on the Chat Icon in the lower right corner to talk with our support team.