diff --git a/workers/norcalcarbmobile/CUTOVER.md b/workers/norcalcarbmobile/CUTOVER.md new file mode 100644 index 0000000..e9c9834 --- /dev/null +++ b/workers/norcalcarbmobile/CUTOVER.md @@ -0,0 +1,117 @@ +# Cutover — the absolute simplest version + +Do these in order. Do **not** skip step 2 (it's the only one that can break email). + +--- + +## Step 1 — Merge this PR (1 click) + +Click the green **Merge pull request** button at the top of this PR. Confirm with **Confirm merge**. That's it. + +**What happens automatically after you click**: GitHub Actions runs `wrangler deploy` and publishes the site to a preview URL like: + +> `https://norcalcarbmobile..workers.dev/` + +The URL shows up under the **Actions** tab once the green check appears (usually 30–60 seconds). + +**Status check**: nothing is on the real domain yet. Squarespace is still serving `norcalcarbmobile.com`. You can take as long as you want to QA before the next step. + +--- + +## Step 2 — Save your email DNS records (5 minutes, IMPORTANT) + +**Why**: You don't want `bryan@norcalcarbmobile.com` to stop receiving mail when DNS flips. + +**Easiest way (no terminal)**: open this link in a new tab: + +> https://mxtoolbox.com/SuperTool.aspx?action=mx%3anorcalcarbmobile.com + +It will show your **MX records**. Take a screenshot. Then run these three more lookups on the same site (change the dropdown to TXT, then DKIM, then DMARC): + +- TXT for `norcalcarbmobile.com` (SPF record) +- DKIM for `norcalcarbmobile.com` (try selectors: `default`, `google`, `s1`, `selector1`) +- DMARC for `norcalcarbmobile.com` + +Screenshot each one. Save them in a folder. You'll need them in step 4. + +--- + +## Step 3 — QA the preview (5–10 minutes) + +Open the preview URL from Step 1. Click around: + +- [ ] Home loads +- [ ] Click "Services" — page loads +- [ ] Click "Service Areas" — page loads, all city sections show up +- [ ] Click "FAQ" — questions all expand/show correctly +- [ ] Click "About" — your name + CARB ID IF530523 visible +- [ ] Click "Contact" — phone + email work as click-to-call/mailto +- [ ] Click any blog post — reads cleanly +- [ ] Click "Call 916-890-4427" on mobile — actually dials + +If anything looks off, reply in chat and I'll fix it. **Do not move to step 4 until preview is good.** + +--- + +## Step 4 — Add the domain to Cloudflare (10 minutes) + +1. Go to https://dash.cloudflare.com/ +2. Top-right: **Add a site** +3. Type `norcalcarbmobile.com` → **Continue** +4. Pick the **Free** plan → **Continue** +5. Cloudflare scans your existing DNS records. **Verify the MX/SPF/DKIM/DMARC records from your screenshots are all there**. If anything is missing, click **Add record** and add it. **For MX and TXT records: keep the cloud icon GREY (DNS only) — not orange.** +6. Cloudflare will give you 2 nameservers like `lola.ns.cloudflare.com` and `walt.ns.cloudflare.com`. Copy them. + +--- + +## Step 5 — Point Squarespace at Cloudflare's nameservers (5 minutes) + +1. Log in to Squarespace. +2. **Settings** → **Domains** → click `norcalcarbmobile.com`. +3. Find **Nameservers** (sometimes called "Use custom nameservers"). +4. Replace Squarespace's nameservers with the two Cloudflare nameservers from step 4. +5. Save. + +DNS takes 5–60 minutes to propagate worldwide. While it's propagating, both Squarespace and Cloudflare may serve traffic depending on the visitor. + +--- + +## Step 6 — Tell me you're at this step + +Reply in chat: "DNS is on Cloudflare". I will then push a one-line change to `wrangler.toml` that attaches the custom domain. After that, `https://norcalcarbmobile.com/` serves the new site within 1–2 minutes (Cloudflare provisions SSL automatically). + +--- + +## Step 7 — Verify email still works + +From your phone or another email account, send an email to `bryan@norcalcarbmobile.com`. Confirm it arrives. If it doesn't, check Cloudflare DNS → confirm MX/SPF/DKIM/DMARC records match the screenshots from step 2. + +--- + +## Step 8 — Post-launch checklist (do over the next 7 days) + +- [ ] Resubmit sitemap in [Google Search Console](https://search.google.com/search-console): add property `norcalcarbmobile.com`, submit `https://norcalcarbmobile.com/sitemap.xml`. +- [ ] In [Google Business Profile](https://business.google.com/), open both Sacramento and Oakland listings → Edit → Website → confirm URL is `https://norcalcarbmobile.com/` → Save (forces a refresh). +- [ ] Update website link on **Yelp**, **BBB**, **Bing Places**, **Apple Business Connect** if they're stale. +- [ ] Send a test invoice or any other workflow that depends on the domain to confirm everything works end-to-end. +- [ ] **+7 days from launch**: cancel Squarespace subscription. Save the cancellation confirmation email. + +--- + +## What I'll handle for you + +- All ongoing site edits (call, email, Slack, or comment in GitHub) +- Wiring native Google Calendar booking on `/api/schedule` +- Adding more blog posts (~30 more queued in BLOG_PLAN.md) +- Adding city-specific landing pages +- Domain transfer to Cloudflare as registrar (saves ~$15/yr) at +30 days + +--- + +## What you decide — not blockers, can flip later + +| Question | Default | Reply with one word to change | +|---|---|---| +| Background color | white | "charcoal" | +| CTA color | red | "green" | +| Font | system | "Inter" | diff --git a/workers/norcalcarbmobile/MIGRATION_ADDENDUM.md b/workers/norcalcarbmobile/MIGRATION_ADDENDUM.md new file mode 100644 index 0000000..8d3766d --- /dev/null +++ b/workers/norcalcarbmobile/MIGRATION_ADDENDUM.md @@ -0,0 +1,158 @@ +# Migration Addendum — Gaps consolidated + +Reconciles this plan with the parallel Manus checklist. Captures every item either side caught, plus things neither caught. + +--- + +## A. Gaps Manus caught that we should add + +### A1. MX records / email continuity (CRITICAL) + +**Risk**: If `norcalcarbmobile.com` has email accounts (`bryan@`, `sales@`, etc.) hosted via Squarespace's Google Workspace integration or any other MX, **changing DNS will break email** unless MX records are preserved. + +**Action before DNS flip**: +1. Run `dig norcalcarbmobile.com MX` and screenshot the output. These are the records that must continue working after cutover. +2. In Cloudflare DNS dashboard, recreate every MX record exactly. Do NOT proxy MX records (orange cloud OFF — grey cloud only for MX, TXT, SPF, DKIM, DMARC). +3. Also preserve: SPF (`TXT v=spf1 ...`), DKIM (`TXT default._domainkey...`), DMARC (`TXT _dmarc...`), and any `_acme-challenge` for Let's Encrypt. +4. **Test before flipping**: send a test email to `bryan@norcalcarbmobile.com` *before* changing nameservers. Confirm receipt. Then change nameservers. + +**If email is Squarespace-hosted**: leaving Squarespace cancels the email plan. Migrate to Cloudflare Email Routing (free, forwards `@norcalcarbmobile.com` → personal Gmail) or Google Workspace direct (~$6/user/mo) **before** cancelling Squarespace. + +### A2. Domain transfer to Cloudflare as registrar (optional, post-launch) + +Manus suggests transferring the domain registration itself to Cloudflare. This is **not required for migration** — we just change nameservers — but worth doing later because: +- Cloudflare charges at-cost renewal (typically $9.77/yr for `.com` vs Squarespace's $25/yr). +- One vendor for DNS + registrar is simpler. + +Sequence: +1. **Now**: change nameservers only (no transfer). Site goes live. +2. **+30 days post-launch**: initiate transfer (ICANN requires 60 days from any prior change). +3. Get auth code from current registrar (Squarespace), enter in Cloudflare, pay transfer fee (which adds 1 year of registration), confirm via email. + +Not blocking the migration. Park as a follow-up. + +--- + +## B. Things this plan has that Manus appears to lack + +Don't lose these in the merge: + +| Item | Why it matters | +|---|---| +| `Person` + `hasCredential` JSON-LD with CARB Tester IF530523 | E-E-A-T signal Google explicitly requires per Search Quality Rater Guidelines §2.5 | +| `LocalBusiness.location` array with Sacramento + Oakland | Google fuses both offices into one entity | +| `/llms.txt` + `/llms-full.txt` | AI search readiness (ChatGPT/Claude/Perplexity) | +| `robots.txt` allowlist for GPTBot/ClaudeBot/PerplexityBot/Google-Extended/Applebot-Extended/CCBot | Without this, AI engines can't quote the site | +| FAQPage schema with 13 self-contained Q&A | Eligible for Google rich results + AI extraction | +| Service-area-business GBP setting (no street address) | Correct configuration for mobile services per Google's own guidance | +| `CITATIONS.md` with sources for every design choice | Defensible — every decision is backed by a Google/OpenAI/Anthropic/CARB doc | +| 30+ post blog plan with cluster strategy | Programmatic SEO scaling | +| OVI-J1667 terminology throughout (not "smoke test") | Ranks for compliance-literate searchers (fleet managers) | + +--- + +## C. Items NEITHER plan caught — add now + +### C1. Cloudflare Turnstile on the contact form +**What**: Free CAPTCHA replacement, invisible by default. Ships with one ` + + + + + +
+
+
+ +

Bryan Gillis — Owner & Licensed CARB Tester

+

CARB Tester ID IF530523 · Licensed by the California Air Resources Board · Sacramento • Oakland

+
+
+
+
+
+
Bryan Gillis, Owner NorCal CARB Mobile, CARB Tester IF530523
+
+

Who we are

+

NorCal CARB Mobile is a licensed mobile emissions testing company owned and operated by Bryan Gillis. We come directly to your yard, your lot, or your job site — eliminating the cost and downtime of hauling heavy vehicles to a fixed shop.

+

Bryan holds CARB Tester ID IF530523, issued by the California Air Resources Board. Every test NorCal CARB Mobile performs is official, documented, and accepted for California registration, CARB Clean Truck Check compliance, and HD-OBD reporting.

+
Owner
Bryan Gillis
CARB Tester ID
IF530523
Licensing authority
California Air Resources Board
Offices
Sacramento • Oakland
Coverage
Northern California-wide
+
+
+
+
+
+
+

Why a licensed mobile tester?

+
+

Official CARB credential

License ID IF530523 means every result NorCal CARB Mobile issues is a state-recognized document. Not a printout from a third-party app — an official CARB record.

+

We know the regulations

CARB rules change. Clean Truck Check phases in by vehicle weight, model year, and engine family. HD-OBD reporting deadlines. We track this so you don’t have to.

+

Experience with fleets and RVs

