Car logos for dealership website platforms

Every rooftop you host sells a different set of makes. Serve the right badge on inventory filters, brand pages, and dealer group headers from one URL pattern, with no logo folder to copy into each new site and no theme release when a manufacturer changes its mark.

See what it saves
northgateauto.example/inventory

Northgate Auto Group

8 franchises · 3 locations

12 vehicles

Sorted by price

  • Hyundai badge

    2024 Hyundai Tucson SEL

    Used · Stock Y24-0658

    $27,250

  • Honda badge

    2024 Honda Civic Si

    Used · Stock H24-0925

    $29,800

  • Volkswagen badge

    2024 Volkswagen Tiguan SE R-Line

    Certified · Stock V24-0349

    $31,980

  • Chevrolet badge

    2025 Chevrolet Equinox RS

    New · Stock C25-0277

    $32,690

  • Honda badge

    2025 Honda CR-V Sport-L

    New · Stock H25-1180

    $35,455

  • Toyota badge

    2025 Toyota RAV4 Hybrid XLE

    New · Stock T25-0412

    $36,740

  • Toyota badge

    2024 Toyota Tacoma TRD Off-Road

    Used · Stock T24-0388

    $41,200

  • Subaru badge

    2025 Subaru Outback Touring XT

    New · Stock S25-0104

    $42,295

  • BMW badge

    2024 BMW X3 xDrive30i

    Certified · Stock B24-0071

    $46,500

  • Ford badge

    2024 Ford F-150 XLT SuperCrew

    Certified · Stock F24-0931

    $47,900

  • Ford badge

    2025 Ford Bronco Outer Banks

    New · Stock F25-0102

    $48,965

  • BMW badge

    2025 BMW i4 eDrive40

    New · Stock B25-0016

    $57,900

GET https://motomarks.io/img/toyota?type=badge&size=xsContent-Type: image/webp
A dealer group inventory page built on the CDN. Every badge is a live request to motomarks.io/img; the filter, the franchise strip, and the result rows share one URL pattern and differ only by size. Click a make to filter.

What it changes for a dealer platform

A platform's costs scale with rooftops. Logo work is one of the few that does not have to. Four costs that stop growing with the estate, and what each one replaces.
Rooftops launch without an asset step
A new dealer's franchise strip is eight slugs in a config file. The site goes live when the content is ready, not when someone finds the Ram badge at the right size and drops it into the theme.
Replaces an asset checklist for every new rooftop
One fix reaches every dealer site
When a manufacturer refreshes its mark, every rooftop you host picks up the new asset within a day from the same URL. No theme release, no per-site deploy, no dealer left on the old logo.
Replaces a theme release and redeploy per rebrand
Current marks on every rooftop
Manufacturer brand standards reach dealers through the franchise agreement, and the website is the first place a field rep looks. Serving the current mark everywhere removes one thing your dealers can be flagged for.
Replaces brand-standards fixes chased site by site
Tickets that are never raised
"Our Chevrolet logo is the old one" is a support ticket, an asset hunt, and a redeploy. When the badge comes from a maintained URL, the dealer never has a reason to send it.
Replaces brand-asset support tickets from dealers

How Leaselab took 100 brands off the operations budget

Leaselab is a leasing business rather than a dealer platform, but the shape is the same one you run: one company, several platforms, more than 100 brands that all have to stay current everywhere. This is what their CTO said changed.
Company
Leaselab
Footprint
Multiple platforms
Library
More than 100 automotive brands
Before Motomarks
An extensive operational cost

What the team stopped doing

  1. 01

    Hours chasing updated brand assets

    The asset behind the URL is updated; the URL does not change

  2. 02

    Resizing logos by hand for each placement

    size= and type= are query parameters

  3. 03

    Applying one change across various systems

    Every platform reads the same URL, so one update reaches all of them

What I care about is what stops being an engineering ticket. A manufacturer rebrand used to be a change in every platform we run, tested and deployed separately. Now the asset changes behind a URL we already call and our caches roll over within a day. Nobody on my team touches it.
AC
Adrian Ciaschetti
CTO, Leaselab

Where the badges go on a dealer site

Five placements, one URL pattern. Each row is the literal query string the template sends for that spot.
Inventory filters
A 20px badge beside each make and its count. WebP by default, so a thirty-make filter stays light.
type=badge&size=xs
Franchise strip
The brands a rooftop sells, in the header or footer of every page that rooftop serves.
type=badge&size=sm
Vehicle detail header
The make badge next to year, model, and trim, matched to the listing it came from.
type=badge&size=sm
Brand landing pages
A full logo at the top of /new/toyota, sized for a hero and cached for a day.
type=full&size=lg
Service and parts pages
The makes a service centre works on, without a second image set to maintain.
type=badge&size=sm

What logos in the theme cost a platform each year

The defaults describe a platform carrying forty franchise makes across a dealer theme, an inventory app, and a group-site template. A rebrand in that setup is a theme change, a test pass, and a redeploy across the estate. Put in your own numbers.

Leaselab maintains more than 100

Dealer theme, inventory app, group-site template

Rebrands, new brands, corrections

Source, resize, convert, commit, deploy, check

Find, trim, export sizes and formats, once

Salary, benefits, and overhead per hour

