Knowledge Base

Your Salesforce account has an associated Authentication Token. This is a key that changes when you change your password. In order to integrate your 123FormBuilder account with Salesforce, you will need to use the Authentication Token. When setting up the integration in Integrations, paste the token on the third line of the Salesforce application box.

To reset or enable your Salesforce Authentication Token, follow these instructions:

  • In your Salesforce account go to Settings  My Personal Information category.

How to reset the SalesForce Authentification Token

  • Select Reset My Security Token from the dropdown list and press Reset Security Token, in the right panel.

reset salesforce token

  • You will receive your new Salesforce Authentication Token by email.

Important Note

This version of the API was deprecated. If you still need to automate your data collection processes, and retrieve collected data or make various operations related to your 123FormBuilder account through API calls, you can use our new and improved API v2. Please visit our developer documentation for more details.

After you log in to your 123FormBuilder account, click on your username. From the list select the subsection API Keys and you’ll find yours listed. If the API Key is not displayed, you’ll need to press the Create now link and your API Key will be automatically generated.

The API Key can only be retrieved by the parent account. If you have sub-users, this section will not be available. Sub-users will need to contact the parent account to obtain the API Key related to the account.

There are cases when you might want to pass the value/input from one field to another, within the same form. Read below to learn how to achieve that by using a script added to your 123FormBuilder form.

In order to use on your own form the scripts examples we provide below paste the URL containing the script file into the Advanced -> Form ->  Add a JS script to your form option. See our documentation on how to add JS to your form here.


Pass input between fields of the same type

This script will pass a field’s value to another field of the same type. It will work for input fields (Short answer, Email field, etc), as well as for choice fields (Single Choice, Dropdown etc).

(function(){
window.addEventListener('load', function(){
	var sourceControlId = 000000000, /** ID OF THE SENDER CONTROL **/
	targetControlId = 000000000, /** ID OF THE RECEIVER CONTROL **/

	sourceControlInstance = loader.getEngine().getDocument().getElementById(sourceControlId),
	targetControlInstance = loader.getEngine().getDocument().getElementById(targetControlId);

	sourceControlInstance.on('value-change', function(){
		targetControlInstance.setValue( sourceControlInstance.getValue() );
	});

	targetControlInstance.setValue( sourceControlInstance.getValue() );
});
})();

See how it works:

And yes, it works for choice fields too! See below:

What you need to do

You will need to replace the “00000000” from the script example above, with the IDs of your own fields. The first 0000000 will be replaced with the ID of the field from which the information will be copied. The second 0000000 will be replaced with the ID of the field to which information will be passed.

In order to find the ID of a field, right click on the field and use the Inspect option of your browser.

Tip: Copy and paste this script, in the same .js file, as many times as needed for each pair of fields on your form. Just make sure to always replace the field IDs with the ones of your fields.


Pass values between different field types

This script will allow you to pass an input/value from one field type to another. For example, pass from a Dropdown field to a Short answer field, from a Short answer field to a Long answer field, etc. Keep in mind that it does not work for any field types combinations.

(function(){
window.addEventListener('load', function(){
	var sourceControlId = 000000000, /** THE ID OF THE SENDER CONTROL */
	targetControlId = 000000000, /** THE ID OF THE RECEIVER CONTROL **/

	domAbstractionLayer = loader.getDOMAbstractionLayer(),
	sourceControlInstance = loader.getEngine().getDocument().getElementById(sourceControlId);

	sourceControlInstance.on('value-change', function(){
		domAbstractionLayer.setControlValueById(
		String(targetControlId),
		domAbstractionLayer.getControlValueById(
		String(sourceControlId)
		)
		);
	});

	domAbstractionLayer.setControlValueById(
	String(targetControlId),
	domAbstractionLayer.getControlValueById(
	String(sourceControlId)
	)

	);
});
})();

See how it works:

The same instructions as above apply.


Pass multiple values into a field/ Concatenate inputs from different fields

