Bulk Import: CSV Import
37 min
the csv import feature supports creating candidate profiles and openings in bulk by uploading a csv file containing the details you want to upload there is no explicit limit to the number of candidates or openings you can upload at once ashby uploads large files in batches once the upload starts, you can leave the page and return when it is complete common use cases for this feature include migrating candidates from your legacy ats (if ashby doesn't support an alternative) uploading your annual headcount plan uploading leads from projects or talent pools in your legacy sourcing tool when you import very large files (over 100,000 rows of candidates), you may experience a network error in these cases, we recommend splitting the file into a few smaller files and uploading them as separate csvs overview this video is optional viewing all of the steps are documented below permissions and access permissions by default, only users with organization admin access can complete csv imports you can grant elevated access users the ability to bulk import data if needed for more information, see additional user permissions docid\ mhy0txb4sxnqye9xkvn8e step one prepare your file the quality of the data you import into ashby impacts the quality of data you get out of it to ensure high quality, we recommend preparing your file before uploading it to ashby before you start, review the following csv file requirements file uses the csv file format file has headers for every column file uses comma delimiters file has the same number of columns in every row data quality suggestions data is complete (are there gaps in your data? if so, consider resolving this before importing) data is accurate (is this data correct?) data is relevant (are there data points that don't add to your knowledge about the candidates? if so, consider archiving outside of ashby) data is timely (is this historical data that will be frustrating to filter out later? if so, consider archiving outside of ashby) additional tips use google sheets' cleaning tools make sure there isn't any formatting, just data make sure there isn't any unexpected metadata at the top or bottom of the file if you are importing information into a custom checkbox field (for more on custom fields, see custom fields docid\ qpgklrscmzgwc 7krbwds ), be sure to use a semicolon if you are adding multiple values (for example, remote; in office; hybrid) you can use the following templates as a starting point (optional) https //docs google com/spreadsheets/d/1szman605 5z5ooql38bf4 kbsejyy fzae2rmvxyte0/edit#gid=1204658108 job import template https //docs google com/spreadsheets/d/1bpk7li58foqtyp4 ek4wc8xn0dcwyq19uox68qlyrbg/edit?gid=0#gid=0 opening import template https //docs google com/spreadsheets/d/18p7whfsgph1irtfd8rpjaqhsp6zqo830popbx1j6y7s/edit?usp=sharing step two import a csv file once you're ready to upload your data, you do so in four stages upload your file mapping starting the import summary import to import a file navigate to admin > data management > bulk data import https //app ashbyhq com/admin/data import/bulk import click upload csv in the top right corner of the page select the import type, then locate and select the file to import determine the import settings (if applicable), then move on to mapping the data mapping the mapping step allows you to match any structured field to a corresponding column in your file if there are columns you don't want to upload, ignore them by clicking the ignore this column button, and the importer skips them check that all fields you'd like to import have been mapped if a field defaults to being ignored, click select field on candidate to determine the field the value should be mapped to once you've mapped your fields, click start import to kick off the import once you've initiated an import, it can take some time to complete there are no explicit limits on the number of candidates or openings you can upload at once if your list is large, ashby uploads your data in batches and it takes longer to complete you can leave the page and come back later once an upload finishes summary the summary view shows a list of the entries you've uploaded and any skipped due to errors for candidates, you have a variety of bulk actions you can take on the candidate profiles that are generated an example summary page for a candidate import if there's an issue with the upload, you can delete it with the delete all imported x button what you can import via csv candidates using this option creates individual candidate profiles to upload or update candidates using a csv file click upload csv in the bulk upload section of admin, then select candidatess select your csv file to start uploading it determine the import settings import mode this setting allows you to determine whether the import should only create new entries, only update existing entries, or both create new entries and update existing ones enable email enrichment? you have the option to enrich profiles with emails in bulk this option requires the candidate name and linkedin url to be included in the import only match open jobs by default, ashby only maps applications to open jobs, but you can uncheck this checkbox to map applications to all jobs click start import many structured data fields can be uploaded, so review the upload options in ashby before completing your upload if you're unsure, confirm by reaching out to support\@ashbyhq com mailto\ support\@ashbyhq com the following fields can be imported fields description name candidate's full name; we also support separate first and last name options current employer the candidate's current employer current job (position) the candidate's current job title email address (personal, primary) the candidate's email address phone number (personal, primary) the candidate's phone number tag(s) either apply existing tags you have in ashby or create new ones and apply them to this candidate social profile urls(s) urls for social profiles like linkedin, twitter, github, and portfolios source type top level source, ashby's default options include inbound, internal, sourced, referral required to apply a source source sub source, required to apply a source to a job consideration credited to email of the user who sourced this candidate job this is the job they are/were considered for required to apply a source current interview stage name current stage the candidate is in for the job they are/were considered for project talent pool or list of candidates you're not actively considering importing candidates best practices to import data like the job and stage a candidate is associated with, or the source of their application, you first need to ensure that information exists in ashby if you'd like to include your candidate's source, you must include both a source type and a source column in your file source types are top level values that sources are nested under to simplify reporting to add a source, you must also include a source type these should already be added on the sources page https //app ashbyhq com/admin/organizational settings/sources in ashby admin before importing if you'd like to upload candidates to specific jobs, those jobs must be set up in ashby first by default, ashby only maps applications to open jobs, but you can uncheck the only match open jobs checkbox to map applications to all jobs the name of the job in ashby must exactly match the name of the job in the csv you can archive any historical jobs once the import is complete when adding or updating existing candidates, ensure that each row contains the candidate's name and an identifying field an identifying field can be an email address, a phone number, or a social profile url (linkedin or github) if two rows contain the same identifying data (for example, two candidate rows having the same email address), you get an error ensure that each candidate is listed only once in the csv file to avoid this issue if importing any dates as part of your candidate data, the date/time should be an iso 8601 compliant string (e g , 1982 05 25, 2017 04 22t20 47 05 335 04 00) if you have any concerns about your data quality before importing, we suggest starting fresh with ashby and archiving your historical candidates' data somewhere you can find it if you are importing hired candidates, you cannot import data like the hired at date or other offer information directly into offer fields in ashby you cannot upload feed data like emails, feedback forms, applications, resumes, and surveys using the bulk csv import feature candidate attribution credited to and source are collectively known as the "attribution" fields candidates may have attribution fields individual applications may have attribution fields they may not necessarily be the same the candidate's attribution fields are intended to be the original source for that candidate's entry into ashby therefore, ashby attempts to keep the candidate source from updating as you consider candidates for new jobs or make changes to applications in those cases, ashby updates the application's attribution fields the attribution fields in the csv uploader reflect this behavior if the imported information creates a new candidate, the attribution fields in the import file always apply to the candidate if a candidate already exists in ashby for the imported information, and you are also importing information about an application, ashby only updates the application's attribution field if you would like to update a candidate's attribution fields, only include candidate information in your import if you are updating the credited to field, include the email of the user or employee the candidate should be credited to, not their name this field only accepts email addresses post upload actions once candidates are imported, you can take bulk actions on the import list to complete these actions, select individual candidates, or all candidates using the checkboxes, then click the button that corresponds with the action you'd like to take the summary page for a candidate import, showing bulk action options ashby supports the following bulk actions consider for job add candidates to a job consideration (if the file didn't include the job consideration already) add to project add candidates to a project projects are a simple way to keep track of candidates who are not currently interviewing but whom you want to stay in touch with for the future set tags add tags to candidate profiles email send candidates a one off email using a shared email template or one of your personal email templates enroll in sequence add candidates to an email sequence request review more transfer anonymize delete remove from project mark as do not contact set tags send data consent request add to event if there's an issue with the upload, you can delete it with the delete all imported candidates button this will not impact candidates that were only updated by the import candidate follow ups you can bulk add follow ups across candidate profiles click upload csv in the bulk upload section of admin, then select candidate follow up select your csv file to start uploading it map your file fields to fields in ashby, then click start import to kick off the import when it comes to mapping data after uploading your csv file, you can map the following data fields field name description formatting notes example candidate email the email of the candidate to follow up with abbye\@learn ashby com mailto\ abbye\@learn ashby com date the date when the follow up is due the date/time should be an iso 8601 compliant string (e g , 1982 05 25, 2017 04 22t20 47 05 335 04 00) 2025 10 31 note notes for the follow up please reach out to this candidate status the status of the follow up ashby imports the following as resolved completed, resolved, done, cancelled, skipped, expired ashby imports follow ups with all other statuses as pending completed assignee name the name of the assignee of the follow up emily example assignee email the email of the assignee of the follow up abbye\@learn ashby com mailto\ abbye\@learn ashby com once the import is complete, the follow up tasks appear on the candidate's feed if the follow up is due, it also shows on the assignee user's home page as a task jobs if you need to add or update jobs in bulk, you can upload them by doing the following click upload csv in the bulk upload section of admin, then select jobs select your csv file to start uploading it determine the import settings import mode this setting allows you to determine whether the import should only create new entries or only update existing entries create and update is not available for importing jobs if you are both creating and updating jobs, you need to do two separate imports map your file fields to fields in ashby, then click start import to kick off the import if you are looking to update jobs that are already in ashby, be sure to include either the requisition id or the ashby job id fields in your csv file you can use this template https //docs google com/spreadsheets/d/1bpk7li58foqtyp4 ek4wc8xn0dcwyq19uox68qlyrbg/edit?gid=0#gid=0 to ensure your data is formatted correctly before uploading, or see the information below on exporting a csv of existing job data to use as a template for an import to update jobs you can map and import the following fields for creating and updating jobs in ashby field name description formatting notes example title the title of the job backend engineer team the department or team connected to the job must exactly match an existing team in your ashby account product location the location connected to the job must exactly match an existing location in your ashby account new york job status the status of the job can be open, closed, archived, or draft open requisition id the requisition id linked to the job 123 ashby job id the internal job id within ashby this field should only be used for updating jobs employment type the type of employment linked to the job full time, part time, contractor closed at if the job has been closed, the date that the job was closed at the date/time should be an iso 8601 compliant string (e g , 1982 05 25, 2017 04 22t20 47 05 335 04 00) 2025 05 25 hiring manager the hiring manager linked to the job (must be an active user in ashby — add the user's email address) multiple hiring managers should be added as comma separated values abbye\@learn ashby com mailto\ abbye\@learn ashby com , jared\@learn ashby com mailto\ jared\@learn ashby com recruiter the recruiter linked to the job (must be an active user in ashby — add the user's email address) multiple recruiters should be added as comma separated values abbye\@learn ashby com mailto\ abbye\@learn ashby com , jared\@learn ashby com mailto\ jared\@learn ashby com recruiting coordinator the recruiting coordinator linked to the job (must be an active user in ashby — add the user's email address) multiple recruiting coordinators should be added as comma separated values abbye\@learn ashby com mailto\ abbye\@learn ashby com , jared\@learn ashby com mailto\ jared\@learn ashby com sourcer the sourcer linked to the job (must be an active user in ashby — add the user's email address) multiple sourcers should be added as comma separated values abbye\@learn ashby com mailto\ abbye\@learn ashby com , jared\@learn ashby com mailto\ jared\@learn ashby com custom fields see custom fields docid\ qpgklrscmzgwc 7krbwds for more information on supported field types ensure that the fields are in the appropriate format to match the job specific custom field (for example, importing yes/no answers into a yes/no custom field) high priority (y/n)? creating jobs when creating jobs via the bulk import option, the job title, team, and location are required ensure that these fields are included in your csv file updating jobs when updating jobs via bulk import, either the ashby job id or requisition id is required (the job title, location, and team are not required) if you provide both in the import, ashby uses the ashby job id, and you can then update the requisition id via the bulk import you can also use the template above to update job details, or you can create a job export using the steps below creating a csv export of job data for bulk updates custom reports are not available on the foundations plan to create a csv export of job data to use as a base to update your jobs in ashby navigate to reports > build reports select the custom list report option set the subject to jobs use the filters to determine the jobs you'd like to export (for example, filtering by the job department) click add field to show to select the specific job fields you'd like to bulk update be sure to include the ashby job id and/or requisition id fields in your report, as one of these fields must be provided to update your jobs an example of a custom list report that you can use to export job data click export csv (listed above your results on the right hand side) to export the data in the csv format manually locating the ashby job id in addition to using csv exports, you can locate the job id by navigating to jobs > jobs , clicking into the job in question, and then copying the id number from the url the requisition id is listed within the settings section of the job if you do not have requisition ids assigned to your jobs, use the ashby job id instead mapping your job fields for updating jobs finding a job id within a url when viewing a job when mapping your job data, map only the field with the job or requisition id and any fields with updated data to the fields on your jobs click ignore this column beside any fields that you don't want to import or update on your jobs when updating existing jobs via csv import, any mapped hiring team field (hiring manager, recruiter, recruiting coordinator, or sourcer) overwrites the hiring team role on the job to avoid removing existing team members by accident, include all hiring team roles you'd like to keep on the job in your csv and map all hiring team role fields during import for example, if you want to update the recruiter but keep the current hiring manager on a job, your csv must include both fields with the appropriate data you must map or ignore all fields in your csv before you can start your import ignore columns for data you do not want to import post upload actions we don't currently support taking bulk actions on jobs after they've been uploaded to manage your jobs in ashby, navigate to jobs > jobs and select the job in question to make amendments openings see openings management docid\ ksxxwi1zugaw8lrp8jwxz for more information on how to use the openings feature use this template https //docs google com/spreadsheets/d/18p7whfsgph1irtfd8rpjaqhsp6zqo830popbx1j6y7s/edit?usp=sharing to ensure your data is formatted correctly before uploading bulk imports for openings are not available on the foundations plan using this option creates individual openings on the openings tab within the jobs section of ashby the table below outlines the supported fields and corresponding formatting examples opening details when you generate openings, these fields will be populated with the data you map to import openings click upload csv in the bulk upload section of admin, then select openings select your csv file to start uploading it map your file fields to fields in ashby, then click start import to kick off the import the following fields can be imported field name description formatting notes formatting example opening id (required) numeric or alphanumeric id associated with a unique opening there shouldn't be any duplicate ids ashby 1 status the opening's current status can be one of draft, approved, open, closed, or filled draft description one line text field describing the opening limited to 240 characters senior backend engineer team the name of the existing team in ashby the format is case sensitive and should exactly match an existing team in ashby engineering job(s) expects one or more jobs multiple jobs should be added as comma separated values senior backend engineer (emea),senior backend engineer (amer) ashby job id the internal job id within ashby this can be used to identify specific ashby jobs when you have multiple jobs with the same job title location(s) expects a comma separated list of names of locations that already exist in ashby multiple locations should be added as comma separated values europe,north and south america recruiter(s) (role) email address(es) of the recruiter(s) associated with the opening multiple recruiters should be added as comma separated values ravan\@learn ashby com recruiting coordinator(s) (role) email address(es) of the recruiting coordinator(s) associated with the opening multiple recruiting coordinators should be added as comma separated values abbye\@learn ashby com,jared\@learn ashby com hiring manager(s) (role) email address(es) of the hiring manager(s) associated with the opening multiple hiring managers should be added as comma separated values kelsey\@learn ashbyhq com sourcer(s) (role) email address(es) of the sourcer(s) associated with the opening multiple sourcers should be added as comma separated values joel\@learn ashby com employment type type of employment associated with the role expects one of the following values full time, part time, intern, temporary, contract full time is backfill? indicates if this opening is a backfill expects common boolean values yes/no, y/n, 1/0 yes target hire date date an offer is expected to be accepted the date/time should be an iso 8601 compliant string (e g , 1982 05 25, 2017 04 22t20 47 05 335 04 00) 2023 04 22 target start date date the hire is expected to start the date/time should be an iso 8601 compliant string (e g , 1982 05 25, 2017 04 22t20 47 05 335 04 00) 2023 05 29 compensation range the compensation range associated with the opening expects a string formatted as min value/max value/currency code/interval requires at least one of min or max value (for an exact salary, include just one value) the currency code should be an iso 4217 compliant alphabetic code (e g , usd, jpy) accepted interval values once, per hour, per day, per week, bi weekly, per month, per year, per half year, per half month, per quarter 70000/80000/usd/per year 70000//usd/per year /80000/usd/per year additional custom fields expects values that align with the custom fields your team creates see custom fields docid\ qpgklrscmzgwc 7krbwds for more information about the field types supported tier 3 post upload actions we don't currently support taking bulk actions on openings after they've been uploaded to manage your uploaded openings, visit the openings https //app ashbyhq com/openings page in the jobs section of ashby bulk updating openings if you'd like to bulk update openings, you can do so by importing a csv of updated opening data when bulk importing updates for openings, be sure to check the following the opening ids in the csv match the ids of the openings you are looking to update the names of teams/departments and locations exactly match those you have set up in ashby when mapping your opening data, map only the field with the opening id and any fields with updated data to the fields on your openings click ignore this column beside any fields that you don't want to import you must map or ignore all fields in your csv before you can start your import the option to ignore a column when importing openings employees the employee import is intended for importing key interviewer information into employee profiles at admin > organization setup > employees to import employee data click upload csv in the bulk upload section of admin, then select employees select your csv file to start uploading it determine the import settings import mode this setting allows you to determine whether the import should only create new entries, only update existing entries, or both create new entries and update existing ones map your file fields to fields in ashby, then click start import to kick off the import the following data can be imported field name description formatting notes formatting example name the name of an employee rosie recruiter email (required) the email address of an existing employee must exactly match the email of an existing user if updating employees job title the employee's job title no character limit this title may be shown to candidates this person interviews recruiter daily interview limit the greatest number of interviews the employee can be booked for in a day via direct booking must be an integer greater than or equal to zero 3 weekly interview limit the greatest number of interviews the employee can be booked for in a week via direct booking must be an integer greater than or equal to the daily interview limit 7 interviewer pools see interviewer training docid\ c eo5ek8ip34bcrzy2epb for more information multiple pools should be added as comma separated values business operations,managers linkedin profile url the employee's linkedin profile url https //www linkedin com/in/abbye eva 908364ab/ https //www linkedin com/in/abbye eva 908364ab/ custom fields see custom fields docid\ qpgklrscmzgwc 7krbwds for more information on supported field types people manager (y/n)? you can also import an employee's status (as activated or deactivated) to update their profile status in ashby faqs what candidate data can i upload via the bulk csv import feature? things you can import candidate demographics current job application the current interview plan stage current status things you can't import resumes other files notes long text fields the ashby team can upload resume files separately reach out to support\@ashbyhq com mailto\ support\@ashbyhq com to request this how does ashby handle duplicate candidates? the bulk import feature catches duplicates by checking across candidate information including github and linkedin urls and emails if ashby finds matches, it doesn't create a new candidate and instead updates the existing candidate with any new information if you are using the email import feature and sending over a resume for a candidate profile that already exists, ashby flags the duplicate and you receive an error something went wrong; how do i undo the upload? if you'd like to undo your upload, you can delete all uploaded candidates or openings at the bottom of the summary page once an upload is complete this does not affect candidates or openings that were only updated during the import can i import data into custom fields when importing via the bulk csv importer? yes you can select custom fields at the mapping stage for more information, see our custom fields docid\ qpgklrscmzgwc 7krbwds guide can i import a candidate and consider them for multiple jobs as part of the import process? no when importing candidates, you can only add them to the pipeline of one job you need to add further job considerations to the candidate's profile after the import i have multiple jobs with the same job title how do i ensure the candidate is imported to the correct role? if you have multiple jobs with the same job title in ashby, you can do the following to map the candidate to the correct job based on requisition id add an existing requisition id or create a new one in the requisition id field on the job to add a requisition id to a job in ashby, navigate to jobs > jobs , then go to the settings tab within the job or jobs in question ensure that the requisition id is also added to your csv file (if you didn't have a requisition id for the role to begin with) import your candidates and opt to map the requisition id field in your csv file to the job consideration's job title field can i apply a job template to a job i import via a csv file? you can't currently apply a job template to jobs imported via a csv file the locations in my import file have commas (for example, new york, new york) how do i import these? when a location value in the csv contains a comma, the importer interprets it as a column separator and throws an error to get around this wrap those values in brackets and quotes \["new york, new york"] in the original file