MotoDealerHQ

Importing inventory from a feed

Set up a CSV, XML, JSON or REST inventory import, map its fields, test it with a dry run and run it on a schedule without overwriting your edits.

Last updated For inventory managers Documentation for MotoDealerHQ 1.0.0-beta.1 “Assen”

A feed import keeps your MotoDealerHQ inventory in step with another system, such as your DMS export or your website provider's feed. You set the source up once, map its columns to MotoDealerHQ fields, test it with a dry run, and then let it run on a schedule. Every import follows the same safety rules: it never deletes a unit, never marks a unit sold, and never overwrites a field you changed by hand.

Before you start #

  • You need the inventory.import permission (see Permissions).
  • CSV imports are included in every plan. XML, JSON, REST API and website imports need the Advanced inventory feature, which is part of the Pro and Enterprise plans.
  • Your plan sets how many import sources you can have. On the standard plans that is 1 (Starter), 3 (Pro) or 20 (Enterprise). See Plans and trials.
  • Get an authorized export from your provider: a file you can download, or a feed URL they give you. Ask them for the exact column names and, for a feed URL, any token or username and password it needs.

Choose a source type #

The Inventory imports page with the source type buttons, the missing-unit rule and the list of sources (open full size)
Inventory › Imports. Numbers match the list below.
  1. Pick a source type. One button per kind of feed (see the table).
  2. Missing-unit rule. A reminder that units are never marked sold or deleted because a feed left them out.
  3. Your sources. Each source with its type, schedule, number of vehicles, last run and health. Select a name to open it.
Source typeUse it forPlan
CSV file / feedA CSV, TSV or text export, uploaded or fetched from a URL. Choose the delimiter (comma, semicolon, tab or pipe), the encoding and any rows to skip above the header.All plans
XML feedAn XML export. You give the record XPath, for example //vehicle.Advanced inventory
JSON feedA JSON export. You give the dot path to the list of vehicles, for example data.vehicles.Advanced inventory
Authorized REST APIA documented API your provider has given you access to, with page-number or next-link paging.Advanced inventory
Your websiteReading your own public website. Needs written authorization first; see Website imports.Advanced inventory

Set up a source #

  1. Open Inventory › Imports, or select Imports at the top of Inventory › Vehicles.
  2. Select the source type, for example CSV file / feed.
  3. Under Source settings, give the source a Name your team will recognize, for example "DMS nightly export".
  4. Set the Schedule (minutes, blank = manual). Leave it blank to run the import only when you click. The shortest schedule is 15 minutes; once or a few times a day is plenty for most dealerships.
  5. Decide what happens to units that disappear from the feed: Mark missing after N complete runs (2 to 30, default 3) and Then set status to Pending (review), Archived or Do nothing (flag only).
  6. In the options for your source type, enter the Feed URL, or leave it blank if you will upload a file.
  7. Untick Enabled for now (it is ticked on a new source). You can still preview and dry-run a disabled source, and no scheduled run happens until you are ready.
  8. Select Create source.
The settings form of a new CSV import source with the schedule, the missing-unit settings and the feed URL highlighted (open full size)
A new CSV source. Numbers match the list below.
  1. Schedule. Minutes between automatic runs. Blank means manual only.
  2. Missing after N runs. How many complete runs in a row a unit may be absent before anything happens.
  3. Then set status. Pending (for review), Archived, or flag only. Never Sold.
  4. Feed URL or upload. Fetch from your provider's URL, or leave blank and upload a file after you save.

After you save, the source page shows more panels:

  • Upload a feed file (CSV, XML and JSON sources): .csv, .tsv, .txt, .xml or .json, up to 50 MB. The file is stored privately for your dealership only.
  • Credentials: a bearer token, a custom header, or a basic-auth username and password for the feed URL. They are stored encrypted and never shown again; the form only says set or not set.