Motomarks plan to compare

Your numbers; change any input. First year = brands × minutes per brand + changes × codebases × hours per change. Each year after drops the one-time build. The model counts engineering time only; it leaves out CDN hosting, storage, and the cost of shipping an out-of-date mark.

Coverage for franchise rooftops

The makes dealer groups sell, published as badges you can filter on today. Each tile links to the brand's logo page with its available variants and sizes. See the full index on the browse page.

Integration in four steps

From a raw inventory feed to badges on every rooftop. The same steps apply whether your platform renders server-side templates or a JavaScript front end.
One partial in the theme. Adding a rooftop is a config change, and a rebrand is not a release.
AC
Adrian Ciaschetti
CTO, Leaselab
  1. 01

    Map inventory feed makes to brand slugs

    Your DMS or inventory feed spells makes its own way (MERCEDES-BENZ, Mercedes Benz). Pull the published list from the JSON API on your server once a day and store the id next to each make in your own tables.

    Secret keys stay on the server. The browser only ever sees the publishable key in image URLs.

    sync-brand-slugs.ts
    const res = await fetch("https://api.motomarks.io/brands", {
      headers: { Authorization: `Bearer ${process.env.MOTOMARKS_SECRET_KEY}` },
    });
    const brands: { id: string; name: string }[] = await res.json();
    
    // "mercedes-benz" <- "Mercedes-Benz"
    const slugByName = new Map(
      brands.map((brand) => [brand.name.toLowerCase(), brand.id]),
    );
    
    await db.makes.upsertMany(
      feedMakes.map((make) => ({
        name: make,
        slug: slugByName.get(make.toLowerCase()) ?? null,
      })),
    );
  2. 02

    Render the badge from one template partial

    One partial serves the filter, the result rows, and the detail header. The only thing that changes per placement is the size parameter.

    Keep the make name in alt and in visible text so the interface reads correctly if a variant is not published for a brand.

    partials/make-badge.html
    <img
      src="https://motomarks.io/img/{{ vehicle.make_slug }}?type=badge&size=xs&token=pk_YOUR_PUBLISHABLE_KEY"
      alt="{{ vehicle.make }}"
      width="20"
      height="20"
      loading="lazy"
    />
    <span>{{ vehicle.make }}</span>
  3. 03

    Configure each rooftop's franchise list

    The franchise strip and the make filter read the same array. Adding a rooftop or a new franchise is a config change, not an asset upload into the theme.

    dealers/northgate-auto.json
    {
      "dealer": "northgate-auto",
      "domain": "northgateauto.example",
      "franchises": [
        "toyota", "honda", "ford", "chevrolet",
        "hyundai", "subaru", "volkswagen", "bmw"
      ]
    }
  4. 04

    Let the CDN and the browser cache

    Every image ships with a 24-hour Cache-Control header from an AWS CloudFront-backed CDN. Add loading="lazy" to filter and list badges, and preload only the badge above the fold on a brand landing page.

    On Pro, restrict the publishable key to your dealer domains (*.yourplatform.example) so a copied key cannot be reused elsewhere.

    Response headers
    HTTP/1.1 200 OK
    Content-Type: image/webp
    Cache-Control: public, max-age=86400, immutable

Questions before you integrate

Do I need a separate API key for every dealer site?

No. One publishable key can serve every rooftop on your platform. The usage dashboard attributes browser requests by their Referer host, so you still see traffic per dealer domain. On Pro and Enterprise you can also restrict a key to an allowlist of hostnames, including wildcard subdomains such as *.yourplatform.example.

How does attribution work on a platform with many sites?

On the Free plan, each production site that displays logos needs a visible link back to motomarks.io. Startup ($19/month) and Pro ($49/month) remove the attribution requirement, which is the usual fit for a platform hosting many dealer domains.

What if a make in our feed is not published?

Keep the make name in the markup and let the badge fall back to text. Check the browse index for current coverage and request missing brands from the submit page. Badge, wordmark, and full-logo availability also varies by brand, so the text label belongs in the template either way.

Can we cache badges on our own CDN?

Temporary caching to improve performance for your users is within the fair use policy, and the Pro plan includes self-hosting and caching permission. Bulk downloading the library for redistribution is not permitted. Most platforms let the browser and the Motomarks CDN handle it: images ship with a 24-hour Cache-Control header.

Which size should a filter badge request?

Request size=xs (64px) for a 20px badge and size=sm (128px) for 32 to 64px placements. Both are served as WebP by default; add format=png where a PDF window sticker or an email needs PNG.

What does this cost compared with keeping logos in the theme?

Pro is $588 a year billed monthly, covers 100,000 requests a day, and lets you restrict the key to your dealer hostnames. Applying a single manufacturer rebrand to a theme, testing it, and redeploying across a rooftop estate usually consumes more engineering time than that. Leaselab described maintaining more than 100 brands across multiple platforms as an extensive operational cost before moving to Motomarks; the cost model on this page runs the same comparison with your numbers.

Add the badges
to your next rooftop.

Create a free key, drop the partial into your template, and the franchise strip renders for every dealer you host. The next rooftop launches without an asset step.

Read the Image CDN docs

Free includes 1,000 requests per day with an attribution link. Startup and Pro remove attribution.