From owner-operators to multi-truck fleets, from pickup-towed RVs to Class A motorhomes. If CARB requires it, we can test it.

+

We back our work

Free retest within 150 days on a failed test. If we made an error, we fix it at zero cost. No fine print.

+
+
+
+
+
+

Our offices

+
+

Sacramento

Our primary office, serving the Sacramento Metro, Central Valley (Stockton, Modesto, Lodi), and the I-5 / Hwy 99 corridors north to Butte County.

+

Oakland

East Bay and Bay Area hub, serving Oakland, Hayward, Antioch, Fairfield, San Jose, Napa, North Bay, and extended areas.

+
+

See the full service area list →

+
+
+
+
+

Ready to schedule with Bryan?

+

Call, email, or use the contact form. We respond within the hour during business hours.

+ +
+
+
+ + + diff --git a/workers/norcalcarbmobile/public/assets/site.css b/workers/norcalcarbmobile/public/assets/site.css index 8e8d1ca..f65b956 100644 --- a/workers/norcalcarbmobile/public/assets/site.css +++ b/workers/norcalcarbmobile/public/assets/site.css @@ -1,99 +1,126 @@ /* NorCal CARB Mobile — site.css - Brand: Navy #002244, Red #C60C30, White. - Mobile-first, no framework, no external deps. */ + Manus theme: charcoal #0f1b2e background, safety lime #a3e635 CTAs, Inter font. + Mobile-first, no framework. */ + +@import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&display=swap'); :root { - --navy: #002244; - --navy-ink: #0a1b33; - --red: #c60c30; - --red-dark: #a00a28; - --bg: #ffffff; - --mute: #5a6776; - --soft: #f5f7fa; - --line: #e2e8f0; + --navy: #e8edf3; /* primary visible text/border on dark */ + --navy-ink: #e8edf3; /* body text on dark */ + --red: #a3e635; /* safety lime — CTA accent */ + --red-dark: #84cc16; /* darker lime for hover */ + --bg: #0f1b2e; /* page background — deep charcoal */ + --bg-soft: #172238; /* slightly lighter charcoal for alt sections */ + --surface: #1a2840; /* cards / header / footer surface */ + --mute: #9ba8bc; /* muted text */ + --soft: #172238; /* alt section background */ + --line: #2a3a5a; /* borders on dark */ + --on-accent: #0f1b2e; /* dark text on lime button */ --max: 1100px; } * { box-sizing: border-box; margin: 0; padding: 0; } html { scroll-behavior: smooth; -webkit-text-size-adjust: 100%; } -body { font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif; color: var(--navy-ink); background: var(--bg); line-height: 1.6; font-size: 17px; } +body { font-family: Inter, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif; color: var(--navy-ink); background: var(--bg); line-height: 1.6; font-size: 17px; } a { color: var(--red); text-decoration: underline; text-underline-offset: 2px; } a:hover { color: var(--red-dark); } img { max-width: 100%; height: auto; display: block; } .container { max-width: var(--max); margin: 0 auto; padding: 0 20px; } -.skip { position: absolute; left: -9999px; top: 0; background: var(--navy); color: #fff; padding: 10px 16px; z-index: 9999; } +.skip { position: absolute; left: -9999px; top: 0; background: var(--surface); color: #fff; padding: 10px 16px; z-index: 9999; } .skip:focus { left: 10px; top: 10px; } -.site-header { background: var(--navy); color: #fff; position: sticky; top: 0; z-index: 100; box-shadow: 0 1px 0 rgba(0,0,0,0.1); } +.site-header { background: var(--surface); color: #fff; position: sticky; top: 0; z-index: 100; box-shadow: 0 1px 0 rgba(0,0,0,0.5); border-bottom: 1px solid var(--line); } .site-header a { color: #fff; text-decoration: none; } .header-inner { display: flex; align-items: center; justify-content: space-between; padding: 14px 0; gap: 16px; flex-wrap: wrap; } .brand { font-weight: 800; font-size: 18px; letter-spacing: 0.2px; } -.brand small { display: block; font-size: 11px; font-weight: 500; color: #b6c2d1; letter-spacing: 1.2px; text-transform: uppercase; } +.brand small { display: block; font-size: 11px; font-weight: 500; color: var(--mute); letter-spacing: 1.2px; text-transform: uppercase; } .nav { display: flex; gap: 18px; font-size: 15px; font-weight: 600; flex-wrap: wrap; } .nav a { padding: 6px 2px; border-bottom: 2px solid transparent; } .nav a:hover, .nav a[aria-current="page"] { border-bottom-color: var(--red); } -.call-btn { background: var(--red); color: #fff !important; padding: 10px 18px; border-radius: 6px; font-weight: 700; text-decoration: none !important; } +.call-btn { background: var(--red); color: var(--on-accent) !important; padding: 10px 18px; border-radius: 6px; font-weight: 800; text-decoration: none !important; } .call-btn:hover { background: var(--red-dark); } -.hero { background: linear-gradient(180deg, var(--navy) 0%, #001933 100%); color: #fff; padding: 64px 0 56px; } -.hero h1 { font-size: clamp(28px, 5vw, 44px); line-height: 1.15; margin-bottom: 14px; font-weight: 800; } -.hero h1 .accent { color: #ffb3bf; } -.hero .lede { font-size: clamp(17px, 2.2vw, 20px); color: #d6e1ef; max-width: 760px; margin-bottom: 24px; } +.hero { background: linear-gradient(180deg, var(--bg) 0%, var(--bg-soft) 100%); color: #fff; padding: 64px 0 56px; } +.hero h1 { font-size: clamp(28px, 5vw, 44px); line-height: 1.15; margin-bottom: 14px; font-weight: 800; color: #fff; } +.hero h1 .accent { color: var(--red); } +.hero .lede { font-size: clamp(17px, 2.2vw, 20px); color: var(--mute); max-width: 760px; margin-bottom: 24px; } .hero .cta-row { display: flex; gap: 12px; flex-wrap: wrap; } .btn-primary, .btn-secondary { display: inline-block; padding: 14px 26px; border-radius: 8px; font-weight: 700; font-size: 16px; text-decoration: none; transition: transform 0.15s ease; } -.btn-primary { background: var(--red); color: #fff; } -.btn-primary:hover { background: var(--red-dark); color: #fff; transform: translateY(-1px); } +.btn-primary { background: var(--red); color: var(--on-accent); } +.btn-primary:hover { background: var(--red-dark); color: var(--on-accent); transform: translateY(-1px); } .btn-secondary { background: transparent; color: #fff; border: 2px solid #fff; } -.btn-secondary:hover { background: #fff; color: var(--navy); } -.badges { display: flex; gap: 28px; margin-top: 36px; flex-wrap: wrap; color: #d6e1ef; font-size: 14px; } +.btn-secondary:hover { background: #fff; color: var(--bg); } +.badges { display: flex; gap: 28px; margin-top: 36px; flex-wrap: wrap; color: var(--mute); font-size: 14px; } .badges strong { color: #fff; display: block; font-size: 16px; } +.crumbs-hero { font-size: 14px; color: var(--mute); margin-bottom: 16px; } +.crumbs-hero a { color: var(--red); } +.crumbs-hero a:hover { color: var(--red-dark); } + main section { padding: 56px 0; } main section.alt { background: var(--soft); } -h2 { font-size: clamp(24px, 3.5vw, 34px); color: var(--navy); margin-bottom: 12px; font-weight: 800; line-height: 1.2; } -h3 { font-size: 20px; color: var(--navy); margin-bottom: 8px; font-weight: 700; } +h2 { font-size: clamp(24px, 3.5vw, 34px); color: #fff; margin-bottom: 12px; font-weight: 800; line-height: 1.2; } +h3 { font-size: 20px; color: #fff; margin-bottom: 8px; font-weight: 700; } p { margin-bottom: 14px; } ul, ol { padding-left: 22px; margin-bottom: 14px; } li { margin-bottom: 6px; } .sub { color: var(--mute); font-size: 17px; margin-bottom: 32px; max-width: 720px; } +hr { border: none; border-top: 1px solid var(--line); margin: 40px 0; } + .grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); gap: 20px; } -.card { background: #fff; border: 1px solid var(--line); border-radius: 12px; padding: 24px; } -.card.alt { background: var(--soft); } +.card { background: var(--surface); border: 1px solid var(--line); border-radius: 12px; padding: 24px; transition: box-shadow 0.15s, border-color 0.15s, transform 0.15s; } +.card:hover { box-shadow: 0 4px 16px rgba(163,230,53,0.10); border-color: rgba(163,230,53,0.3); } +.card.alt { background: var(--bg-soft); } .card h3 { margin-bottom: 8px; } .card .price { font-size: 24px; color: var(--red); font-weight: 800; margin: 8px 0 4px; } .card .price small { color: var(--mute); font-size: 13px; font-weight: 500; } -.faq-item { border: 1px solid var(--line); border-radius: 10px; padding: 18px 22px; margin-bottom: 14px; background: #fff; } +.about-grid { display: grid; grid-template-columns: 1fr; gap: 32px; align-items: start; } +@media (min-width: 720px) { .about-grid { grid-template-columns: 320px 1fr; gap: 40px; } } +.about-photo img { border-radius: 12px; width: 100%; max-width: 320px; } + +.price-block { margin: 20px 0; padding: 16px 20px; background: var(--surface); border: 1px solid var(--line); border-radius: 8px; display: inline-block; } +.price-lg { font-size: 32px; font-weight: 800; color: var(--red); } +.price-unit { font-size: 14px; color: var(--mute); font-weight: 600; } + +.faq-list .faq-item { border: 1px solid var(--line); border-radius: 10px; padding: 18px 22px; margin-bottom: 14px; background: var(--surface); } +.faq-item h2 { font-size: 20px; color: #fff; margin-bottom: 8px; font-weight: 700; } .faq-item h3 { margin-bottom: 6px; } -.faq-item p { margin: 0; color: var(--navy-ink); } +.faq-item p { margin: 0 0 10px; color: var(--navy-ink); } +.faq-item p:last-child { margin-bottom: 0; } +.faq-item ul { margin-bottom: 10px; color: var(--navy-ink); } -.contact-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: 20px; margin-top: 24px; } -.info-tile { background: var(--soft); border-left: 4px solid var(--red); padding: 18px 20px; border-radius: 6px; } +.contact-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 20px; margin-top: 24px; } +.info-tile { background: var(--surface); border-left: 4px solid var(--red); padding: 18px 20px; border-radius: 6px; } .info-tile h3 { font-size: 14px; text-transform: uppercase; letter-spacing: 1.2px; color: var(--mute); margin-bottom: 6px; font-weight: 700; } -.info-tile p, .info-tile a { font-size: 20px; font-weight: 700; color: var(--navy); text-decoration: none; } +.info-tile p, .info-tile a { font-size: 20px; font-weight: 700; color: #fff; text-decoration: none; } .info-tile a:hover { color: var(--red); } -.callout { background: #fff4f5; border-left: 4px solid var(--red); padding: 16px 20px; border-radius: 6px; margin: 16px 0; color: var(--navy-ink); } +.callout { background: rgba(163,230,53,0.06); border-left: 4px solid var(--red); padding: 16px 20px; border-radius: 6px; margin: 16px 0; color: var(--navy-ink); } +.callout dl { display: grid; grid-template-columns: auto 1fr; gap: 6px 16px; margin: 0; } +.callout dt { font-weight: 700; color: #fff; font-size: 14px; } +.callout dd { color: var(--navy-ink); font-size: 14px; margin: 0; } -footer { background: var(--navy); color: #d6e1ef; padding: 48px 0 24px; } +footer { background: var(--surface); color: var(--mute); padding: 48px 0 24px; border-top: 1px solid var(--line); } footer a { color: #fff; text-decoration: none; } -footer a:hover { text-decoration: underline; } +footer a:hover { text-decoration: underline; color: var(--red); } .footer-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: 32px; margin-bottom: 32px; } .footer-grid h4 { color: #fff; font-size: 14px; text-transform: uppercase; letter-spacing: 1.2px; margin-bottom: 12px; } .footer-grid ul { list-style: none; padding: 0; } .footer-grid li { margin-bottom: 8px; font-size: 15px; } -.footer-bottom { border-top: 1px solid rgba(255,255,255,0.12); padding-top: 20px; font-size: 13px; color: #8ea0b8; line-height: 1.9; } - -.crumbs { font-size: 14px; color: var(--mute); margin-bottom: 16px; } -.crumbs a { color: var(--mute); } -.crumbs a:hover { color: var(--red); } +.footer-bottom { border-top: 1px solid var(--line); padding-top: 20px; font-size: 13px; color: var(--mute); line-height: 1.9; } .center { text-align: center; } .muted { color: var(--mute); } .tight { max-width: 760px; margin-left: auto; margin-right: auto; } +table { color: var(--navy-ink); width: 100%; border-collapse: collapse; } +table th { color: #fff; text-align: left; padding: 8px; } +table td { padding: 8px; } +table tr { border-bottom: 1px solid var(--line); } + @media (max-width: 640px) { .site-header .nav { gap: 12px; font-size: 14px; } .badges { gap: 18px; } diff --git a/workers/norcalcarbmobile/public/blog/_template.html b/workers/norcalcarbmobile/public/blog/_template.html new file mode 100644 index 0000000..92b4e32 --- /dev/null +++ b/workers/norcalcarbmobile/public/blog/_template.html @@ -0,0 +1,53 @@ + + + + + + + +POST TITLE | NorCal CARB Mobile Blog + + + + + + + + + + + + +
+
+ + +

