Salesforce integration: FAQ
Our Salesforce integration makes Typeform an essential part of your team’s workflow. This page contains answers to some common questions about the integration, as well as information about limitations.
Click a section below to jump straight to the most relevant questions for you:
Mapping, record creation, and syncing
Troubleshooting and other questions
Note! Make sure you've updated to our latest Salesforce Integration to ensure you have the smoothest experience. Click here to update to the latest version, then click the Use this integration button.
Don't see your question? Click Contact Support at the bottom of this page to reach out to our Support team.
Setup process
- Is there a guide to setting up the Salesforce integration?
- Can I connect multiple Salesforce accounts to the same Typeform account?
- Can I install Salesforce in a sandbox environment?
- How can I see which version of the Salesforce app I'm using?
- Do I need to install the Salesforce integration for each of my forms?
Is there a guide to setting up the Salesforce integration?
Yes, check out our step-by-step guide here!
Can I connect multiple Salesforce accounts to the same Typeform account?
Yes, multiple Salesforce accounts can be connected to the same Typeform account. However, you cannot connect multiple Typeform accounts to the same Salesforce account.
Can I install Salesforce in a sandbox environment?
Yes. To install Salesforce in a sandbox environment, just replace the "login" string in the installation link (covered in step 2 here) with "test" (so the final link reads "https://test.salesforce.com...").
If you need to move the integration to a Salesforce production environment later on, simply delete the Salesforce integration on Typeform, then set it up again for the new Salesforce environment.
How can I see which version of the Salesforce app I'm using?
You can follow the instructions here to check your integration version.
Do I need to install the Salesforce integration for each of my forms?
No. Once the connection has been established, adding new forms in Salesforce is controlled by the Salesforce admin.
Mapping, record creation, and syncing
Read on to find the answers to some common mapping-related questions:
- Is there a guide on how to map Typeform to Salesforce objects?
- What Salesforce fields can I map my form questions to?
- Can I map more than one form question to the same Salesforce field?
- What objects can I map forms to?
- Can I map my forms to custom objects in Salesforce?
- Can I update existing records in Salesforce with my Typeform integration?
- How do I map Multiple Choice questions to Salesforce object fields?
- My records are showing incorrect data!
- Can I map form metadata to Salesforce?
- Why am I seeing an error telling me that my error "can not be sorted in a query call"?
- Why am I seeing an “Exception: Attempt to de-reference a null object” error?
- Why am I seeing an 'Error: "DUPLICATES_DETECTED"' error?
- Why am I seeing an 'Error: "Invalid Field for (Lead/Contact/[Etc]): Upsert records"' error?
- Why am I seeing a 'Can't Map Same Salesforce Field to Two Questions: undefined' error?
- Can I set up a mapping to a Record Type field in Salesforce?
- Does the integration import all submissions every time it retrieves responses or just new ones?
Is there a guide on how to map Typeform to Salesforce objects?
Yes! Check out our guide here.
What Salesforce fields can I map my form questions to?
This table shows compatible mappings between Typeform question types and Salesforce field types:
Typeform question type | Salesforce field type |
Short Text | Text, Text Area |
Long Text | Text Area (long) |
Phone | Phone |
Number | Number |
Date | Date |
Multiple Choice (single select), Dropdown | Picklist |
Multiple Choice (multi-select) | Picklist (Multi-Select) |
Picture Choice (single select) | Text, Picklist |
Picture Choice (multi-select) | Text, Picklist (Multi=Select) |
Opinion Scale, Rating | Text, Number |
Website | URL |
Ranking | Long Text Area, Rich Text |
Matrix | Long Text Area, Rich Text |
Hidden Fields | Text |
Variables, scores | Text, Text Area, Long Text Area, Number, Percent |
Yes/No and Legal questions should be changed to Multiple Choice questions with the options “Yes”/“No” or “I accept”/“I don’t accept” respectively. They can then be mapped onto a Picklist field in Salesforce.
The Salesforce integration currently does not support File Upload or Payment questions.
You can also create conditional mappings between Hidden Fields and regular fields. For example, you can map both a Hidden Field and an Email field to a Salesforce Email field. In this case, the field with a non-null value will be mapped to the Salesforce Email field. The default value of a Hidden Field, for example, "xxxxx", is considered a null value.
Can I map more than one form question to the same Salesforce field?
No, this is currently not possible. When creating mappings for this integration, you can only choose a form question or a Salesforce field once.
Our integration allows you to map one form to multiple objects in Salesforce, provided there are active mapping records for each object. These can either be default objects like Lead, Contact, Account, Case and Opportunity, or custom objects.
So you can map the same form to multiple objects, however, when setting up mappings for each object, you can only map each form question or Salesforce field once.
As a workaround, you can use custom variables and branching logic in Typeform to assign the value of a specific question to a variable, then map that custom variable to the desired Salesforce field.
In the example below, I've created a custom variable called "rating" and added a new condition to replace it with each possible answer given to the Multiple Choice question:
You can now take this value from the custom variable in Typeform and match it to a string value in Salesforce.
I edited my form questions and published the form to update it, but the Salesforce field mappings don’t reflect how my form looks.
The Salesforce integration refreshes the forms periodically. The exact frequency is specified by you during the setup stage of the integration (see the screenshot below). If you wish to update the forms so your recent changes are available in your mappings, open the Typeform app in Salesforce, go to the Connect page in Typeform Admin, and click Run Now under Retrieve Forms.
What objects can I map forms to?
You can map forms to Lead, Opportunity, Contact, Account and Case objects. Other objects such as Surveys are not supported at the moment. (If you’re a proficient Salesforce user, you can also create records for custom objects - check out our guide here!)
Can I map my forms to custom objects in Salesforce?
Yes, you can - here’s a step-by-step guide.
Can I map to one object and have the integration check for those values in another object before creating a new record?
Unfortunately, our integration does not support checking for values from one object, for example, a Lead, in another object, for example, a Contact. It can only "Check for existing" values in the same object type, for example, a Lead mapping can only check for values in existing leads.
To link any record type to an existing contact in Salesforce you need to use a Lookup field. Our integration doesn’t currently support Lookup fields, so this is not possible.
Can I update existing records in Salesforce with my Typeform integration?
Yes. When editing an object’s field mappings, you can specify that form submissions should either create a new record by default or check against existing records first.
Choose Check for Existing for the second option. Then, use the checkboxes under Dynamic Field Mappings to select one or more keys for the integration to check when deciding whether to update a record or create a new one.
How do I map Multiple Choice questions to Salesforce object fields?
Map Multiple Choice questions to a picklist or multi-select picklist in Salesforce, depending on whether you have enabled multiple selection in Typeform or not. If you have Typeform’s Other option enabled, make sure that the "Restrict picklist to the values defined in the value set" option is unchecked in the Salesforce field settings.
How can I identify a record (like a Lead, Case, or Contact) that has been created from a form response?
Records created through the integration should have a field called Typeform Form Mapping that links to the mapping that was used to create the record. You can see the mapping in this screenshot:
If you'd like to use another field besides Typeform Form Mapping to indicate that the record was created from a form response, you can add a Static Field Mapping that always maps the same value to your desired field. If the Salesforce field is a picklist, like the one shown in the screenshot, you will need to add the Typeform value beforehand.
My Hidden Fields are showing as hidden1, hidden2, etc., in Salesforce instead of the names I gave them in Typeform. Why?
This may occur when Hidden Field names are changed in Typeform and the form is republished on Typeform’s side, but Salesforce does not show the refreshed names correctly. To refresh the mapping in Salesforce, go to the Connect page in Typeform Admin and click Run Now under Retrieve Forms.
My records are showing incorrect data!
It is possible within the integration to map more than one form to the same object in Salesforce. However, this functionality is not currently supported, and can lead to the records displaying incorrect data (particularly if the forms have similar question types but different question wording, or if form questions with different data types, like text and number, are mapped to the same field). To address this, make sure that each form is mapped to a separate object in Salesforce, as covered in this section of the guide.
Can I map form metadata to Salesforce?
No, we currently do not support mapping form metadata (Submit Date, Network ID, Typeform ID, Start Date, Lead Record Type, etc.) to Salesforce, only form fields.
Why am I seeing an error telling me that my field "can not be sorted in a query field"?
You may see this error if your organization has any sort of platform encryption enabled. Unfortunately, the Typeform package on Salesforce is not verified with a platform encryption feature, and our Support team cannot currently offer solutions for these situations.
Why am I seeing an “Exception: Attempt to de-reference a null object” error?
This error is triggered when a required field in Salesforce receives a null value in Typeform (empty Hidden Fields are also treated as null values).
To work around this issue, create a manual record in Salesforce for the response with null values. Delete the corresponding response from the Responses panel in Typeform. Then, run the Retrieve Responses job in Salesforce again.
Why am I seeing an 'Error: "DUPLICATES_DETECTED"' error?
If you are seeing this error, it's likely that you have active Salesforce duplicate rules that are catching records that already exist and throwing the error message. To fix the error, delete the rule causing the problem and select Check for existing in your mapping settings. This way, records will only be updated based on the selected key values, and duplicates will be avoided.
Why am I seeing an 'Error: "Invalid Field for (Lead/Contact/[Etc]): Upsert records"' error?
Upsert is the method that our integration uses to update records in Salesforce. This error is triggered when there is a problem with a field that Upsert is trying to update. To troubleshoot this error, check if either of the following apply:
- A key has been matched multiple times - this generates an error and the record is neither created nor updated
- You are updating related record fields
If you have a master-detail object relationship that could be affecting Upsert's ability to update records, you can also try changing the master object.
If none of the above suggestions solve the issue, please reach out to our Support team using the Contact Support button at the bottom of this page.
Why am I seeing a 'Can't Map Same Salesforce Field to Two Questions: undefined' error?
This can be solved when you update to our latest Salesforce Integration here. Click the Use this integration button and you'll be prompted to log in to your Salesforce account.
Can I set up a mapping to a Record Type field in Salesforce?
Unfortunately, our integration doesn't support mapping to Record Type fields in Salesforce.
Does the integration import all submissions every time it retrieves responses or just new ones?
The integration only imports new submissions since the last successful sync. It uses the 'Most recent response' field in the Salesforce form mapping to know when the last sync happened. After each sync, this field updates automatically. So, during the next sync, it only looks for new submissions since the last sync, rather than importing everything again.
Troubleshooting and other questions
- Can I use the Salesforce integration with partial responses?
- Can I change how often the integration syncs?
- How recent are the responses that 'Check for Existing' syncs against?
- Can I use this integration with Salesforce Marketing Cloud?
- Why is my Typeform app showing as 'suspended' on Salesforce?
- Why am I seeing a '401 - Unauthorized' or 'API Callout Error: 401 - null' error?
- Why am I seeing a 'List index out of bounds' error?
- Why am I seeing an 'Apex CPU time limit' error?
- Is there a way to re-sync only the responses that failed?
- Can I batch delete all Typeform errors?
- How can I delete the Typeform app from Salesforce?
- Does the integration support the API Only license type?
Can I use the Salesforce integration with partial responses?
Yes, if you've added a Partial Submit Point in Typeform, you can collect partial responses with the Salesforce integration. If you've set up the integration already, make sure to update your Salesforce package or re-install Typeform on the Salesforce app exchange to activate this update.
Can I change how often the integration syncs?
Yes, you can change this in your Typeform application settings in Salesforce. Open your Typeform app, then go to Typeform Admin. You can set syncing frequency in the fields under Retrieve Forms, or manually sync your data by clicking the Run Now button.
You can choose to retrieve forms every 5 minutes, every 15 minutes, every 30 minutes, every hour, or every day.
How recent are the responses that 'Check for Existing' syncs against?
The Check for Existing option checks against all responses that have been received by the integration. You can check the date and time of the most recently-received response by opening the Typeform app in Salesforce, clicking Typeform Forms, and checking the Most Recent Response field for the relevant form. Any form responses submitted after that time have not yet been received by the integration, so 'Check for Existing' can't yet check against them.
Can I use this integration with Salesforce Marketing Cloud?
The integration is compatible with Salesforce and Salesforce Essentials. It does not support Marketing Cloud at the moment. (If you are a Marketing Cloud user, Integrately has an automation linking Marketing Cloud with Typeform.)
Why is my Typeform app showing as 'suspended' on Salesforce?
This may be because your Typeform account has been downgraded to a level that does not include the Salesforce integration. In this case, you will need to upgrade your account to reactivate the integration. Go to the Plan & Billing section of Settings in your account to check.
If this suggestion doesn't fix the issue, reach out to Support using the button at the bottom of this article. In your message, please provide the email associated with your Typeform account and your Salesforce Organization ID.
Why am I seeing a '401 - Unauthorized' or 'API Callout Error: 401 - null' error?
This can happen when your Typeform or Salesforce account ownership has changed. You can fix the error by removing the integration on Salesforce (using the Remove connection button under Typeform Admin) and setting it up again following the instructions here.
If the above does't work, you can try the following:
1. Revoke the permissions you've given to Salesforce in Typeform:
Log into your Typeform account linked to Salesforce. Click your avatar in the top right corner and select Your settings under Account. Select Authorized apps in the left-hand panel and click Revoke next to Salesforce.
2. Remove your Typeform connection in Salesforce:
In your Salesforce instance, go to Typeform Admin, select Connect in the left-hand panel and click Remove Connection under your connection:
3. Clear your browser's cache and cookies and close all open browser sessions. You can find instructions on how to clear cache and cookies for different browsers here.
4. Open your browser and go back to Salesforce to reconnect to Typeform as seen here.
5. Try retrieving responses and check for 401 errors.
Why am I seeing a 'List index out of bounds' error?
This issue has been fixed in more recent versions of the Salesforce integration. Upgrading to the latest Typeform SF version should resolve the error.
Why am I seeing a 'Search term exceeded max length' or 'First error: Apex heap size too large' error?
This issue can often be fixed by lowering the batch size in your Typeform API settings within Salesforce.
First, make sure that you have the most recent version of the Salesforce integration installed, and that you are an admin in your Salesforce environment.
In Salesforce, go to Custom Settings under Setup. Click Manage next to Typeform API Settings. Lower the numbers in the Form Page Size and Response Page Size fields and save the new settings.
This video created by Typeform Support covers the process.
Why am I seeing an 'Apex CPU time limit' error?
This issue can be fixed by upgrading to version 1.25 of our Salesforce integration.
After upgrading, go to Setup -> Custom Settings in your Salesforce instance and click Manage under Typeform API Settings. Click Edit to lower the default value in No of Callouts Per Batch.
You can start by lowering the value to 40, and if the issue persists, you can lower it by 5 again until the issue is resolved.
Why am I seeing an 'Error: "[Custom Object/Lookup Field]: id value of incorrect type: [XXXXXXXXXXXXX]"' error?
This can occur when the Lookup Relationship for a custom object is improperly set up. Be sure to set the relationship to Typeform Form Mapping, as noted in step 3 of our guide to creating custom objects in Salesforce.
Why am I seeing an 'Error: "Insert failed. First exception on row 0; first error: STORAGE_LIMIT_EXCEEDED, storage limit exceeded: []"' error?
This error appears when your Salesforce storage limit has been exceeded, and it looks something like this:
To free up space:
1. Open the Salesforce Setup menu.
2. Search for Company Information by using the quick find bar.
3. Click View next to Used Data Space to view what data is taking up your Salesforce storage space.
If the storage issue is happening due to too many Typeform errors, you can follow the steps suggested in the question below to remove them.
Why am I seeing an 'Error: "Exception: Invalid conversion from runtime type String to Decimal"' error?
The Salesforce integration currently doesn't support mapping to Typeform's File Upload or Payment question types. This error message is shown when you're trying to map a Salesforce field to the Payment question, or if any of the responses in the form contains a value in the Payment/Price field.
As a workaround, you can split your form in two to have a new form that includes just the Payment question. You can find out more about passing information from one form to another here. In this case, only the first form will be integrated with Salesforce, but not the second one.
Instead of using the Payment question in Typeform, you could also use the Redirect to URL or Redirect with End Screens features to send your respondents to a custom Stripe landing page after submitting their responses.
Is there a way to re-sync only the responses that failed?
You can't re-sync only failed responses just yet, but if you've set up your mapping using the Check for existing option, you can re-run the syncing of responses by changing the Most Recent Response Date to a previous date or by leaving it blank. The next time the system syncs, or if you press the Run now button manually, the system will sync all the responses from the selected date.
Can I batch delete all Typeform errors?
Yes. This is easy to do if you're using version 1.17 of our Salesforce integration or higher. (Here's how you can check which version you're using.) Open your Typeform app in Salesforce and click the Typeform Errors tab, where you'll be able to batch delete errors using the Delete All button at the top right of the page.
If you're using a lower version than 1.17, you can add this button to your Typeform Errors page by following this process: Open Object Manager from your Salesforce Setup area. Click List View Button Layout in the left-hand sidebar. Add the Delete All button to the Selected Buttons column, then Save.
How can I delete the Typeform app from Salesforce?
To remove an integration from Salesforce, you'll first need to remove all forms that you've connected using the integration. To do so, open your Typeform app in Salesforce. Click the Typeform Forms tab and select Forms with Active Mappings from the List Views dropdown menu.
Click each form in the list and delete all of the individual mappings under Typeform Form Mappings.
Once these mappings have been deleted, follow these instructions to delete the app.
Does the integration support the API Only license type?
Salesforce released a new API only license type in March, 2023 that makes it possible to give integration users API only access. Unfortunately, the Typeform integration currently does not support this license type.
Can I change the owner of a Lead object (or other objects) created through the Typeform/Salesforce integration?
Unfortunately, no. The owner of a Lead object (or any other object) is automatically pulled from the Typeform account that sets up the integration.
Current limitations
Pardot emails and Hidden Fields
Pardot currently cannot support Hidden Fields when generating a URL. For this reason, Hidden Fields mapped from Typeform are not compatible with Pardot. Unfortunately, this is a Pardot limitation and our team is unable to address it.