This script helps you collect values from different fields and put them together in a “summary” field (such as a Long answer field). It is very versatile and we will explain below how to customize it for your needs.

function joinValues() {
setTimeout(function() {
	var valueOne = loader.engine.document.getElementById(000000000).getProperty('value.value');
	var valueTwo = loader.engine.document.getElementById(111111111).getProperty('value.value');
	var valueThree = loader.engine.document.getElementById(222222222).getProperty('value.value'); //repeat the last line as many more times as needed ...

const joinedValues = valueOne + ": " + valueTwo + " - " + valueThree ;
		   loader.engine.document.getElementById(XXXXXXXX).setValue(({"value": joinedValues}));
}, 1000);
}

window.onchange = joinValues;

Here is a demo for an order form where we applied the script from above:

How to customize the script

The script has a few lines which are repeated, but on each line the “var” has a different name (valueOne, valueTwo, etc). You will need as many of those lines as fields you want to send data from. In our case, we repeated them three times, up to “valueThree”, because in our example above we have 3 fields from which we gather data. For a fourth field, add another line, right below the “var valueThree” one. You will change the name of the var to “valueFour” and so on.

For each of these lines, you will add the corresponding field’s ID. Therefore, 00000000 will be replaced with the ID of your first field, 11111111 will be replaced with the ID of your second field and so on.

Replace the “XXXXXXX” value with the ID of the field where you want to combine all the information (ideally a Long answer field).

const joinedValues = valueOne + “: ” + valueTwo + ” – ” + valueThree; – this is the line where we combine the information from all fields. In between quotation marks add any symbols or words that you need to separate the inputs. Make sure to add spaces too because with no space the inputs will print as this: valueOnevalueTwovalueThree

Tip

While the JS method works greatly when you need to transfer information from just a few fields into other, for a larger number of fields we recommend you to use our Database Manager app, available from the Enterprise plan. Using this app is possible to also prefill form fields with values from your own database (MySQL or Maria DB) or from a CSV file into form fields.

Do you have other code examples you tried and would like to share with us in the comments below?


See more JS tips articles:

While our powerful form builder offers the ability to make calculations with the Formula field, set a minimum/maximum value for a number or change the accepted data format, to round automatically a number you will need to add javascript to the form. Luckily you are just in the right place to learn how to do that!


Rounding a non-integer number

Let’s take the following script as an example:

function roundResult() {
var result1 = loader.engine.document.getElementById(111111111).getProperty('value.value'); 
var roundedValue1 = Math.round(result1 * 1) / 1;
loader.engine.document.getElementById(111111111).setValue(({"value": roundedValue1})); 
};

window.onclick = roundResult;

This script is used to change a fractional number (a number with decimals) into an integer (a whole number). For example, 3.123 becomes 3, while 3.789 becomes 4.

Change the numbers “111111111” with your own field’s ID (see how to find the field ID at pt. 2 here). Replace with the same field ID in both places, if you want the rounding to be in the same field. If you want to display the fractional number in a field and in another field display its rounded counterpart, then simply add the first field’s ID in place of the first 111111111 and the second field’s ID in the place of the second 111111111.

See how it works:


Rounding up and displaying only the first two decimals

Let’s say you need to display the prices on your form in a more currency friendly format. You want to avoid numbers such as these: 25.45678 and display this instead: $25.46.

First, make sure you add the currency symbol of your choice with our Prefix option (learn how here).

Second, you will need to use this script on your Formula or Number field:

function roundResult() {
var result1 = loader.engine.document.getElementById(111111111).getProperty('value.value'); 
var roundedValue1 = +((Math.round(result1 * 100)/100).toFixed(2));
loader.engine.document.getElementById(111111111).setValue(({"value": roundedValue1})); 
};

window.onclick = roundResult;

The same instructions apply as for the previous script.

See how it works:

In order to use these scripts on your own form, after you’ve added your own field IDs, paste the URL containing the script file into the Advanced -> Form ->  Add a JS script to your form. See our documentation on how to add JS to your form here.

