Thought Industries' bulk import functionality is an alternative to adding or updating learners in your instance one-by-one. Bulk import allows you to assign the same access to a list of learners with a simple upload.
To import new learners to the platform, you will use our standard import template. In addition to basic information (first name, last name, and email), our import template contains the following columns:
- firstName*: first name
- lastName*: last name
- email*: email address
- externalCustomerId: for SSO purposes
- status: to update learner status on specified content (not started, started, completed)
- completionDate: to record a completion date for specific content (for record creation only, not updates, meaning no completion date should have been recorded for the learner/content combination previously)
- sendInvite: to control whether or not an invite should be sent to a learner (yes, no)
- ref1-ref10: To fill in or update learner reference fields.
- address1, address2, city, state, zipCode, country, telephone: to fill in address information for learners
- language: will only appear if Thought Industries' Multilingual Package is enabled in your instance. Used to update a learner's language preference.
- sfContactId: to connect new learners to an existing contact record in Salesforce
- sfAccountId: to connect new learners to an existing account in Salesforce
*Minimum required fields for bulk import actions.
Warning
When using the Salesforce fields, once the records are set for the learner in Thought Industries, the records cannot be updated.
For information on updating existing learners, see our Updating Existing Learners in Bulk article.
Where do I find this?
Users > Learners > Bulk Import
How do I do this?
Assigning content access to a list of learners:
- From your homepage, select Users.
- From the left menu, select Learners.
- At the bottom of the page, click Bulk Import.
- Click Download CSV Template.
- Open the downloaded CSV and enter information for each learner. Each row in the spreadsheet should be a unique learner. Save CSV.
Note
At a minimum, firstName, lastName, and email are required for all bulk imports so we can identify and add or update the correct learner.
Tip
ISO Date Format
All dates should be formatted in ISO Date & Time.
Format structure: YYYY-MM-DDTHH:mm:ss.SSSZ
Example: 2021-02-01T15:30:00.000Z
See this article on using ISO Date Formats for Bulk Imports for more details and instructions.
- Next, go back to the platform and click I've Downloaded and Filled in the Template.
- Click Choose File and locate your saved CSV file. Click Open.
- Specify what content the learner should have access to by adding the content, subscription, Learning Path or client access that will be applicable to all learners in the import batch (whether applicable for status or access).
- Complete the Invite Message field if you'd like to customize the invitation text (optional).
- Click Next Step.
- Review your import. If there are issues with your CSV, you'll be notified of the specific errors and you'll have the option to correct the errors or upload the successful rows.
- Assuming there aren't any errors in your CSV, you'll see a confirmation page summarizing all learners who will be imported.
- Click That Looks Good to complete the import.
Tip
Check if files are queued by going back to the Bulk Import page (Users > Learners > Bulk Import)

Importing a list of learners with no content access (without explicitly assigning access to any content):
- Imported learners will just become part of the Registrant role.
- Importing existing learners without selecting content will result in no change to content access.
Specifying learner invites (the sendInvite column allows control over whether new learners should receive invites or not):
- If set to "True", the platform will send an invite.
- Valid case-insensitive sendInvite values: y, n, t, f, yes, no, true, false.
- An empty field defaults to "False".
- If the learner already exists, no invite will be sent regardless of what is specified.
- Invite will include your custom invite message, if provided in step 9 above.
- The invite will match client branding if there is a client specified in the bulk import.
Note
Learner Invites do not expire. If you would like to revoke the invite, you can disable the user and the invite will no longer be valid.
Importing content status (the status column is for importing or updating learner status on pieces of content):
- Valid case-insensitive status values: not-started, not started, notstarted, started, completed, complete.
- Empty field defaults to not-started for new learners.
- Course, webinar, article, video, single SCO content status can be updated (Learning Paths, subscriptions and client access are not available for update content status updates).
Note
Completion Date can only be utilized if the learner hasn't already recorded a completed date for the selected piece of content - it's meant to create a completed date record, not to update a record. If the user has no recorded completed date for a piece of content, you can set a date manually using the bulk import process by filling out the status column as 'completed' and using ISO date format for the completed date. Select the content that should get the new completed date during the bulk import process.
Importing learner’s content status on webinars:
- Not-started and started statuses will add learners to the registration list (on Thought Industries and webinar provider).
- Completed statuses will not add learners to the registration list (on Thought Industries and Webinar Provider).
Importing learner’s language preference for the Multilingual Package:
- Valid language values include any available language key (a two character reference to Languages, both default and custom, in the Translations area of the platform). Only one preferred language per learner.
- Language keys can be found at the end of the URL when on the correct language tab in the Translations area of the platform.
Specifying Salesforce ids (use Salesforce-specific fields in the bulk import CSV when importing new learners):
- If sfContactId is provided and valid, learner will be connected to the contactId and corresponding accountId in Salesforce (the account is derived from the contact in Salesforce, not the sfAccountId field on the bulk import template).
- If sfAccountId is provided and valid OR sfContactId is invalid: the learner will be created as a new contact in Salesforce connected to the specified sfAccountId.
- If neither sfAccountId nor sfContactId are provided OR both are invalid, the learner will be created as a new contact in Salesforce and the account will be connected based on an email address domain lookup in Salesforce for the best account match.
What else do I need to know?
- If sendInvite has a positive value, each learner will receive an email invite to the learning site so it's important to use a valid email address for each learner. When each learner accepts the invite, he/she will be prompted to generate a unique password for future logins and agree to terms & conditions before proceeding to the learner dashboard.
- Keep in mind, bulk updates are not immediate and there will be a delay depending on the size of the imported CSV.
Warning
Double check that the bulk import data will grant the correct content access. Content access can only be removed for learners individually.
What does this look like?
Learner View:


Admin View:




