> ## Documentation Index
> Fetch the complete documentation index at: https://docs.goautofire.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Inventory Imports

> Sync your Frazer DMS (or any CSV) inventory into AutoFire automatically

# Inventory Imports

Bring existing inventory into AutoFire without re-typing every VIN. Imports read CSV from your DMS (Frazer is supported out of the box; any CSV export works) and keep AutoFire aligned with your lot.

## In this guide

* 1-click website migration from a compatible dealer site
* CSV column mapping and dry-run preview
* VIN reconciliation (insert, update, mark sold)
* HTTPS automation with upload tokens

<Note>
  Imports dedupe by VIN, update existing vehicles in place, and automatically
  mark any vehicle that is no longer in the file as **Sold**. You will not end
  up with duplicate listings.
</Note>

## What you can do

<CardGroup cols="2">
  <Card title="Map your CSV once" icon="table-columns">
    A HubSpot-style mapper auto-detects columns like VIN, Year, Make, Model,
    Price, and Photos. You confirm the mapping once and we remember it.
  </Card>

  <Card title="Upload manually or automatically" icon="upload">
    Drag a CSV in the dashboard, or post the same file to a private upload URL
    on a schedule from your DMS or a small bridge service.
  </Card>

  <Card title="Mirror photos into AutoFire" icon="image">
    Photo URLs in your CSV are downloaded and re-hosted in your dealership
    storage so listings keep working even if your DMS images move.
  </Card>

  <Card title="Audit every run" icon="clock-rotate-left">
    Every import is logged with inserts, updates, sold marks, and per-row
    errors so you always know what changed.
  </Card>
</CardGroup>

## 1-click website migration

Paste your existing dealer website URL to crawl inventory, mirror vehicle photos, and pull basic branding (name, phone, address, logo, hours). **DealerWebsites.com** sites are supported; other platforms may work when AutoFire detects a compatible inventory API.

<Steps>
  <Step title="Open Imports">
    From the dashboard sidebar, choose **Imports**.
  </Step>

  <Step title="Paste your old site URL">
    In the **1-click website migration** section, enter your current dealer website URL (e.g. `https://youroldsite.com`).
  </Step>

  <Step title="Preview migration">
    Click **Preview migration** to see vehicle count, sample listings, and detected branding.
  </Step>

  <Step title="Apply branding (optional)">
    Check **Apply branding** if you want AutoFire to import logo, contact, and address fields from the source site.
  </Step>

  <Step title="Run the import">
    Confirm the preview and start the migration. Progress appears in the UI; large lots may take a few minutes.
  </Step>
</Steps>

<Note>
  Migration imports vehicles using the same VIN-based reconciliation rules as CSV imports—existing VINs update in place; missing VINs can be marked sold.
</Note>

## CSV import quick start

<Steps>
  <Step title="Open the Imports page">
    From the dashboard sidebar, choose **Imports**.
  </Step>

  <Step title="Issue an upload token (optional, for automation)">
    Click **Issue upload token** in the *Frazer connection* card. We will show
    the token once — copy it and store it somewhere safe like a password
    manager. You can rotate it any time.

    <Warning>
      Treat the upload token like a password. Anyone who has it can post
      inventory updates to your dealership.
    </Warning>
  </Step>

  <Step title="Upload a sample CSV">
    Click **Choose CSV…** and pick a recent export from Frazer (or whatever
    DMS you use). We will read the column headers and a few sample rows.
  </Step>

  <Step title="Confirm the column mapping">
    Each CSV column is matched to an AutoFire field with a confidence label:

    * **Matched** — we are confident this is the right field.
    * **Suggested** — likely match. Double-check it.
    * **Unmapped** — we could not find a match. Pick a field or leave it as
      *— ignore column —*.

    You must map a column to **VIN**, **Year**, **Make**, **Model**, and
    **Price** before you can import.
  </Step>

  <Step title="Save the mapping">
    Click **Save mapping**. From now on, files with the same headers will
    import automatically using these settings.
  </Step>

  <Step title="Run a dry-run preview">
    Click **Dry run preview**. AutoFire will read the file and show you
    exactly how many vehicles would be inserted, updated, marked sold, or
    skipped — without changing your inventory.
  </Step>

  <Step title="Run the real import">
    When the preview looks right, click **Import now**. We update your
    inventory, archive the CSV, and add the run to your history.
  </Step>
</Steps>

## Required Columns

These five columns must be mapped before AutoFire will accept an import:

<CardGroup cols="3">
  <Card title="VIN" icon="barcode">
    17-character vehicle identification number. Used to dedupe and match.
  </Card>

  <Card title="Year" icon="calendar">
    Model year (1900–next year + 1).
  </Card>

  <Card title="Make" icon="industry">
    e.g. Ford, Toyota, Chevrolet.
  </Card>

  <Card title="Model" icon="car">
    e.g. F-150, Camry, Silverado.
  </Card>

  <Card title="Price" icon="dollar-sign">
    Asking price. Currency symbols and commas are handled automatically.
  </Card>
</CardGroup>

Optional columns we will recognize and use when available include Stock Number,
Trim, Mileage, Exterior / Interior Color, Body Style, Transmission, Drivetrain,
Fuel Type, Engine, Doors, Description, Features, Status, and one or more Photo
URL columns (`Photo1`, `Photo2`, … or `ImageURL_1`, etc. are auto-detected).