Note: The script examples provided above trigger the action to round the number when a click is made on the form page. You can however change that. E.g: instead of “window.onclick” you can use “window.onchange” so that the script is triggered when an input is changed in your form.

In Salesforce, there is on one side the older Notes and Attachments related list and on the other the split version of this, Notes related list and Files related list.

In order to send to the Notes related list specifically, enhanced notes related list has to be activated in the org:

Two Primary object mappings are needed in order to generate a new Note:

  1. For the Note itself, map the object ContentNote as a Primary object, with the fields for Title and Content mapped with fields on the form. For Content specifically, you can use Custom value as Data Source and add one or multiple form fields.
  2. Add another Primary object mapping for ContentDocumentLink. This object mapping will connect the ContentNote with the object it pertains to. Here you need to map two fields:
    • Linked Entity ID – here you add a Lookup Relationship mapping, selecting the object that the Note should fall under in the Notes related list.
    • Content Document ID – this field is mapped to the ContentNote lookup relationship, as this refers to the Note itself.

Mapping for Content Note:

Mapping for Contend Document Link:

After installing the 123FormBuilder app and assigning the license, Salesforce users need to find our app in App Launcher and access the app in order to authorize it.

Some users may encounter the following error when trying to access the app: “We couldn’t load the form controls”

When does this error occur? 

This error message appears when you are accessing Salesforce integration → Object Mapping section:  

Also, when attempting to add a Primary Object in the dropdown menu – where your Salesforce objects should be displayed – the No match found message is displayed:

Why does this error show up?

API access is required for 123FormBuilder to pull data from your Salesforce ORG and list the objects. When a Salesforce user profile doesn’t have this permission called API Enabled you’ll receive those error messages. 

How to solve this – Enable the API permission for the Salesforce user. 

Follow these steps to enable the API permission:

  • Go to Salesforce Setup – Users – Profiles 
  • Select your User Profile name 
  • Below the System category click on System Permissions 
  • Click on Edit. Tick the API Enabled permission.

Looking for more information on our integration with Salesforce?

Check related articles

Take your forms to the next level with 123FormBuilder. In this article, we present all the features provided by the Diamond plan.

Account Features

Form Configuration

Third Party Applications

If you do not find what you are looking for with the Diamond plan, you can contact Sales department in order to discuss about the Enterprise plan. Also, you can always visit our Features Matrix for more information.

Enteprise plan

With 123FormBuilder, you can easily create complex forms to boost your business and collect data. There are different subscriptions types that you can choose from. In this article, we will go over all the features provided by the Platinum plan so you could decide if it is a right fit for you.

Account Features

  • You can create 100 forms within your account.
  • On each form, you can add 500 fields.
  • 20,000 submissions per month on your account. The submissions limit is reset on the first day of each month.
  • 10 GB upload storage.
  • Add sub-users to your main account. You can purchase user bundles, assign Viewer and Group Admin roles and expand up to 10 sub-users. If you need more sub-users, get in touch with our Enterprise team for more information.
  • Connect to multiple Wix sites.
  • Domain aliasing.
  • NEW Advanced Form Analytics – Insights
  • Create unlimited custom reports. Apply custom filters to your reports.
  • No backlink to 123FormBuilder.
  • Unlimited API calls.
  • Live Chat Support.

Form Configuration

Third Party Applications

If you do not find what you are looking for with the Platinum plan, you can always select the features you are interested in from the left side panel and we will recommend the right plan for you.

Diamond plan

Related articles

Diamond plan features

123FormBuilder offers different types of upgrade options to cover various businesses. In this article, we will enumerate all the Gold plan features so you could decide if it is the right fit for you.

