Import existing parts list into FieldPulse?

We are currently migrating from our legacy field service management platform and require a method to import our existing parts inventory into FieldPulse without manual re-entry. Our current system exports data in CSV format with the following columns:

  1. Part Number
  2. Description
  3. Unit Cost
  4. Quantity on Hand
  5. Reorder Point
  6. Vendor Name
  7. Location/Warehouse
  8. Category/Department

I have reviewed the interface and do not see a direct import function under Inventory > Items. Is there a bulk import mechanism available? If so, please provide:

  1. The required CSV template format
  2. Any field mapping documentation
  3. Maximum file size limitations
  4. Whether the import can create new categories automatically or requires pre-configuration
  5. API endpoint alternatives if direct file upload is not supported

Our inventory contains approximately 4,200 SKUs, so manual entry is not a viable option. I can confirm that all part numbers conform to our internal 12-character alphanumeric standard if that affects validation requirements.

Thank you for your assistance.

  • Hi Anita, happy to help with this!

    FieldPulse does support bulk inventory import via CSV. Here is how to proceed:

    1. Navigate to Inventory > Import/Export > Bulk Import
    2. Download the Inventory Import Template — this is required, as the system expects specific column headers
    3. Map your source data to the template fields. Note: Your legacy columns will need minor adjustment — "Unit Cost" becomes "unit_cost" and "Quantity on Hand" becomes "quantity_on_hand"
    4. Categories must be created before import — the system will reject rows with unrecognized category values

    For 4,200 SKUs, I recommend splitting into files of 1,000 rows or fewer to avoid timeout issues.

    See this article for the full CSV specification and sample file.

    Let me know if you need the API alternative — there is an endpoint at POST /v2/inventory/bulk if you prefer scripted migration.

  • Heads up on the API route — I did a migration last quarter with ~6K parts and the bulk endpoint has a 5MB payload limit and processes asynchronously. YMMV but I found it actually faster than CSV upload for large datasets because you get a job ID and can poll for completion rather than waiting on the browser.

    Worth noting: the API will auto-create categories if you pass "create_missing_categories": true in the metadata block, which the CSV upload does not support. Saved me a preprocessing step.

    One gotcha — if you have duplicate part numbers in your source, the API rejects the entire batch by default. Set "on_duplicate": "skip" or "update" depending on what you need.

  • Thank you both. I have downloaded the template and confirmed the following:

    1. The 12-character part number format is compatible — no validation errors on test import of 50 records
    2. I will proceed with the CSV method for this initial migration to maintain audit trail simplicity
    3. I have created the 14 categories required in advance

    However, I note that the template includes a "supplier_id" field that does not map cleanly from my "Vendor Name" column. Does the system support vendor name matching, or must I first create vendors and obtain their FieldPulse IDs?

  • Yeah this one tripped me up too when I first looked at it — the inventory endpoint doesn't do fuzzy matching on vendor names. You'll need the UUID from GET /v2/suppliers first.

    Quick script if you're comfortable with Python:

    suppliers = {s['name']: s['id'] for s in client.get('/v2/suppliers')}
    for row in inventory_rows:
        row['supplier_id'] = suppliers.get(row.pop('Vendor Name'))
    

    Edge case: if you have vendors with trailing spaces or inconsistent casing in your legacy data, normalize before lookup. I had "ACME Supply" and "ACME Supply " (note space) that created null mappings silently.

  • Acknowledged. I have implemented the vendor ID resolution as described. The migration completed successfully for 4,187 SKUs. Seven records failed due to null unit_cost values in the source data, which I will address separately.

    For documentation purposes: total processing time was 4 minutes 12 seconds via CSV upload method.