## How Reconciliation Works

<AccordionGroup>
  <Accordion title="Matching by VIN">
    Every row is matched to your existing inventory by VIN. Rows without a
    valid 17-character VIN are skipped and recorded in the run errors.
  </Accordion>

  <Accordion title="Insert vs. update">
    * VINs you have not seen before are **inserted** as new vehicles.
    * VINs already in your inventory are **updated** in place — their photos,
      pricing, mileage, and details are refreshed from the file.
  </Accordion>

  <Accordion title="Marking sold cars">
    Any AutoFire vehicle whose VIN is **not** in the latest CSV is moved to
    **Sold** status. We never delete inventory automatically — sold vehicles
    stay in your dashboard for record-keeping and FireCompare history.
  </Accordion>

  <Accordion title="Duplicate VINs in one file">
    If a VIN appears more than once in a single CSV, we keep the last
    non-empty values for each field and log a duplicate-row warning so you
    can clean up the source export.
  </Accordion>

  <Accordion title="Photos">
    By default, photo URLs in your CSV are **mirrored** — downloaded and
    re-hosted under your dealership in AutoFire. That way, if your DMS image
    URLs change or expire, your AutoFire listings keep working. You can switch
    to *hotlink* mode in the future if you prefer to serve photos directly
    from the source.
  </Accordion>

  <Accordion title="What we never overwrite">
    AutoFire-only fields — like a vehicle being marked **Featured** on your
    homepage, or a generated FireCompare comparison — are preserved across
    imports. The importer only updates the columns it owns.
  </Accordion>
</AccordionGroup>

## Automating Imports

<Note>
  AutoFire is hosted on a global serverless platform and cannot accept FTP or
  SFTP directly. Automation works over secure HTTPS instead, using the upload
  token from the connection card.
</Note>

Once you have an upload token, you (or a small helper service) can post the
same CSV to your dealership's private endpoint:

```bash theme={null}
curl -X POST "https://goautofire.com/api/imports/frazer/upload" \
  -H "Authorization: Bearer afi_yourtokenhere" \
  -H "Content-Type: text/csv" \
  --data-binary "@frazer-export.csv"
```

The response includes the run ID, status, and counts:

```json theme={null}
{
  "run_id": "0b1ad4c8-…",
  "status": "completed",
  "counters": {
    "rowCount": 42,
    "insertedCount": 3,
    "updatedCount": 38,
    "soldCount": 1,
    "errorCount": 0,
    "duplicateVinCount": 0
  }
}
```

<Tip>
  If your DMS only supports FTP/SFTP push, run a small bridge service (e.g. on
  a cheap VM, Raspberry Pi, or anywhere you can run a script) that watches the
  destination folder and re-posts new CSVs to the URL above. AutoFire handles
  everything else.
</Tip>

## Reviewing Past Imports

The **Recent runs** section on the Imports page shows the last 25 imports for
your dealership. Each row tells you:

* When the import ran and what file it came from.
* Whether it was a manual upload, a dashboard run, or an automated upload.
* Counts for inserts, updates, sold, skipped, and errors.
* Whether the run was a dry-run preview or a real import.

Per-row errors (bad VIN, missing required field, photo download failure, etc.)
are stored alongside the run and surfaced when needed.

## Troubleshooting

<AccordionGroup>
  <Accordion title="“Map a CSV column to: VIN, Year, …”">
    AutoFire could not find a match for one of the required fields. Open the
    mapping dropdown next to a column that contains that data and pick the
    correct AutoFire field, then click **Save mapping**.
  </Accordion>

  <Accordion title="“Invalid or disabled upload token”">
    The token may have been rotated or the import provider may have been
    disabled. Open the dashboard, rotate the token, and update wherever you
    use it. Old tokens stop working immediately when rotated.
  </Accordion>

  <Accordion title="Some rows show ‘invalid_vin_format’">
    VINs must be 17 characters and use only letters/digits (no I, O, or Q).
    Clean the bad rows in your DMS export — they will be skipped, not the
    whole import.
  </Accordion>

  <Accordion title="A photo did not appear">
    Each photo must be a public URL returning a JPEG, PNG, or WebP under 5 MB.
    Photo errors are recorded as row errors but do not stop the rest of the
    vehicle from being imported.
  </Accordion>

  <Accordion title="A vehicle is unexpectedly marked Sold">
    That VIN was missing from the most recent CSV. Add the vehicle back to
    your DMS export and run an import — AutoFire will set it back to
    Available and keep its existing data.
  </Accordion>
</AccordionGroup>

## Next steps

<Steps>
  <Step title="Verify public listings">
    [Inventory management](/dealer-guide/inventory) — review status, photos, and descriptions after import.
  </Step>

  <Step title="Preview your site">
    [Your dealer website](/dealer-guide/website) — confirm VDPs look correct.
  </Step>

  <Step title="Pro: syndicate">
    [Distribution feeds](/dealer-guide/distribution) — push the same stock to marketplaces.
  </Step>
</Steps>

<CardGroup cols={2}>
  <Card title="Inventory" icon="car" href="/dealer-guide/inventory">
    Manual edits and status workflow
  </Card>

  <Card title="Website" icon="globe" href="/dealer-guide/website">
    How imports appear on your public site
  </Card>
</CardGroup>