Account Features

  • You can create 25 forms within your account.
  • On each form, you can add 250 fields.
  • 5,000 submissions per month on your account. The submissions limit is reset on the first day of each month.
  • 1 GB upload storage.
  • Add sub-users to your main account. You can purchase user bundles, assign Viewer and Group Admin roles and expand up to 10 sub-users. If you need more sub-users, get in touch with our Enterprise team for more information.
  • Connect to multiple Wix sites.
  • Create unlimited custom reports. Apply custom filters to your reports.
  • No backlink to 123FormBuilder.
  • Live Chat Support.
  • Unlimited API calls.

Form Configuration

Third Party Applications

If you do not find what you are looking for with the Gold plan, you can always select the features you are interested in from the left side panel and we will recommend the right plan for you.

Platinum plan

Related articles:

Platinum Plan features

By using a custom JS script added to the form, you can fill form fields with UTM tracking parameters or other source values. Once submitted, you can use these values in other workflows involving external integrations or the form API.

To add a custom script to your online forms, access your form builder account, go to the Advanced → Form tab. Then, select the option Add a JS script to your form and paste the script URL.

JS script to your form

Here is a more detailed article on how you can host, share and apply a script to your form: How to add custom JavaScript to form.

We have provided a few script examples below on how you can capture the UTM tracking parameters or other values.


Example Script 1

This script retrieves the UTM parameters values from your URL (they will appear when a click is made on the form):

function getReferrer() {
setTimeout(function() {
var queryString = window.location.search;

var urlParams = new URLSearchParams(queryString);
var utmSource = urlParams.get('utm_campaign');
var utmMedium = urlParams.get('utm_source');
var utmCampaign = urlParams.get('utm_medium');

loader.engine.document.getElementById(111111111).setValue({ value: utmSource });
loader.engine.document.getElementById(222222222).setValue({ value: utmMedium });
loader.engine.document.getElementById(333333333).setValue({ value: utmCampaign });

}, 1000);}
window.onclick = getReferrer;

Replace 111111111, 22222222 and 33333333 with your Field IDs. You can find your Field ID by clicking on your field in the editor, and scrolling down to the section called Field Details:


Example Script 2

This script retrieves the src link of the form iframe containing search parameters from a UTM cookie. The values of these parameters are then extracted and prefilled in hidden form fields.

var queryString = window.location.search;

var urlParams = new URLSearchParams(queryString);
var is_campaign = urlParams.get('utm_campaign');
var is_source = urlParams.get('utm_source');
var is_medium = urlParams.get('utm_medium');

document.getElementById('id123-control11111111').value = is_source;
document.getElementById('id123-control2222222').value = is_medium;
document.getElementById('id123-control3333333').value = is_campaign;

(‘id123-control11111111’) represents the field control ID. Replace it with the actual ID of your form fields.


Example Script 3

Another approach to capturing any value in a field involves the following syntax structure:

loader.getEngine().getDocument().getControlsList().find(function (control) { 
        return control.id === 0000000; // this targets a field based on its control id
    }
).setValue({value: 'new value'}); // this sets a value in a control

This script captures the parent window URL where the form is embedded and populates it in a hidden field on the form.

jQuery(document).ready(function() {
  setTimeout(function() {
    var parentFrame = window.location;
    var desiredControl = loader.getEngine().getDocument().getControlsList().find(function(control) { 
      return control.id === 0000000; // the desired control id
    });
    desiredControl.setValue({value: parentFrame.href});
    console.log('custom static resource loaded');
  }, 2000);
});

‘new value’ can be static or dynamic (returned by a function or retrieved after a third-party API call) as long as that value (‘new value‘) is a string.

Control.id represents again the ID of your form field. Replace “0000000” from our example with the ID of your field.

When the 123FormBuilder app is installed in a Salesforce instance, three permission sets are automatically generated:

Permission sets

These permission sets refer only to the Custom Objects that our app creates. Therefore, they don’t impact any other objects from Salesforce.

The only difference between the three permission sets is in terms of Object Permissions and Tab Settings in the Object Settings category.


Object permissions