POST TITLE

+

Bryan Gillis · Licensed CARB Tester IF530523 · Published May 5, 2026

+
+
+ +
+

Lead with the answer. Then explain.

+

Subheading

+

Body paragraph.

+
+
+

Call to Schedule — 916-890-4427

+
+
+ + diff --git a/workers/norcalcarbmobile/public/blog/carb-penalties-for-non-compliance/index.html b/workers/norcalcarbmobile/public/blog/carb-penalties-for-non-compliance/index.html new file mode 100644 index 0000000..a714616 --- /dev/null +++ b/workers/norcalcarbmobile/public/blog/carb-penalties-for-non-compliance/index.html @@ -0,0 +1,50 @@ + + + + + +CARB Penalties for Non-Compliance | NorCal CARB Mobile + + + + + + + + + + +
+

CARB penalties for non-compliance

Bryan Gillis · Licensed CARB Tester IF530523 · May 5, 2026

+
+

Short answer: A missed CARB test costs more than the test. Fines start at $1,000 per day. DMV blocks your registration. Repeat violations stack and trigger fleet-level audits. Skipping a $75 OBD or $250 OVI-J1667 to save money is the most expensive savings move you can make.

+

1. Daily fines

+

$1,000 per day, per vehicle, accruing from the missed compliance date. CARB does not need to catch you in the act — the database knows when your test was due. Most fines are assessed retroactively after the fact.

+

2. DMV registration hold

+

This is the immediate, automatic penalty. If your truck isn't compliant in CARB's system, DMV will not renew the registration. The truck can't legally operate until you fix it. As of 2026, the hold extends to trailers in some cases.

+

3. Roadside out-of-service order

+

CHP and CARB inspectors can pull a non-compliant truck off the road on the spot. Driver loses the load. Carrier loses the customer.

+

4. Fleet audits

+

Repeat non-compliance across multiple vehicles in a fleet triggers a CARB audit. Auditors review every vehicle, every test record, and every emissions repair. Audits typically last weeks and result in cumulative fines.

+

5. Reputation cost

+

Major shippers (Walmart, Amazon, Target, etc.) and freight brokers require carriers to be CARB-compliant before tendering loads. A non-compliance flag on the truck can lock you out of contracts.

+

The math

+ + + + + + + +
ScenarioCost
OBD test on time$75
OVI-J1667 on time$250
Missed by 30 days$30,000 + DMV hold
Fleet of 10 trucks, 30 days late$300,000 + audit risk
+

Don't be the sample in row 4.

+
+

Call 916-890-4427

+

Related

+ +
+
+ + diff --git a/workers/norcalcarbmobile/public/blog/carb-testing-for-motorhomes-and-rvs/index.html b/workers/norcalcarbmobile/public/blog/carb-testing-for-motorhomes-and-rvs/index.html new file mode 100644 index 0000000..c3b0a9e --- /dev/null +++ b/workers/norcalcarbmobile/public/blog/carb-testing-for-motorhomes-and-rvs/index.html @@ -0,0 +1,41 @@ + + + + + +CARB Testing for Motorhomes and RVs | NorCal CARB Mobile + + + + + + + + + + +
+

CARB testing for motorhomes and RVs

Bryan Gillis · Licensed CARB Tester IF530523 · May 5, 2026

+
+

Short answer: Diesel motorhomes (Class A, B, C) and diesel RVs operating in California are subject to CARB Clean Truck Check rules just like commercial trucks. The same engine-year rule applies: 2013+ needs OBD ($75), pre-2013 needs OVI-J1667 ($250). Some need both.

+

Who's covered

+
  • Class A diesel pushers (Newmar, Tiffin, Entegra, Foretravel, etc.)
  • Class C diesel (Mercedes Sprinter chassis, Ford E-450 with diesel option)
  • Diesel-powered Class B conversions
  • Toy haulers on a diesel chassis
+

Gas-powered RVs are not under Clean Truck Check (they go through DMV smog if applicable). Towed RVs without their own engine don't need testing — just the tow vehicle.

+

What's different about RVs

+

Three things to know:

+
  1. Storage location matters. If your RV lives in storage 350 days a year, it still needs testing during the days it's on California roads. We can come to the storage lot.
  2. OBD ports are sometimes hidden. RV builders bury the dash port behind trim panels. We've seen them all. Have the manual handy if you know it's tricky.
  3. Smoke testing on Class A is loud. Snap-acceleration on a 400hp Cummins is dramatic. Pick a time/place that works for the campsite.
+

Pricing

+
  • OBD only (2013+ engine): $75
  • OVI-J1667 only (pre-2013 engine): $250
  • Both: $325 (combined)
+

Same retest policy applies: free retest within 150 days on fail.

+

Where we test

+

Storage facilities, RV parks, dealerships, your driveway. Anywhere accessible in Northern California from our Sacramento or Oakland office.

+
+

Schedule RV Testing — 916-890-4427

+

Related

+ +
+
+ + diff --git a/workers/norcalcarbmobile/public/blog/clean-truck-check-deadlines-2026/index.html b/workers/norcalcarbmobile/public/blog/clean-truck-check-deadlines-2026/index.html new file mode 100644 index 0000000..9a754f9 --- /dev/null +++ b/workers/norcalcarbmobile/public/blog/clean-truck-check-deadlines-2026/index.html @@ -0,0 +1,40 @@ + + + + + +CARB Clean Truck Check Deadlines for 2026 | NorCal CARB Mobile + + + + + + + + + + +
+

CARB Clean Truck Check deadlines for 2026

Bryan Gillis · Licensed CARB Tester IF530523 · May 5, 2026

+
+

Short answer: Clean Truck Check is fully phased in for 2026 — every heavy-duty diesel truck operating in California (GVWR 14,001 lbs+) must be tested twice per year. Compliance is enforced by DMV registration holds. The state can also assess fines starting at $1,000 per day for non-compliance.

+

The 2026 testing cycle

+

Most fleets are now on a twice-yearly cadence:

+
  • One full OBD test (2013+) or OVI-J1667 (pre-2013) by a licensed tester (us)
  • One self-reported submission via CARB's online portal between licensed tests
+

Specific deadlines fall on a 6-month rolling window from the previous compliance date. Set a calendar reminder for the same day every 6 months. Or just call us — we track your fleet's dates if we tested it last cycle.

+

What changed in 2026

+
  • Roadside camera enforcement expanded — more readers along major freight corridors (I-5, I-80, I-880)
  • Fines now stack daily for repeat non-compliance instead of per-incident
  • DMV holds now block trailer registration too, not just power unit registration
  • Some out-of-state carriers operating >5 days per year in CA are pulled into compliance
+

What happens if you miss