Map the fields #

  1. On the source page, select Preview sample & mapping. MotoDealerHQ reads a sample from the feed and suggests a platform field for each feed field. Nothing is imported from this page.
  2. Check each row. Choose — ignore — for columns you do not want.
  3. For type-specific details, such as a boat's length, map the column to attributes. plus a key, for example attributes.length_ft.
  4. Select Save mapping.
  5. Back on the source, fill in Default values for anything the feed does not send: Condition, Vehicle type, Category, Location name and Status. If you have several rooftops, the default location decides where new units land.
The field mapping table and the default values on an import source (open full size)
Field mapping and defaults. Numbers match the list below.
  1. Feed field to platform field. One row per column in your feed.
  2. Default values. Used when a record leaves the field empty.
  3. Default location. Where new units go when the feed does not name a location.

The Mapped sample table on the preview page shows the first records the way they will be imported, with any warnings, so you can catch a wrong column before it reaches your inventory.

Test with a dry run #

  1. Select Dry run (no changes) on the source page, or Run full dry run on the preview page.
  2. Open the run from Run history. The report shows what would happen: new, updated, unchanged, failed and conflicts, record by record.
  3. Fix the mapping or the defaults and dry-run again until the report looks right. A dry run never writes to your inventory.

Run it live #

  1. Tick Enabled and select Save settings.
  2. Select Run import now and confirm. Inventory is created and updated.
  3. From now on the source runs on its schedule. Next scheduled run shows when.

Each run is listed in Run history with its mode, status, whether it was Complete, and its counts. Open a run to see every record. You can download an error report CSV of the failed records from the run page.

What an import does with each record #

  • Matching. A record is matched to an existing unit by the source's own ID, then by VIN, then by stock number, always within your dealership only.
  • Unchanged records are skipped. Re-running an identical feed changes nothing.
  • Validation. Records are checked with the same rules as the vehicle form. A bad record fails on its own; the rest of the run continues.
  • Your edits win. When you change a field of an imported unit by hand, that field is locked and later imports leave it alone. A difference is counted as a conflict. To let the feed update the field again, open the vehicle and use Unlock under Import-protected fields.
  • Duplicates from another source. If a second source sends a unit that another vehicle already holds, the record is skipped and flagged for review. See Duplicates and merging.
  • Missing units. See Reconciliation for exactly when a unit that left the feed changes status.

Photos from a feed #

When Import image references is ticked, the photo addresses in the feed are recorded with each unit. Photos are only downloaded, re-encoded and stored once MotoDealerHQ has recorded that your dealership authorized republishing those images; the source page tells you when that is not done yet. Photos are never hotlinked from your provider. Ask support to record the authorization, or upload photos yourself (see Photos).

Failure alerts #

When a scheduled import fails, the source shows a red failure(s) badge on the imports page, and failing sources are retried less and less often. On plans with automation (Pro and Enterprise), the Import failure alert workflow (Settings › Workflows, on by default) also notifies everyone with the inventory.import permission, with the error.

Website imports #

The Your website source reads your own public site. Many website providers' terms forbid automated copying, so this source refuses to run until you record the dealership's written authorization: the reference, who signed it, the date and the scope. Even then it obeys the site's robots.txt, waits at least 10 seconds between pages, and stops at once on rate limiting or an anti-bot page.

A new website import source with the written authorization warning (open full size)
Website source. Numbers match the list below.
  1. Authorization required. The source will not run until the authorization fields are filled in.
  2. 10 s minimum delay. The delay between requests cannot be set lower.

Prefer an export from your DMS or website provider whenever one is available.

Tips #

  • Name sources after where the data comes from and how often it runs, so alerts make sense at a glance.
  • Run a dry run after any change to the mapping.
  • Use the Vehicles count on the imports page to jump to every unit that came from a source.
  • On a phone, the imports page stacks neatly, which is handy for checking a failed run on the go.
The imports page on a phone (open full size)
Inventory › Imports on a phone.
  1. Source types. The same buttons, stacked.

Permissions #

Limitations #

Screenshots show the fictional demo dealership. Something unclear or out of date? Tell your MotoDealerHQ contact or email support@motodealerhq.com.

v1.0.0-beta.1 “Assen”