1. 123FormBuilder Submissions Object:

  • Admin has Read, Edit, Delete, Modify All, View All permissions.
  • Integration has just like the Admin + Create (so Read, Create, Edit, Delete, Modify All, View All permissions).
  • Standard has Read, View All + Tab Settings: Visible.

2. Field Responses Object:

  • Admin:  Read, View All.
  • Integration: Read, Create, Edit.
  • Standard: Read, View All.

3. Form Fields Object:

  • Admin:  Read, Create, Edit, Delete, View All, Modify All.
  • Integration: Read, View All.
  • Standard: Read, View All.

4. Forms Object:

  • Admin:  Read, Create, Edit, Delete, View All, Modify All.
  • Integration: Read, View All.
  • Standard: Read, View All + Tab Settings: Visible.

5. Form Send Logs Object:

  • Admin:  Read, Create, Edit, Delete, View All, Modify All.
  • Integration: Read, Create, Edit, Delete.
  • Standard: Read, Create, Edit, Delete, View All, Modify All.

Tab Settings

In terms of Tab Settings, only the Standard User Permission Set has the option Visible for the following 123FormBuilder Objects: Settings, Submissions, Forms, Home.

We always recommend respecting the principle of least privilege when setting permissions. However, we’ve seen that our existing clients usually assign all three permission sets for users with a 123FormBuilder license, since this refers only to the custom objects that our app creates in Salesforce.

Restrictions on Form Editor/Settings or what forms the sub-users have access to are inside the 123FormBuilder app. You can find them in the Users section.


Related articles

You can add queries to your online forms to search in your organization’s Salesforce data for specific information. Queries are more advanced lookups to pull data from Salesforce and are useful if you need to establish multiple filters. When creating queries, you can use the operators OR and AND.

Queries are triggered only after the form is submitted, so they can’t be used to prefill form fields, but they can be used in the Object Mapping section for mapping or as a condition for updating an existing record.

1. Use the query result as a Data Source in the Object Mapping section.

Salesforce query result

2. Use the query result as a condition for updating an existing record:

Update records query result

How to create Queries:

Under the Salesforce Integration → Query tab, specify a Query name to easily identify it. Start typing SOQL queries in the box below.

Salesforce query

Here are some query examples:

SELECT Name FROM Lead WHERE Company = '[{company(5427369)}]'
SELECT Id, Name, BillingCity FROM Account WHERE Email = '[{email(5783943)}]'
SELECT Id FROM Contact WHERE Name = ‘[{name{6457284)}]' AND MailingState='[{state(643784)}]' OR Email = '[{email{698345}]’

You can use the Validate button to check if your query is correct.

Validate query

Related articles

Frequently Asked Questions

Here is a list of the most frequently asked questions. For more FAQs, please browse through the  FAQs page.

Is this service free?
Yes, we offer a free form builder service. Just sign up to the Basic plan and you are all set. This plan is forever free, but you are limited with a few features only, such as 5 forms per account, 100 submissions per month and you have to keep the backlink to 123FormBuilder on your forms. Check out our features matrix for more information.
How many forms can I create?
It depends on the service plan you are on. Higher service plans enable more features, including more web forms for your account. If you need more forms, go to the My Account section of your account and click the upgrade button. To create an unlimited number of forms, either upgrade to the Platinum service plan or higher. Consult our features matrix for more information.
How can I publish my forms?
You can publish your forms in many ways, by using their direct URL or HTML link, embedding them with a JavaScript code, Inline HTML or iFrame, using the Facebook app or the WordPress plugin, using popups, the Blogger code snippet and many more. Once you have created and customized your form, go to the Publish section to complete your work. Read more in our documentation.
How do I change my form design?
You can change the design of your form for more information. in the Themes section, which is located in your form settings. We offer a set of more than 30 predefined form themes for your forms, but you can also create your own from scratch. You can customize the submit button, the logo and more. To apply your own stylesheets, all forms come with a custom CSS editor.

Can't find what you're looking for?