+
  • DMV registration hold (truck can't be re-registered until compliant)
  • $1,000/day fine assessed by CARB after notice
  • Possible roadside out-of-service order during inspection
  • Reputation damage with brokers and shippers who require compliance docs
+

How to stay ahead

+

For owner-operators: book your test 60 days before the compliance date. For fleets: schedule a recurring quarterly visit — we test all your trucks in one stop. Get on the calendar.

+
+

Call 916-890-4427

+

Related

+ +
+
+ + diff --git a/workers/norcalcarbmobile/public/blog/how-to-prepare-for-a-carb-test/index.html b/workers/norcalcarbmobile/public/blog/how-to-prepare-for-a-carb-test/index.html new file mode 100644 index 0000000..484c895 --- /dev/null +++ b/workers/norcalcarbmobile/public/blog/how-to-prepare-for-a-carb-test/index.html @@ -0,0 +1,44 @@ + + + + + +How to Prepare Your Truck for a CARB Test | NorCal CARB Mobile + + + + + + + + + + +
+

How to prepare your truck for a CARB test

Bryan Gillis · Licensed CARB Tester IF530523 · May 5, 2026

+
+

Most CARB test failures are avoidable. Here's a 5-step checklist that gets the majority of trucks through on the first try.

+

1. Drive at least one full duty cycle the day before

+

If you cleared codes recently or had work done, the truck's readiness monitors need to complete before an OBD test will pass. A drive cycle is roughly: cold start, 15+ minutes of mixed driving with at least one highway pull, then a normal shutdown. Plug in a scan tool and check that all monitors say "ready" before we arrive.

+

2. Don't clear codes in the week before

+

Some operators try to clear the Check Engine light hoping the issue is gone. CARB's tool detects recently cleared modules — it'll fail you for that alone. If you have an active code, fix the underlying issue, then drive the truck enough to verify it's actually resolved before the test.

+

3. DEF tank topped off and DEF system functional

+

Diesel Exhaust Fluid (DEF) systems are a top failure point. Make sure:

+
  • DEF tank is at least 1/4 full
  • DEF quality light isn't lit
  • DEF dosing system isn't throwing inducement codes
+

Bad DEF or a failing dosing module = OBD failure.

+

4. For OVI-J1667: warm up the engine first

+

Cold engines smoke. Drive the truck for 20-30 minutes before we arrive, or at minimum let it idle to operating temperature. The opacity reading on a cold truck will be artificially high and you'll fail something you'd otherwise pass.

+

5. Have the truck accessible

+

Sounds obvious, but: park where we can get the OBD port (driver's seat side, usually under the dash) or the exhaust stack reachable. Make sure batteries are charged. If we show up to a dead truck or a truck buried in a yard, the visit gets billed even if we can't test.

+

Bonus: have your VIN and registration ready

+

Speeds up the visit. We need them for the report.

+
+

Schedule a Test — 916-890-4427

+

Related

+ +
+
+ + diff --git a/workers/norcalcarbmobile/public/blog/index.html b/workers/norcalcarbmobile/public/blog/index.html new file mode 100644 index 0000000..709a092 --- /dev/null +++ b/workers/norcalcarbmobile/public/blog/index.html @@ -0,0 +1,48 @@ + + + + + +NorCal CARB Mobile Blog — CARB Testing, Clean Truck Check, Compliance + + + + + + + + + + + + + + + + +
+

Blog — CARB Testing, Clean Truck Check & Compliance

Plain-English answers on CARB rules, deadlines, and what your truck or fleet actually needs. Written by licensed CARB Tester IF530523.

+
+

What is the CARB Clean Truck Check?

May 5, 2026 · Bryan Gillis

California's mandatory emissions testing program for heavy-duty diesel trucks. Who has to comply, what's tested, what it costs, and what happens if you don't.

+ +

What is OVI-J1667 (Smoke / Opacity Testing)?

May 5, 2026 · Bryan Gillis

Opacity Visible Inspection per SAE J1667. The official term for what most people call a "smoke test." Required for pre-2013 heavy-duty diesel. Cost: $250.

+ +

What is HD-OBD reporting?

May 5, 2026 · Bryan Gillis

HD-OBD reporting is the electronic submission of OBD test data to CARB. We handle this as part of every test — here's what's actually transmitted.

+ + + + + +

More posts coming weekly. Topics queued: vehicle-specific guides (semi-trucks, dump trucks, school buses), city-specific testing guides, glossary, and CARB Q&A expansions.

+
+

Need a test now?

Skip the reading. Call us, get a confirmed appointment in the hour.

+
+ + diff --git a/workers/norcalcarbmobile/public/blog/mobile-carb-test-vs-shop-visit/index.html b/workers/norcalcarbmobile/public/blog/mobile-carb-test-vs-shop-visit/index.html new file mode 100644 index 0000000..77f029e --- /dev/null +++ b/workers/norcalcarbmobile/public/blog/mobile-carb-test-vs-shop-visit/index.html @@ -0,0 +1,48 @@ + + + + + +Mobile CARB Test vs Shop Visit — Cost, Time, Hassle | NorCal CARB Mobile + + + + + + + + + + +
+

Mobile CARB test vs shop visit — cost, time, hassle

Bryan Gillis · Licensed CARB Tester IF530523 · May 5, 2026

+
+

Short answer: Hauling a Class 8 truck to a brick-and-mortar shop just to plug into the OBD port costs more in downtime than the test. Mobile testing eliminates the trip and the wait.

+

The honest cost comparison

+ + + + + + + + + +
Cost componentShop visitMobile test
Test fee$95-$150$75 OBD / $250 OVI
Drive time (round trip)1-2 hrs @ $80/hr = $80-160$0
Driver cost during wait$30-50 (sitting in shop)$0 (driver works)
Fuel for trip$30-60$0
Lost load opportunityHalf-day = $200-400$0 (truck stays loaded)
Real total$435-820$75-250
+

The mobile test is cheaper even before you factor in the hassle.

+

For fleets, the gap is bigger

+

Sending 10 trucks to a shop one at a time = 10 trips = ~5 days of cumulative downtime. Mobile fleet visit = one morning at your yard, all 10 trucks tested. The math is brutal in your favor.

+

Are mobile results equivalent?

+

Yes. Identical. Mobile testers use the same CARB-licensed equipment and the same HD-OBD reporting interface. Tester ID IF530523 issues an official, state-recognized result. Nothing about "mobile" makes the test less valid.

+

When you'd still go to a shop

+
  • You're already at the shop for repairs. Test while you're there.
  • You don't have a safe outdoor spot to do the test. (Rare — most yards work.)
  • You don't trust mobile services because someone burned you once. Fair. Try us once and we'll change your mind.
+
+

Schedule Mobile Testing — 916-890-4427

+

Related

+ +
+
+ + diff --git a/workers/norcalcarbmobile/public/blog/obd-vs-ovi-j1667/index.html b/workers/norcalcarbmobile/public/blog/obd-vs-ovi-j1667/index.html new file mode 100644 index 0000000..9298e05 --- /dev/null +++ b/workers/norcalcarbmobile/public/blog/obd-vs-ovi-j1667/index.html @@ -0,0 +1,44 @@ + + + + + +OBD vs OVI-J1667 — Which CARB Test Does My Truck Need? | NorCal CARB Mobile + + + + + + + + + + +
+

OBD vs OVI-J1667 — which does my truck need?

Bryan Gillis · Licensed CARB Tester IF530523 · May 5, 2026

+
+

Short answer: Look at the engine model year on the emissions sticker under the hood (not the truck registration year).

+
  • 2013 or newer engine → OBD testing ($75)
  • Pre-2013 engine → OVI-J1667 smoke/opacity testing ($250)
  • Some compliance programs (PSIP audits, fleet inspections) → both
+

Don't have the sticker handy? Call us with the VIN, we'll confirm in a minute.

+

Why the cutoff is 2013

+

2013 is when CARB required all heavy-duty diesel engines to have full HD-OBD compliance — meaning the ECM tracks emissions performance in real time and stores diagnostic codes for any failure. Before that, OBD wasn't standardized enough across manufacturers to be a reliable compliance tool, so CARB used opacity (OVI-J1667) instead.

+

When you might need both

+
  • Roadside Periodic Smoke Inspection Program (PSIP) audit — CARB occasionally requires a smoke test even on a 2013+ truck
  • Failed OBD that pointed to a smoke-causing issue — the agent may want OVI confirmation that the repair worked
  • Fleet compliance audit — some fleet rules require both as a baseline
+

Cost / time comparison

+ + + + + +
TestCostTimeEngine year
OBD$7515-20 min2013+
OVI-J1667$25020-30 minPre-2013
+

RVs and motorhomes follow the same engine-year rule. More on RV testing.

+
+

Call 916-890-4427

+

Related

+ +
+
+ + diff --git a/workers/norcalcarbmobile/public/blog/what-is-hd-obd-reporting/index.html b/workers/norcalcarbmobile/public/blog/what-is-hd-obd-reporting/index.html new file mode 100644 index 0000000..393dadb --- /dev/null +++ b/workers/norcalcarbmobile/public/blog/what-is-hd-obd-reporting/index.html @@ -0,0 +1,40 @@ + + + + + +What is HD-OBD Reporting? | NorCal CARB Mobile + + + + + + + + + + +
+

What is HD-OBD reporting?

Bryan Gillis · Licensed CARB Tester IF530523 · May 5, 2026

+
+

Short answer: HD-OBD reporting is the electronic submission of heavy-duty on-board diagnostic test data to CARB's database. Under Clean Truck Check, OBD results have to be transmitted electronically — a paper printout doesn't count anymore. NorCal CARB Mobile handles this submission as part of every OBD test.

+

What gets transmitted

+

For each OBD test, the licensed tester's tool sends CARB:

+
  • VIN and license plate
  • Engine identifier (engine model, family, calibration ID)
  • Active and pending diagnostic trouble codes (DTCs)
  • Readiness monitor status (which emissions self-tests have completed)
  • MIL (malfunction indicator lamp) status
  • Tester ID, date, and location
+

This is the same data CARB engineers analyze when they're auditing fleet emissions performance.

+

Why it replaced paper

+

Paper smog certificates can be forged, lost, or backdated. Electronic reporting goes straight from the licensed tester's tool into CARB's database. The vehicle is updated as compliant within minutes — no waiting on mail, no walking paperwork into the DMV.

+

What it means for you

+

Nothing extra. We do it. As soon as the test passes, your truck shows compliant in CARB's system. If you ever need proof, the record is there.

+

What if reporting fails

+

Cell or WiFi at your yard goes down? The data is queued and submitted as soon as we have a signal. The test is still valid — reporting is the delivery mechanism, not the test itself.

+
+

Call 916-890-4427

+

Related

+ +
+
+ + diff --git a/workers/norcalcarbmobile/public/blog/what-is-obd-testing/index.html b/workers/norcalcarbmobile/public/blog/what-is-obd-testing/index.html new file mode 100644 index 0000000..2b82f71 --- /dev/null +++ b/workers/norcalcarbmobile/public/blog/what-is-obd-testing/index.html @@ -0,0 +1,42 @@ + + + + + +What is OBD Testing for Heavy-Duty Trucks? | NorCal CARB Mobile + + + + + + + + + + +
+

What is OBD testing for heavy-duty trucks?

Bryan Gillis · Licensed CARB Tester IF530523 · May 5, 2026

+
+

Short answer: OBD (on-board diagnostic) testing reads emissions data and fault codes directly from a truck's engine control module. It's required for 2013 and newer heavy-duty diesel vehicles under CARB's Clean Truck Check. The test costs $75 per vehicle and takes about 15-20 minutes.

+

What we actually do

+

A licensed CARB tester (CARB ID IF530523) connects an OBD scan tool to the OBD port — same port the dealer uses for diagnostics, usually under the dash. The tool pulls:

+
  • Emissions-related fault codes (DTCs)
  • Readiness monitor status (whether emission systems have run their self-tests)
  • Engine identification (engine model, family, calibration ID)
+

The data is submitted electronically to CARB's database — this is called HD-OBD reporting. More on HD-OBD here.

+

Pass or fail

+

You pass if there are no active emissions fault codes and the readiness monitors are complete. You fail if:

+
  • An emissions DTC is active (Check Engine light territory)
  • Required readiness monitors haven't run (truck hasn't been driven enough)
  • The MIL (malfunction indicator) has been commanded on for an emissions reason
+

If you fail, fix the issue — typically a sensor, EGR valve, DPF, or DEF system component — and we'll retest free within 150 days.

+

Why it's required

+

Modern diesel engines are heavily emissions-controlled. CARB wants confirmation that the controls (DPF, SCR, EGR) are still working as designed. Reading the OBD codes is the fastest, most accurate way to verify that.

+

Cost and time

+
  • $75 per vehicle at your location
  • 15-20 minutes per truck
  • Documentation issued on-site
  • Free retest within 150 days on fail
+
+

Schedule OBD Testing — 916-890-4427

+

Related

+ +
+
+ + diff --git a/workers/norcalcarbmobile/public/blog/what-is-ovi-j1667/index.html b/workers/norcalcarbmobile/public/blog/what-is-ovi-j1667/index.html new file mode 100644 index 0000000..10b29d6 --- /dev/null +++ b/workers/norcalcarbmobile/public/blog/what-is-ovi-j1667/index.html @@ -0,0 +1,41 @@ + + + + + +What is OVI-J1667 (Smoke / Opacity Testing)? | NorCal CARB Mobile + + + + + + + + + + +
+

What is OVI-J1667 (Smoke / Opacity Testing)?

Bryan Gillis · Licensed CARB Tester IF530523 · May 5, 2026

+
+

Short answer: OVI-J1667 is the Opacity Visible Inspection performed to SAE standard J1667. A licensed tester does a snap-acceleration test and measures exhaust opacity with calibrated equipment. It's the official version of what most people call a "smoke test" — required for pre-2013 heavy-duty diesel vehicles. Cost: $250 per vehicle.

+

Why "OVI-J1667" and not just "smoke test"

+

SAE International published J1667 as the standard procedure for measuring exhaust opacity on heavy-duty diesel engines. CARB adopted it for the Periodic Smoke Inspection Program (PSIP) and Clean Truck Check. "OVI" is CARB's terminology — Opacity Visible Inspection. Same procedure, formal name. If your truck is being inspected to J1667, you're getting an OVI.

+

How the test works

+
  1. Truck warmed up to operating temperature
  2. Tester clamps an opacity meter probe onto the exhaust stack
  3. Three snap-accelerations from idle to full throttle, no load
  4. Opacity meter records peak opacity for each acceleration
  5. Pass/fail determined by averaging the readings against the CARB threshold for that model year and engine
+

Total time: 20-30 minutes once the truck is warm.

+

What you get

+

An official SAE J1667 test report with:

+
  • Opacity readings for each acceleration
  • Vehicle identification (VIN, plate, engine)
  • Tester ID (IF530523) and signature
  • Pass/fail determination
+

Accepted by CARB and DMV. Free retest within 150 days on fail.

+

Who needs OVI-J1667 vs OBD

+

Pre-2013 engines = OVI-J1667. 2013+ = OBD. Full breakdown here.

+
+

Schedule OVI-J1667 — 916-890-4427

+

Related

+ +
+
+ + diff --git a/workers/norcalcarbmobile/public/blog/what-is-the-clean-truck-check/index.html b/workers/norcalcarbmobile/public/blog/what-is-the-clean-truck-check/index.html new file mode 100644 index 0000000..1b4f839 --- /dev/null +++ b/workers/norcalcarbmobile/public/blog/what-is-the-clean-truck-check/index.html @@ -0,0 +1,44 @@ + + + + + +What is the CARB Clean Truck Check? | NorCal CARB Mobile + + + + + + + + + + +
+

What is the CARB Clean Truck Check?

Bryan Gillis · Licensed CARB Tester IF530523 · May 5, 2026

+
+

Short answer: The CARB Clean Truck Check is California's mandatory emissions testing program for heavy-duty diesel trucks (GVWR 14,001 lbs or more). It requires either OBD testing or OVI-J1667 (smoke/opacity) testing depending on model year. Penalties for non-compliance start at $1,000 per day.

+

Who has to comply

+

Almost every heavy-duty diesel truck operating in California. The rule covers:

+
  • Truck tractors, single-unit trucks, and buses with a GVWR of 14,001 lbs or more
  • Vehicles registered in California and vehicles registered out of state but operating in California
  • Class A, B, and C diesel motorhomes
  • Some agricultural and off-road equipment under separate CARB rules
+

Light-duty vehicles (under 14,001 lbs GVWR) are not part of Clean Truck Check — those go through DMV smog.

+

What's actually tested

+

The test depends on your truck's model year:

+
  • 2013 and newer engines: OBD testing ($75). A licensed tester plugs into the OBD port, reads the emissions data and any fault codes, and submits the results to CARB electronically (HD-OBD reporting).
  • Pre-2013 engines: OVI-J1667 testing ($250). The licensed tester performs a snap-acceleration test and measures exhaust opacity to SAE J1667 standard.
+

How often

+

Twice per year for most trucks (one OBD/OVI test plus one self-reported submission), phased in by weight class and engine model year. The program ramped up between 2024 and 2026.

+

What happens if you fail

+

You get an official failure report listing the cause (a fault code, smoke level, or both). Repair the issue, and we can retest free within 150 days. If you ignore the failure, expect a registration hold at DMV and daily fines from CARB.

+

Why mobile testing

+

The whole point of Clean Truck Check is on-the-road compliance. Hauling a Class 8 truck to a brick-and-mortar shop just to plug into the OBD port costs more in downtime than the test itself. We come to your yard, depot, or job site and have you back to work in 20 minutes.

+
+

Need a test?

+

Call 916-890-4427 or request online.

+

Related

+ +
+
+ + diff --git a/workers/norcalcarbmobile/public/contact/index.html b/workers/norcalcarbmobile/public/contact/index.html new file mode 100644 index 0000000..f1bf034 --- /dev/null +++ b/workers/norcalcarbmobile/public/contact/index.html @@ -0,0 +1,93 @@ + + + + + +Contact NorCal CARB Mobile — Schedule a Mobile CARB Test | 916-890-4427 + + + + + + + + + + + + + + + + +
+
+
+ +

Contact NorCal CARB Mobile

+

Call to schedule, ask a question, or get a fleet quote. We respond within the hour during business hours.

+
+
+
+
+
+ + +

Hours

Mon–Fri 6am–5pm
Saturday 8am–4pm
Closed Sunday

+

Offices

Sacramento
Oakland

+
+
To schedule fastest: have your VIN(s) ready and the location where vehicles will be tested. We confirm timing within the hour.
+

Send a request

+

Email sales@norcalcarbmobile.com with:

+
    +
  • Number of vehicles
  • +
  • Vehicle model years (or VINs if you have them)
  • +
  • Your location (city + ZIP, or address for fleet visit)
  • +
  • Preferred time window
  • +
  • Phone number for confirmation
  • +
+

We’ll respond with a confirmed appointment, or call to discuss if anything needs clarification.

+

An online booking form with calendar availability is in progress. Until then, call or email is fastest.

+
+
+
+
+

Or just call

+

Fastest path to a confirmed appointment.

+ +
+
+
+ + + diff --git a/workers/norcalcarbmobile/public/faq/index.html b/workers/norcalcarbmobile/public/faq/index.html new file mode 100644 index 0000000..22f2f6a --- /dev/null +++ b/workers/norcalcarbmobile/public/faq/index.html @@ -0,0 +1,106 @@ + + + + + +CARB Testing FAQ — Mobile Smog & Emissions Testing Questions | NorCal CARB Mobile + + + + + + + + + + + + + + + + +
+
+
+ +

CARB Testing FAQ

+

Common questions about OBD testing, OVI-J1667 (smoke/opacity), Clean Truck Check compliance, pricing, and how mobile testing works. Answered by Licensed CARB Tester IF530523.

+
+
+
+
+

What is the CARB Clean Truck Check?

The CARB Clean Truck Check is a mandatory emissions testing program from the California Air Resources Board for heavy-duty diesel trucks operating in California. It requires OBD testing for 2013 and newer trucks and OVI-J1667 (smoke/opacity) testing for older trucks. The program phases in by vehicle weight class, model year, and engine family. Penalties for non-compliance start at $1,000 per day.

+

What is OBD testing for heavy-duty trucks?

OBD (on-board diagnostic) testing reads emissions data and fault codes directly from your truck’s ECM. Required for 2013 and newer heavy-duty diesel vehicles under CARB’s Clean Truck Check. A licensed tester connects to the OBD port and the results are submitted electronically to CARB.

Cost: $75 per vehicle. Free retest within 150 days on fail.

+

What is OVI-J1667 testing (smoke / opacity)?

OVI-J1667 is the Opacity Visible Inspection performed to SAE standard J1667. A licensed tester performs a snap-acceleration smoke test and measures exhaust opacity with calibrated equipment. It is the official test for pre-2013 heavy-duty diesel vehicles. “OVI-J1667” and “smoke test” refer to the same procedure.

Cost: $250 per vehicle. Free retest within 150 days on fail.

+

How much does mobile CARB testing cost?

  • OBD testing: $75 per vehicle
  • OVI-J1667 (smoke/opacity): $250 per vehicle
  • Motorhome / RV: $75 OBD + $250 OVI-J1667
  • Fleet (3+ vehicles): Custom quote — call or email

Retests after a failure are free within 150 days. No hidden fees.

+

What vehicles need CARB emissions testing?

Heavy-duty diesel trucks and buses with a GVWR of 14,001 lbs or more operating in California. 2013 and newer trucks need OBD testing. Pre-2013 trucks need OVI-J1667 (smoke/opacity) testing. Agricultural equipment 25 hp or greater may also be subject to CARB periodic compliance checks. Motorhomes and RVs with diesel engines follow the same rules by model year.

+

Do I need OBD testing, OVI-J1667, or both?

It depends on your vehicle’s model year:

  • 2013 or newer: OBD testing ($75)
  • Pre-2013: OVI-J1667 smoke/opacity testing ($250)
  • Some programs: Both tests required

Call us with your VIN and we’ll confirm exactly what your truck needs before you schedule.

+

How long does a mobile CARB test take?

OBD testing: approximately 15–20 minutes per vehicle. OVI-J1667 (smoke/opacity): approximately 20–30 minutes per vehicle. Fleet visits are scheduled to minimize downtime — multiple vehicles in one appointment. Official documentation is issued on-site before we leave.

+

What happens if my vehicle fails?

You receive an official failure report with the reason for failure. Once you repair the issue (clear the fault codes, fix the emissions problem, address the smoke/opacity), contact us. Free retests are available within 150 days of the original test at no additional charge.

+

Can you test at my yard or fleet depot?

Yes — mobile testing at your yard, depot, parking lot, or job site is exactly what NorCal CARB Mobile does. You don’t haul trucks to a shop. We come to your location anywhere in Northern California. Fleet visits can test multiple vehicles in a single appointment.

+

How do I schedule a CARB test?

Call 916-890-4427 or use the contact form. Tell us the number of vehicles, their model years, your location, and a preferred time window. We confirm within the hour during business hours (Mon–Fri 6am–5pm, Saturday 8am–4pm).

+

What is CARB Tester ID IF530523?

IF530523 is the California Air Resources Board tester license number for Bryan Gillis, owner of NorCal CARB Mobile. All tests performed by NorCal CARB Mobile are issued under this license number. Results are official and accepted for California registration, CARB compliance filing, and DMV purposes.

+

Where does NorCal CARB Mobile serve?

We serve all of Northern California from two offices: Sacramento and Oakland. Coverage includes Sacramento metro, Stockton, Modesto, Roseville, Lodi, Tracy, Hayward, Antioch, Fairfield, San Jose, Napa, North Bay, Bay Area, Butte County, plus extended coverage including Orange County and San Diego. See the full service area list →

+

What is HD-OBD reporting?

HD-OBD (Heavy-Duty On-Board Diagnostic) reporting is the electronic submission of OBD test data to CARB. Under the Clean Truck Check program, OBD results must be transmitted to CARB’s database to confirm compliance. NorCal CARB Mobile handles this submission as part of every OBD test — no extra steps from you.

+
+
+
+
+

Still have questions?

+

Call us. We know CARB regulations and will tell you straight what your truck needs.

+ +
+
+
+ + + diff --git a/workers/norcalcarbmobile/public/index.html b/workers/norcalcarbmobile/public/index.html index 5a9ca64..3511409 100644 --- a/workers/norcalcarbmobile/public/index.html +++ b/workers/norcalcarbmobile/public/index.html @@ -4,14 +4,14 @@ NorCal CARB Mobile — Mobile CARB & Smog Testing That Comes to You - + - + @@ -25,27 +25,54 @@ "telephone": "+1-916-890-4427", "email": "sales@norcalcarbmobile.com", "image": "https://norcalcarbmobile.com/assets/og.png", - "priceRange": "$119-$325", + "priceRange": "$75-$325", "description": "Licensed mobile CARB emissions testing across Northern California. OBD, OVI-J1667 (smoke/opacity), fleet, and RV testing. CARB Tester ID IF530523.", "identifier": { "@type": "PropertyValue", "name": "CARB Tester ID", "value": "IF530523" }, + "employee": { "@id": "https://norcalcarbmobile.com/#bryan" }, + "founder": { "@id": "https://norcalcarbmobile.com/#bryan" }, "address": { "@type": "PostalAddress", "addressRegion": "CA", "addressCountry": "US" }, + "location": [ + { "@type": "Place", "name": "Sacramento Office", "address": { "@type": "PostalAddress", "addressLocality": "Sacramento", "addressRegion": "CA", "addressCountry": "US" } }, + { "@type": "Place", "name": "Oakland Office", "address": { "@type": "PostalAddress", "addressLocality": "Oakland", "addressRegion": "CA", "addressCountry": "US" } } + ], "areaServed": [ { "@type": "AdministrativeArea", "name": "Sacramento Metro" }, { "@type": "AdministrativeArea", "name": "San Joaquin Valley" }, + { "@type": "AdministrativeArea", "name": "East Bay" }, + { "@type": "AdministrativeArea", "name": "Bay Area" }, { "@type": "City", "name": "Sacramento" }, { "@type": "City", "name": "Stockton" }, - { "@type": "City", "name": "Modesto" } + { "@type": "City", "name": "Modesto" }, + { "@type": "City", "name": "Oakland" }, + { "@type": "City", "name": "San Jose" } ], "openingHoursSpecification": [ { "@type": "OpeningHoursSpecification", "dayOfWeek": ["Monday","Tuesday","Wednesday","Thursday","Friday"], "opens": "06:00", "closes": "17:00" }, { "@type": "OpeningHoursSpecification", "dayOfWeek": ["Saturday"], "opens": "08:00", "closes": "16:00" } ], "makesOffer": [ - { "@type": "Offer", "name": "OBD Testing", "price": "119.00", "priceCurrency": "USD" }, + { "@type": "Offer", "name": "OBD Testing", "price": "75.00", "priceCurrency": "USD" }, { "@type": "Offer", "name": "OVI-J1667 (Opacity Visible Inspection, SAE J1667)", "price": "250.00", "priceCurrency": "USD" } ] } + @@ -57,6 +84,7 @@ Services Service Areas FAQ + About Contact Call 916-890-4427 @@ -72,9 +100,9 @@

Mobile CARB Testing that comes to you — an Request a Test
-
CARB Tester ID IF530523Licensed & insured
+
Bryan Gillis — Owner & CARB TesterLicense ID IF530523 · Licensed & insured
Mon–Fri 6am–5pmSaturday 8am–4pm
-
We come to youYour yard, your schedule
+
We come to youSacramento • Oakland • NorCal-wide
@@ -83,9 +111,9 @@

Mobile CARB Testing that comes to you — an

What we test

Straightforward pricing. If your test fails, your retest is free within 150 days.

-

OBD Testing

On-board diagnostic testing for 2013+ heavy-duty trucks. Meets CARB Clean Truck Check requirements.

$119 per vehicle
+

OBD Testing

On-board diagnostic testing for 2013+ heavy-duty trucks. Meets CARB Clean Truck Check requirements.

$75 per vehicle

OVI-J1667 (Smoke / Opacity)

Opacity Visible Inspection per SAE J1667 — smoke/opacity testing with official CARB documentation on-site.

$250 per vehicle
-

Motorhome / RV Testing

Full-service testing for motorhomes and RVs. We handle the paperwork and compliance.

$119 OBD  +  $250 OVI-J1667
+

Motorhome / RV Testing

Full-service testing for motorhomes and RVs. We handle the paperwork and compliance.

$75 OBD  +  $250 OVI-J1667

Fleet Compliance

Multi-vehicle testing at your yard. Volume pricing for fleets of 3 or more.

Custom quote in 1 business day

See all services and what’s included →

@@ -104,13 +132,15 @@

Why mobile testing beats a shop visit

-

Serving Northern California

-

Based in the Sacramento area, covering the Sacramento–Stockton corridor and the San Joaquin Valley.

+

Serving Northern California — Sacramento & Oakland

+

Two offices: Sacramento and Oakland. Covering Northern California from the Bay Area through the San Joaquin Valley and Central Valley.

  • Sacramento, Elk Grove, Roseville, Rancho Cordova, Folsom
  • Stockton, Lodi, Galt, Tracy, Manteca, Ripon, Escalon
  • Modesto, Turlock, Merced
  • -
  • I-5 and Highway 99 corridors — call for anywhere in between
  • +
  • Oakland, Hayward, Antioch, Fairfield
  • +
  • San Jose, Napa, North Bay, Bay Area
  • +
  • Extended: Butte County, Orange County, San Diego

See all service areas →

@@ -129,12 +159,12 @@

Ready to schedule?

diff --git a/workers/norcalcarbmobile/public/llms-full.txt b/workers/norcalcarbmobile/public/llms-full.txt new file mode 100644 index 0000000..6865e6c --- /dev/null +++ b/workers/norcalcarbmobile/public/llms-full.txt @@ -0,0 +1,95 @@ +# NorCal CARB Mobile — full content for LLM ingestion + +Licensed mobile CARB emissions testing across Northern California. Owner: Bryan Gillis. CARB Tester ID IF530523. Two offices: Sacramento and Oakland. Phone: 916-890-4427. Email: sales@norcalcarbmobile.com. + +## Owner & credential + +NorCal CARB Mobile LLC is owned and operated by Bryan Gillis. Bryan holds CARB Tester ID IF530523, issued by the California Air Resources Board. Every test issued by NorCal CARB Mobile is an official CARB-recognized document accepted for California registration, CARB Clean Truck Check compliance, and HD-OBD reporting. + +## Services and pricing + +### OBD Testing — $75 per vehicle +On-board diagnostic testing reads emissions data and fault codes directly from the truck's ECM. Required for 2013 and newer heavy-duty diesel vehicles under the CARB Clean Truck Check program. Test takes 15-20 minutes. Free retest within 150 days on fail. + +### OVI-J1667 (Smoke / Opacity Testing) — $250 per vehicle +Opacity Visible Inspection performed to SAE standard J1667. A snap-acceleration smoke test where exhaust opacity is measured with calibrated equipment. Required for pre-2013 heavy-duty diesel vehicles. "OVI-J1667" and "smoke test" refer to the same procedure. Test takes 20-30 minutes. Free retest within 150 days on fail. + +### Motorhome / RV Testing — $75 OBD + $250 OVI-J1667 +Full CARB testing for Class A, B, and C motorhomes and diesel RVs. We come to your storage facility, campsite, or driveway. We handle paperwork and CARB documentation. + +### Agricultural Vehicle Testing +CARB emissions testing for tractors, combines, irrigation engines, and diesel ag equipment 25 hp or greater operating in California. Subject to CARB In-Use Off-Road Diesel Regulation. On-site at your farm or equipment yard. + +### Fleet Compliance Testing — custom quote +Multi-vehicle CARB testing at your yard, depot, or parking lot. Volume scheduling for fleets of 3+ vehicles. Volume pricing for 5+ vehicles. One invoice for all vehicles. Custom quote within 1 business day. + +## Service area + +We serve all of Northern California from two offices: Sacramento and Oakland. Coverage includes: + +- Sacramento metro (Sacramento, Elk Grove, Roseville, Rancho Cordova, Folsom) +- San Joaquin County (Stockton, Lodi, Galt, Tracy, Manteca) +- Stanislaus County (Modesto, Turlock, Merced) +- Alameda County / East Bay (Oakland, Hayward, Fremont, Berkeley, Alameda, San Leandro) +- Contra Costa County (Antioch, Pittsburg, Brentwood) +- Solano County (Fairfield, Vacaville, Vallejo) +- Santa Clara County / South Bay (San Jose, Santa Clara, Sunnyvale) +- Napa Valley and North Bay (Napa, St. Helena, Calistoga, Marin, Sonoma) +- Butte County (Chico, Oroville) +- Extended coverage: Orange County, San Diego + +If in California and you need a licensed CARB test, call 916-890-4427. + +## CARB Clean Truck Check + +The CARB Clean Truck Check is a mandatory emissions testing program from the California Air Resources Board for heavy-duty diesel trucks operating in California. It requires OBD testing for 2013+ trucks and OVI-J1667 (smoke/opacity) testing for older trucks. Phases in by vehicle weight class, model year, and engine family. Penalties for non-compliance start at $1,000 per day. + +Vehicles needing CARB testing: heavy-duty diesel trucks and buses with GVWR of 14,001 lbs or more operating in California. 2013+ trucks need OBD. Pre-2013 trucks need OVI-J1667. Some compliance programs require both. Diesel motorhomes/RVs follow the same rules by model year. + +## HD-OBD reporting + +HD-OBD (Heavy-Duty On-Board Diagnostic) reporting is the electronic submission of OBD test data to CARB. Under the Clean Truck Check program, OBD results must be transmitted to CARB's database. NorCal CARB Mobile handles this submission as part of every OBD test — no extra steps from the customer. + +## OBD vs OVI-J1667 — which do I need? + +- 2013 or newer heavy-duty diesel: OBD testing ($75) +- Pre-2013 heavy-duty diesel: OVI-J1667 smoke/opacity testing ($250) +- Some programs: both tests required + +Call with the VIN to confirm exactly what your truck needs. + +## How scheduling works + +Call 916-890-4427 or email sales@norcalcarbmobile.com. Provide: +- Number of vehicles +- Vehicle model years (or VINs) +- Location (city + ZIP, or address for fleet visit) +- Preferred time window +- Phone number + +We confirm within the hour during business hours. Fleet visits are scheduled to minimize downtime by testing multiple vehicles in a single appointment. + +## What happens if a vehicle fails + +The customer receives an official failure report listing the reason for failure. Once the customer repairs the issue, contact us. Free retests are available within 150 days of the original test at no additional charge. + +## Why mobile testing + +- Zero downtime: we test at your yard, driveway, or job site +- Same-day results: official pass/fail issued on-site +- CARB-accepted: results valid for California registration and compliance +- Free retest: within 150 days on fail +- Licensed tester: all results issued under CARB Tester ID IF530523 + +## Hours + +- Monday–Friday: 6:00 AM – 5:00 PM PT +- Saturday: 8:00 AM – 4:00 PM PT +- Sunday: closed + +## Contact + +- Phone: 916-890-4427 +- Email: sales@norcalcarbmobile.com +- Offices: Sacramento, Oakland +- Website: https://norcalcarbmobile.com/ diff --git a/workers/norcalcarbmobile/public/llms.txt b/workers/norcalcarbmobile/public/llms.txt new file mode 100644 index 0000000..9daee21 --- /dev/null +++ b/workers/norcalcarbmobile/public/llms.txt @@ -0,0 +1,24 @@ +# NorCal CARB Mobile + +> Licensed mobile CARB emissions testing across Northern California. OBD ($75), OVI-J1667 (smoke/opacity, $250), motorhome/RV, fleet, and agricultural diesel testing. Owner: Bryan Gillis, CARB Tester ID IF530523, recognized by the California Air Resources Board. Two offices: Sacramento and Oakland. Phone: 916-890-4427. Email: sales@norcalcarbmobile.com. + +## Pages + +- [Home](https://norcalcarbmobile.com/): Mobile CARB testing services overview, pricing, owner credential. +- [Services](https://norcalcarbmobile.com/services/): OBD $75, OVI-J1667 $250, motorhome/RV, fleet compliance, agricultural. +- [Service Areas](https://norcalcarbmobile.com/service-areas/): Northern California coverage from two offices — Sacramento and Oakland. Includes Stockton, Modesto, Roseville, Lodi, Tracy, Hayward, Antioch, Fairfield, San Jose, Napa, North Bay, Bay Area, Butte County, plus extended coverage to Orange County and San Diego. +- [FAQ](https://norcalcarbmobile.com/faq/): CARB Clean Truck Check, OBD vs OVI-J1667, pricing, scheduling, HD-OBD reporting. +- [About](https://norcalcarbmobile.com/about/): Bryan Gillis, owner and licensed CARB tester (IF530523). +- [Contact](https://norcalcarbmobile.com/contact/): Phone, email, hours, two-office NAP. +- [Blog](https://norcalcarbmobile.com/blog/): Articles on CARB testing, Clean Truck Check, compliance deadlines. + +## Key facts + +- **Phone**: 916-890-4427 +- **Email**: sales@norcalcarbmobile.com +- **Hours**: Mon–Fri 6am–5pm PT, Saturday 8am–4pm PT, closed Sunday +- **Owner**: Bryan Gillis +- **Credential**: CARB Tester ID IF530523, California Air Resources Board +- **Offices**: Sacramento, Oakland +- **Pricing**: OBD $75 / OVI-J1667 $250 / Motorhome+RV $75+$250 / Fleet custom +- **Retest policy**: Free retest within 150 days on a failed test diff --git a/workers/norcalcarbmobile/public/privacy/index.html b/workers/norcalcarbmobile/public/privacy/index.html new file mode 100644 index 0000000..4db3a09 --- /dev/null +++ b/workers/norcalcarbmobile/public/privacy/index.html @@ -0,0 +1,50 @@ + + + + + +Privacy Policy | NorCal CARB Mobile + + + + + + + + + +
+
+
+

Privacy Policy

+

Last updated: May 2026

+
+
+
+

Who we are

+

NorCal CARB Mobile LLC (“we,” “us,” “our”) operates the website norcalcarbmobile.com. Owner: Bryan Gillis. CARB Tester ID IF530523.

+

Information we collect

+

We collect information you give us directly when you contact us — name, phone number, email address, vehicle information (VIN, year, make, model), and service location. We collect this only to schedule and perform CARB testing services.

+

We may collect minimal analytics about site visits (page views, referring source, approximate location at the city level) using a privacy-respecting analytics tool. We do not use cookies for advertising or tracking across sites.

+

How we use information

+

To schedule appointments, contact you about service, send official CARB documentation after testing, and meet our legal obligations (CARB reporting, tax records, etc.). We do not sell your information.

+

Sharing

+

We share testing results with the California Air Resources Board (CARB) as required by law. We do not share your personal information with third parties for marketing purposes.

+

Data retention

+

We retain customer records for the period required by California law for emissions testing records and tax filings. After that, records are deleted.

+

Your rights

+

You have the right to request a copy of the personal information we hold about you, to correct inaccuracies, and to request deletion (subject to legal retention requirements). To exercise these rights, email sales@norcalcarbmobile.com.

+

California residents (CCPA / CPRA)

+

California residents have additional rights under the California Consumer Privacy Act and California Privacy Rights Act, including the right to know what personal information we collect and the right to opt out of the sale of personal information. We do not sell personal information.

+

Contact

+

Questions about this policy: sales@norcalcarbmobile.com or 916-890-4427.

+
+
+ + diff --git a/workers/norcalcarbmobile/public/robots.txt b/workers/norcalcarbmobile/public/robots.txt index 33a722a..741f9f1 100644 --- a/workers/norcalcarbmobile/public/robots.txt +++ b/workers/norcalcarbmobile/public/robots.txt @@ -1,31 +1,44 @@ -# robots.txt — NorCal CARB Mobile -# Allow all reputable crawlers, including LLM/AI crawlers. +# robots.txt for norcalcarbmobile.com +# Allow everyone, including AI search crawlers (citations matter) User-agent: * Allow: / +Sitemap: https://norcalcarbmobile.com/sitemap.xml + +# AI search crawlers — explicit allow User-agent: GPTBot Allow: / +User-agent: ChatGPT-User +Allow: / + +User-agent: OAI-SearchBot +Allow: / + User-agent: ClaudeBot Allow: / +User-agent: anthropic-ai +Allow: / + User-agent: Claude-Web Allow: / User-agent: PerplexityBot Allow: / -User-agent: Google-Extended +User-agent: Perplexity-User Allow: / -User-agent: Applebot-Extended +User-agent: Google-Extended Allow: / -User-agent: Bingbot +User-agent: Applebot-Extended Allow: / User-agent: CCBot Allow: / -Sitemap: https://norcalcarbmobile.com/sitemap.xml +User-agent: Bingbot +Allow: / diff --git a/workers/norcalcarbmobile/public/service-areas/index.html b/workers/norcalcarbmobile/public/service-areas/index.html new file mode 100644 index 0000000..7289809 --- /dev/null +++ b/workers/norcalcarbmobile/public/service-areas/index.html @@ -0,0 +1,126 @@ + + + + + +CARB Testing Service Areas — Northern California | NorCal CARB Mobile + + + + + + + + + + + + + + + +
+
+
+ +

CARB Testing Service Areas — All of Northern California

+

Two offices — Sacramento and Oakland — means we cover NorCal from the Central Valley through the Bay Area. If you’re in California and need a CARB test, call us.

+ +
+
+
+
+

Sacramento & Sacramento County

+

Our Sacramento office serves the greater Sacramento metro area — Sacramento, Elk Grove, Citrus Heights, Rancho Cordova, Folsom, and Carmichael. Mobile OBD ($75) and OVI-J1667 ($250) testing at your fleet yard, depot, dealership, or driveway. Same-day documentation, official CARB-licensed results.

+
+

Oakland & Alameda County

+

Our Oakland office is the East Bay hub. Mobile CARB testing in Oakland, Berkeley, Emeryville, Alameda, San Leandro, and across Alameda County. We test at the Port of Oakland, container depots, trucking terminals, and private fleets. Both OBD and OVI-J1667 available on-site.

+
+

Stockton & San Joaquin County

+

Stockton is a major freight corridor and we’re there often. Coverage includes Stockton, Lodi, Manteca, Tracy, Ripon, and Escalon. Common stops: warehouse fleets along I-5 and Hwy 99, ag operators in San Joaquin County. OBD and OVI-J1667 available.

+
+

Modesto & Stanislaus County

+

Modesto, Turlock, Ceres, Riverbank, Oakdale — CARB testing across Stanislaus County for trucking, agriculture, and dairy operations. We come to your facility for fleet visits.

+
+

Roseville & Placer County

+

Roseville, Rocklin, Lincoln, Auburn, and Granite Bay. We service Placer County with on-site OBD and OVI-J1667. Common customers: construction operators along Hwy 80, dealership service departments.

+
+

Lodi & Galt

+

Lodi, Galt, Acampo, and southern Sacramento County. CARB testing for ag fleets, vineyards with diesel equipment, and trucking based off Hwy 99.

+
+

Tracy & Livermore (Tri-Valley)

+

Tracy, Livermore, Manteca, and the I-580 / I-205 corridor. Major distribution and warehouse zone — we run fleet visits to logistics operators frequently. Both OBD and OVI-J1667 on-site.

+
+

Hayward & East Bay

+

Hayward, San Leandro, Fremont, Union City, Newark. East Bay coverage out of our Oakland office. Mobile CARB testing for fleets, dealerships, and owner-operators.

+
+

Fairfield & Solano County

+

Fairfield, Vacaville, Vallejo, and Solano County. We cover the Hwy 80 corridor between Sacramento and the Bay. Both OBD and OVI-J1667 testing available on-site.

+
+

Antioch & East Contra Costa

+

Antioch, Pittsburg, Brentwood, Oakley, and East Contra Costa County. We cover the Delta region and Hwy 4 corridor for trucking and ag operators.

+
+

San Jose & South Bay

+

San Jose, Santa Clara, Sunnyvale, Milpitas, and the South Bay. Mobile CARB testing for fleets, dealerships, and owner-operators across Silicon Valley and Santa Clara County. OBD and OVI-J1667 available.

+
+

Napa Valley (Napa, St. Helena, Calistoga)

+

Napa Valley coverage including Napa, Yountville, St. Helena, and Calistoga. Vineyard diesel equipment, hospitality fleet vehicles, and local trucking. CARB testing on-site.

+
+

Bay Area (full coverage)

+

From Oakland we cover the entire Bay Area — East Bay, South Bay, North Bay, Peninsula, and San Francisco. We schedule routes to minimize travel time. Call to confirm coverage in your specific city.

+
+

East Bay (comprehensive)

+

Comprehensive East Bay testing: Oakland, Hayward, Fremont, Berkeley, Alameda, San Leandro, Pleasanton, Dublin, Livermore, Walnut Creek, Concord, Antioch. One office covers the whole region.

+
+

North Bay (Marin, Sonoma, Solano)

+

North Bay coverage: Marin County, Sonoma County, and northern Solano. Petaluma, Santa Rosa, San Rafael, Novato. Wine country diesel ops, trucking, and ag.

+
+

Butte County (Chico, Oroville)

+

Extended coverage for Butte County — Chico, Oroville, Paradise. We schedule trips north on Hwy 99 / I-5. Call to coordinate timing.

+
+

Orange County

+

Extended coverage for Orange County customers. Call to schedule. Common scenario: customers with CA-registered vehicles in SoCal who need a licensed mobile tester.

+
+

San Diego

+

Extended coverage for San Diego County. Call to schedule. We coordinate trips for fleet customers needing multiple vehicles tested.

+
+
+
+
+

Don’t see your city?

+

If you’re in California and need a licensed CARB test, call. We’ll tell you availability and travel time honestly.

+ +
+
+
+ + + diff --git a/workers/norcalcarbmobile/public/services/index.html b/workers/norcalcarbmobile/public/services/index.html new file mode 100644 index 0000000..8587a86 --- /dev/null +++ b/workers/norcalcarbmobile/public/services/index.html @@ -0,0 +1,143 @@ + + + + + +Mobile CARB Testing Services & Pricing | NorCal CARB Mobile + + + + + + + + + + + + + + + + +
+
+
+ +

Mobile CARB Testing Services & Pricing

+

Licensed tester Bryan Gillis (CARB ID IF530523) comes to your location. OBD, OVI-J1667, motorhome/RV, agricultural, and fleet testing. Official CARB documentation issued on-site.

+ +
+
+
+
+
+

OBD Testing — $75 per vehicle

+

What it is: On-board diagnostic testing reads fault codes and emissions data directly from your truck’s ECM. Required for 2013 and newer heavy-duty diesel vehicles under CARB’s Clean Truck Check program.

+

Who needs it: Any 2013+ GVWR 14,001 lb+ diesel truck operating in California. Fleet owners subject to HD-OBD reporting.

+

What you get: Official CARB OBD results, valid for state registration and compliance filing. If you fail, we retest free within 150 days.

+
$75 per vehicle
+

Schedule OBD testing →

+
+
+
+

OVI-J1667 (Smoke / Opacity Testing) — $250 per vehicle

+

What it is: Opacity Visible Inspection performed to SAE standard J1667. A licensed tester performs a snap-acceleration smoke test and measures exhaust opacity with calibrated equipment. The official term for what most people call a “smoke test.”

+

Who needs it: Pre-2013 heavy-duty diesel vehicles. Older trucks and buses subject to CARB Periodic Smoke Inspection Program (PSIP).

+

What you get: Official SAE J1667 test report with opacity readings, vehicle data, and tester ID IF530523. Accepted by CARB and DMV. Free retest within 150 days on fail.

+
$250 per vehicle
+

Schedule OVI-J1667 testing →

+
+
+
+

Motorhome & RV Testing

+

What it is: Full CARB emissions testing for motorhomes, RVs, and coaches. Depending on the vehicle’s engine, we perform OBD testing, OVI-J1667 opacity testing, or both.

+

Who needs it: Class A, B, and C motorhomes. Diesel-powered RVs subject to California emissions requirements.

+

What you get: We handle the paperwork and CARB documentation. We come to your storage facility, campsite, or driveway.

+
$75 OBD  +  $250 OVI-J1667
+

Schedule RV testing →

+
+
+
+

Agricultural Vehicle Testing

+

What it is: CARB emissions testing for tractors, combines, irrigation engines, and other agricultural diesel equipment subject to California’s In-Use Off-Road Diesel Regulation.

+

Who needs it: Agricultural operators with diesel equipment 25 hp or greater operating in California.

+

What you get: On-site testing at your farm or equipment yard. Official documentation. We understand the agricultural compliance schedule.

+

Schedule agricultural testing →

+
+
+
+

Fleet Compliance Testing

+

What it is: Multi-vehicle CARB testing at your yard, depot, or parking lot. We schedule all your vehicles in one visit (or a series of visits) to minimize disruption.

+

Who needs it: Trucking companies, logistics operators, municipalities, and any business running 3 or more heavy-duty diesel vehicles in California.

+

What you get: Custom testing schedule, bulk coordination, one invoice for all vehicles. Volume pricing for 5+ vehicles.

+
Custom quote — response within 1 business day
+

Get a fleet quote →

+
+
+
+
+
+

What’s included with every test

+
+

We come to you

No hauling. We test at your yard, lot, driveway, or job site anywhere in Northern California.

+

Same-day documentation

Official pass/fail report issued on-site. Digital and printed copies available.

+

Free retest on fail

Clear the codes or repair the issue, and we return at no charge within 150 days.

+

CARB-accepted results

All testing performed by Licensed CARB Tester IF530523. Valid for registration and compliance filing.

+
+
+
+
+
+

Schedule your test

+

Tell us what you need tested, your location, and a preferred time window. We confirm within the hour during business hours.

+ +

Mon–Fri 6am–5pm • Saturday 8am–4pm • Sacramento • Oakland

+
+
+
+ + + diff --git a/workers/norcalcarbmobile/public/sitemap.xml b/workers/norcalcarbmobile/public/sitemap.xml index 3341b08..5cf19f4 100644 --- a/workers/norcalcarbmobile/public/sitemap.xml +++ b/workers/norcalcarbmobile/public/sitemap.xml @@ -2,7 +2,11 @@ https://norcalcarbmobile.com/monthly1.0 https://norcalcarbmobile.com/services/monthly0.9 - https://norcalcarbmobile.com/service-areas/monthly0.8 - https://norcalcarbmobile.com/faq/monthly0.7 - https://norcalcarbmobile.com/contact/monthly0.9 + https://norcalcarbmobile.com/service-areas/monthly0.9 + https://norcalcarbmobile.com/about/monthly0.8 + https://norcalcarbmobile.com/faq/monthly0.8 + https://norcalcarbmobile.com/contact/monthly0.7 + https://norcalcarbmobile.com/blog/weekly0.7 + https://norcalcarbmobile.com/privacy/yearly0.3 + https://norcalcarbmobile.com/terms/yearly0.3 diff --git a/workers/norcalcarbmobile/public/terms/index.html b/workers/norcalcarbmobile/public/terms/index.html new file mode 100644 index 0000000..950f90b --- /dev/null +++ b/workers/norcalcarbmobile/public/terms/index.html @@ -0,0 +1,44 @@ + + + + + +Terms of Service | NorCal CARB Mobile + + + + + + + + + +
+

Terms of Service

Last updated: May 2026

+
+

Service

+

NorCal CARB Mobile LLC provides licensed mobile emissions testing services in California, including OBD testing, OVI-J1667 (smoke/opacity) testing, and CARB compliance documentation. Testing is performed under CARB Tester ID IF530523.

+

Pricing & payment

+

Standard pricing: OBD testing $75 per vehicle, OVI-J1667 testing $250 per vehicle. Fleet pricing (3+ vehicles) is custom. Payment is due at time of service unless we have a written net-terms agreement. We accept card, ACH, check, and select digital payment methods.

+

Retest policy

+

If a vehicle fails a CARB test we performed, we will retest the same vehicle once at no charge within 150 days of the original test. The free retest covers our service fee only and does not cover repairs or parts. After 150 days, standard pricing applies.

+

Cancellations & rescheduling

+

Please give 24 hours notice to cancel or reschedule a confirmed appointment. Same-day cancellations on confirmed fleet visits may be subject to a service fee equal to the travel cost.

+

Customer responsibilities

+

Customer must provide a safe location for testing, accurate vehicle information, and access to the vehicle’s OBD port (for OBD testing). Customer is responsible for any pre-existing vehicle conditions; we test compliance and do not perform repairs.

+

Limitation of liability

+

NorCal CARB Mobile’s liability is limited to the amount paid for the specific service. We are not liable for indirect, consequential, or incidental damages, including downtime, lost revenue, or third-party fines unrelated to our testing accuracy. Testing results are official CARB-recognized documents based on the vehicle’s condition at the time of test.

+

Governing law

+

These terms are governed by the laws of the State of California. Any dispute will be resolved in the courts of Sacramento County, California.

+

Contact

+

Questions: sales@norcalcarbmobile.com or 916-890-4427.

+
+
+ + diff --git a/workers/norcalcarbmobile/worker.js b/workers/norcalcarbmobile/worker.js index 0a31a62..05d4b28 100644 --- a/workers/norcalcarbmobile/worker.js +++ b/workers/norcalcarbmobile/worker.js @@ -1,21 +1,34 @@ // worker.js — NorCal CARB Mobile -// Deployment: 2026-05-07 - PUSH DEPLOY ITERATE DOMINATE -// Minimal pass-through to Workers Static Assets. All content lives in /public. -// Reserved hook at /api/* for future form handler (Turnstile + MailChannels). +// Pass-through to Workers Static Assets. /api/* reserved for future endpoints +// (e.g. native Google Calendar booking via /api/schedule). export default { async fetch(request, env) { const url = new URL(request.url); - // Reserve /api/* for future dynamic endpoints (e.g., /api/contact). + // Reserved hook for native Google Calendar booking. Returns a friendly + // 503 until the real endpoint is wired (uses GOOGLE_API_KEY from secrets). + if (url.pathname === "/api/schedule") { + return new Response( + JSON.stringify({ + status: "not_yet_wired", + message: "Online scheduling is in progress. Please call 916-890-4427 or email sales@norcalcarbmobile.com to book.", + phone: "+19168904427", + email: "sales@norcalcarbmobile.com" + }), + { status: 503, headers: { "content-type": "application/json", "cache-control": "no-store" } } + ); + } + + // Catch-all for any other /api/* path. if (url.pathname.startsWith("/api/")) { - return new Response(JSON.stringify({ error: "not implemented" }), { + return new Response(JSON.stringify({ error: "not_implemented" }), { status: 501, - headers: { "content-type": "application/json" }, + headers: { "content-type": "application/json" } }); } // Everything else: serve from static assets. return env.ASSETS.fetch(request); - }, + } };