How can we help?

Quick start guides, full feature reference, FAQs across every part of the app, troubleshooting, and the API reference — all in one place.

Quick start guides

Sign up and create your garage 5 min

Visit the sign-up page and enter your garage's name, a work email, and a password. We email you a verification link the moment you submit the form. Click the link, and your tenant database is provisioned automatically — no waiting, no setup ticket queue.

After verification you land on the Setup garage screen. Fill in your business hours, default VAT rate, address, optional logo and brand colours. None of these are mandatory beyond business name and country; all are editable later under Settings → Garage.

Free trial runs for 14 days. No card needed up front. You pick a plan from Settings → Subscription at the end of the trial — or earlier if you want add-ons before the trial expires.

Invite your staff 2 min

Go to Settings → Team → Add user. Enter their work email and choose a role:

  • Tenant admin — full control including billing. There can be more than one.
  • Manager — everything except billing, subscription, and staff management.
  • Staff — workshop floor: job cards, parts, customers, no settings.

The new user gets a verification email and a temporary password. They must verify before they can sign in. You can revoke or reset access from the same Team page at any time.

Add your first customer 1 min

Customers → Add customer. Required: name plus one contact channel (email or phone). Everything else is optional but more data later means better marketing segments and faster reception desk lookups.

If you've moved from another system, use Customers → Import. Drop a CSV — first row is your headers — and a preview lets you map your columns to ours. Bad rows are skipped with an error log you can download. Roughly one minute per 100 rows.

Once a customer exists you can open a portal account for them (sends an invite email; they choose a password) or send them a one-shot magic link they can click from email/SMS/WhatsApp to sign in without a password.

Add a vehicle to a customer 1 min

Open the customer's detail page → Add vehicle. Type the UK registration plate (VRM). We pull make, model, colour, fuel type, year, MOT status and tax status from DVLA + DVSA automatically. You confirm and save.

The MOT history is cached on save and re-pulled when you click Get MOT info on the vehicle page. Cache means quotes and history printouts load instantly; refresh means you get fresh data when DVSA publishes a new test result.

If DVLA doesn't have the vehicle on file (very new registration, foreign import) the form falls back to manual entry — type the details in.

Open your first job card 3 min

Repairs → New repair. Pick the customer, pick their vehicle. The form has three required fields: complaint (what the customer reported), mileage in, promised completion date. Save.

The job appears on the workshop dashboard with status booked. Inside the job you can:

  • Add item — labour line (hours × rate) or a part (search the catalogue).
  • Upload photo — before/after shots, defect evidence, parts received.
  • Add note — internal-only running log; the customer never sees these.
  • Status — advance through booked → in progress → done → invoiced → paid → closed.

Stock decrements automatically when a part line is saved. Manual adjustments are logged with a reason on the part's Stock movements tab.

Send a quote and get it approved 2 min

Inside the job card, click Create proforma. We render a pro-forma invoice PDF with every line, VAT calculated at your default rate, your branding. Email it.

If the customer has a portal account they see the proforma in their dashboard with an Approve button. One click approves; the job moves to in-progress automatically and you get a notification.

If the customer rejects with a comment, the job stays at booked and you see the comment in the activity feed. Edit lines, re-issue the proforma, repeat.

Take an online payment 5 min one-off, then seconds per payment

First, connect a gateway under Settings → Payment methods:

  • Stripe — cards, Apple Pay, Google Pay. Enter your publishable and secret keys.
  • PayPal — PayPal accounts and cards. Connect via the PayPal OAuth flow.
  • GoCardless — SEPA / UK direct debit. Best for recurring billing.

Test mode is honoured. Toggle it once you've verified a real charge works in production.

On any invoice or job, click Process payment. The relevant gateway opens; charge succeeds, status flips to paid, receipt emails itself. If the customer has paid in person, click Mark paid instead and pick method (cash / bank transfer / card terminal).

Refunds: refund through whichever gateway the original charge came in on. Stripe charges → Stripe refund; PayPal → PayPal. For manual payments, post a negative entry on the customer's credit ledger.

Connect QuickBooks, Xero, or Sage 5 min per provider

Each accounting integration is a £10/month add-on. Subscribe under Settings → Add-ons / Marketplace, then go to Integrations → [provider] → Connect. OAuth at the provider's site, approve, you're back.

Once connected, every invoice you finalise in GarageSync also pushes to the provider. Sync runs as a chunked job with a live progress bar — large back-fills don't block the UI.

Provider-specific quirks we handle so you don't have to:

  • QuickBooks Online Start tier: VAT codes are required per line; we pick the correct one automatically.
  • Xero: refresh tokens rotate on every refresh — we persist the rotation. Granular scopes (accounting.invoices, accounting.payments, etc.) rather than the legacy accounting.transactions, because new Xero apps cannot grant the legacy scope.
  • Sage Start tier: doesn't accept due dates on invoices — we strip them. Every invoice needs a customer address — we build it from billing/main address with N/A placeholders if missing.

If a sync fails you see honest red/amber status with the exact provider error in Integrations → History. No silent failures.

Connect eBay and import existing listings 10 min

Subscribe to the eBay Sync add-on (£10/month). Then Integrations → eBay → Connect. OAuth at eBay; pick policies if prompted.

Read-only mode is ON by default. Every write call (publish, update, withdraw, delete) throws while it's on. This is the safety net: connect, browse, import, verify everything's right, then flip read-only off when you're ready to publish.

To pull your existing eBay listings into your Parts catalogue:

  1. Integrations → eBay → Browse listings. We merge Inventory API + Trading API results, deduplicated.
  2. Tick the listings you want to import.
  3. Hit Import. Chunked progress bar (3 items per batch). We pull description (HTML stripped), brand, every image (deduplicated by URL hash), and any YouTube/Vimeo/mp4 video found in the description.

To publish a part back to eBay: Part detail → Publish to eBay. Preflight checks the four prerequisites — addon active, OAuth connected, read-only off, four defaults set (category + shipping + payment + return policies). If any miss, you get a precise error pointing at the right settings page.

Sell a car: create a vehicle listing 3 min

Vehicle listings → Add. Type the VRM, we fill DVLA fields. Add price, mileage, body type, fuel, transmission, seats, doors, condition, features, photos, optional walkaround video (MP4/WebM/MOV/MKV, ≤100 MB — we transcode it for fast playback).

Two switches matter:

  • Statusdraft / active / sold. Only active and sold are eligible to show publicly.
  • Show on the public Cars for sale storefront — toggles whether the world can see it.

Both must be set before the listing appears at your public storefront. Sold listings stay visible with a SOLD badge — useful social proof.

Set up email, SMS, and WhatsApp notifications 10 min

Settings → Notification channels. Three providers:

  • SMTP for email — your own SMTP host, port, encryption, credentials. Press Send test email to verify.
  • Twilio for SMS — Account SID + Auth Token + a from number. Send test SMS verifies.
  • WhatsApp Cloud API for WhatsApp — phone number ID + permanent token. Send test WhatsApp verifies.

Deliverability tip: for email, set SPF, DKIM, and DMARC records on your sending domain. The page shows the exact DNS entries to add. Reputation builds over a few weeks; expect your first campaigns to land mixed and stabilise.

Send your first email or SMS campaign 15 min

Subscribe to Email Marketing or SMS & WhatsApp Marketing (£7.50/month each). Then [Channel] Marketing → New campaign.

Pick a starter template, edit content (WYSIWYG for email, plain text for SMS, template or free-form for WhatsApp), choose recipients:

  • Whole customer list.
  • A pre-defined segment (e.g. MOT due in 14 days, last service > 6 months ago).
  • A manual selection from the customer browse page.

Send immediately or schedule. The campaign list shows opens, click-throughs, unsubscribes, bounces. We auto-handle the MOT-due reminder cron — set it once under Email Marketing → MOT reminders and forget.

Upgrade to Premium Help support 1 min

Settings → Add-ons → Premium Help. £15/month. Effect is immediate on your next new ticket:

  • SLA tightens to 2 hours, 7 days a week including weekends. Standard support runs to 24 working hours, weekdays only.
  • WhatsApp unlocks as a contact channel. We can respond to your tickets via WhatsApp instead of email.
  • SLA badge on every ticket shows your due time at a glance.

Existing tickets keep the tier they were opened with. Cancel any time — no notice period, the change applies to the next ticket.

Feature reference

Customer management (CRM)

Every customer record lives in a per-tenant database — you only see your customers, never anyone else's. The record holds contact details, billing + delivery addresses, communication preferences, tags, segments, credit balance, magic-link history, and a 360-view of every job, order, vehicle, and message they've had with you.

Pages: Customers for the browse list with filters and bulk actions; Customers → row → View for the full detail; Customers → Duplicates for de-duplication; Customers → Import for CSV bulk import with column-mapper preview.

Features worth knowing: tags drive marketing segments; comm prefs govern email / SMS / WhatsApp routing; the credit ledger supports deposits, charges, and refunds with a hard credit limit; birthdays trigger campaigns if you run Email Marketing.

Vehicles, MOT, and DVLA

Vehicles attach to customers. Type a UK VRM and we fetch make, model, colour, fuel, year, MOT status and tax status from DVLA's Vehicle Enquiry Service in under a second. The DVSA MOT History service feeds a full per-test history with every advisory and defect category (FAIL, MAJOR, DANGEROUS, ADVISORY, MINOR).

We cache both responses on the vehicle row so quotes and printouts load instantly. The Get MOT info button on the vehicle page re-fetches when you suspect DVSA has new data.

Printables on the vehicle page:

  • Print Service History — every repair invoice for this vehicle.
  • Print MOT & Service History — DVLA details + full MOT log + every repair. Hand this over with a sold car.

Workshop and job cards (repairs)

The workshop dashboard at Repairs → Dashboard is the bays-at-a-glance view: who's working on what, expected completion, parts waiting, jobs running over.

A job card holds the customer, vehicle, complaint, mileage in, promised completion, line items (labour + parts), photos, internal notes, status, and payments. Status flows booked → in progress → done → invoiced → paid → closed. Stock decrements when a part line is saved.

Proforma invoice PDFs render from the line items at any time. Customer can approve through the portal with one click. Once you generate the real invoice you can charge through any connected gateway or mark paid manually.

Parts catalogue and inventory

Parts have name, brand, price, stock, optional part number, supplier, dimensions, weight, video, photos, and compatibility ("Fits car make / model"). The catalogue filters separate Part brand (what's printed on the part) from Fits car make/model (which vehicle it goes on).

Bulk edit supports: set or adjust price (absolute, +/−%, +/−£), set / add / subtract stock, replace brand or colour, toggle customer-orderable and minimum qty, replace compatibility. Everything wraps in a single transaction.

Product videos: drop an MP4/WebM/MOV/MKV up to 100 MB. We transcode through ffmpeg to web-optimised H.264 with the moov atom at the front, so playback starts after the first ~256 KB downloads. YouTube/Vimeo embeds in the description are picked up automatically.

Stock movements log every change (auto-decrement on job line save, manual adjustment with reason) so you can audit historic stock at any date.

Vehicle listings and the public storefront

Vehicle listings are separate from parts. Each listing has price, mileage, body type, fuel, transmission, seats, doors, condition, photos, optional walkaround video, MOT and tax status (pulled from DVLA on demand), and a description.

Two visibility switches: status (draft, active, sold) and show on public storefront. Only active or sold listings with the storefront switch on appear at /?route=cars-for-sale.

The public storefront has Autotrader-style filters: make → model cascade, price min/max, year min/max, mileage max, fuel and transmission multi-select, body type, has-video, sort, free-text search. Sticky sidebar on desktop, slide-out drawer on mobile.

Orders, picking, and shipping

Orders are separate from job cards. They cover parts you sell to customers (or that customers buy themselves through the portal shop). Line items, delivery address, payment, status.

Picking: Picking → Today's picks shows a bay-by-bay walking order. Tick each part as you pull it. Once everything's ticked the order flips to ready to ship.

Shipping settings under Settings → Shipping: carriers (Royal Mail, Parcelforce, DPD, …) with their service tiers, free-shipping threshold, default carrier per region, packaging weight allowance, per-order overrides.

Payments and refunds

Three gateways, any combination: Stripe (cards, Apple/Google Pay), PayPal (PayPal + cards), GoCardless (SEPA / UK direct debit, ideal for recurring billing). Connect under Settings → Payment methods.

Two payment modes on every invoice / job:

  • Mark paid for cash / bank transfer / in-person card terminal. Updates the ledger and emails a receipt.
  • Process payment for online charges. Gateway opens, charge succeeds, status flips, receipt emails.

Refunds: through the same gateway the original charge used. Stripe→Stripe, PayPal→PayPal, GoCardless→GoCardless. Manual refunds post a negative entry on the customer credit ledger.

GoCardless quirk: settlement takes 2-3 business days. The invoice flips to paid when the webhook confirms settlement, not when the mandate is signed — that's normal.

Accounting integrations

Three providers, three add-ons at £10/month each: QuickBooks Online, Xero, Sage Business Cloud Accounting. Subscribe to as many as you want.

What syncs: invoices and payments push to your accounting provider as you finalise them in GarageSync. Customers and items are matched on existing accounting data so we don't create duplicates. VAT codes are picked up automatically.

The sync runs as a chunked AJAX job with a live progress bar. Large back-fills don't block the UI; you can keep working while a 12-month back-fill runs.

Per-provider notes: QuickBooks needs VAT codes per line on the UK Start tier (we add them). Xero refresh tokens rotate on every refresh (we persist). Sage Start tier rejects due dates on invoices and requires a customer address (we strip the date and build the address).

If a sync fails you see exact provider errors in Integrations → History. The status card shows honest red / amber / green, never the cheerful-but-misleading "all good" that other tools sometimes do.

eBay Sync

£10/month add-on. OAuth-connect once. Read-only mode is ON by default — every write call (publish, update, withdraw, delete) throws while it's on. The safety net is owner-mandated; do not disable it until you've verified everything's right.

Browse and import: we merge Inventory API + Trading API results, deduplicated. Tick listings, hit import. We pull description (HTML stripped to text), brand from item specifics, every picture (deduplicated by URL hash), and any YouTube/Vimeo/mp4 video found in the description.

Publish: from a part page or in bulk from the catalogue. Preflight checks four prerequisites (addon active, OAuth connected, read-only off, default category + 3 policies set) and tells you exactly what's missing.

Business Policies: required by eBay. If your eBay account doesn't have them already (common for older sellers) use Integrations → eBay → Settings to opt in and configure shipping / payment / return policies — we submit the lot in one go.

Per-row refresh: re-pull GetItem for one listing without touching price or stock. Useful when you've edited on eBay directly.

Convert part → vehicle: on a part page, Convert to vehicle for sale. We soft-delete the part, create a vehicle listing draft, copy images, and re-point the eBay link so the round-trip keeps working.

Email, SMS, and WhatsApp marketing

Two add-ons at £7.50/month each. Email Marketing has a WYSIWYG builder, image upload, 5 starter templates, plus an MOT-due reminder cron that's automatic once configured. SMS & WhatsApp Marketing uses a channel selector per campaign — same recipient lists, different transport.

Recipients can be: your whole customer list, a pre-defined segment (e.g. MOT due in 14 days, last service over 6 months ago, VIP tag), or a manual selection you've ticked.

Reporting per campaign: opens, click-throughs, unsubscribes, bounces (email) or delivery / read receipts (SMS/WhatsApp where available).

Deliverability: configure SPF, DKIM, DMARC for your sending domain (DNS records shown in Settings); SMS goes via Twilio; WhatsApp goes via Meta Cloud API (you connect your own Business account).

Loyalty & Rewards

£12.50/month add-on. Define a programme: points-per-£ rate, redemption tiers, expiry rules. Members accrue points on completed repairs and parts orders. Tier benefits map to discounts on parts or labour.

Today it's basic CRUD — members, points, manual redemption. Auto-redemption mechanics (apply at checkout, point-balance-as-currency) are on the roadmap. Current customers use it as a structured rewards log they can show members.

Multi-Location Management

£25.50/month add-on. Add your branches under Multi-location → Locations. Each job card can be assigned to a location. Users can be scoped to a location (staff at branch A see only branch A's jobs). Reports filter by location. Stock view filters by location.

The base unit of accounting is still the tenant — your subscription / billing covers all locations under one umbrella. Locations are a partition within your tenant, not separate tenants.

Reviews and reputation

Built in to the core — no add-on needed. Reviews → Request review sends a tokenised submission link to one customer or a batch, via email / SMS / WhatsApp. The link opens a public form with no login.

External reviews (Google, Facebook) can be logged manually under Reviews → Log review so they aggregate into your reputation card. The reputation card shows average score, total count, recent reviews, channel breakdown.

The customer portal

Every customer can have a portal account. From their side they see: their vehicles with MOT and service history, ability to request repairs, approve quotes (proformas), pay invoices, buy parts, track orders, message your support.

Three ways to give them access: email invite (they set a password), magic link (you send a one-shot URL by email / SMS / WhatsApp; they click and they're in), or sign-up form (they create their own account; you approve).

Customer data isolation: every query is scoped to the signed-in customer ID. They cannot see other customers, you cannot see other garages' customers. Audit-logged on the server side, not just the UI.

Support and the AI assistant

Two tiers. Standard support is free, email-only, 24 working hours weekdays only. Premium Help (£15/month) unlocks WhatsApp as a contact channel and tightens the response window to 2 hours, 7 days a week.

Every ticket gets read by our Groq-powered AI agent. By default the AI drafts a suggested reply as an internal note and a human reviews before sending. The AI never sends on its own unless your sysadmin explicitly enables auto-answer for tenant-to-sysadmin ticket types (and even then it's only on a curated subset).

The AI is grounded in this knowledge base — you're reading the same content right now. It's instructed to admit when it doesn't know and to escalate to a human; it does not invent prices or features.

External tools can post replies through our headless API at /public/api/support.php using a per-tenant API key. Useful for WhatsApp gateways and AI agents.

Reports and analytics

Built in. Sales summary (revenue, refunds, gross/net), repair throughput (jobs per day, average completion time), parts movement (in/out, top sellers, slow movers), customer LTV (lifetime value), MOT-due cohort (how many vehicles need an MOT in the next 30 days).

Date ranges + CSV export on every report. Multi-location filter on the location-aware reports if you run that add-on.

Frequently asked questions

Pricing and billing

How is pricing structured?
One base plan for GarageSync plus optional add-ons. Add-ons are listed in Settings → Add-ons / Marketplace. Current paid add-ons: SMS & WhatsApp Marketing (£7.50), Email Marketing (£7.50), QuickBooks (£10), Xero (£10), Sage (£10), Loyalty & Rewards (£12.50), Multi-Location (£25.50), eBay Sync (£10), Premium Help (£15). All monthly, all GBP.
Is there a free trial?
Yes, 14 days. No card needed up front.
Do you take transaction fees on my customers' payments?
No. We charge a flat plan + add-on fee. Card processing fees go to your chosen gateway (Stripe / PayPal / GoCardless), not to us.
Can I cancel any time?
Yes. Cancel from Settings → Subscription. Your account stays active until the end of the billing period.
Can I cancel a single add-on without touching my main plan?
Yes. Cancel any add-on from Settings → Add-ons. The cancellation applies at the end of the current billing period.
Do you offer annual billing?
Not yet. Everything is monthly.
What happens to my data when I cancel?
Kept for 30 days then permanently deleted. Final exports are made available before deletion. Your customers' personal data is anonymised so it isn't orphaned.
Can I add VAT to my plan invoice?
Yes. Enter your VAT number under Settings → Company. UK VAT is added per invoice; reverse-charge for EU VAT-registered customers if applicable.

Sign-up and account

How do I sign up?
Visit the sign-up page, enter garage name and a work email, verify the email. Setup takes about five minutes total.
I never got the verification email.
Check spam. If it's not there, ask us to resend (link on the verification page) or sign in to your sysadmin-created account and use Resend verification.
Can I change my garage name later?
Yes — Settings → Garage. Your account slug (the URL piece) cannot be changed once set.
How do I add staff?
Settings → Team → Add user. Pick a role (admin, manager, staff). They get a verification email.
What's the difference between tenant admin and manager?
Tenant admin can do everything including billing and team management. Manager can do everything except billing, subscription, and team. Staff is workshop-floor only.
How do I reset my password?
Sign-in page → Forgot password. We email a reset link. Link is single-use and expires after an hour.
How do I change the theme?
Top-right user menu → Preferences. Dark and light variants. Preference persists across devices.
Is two-factor auth supported?
Not yet — on the roadmap. For now, use a strong unique password and a password manager.

Customers

Where do I add a customer?
Customers → Add customer. Name plus one contact channel is the minimum.
Can I bulk-import from a spreadsheet?
Yes. Customers → Import. Drop a CSV, map your columns to ours, hit Apply.
A customer says they didn't get the portal invite.
Check Settings → Notification channels → SMTP test first. If that's OK, ask them to check spam, then resend from their row.
What's a magic link?
A one-shot login URL. You paste it into WhatsApp / SMS / email. They click, they're signed in — no password.
How do I merge duplicate customers?
Customers → Duplicates surfaces probable matches. Tick the rows, pick the primary, hit Merge.
Can a customer have a running credit balance?
Yes. Customer detail → Credit. Deposits (+), charges (−), credit limit caps overdraft.
How do I print MOT and service history for one car?
Vehicle detail page → Print MOT & Service History. Single PDF: DVLA fields, full MOT log with advisories and defects, every repair.
I added a vehicle and MOT shows blank.
DVSA can take a day or two after a first MOT to publish. Click Get MOT info later to refresh.
Where do tags come from?
You define them. Customer detail → Tags → Edit tags. Tags drive segments and marketing.
Can I export a customer's full data?
Yes. Customer detail → Export. JSON + PDF in a ZIP. Customers themselves can do this from their portal under Account → Export my data.

Repairs and the workshop

How do I start a new job?
Repairs → New repair. Pick the customer, pick their car, complaint, mileage in, promised completion. Lands on the workshop dashboard as booked.
How do I add a part to a job?
Inside the job card, Add item, search the catalogue, set quantity. Stock decrements on save.
Customer wants a quote before we start.
Job card → Create proforma. PDF quote. Email it; portal customers can approve in one click.
How do I bill them?
Job card → Generate invoice. Then Mark paid (cash / bank transfer) or Process payment (online gateway). Receipt emails itself.
I uploaded a photo to the wrong job.
Open the job → click the photo → Delete. Re-upload to the right job.
Can I see today's bays at a glance?
Repairs → Dashboard. Who's on what, expected completion, parts waiting, overruns.
How do internal notes differ from customer-visible comments?
Internal notes are flagged on save. The customer never sees them; the AI is also instructed to never echo them. Public comments show in the portal.
What if a customer rejects the quote?
They click Reject in the portal with an optional comment. Job stays at booked. Edit lines, re-issue the proforma.

Parts and inventory

How do I add a part?
Parts → Add part. Name, brand, price, stock are required. The more compatibility data, the easier customers find it.
How do I change prices on a whole brand at once?
Filter by brand → Select allBulk editPrice → +5% (or whatever). One transaction.
My parts search returns nothing.
Used to be a PDO bug where LIMIT ? bound as string and MySQL refused it. Fixed in 2026-05. If you still see it, message support with your filter URL.
How do I attach a video to a part?
Edit part → Product video. MP4 / WebM / MOV / MKV up to 100 MB. We transcode to web-optimised MP4 with faststart so playback starts on the first 256 KB.
How is stock tracked?
Each part has a Stock movements tab logging every change with reason, qty, and user. Auto-decrement on job line save; manual adjustments with a reason.
How do I delete an image from a part?
Part detail → gallery → click image → Delete. To reorder, drag the thumbnails.
What does "Convert to vehicle for sale" do?
Soft-deletes the part, creates a vehicle listing draft, copies images. Useful when something you listed as a part is actually a whole car (engines, body shells).
Why are there two brand filters?
Part brand is the manufacturer printed on the part. Fits car make/model is which vehicle it goes on. They're different and both matter.

Vehicle listings and the storefront

How do I add a car for sale?
Vehicle listings → Add. Type VRM, we fill DVLA fields. Add price, photos, video, body type, features.
My listing isn't showing on the public storefront.
Three things must all be true: status is active or sold, the Show on the public Cars for sale storefront toggle is on, and deleted is off.
Where is the public storefront?
/?route=cars-for-sale. No login required.
I sold the car — should I delete the listing?
Set status to sold instead. It stays visible (SOLD badge) which is good social proof. Delete only if you genuinely never want it surfaced.
Can I have a custom domain?
Not yet. The storefront lives under garagesync.co.uk for now. Multi-tenant subdomains are on the roadmap.
Does the storefront filter by has-video?
Yes. Buyers can filter to "with video only".

Orders and shipping

How do I take an order from a customer?
Orders → Add order. Pick a customer, add line items, set delivery. Or let them order through the portal shop.
How does the picking workflow work?
Picking → Today's picks. Bay-by-bay walking order. Tick each part as you pull it. Order flips to ready to ship when everything's ticked.
How do I configure carriers and shipping costs?
Settings → Shipping. Add carriers with service tiers. Set defaults (free-shipping threshold, default carrier per region, packaging weight). Override per order.
Can a customer pick up in person?
Yes. Add a "Collect in person" shipping method with £0 cost. Customer picks it at checkout.

Payments and refunds

Which gateways do you support?
Stripe (cards + Apple/Google Pay), PayPal (PayPal + cards), GoCardless (SEPA / UK direct debit). Connect any combination under Settings → Payment methods.
Direct debit through GoCardless settled but the invoice still says unpaid.
GoCardless settles in 2-3 business days. Invoice flips to paid when the webhook confirms settlement — not when the mandate is signed. That's normal.
How do I refund a Stripe charge?
Refund through Stripe (dashboard or our refund button). We update the invoice ledger on webhook and email the customer a receipt.
What's the difference between Mark paid and Process payment?
Mark paid records cash / bank transfer / in-person card — no online charge. Process payment opens a gateway to take an online charge.
Card payment said "Method not allowed".
API endpoints are POST-only. If you reached one via URL it'll 405.
Can the customer pay with Apple Pay?
Yes — through Stripe. Make sure your Stripe account has Apple Pay enabled on its dashboard.

Accounting integrations

Which providers do you sync to?
QuickBooks Online, Xero, Sage Business Cloud Accounting. £10/month each.
How is VAT handled?
We pick up the right VAT codes from your accounting provider on connect. QuickBooks Online Start tier in particular needs codes per line; we handle that automatically.
My Xero link keeps dying after a day or two.
Xero refresh tokens rotate every refresh — if one rotation is missed, the link dies after one cycle. Disconnect from Integrations → Xero → Disable, reconnect. Tell support if it keeps happening.
Sage says "Invoice Address is required".
Sage Start tier needs main_address on every invoice. We auto-build it from the customer's address — but if the customer has no address, we fall back to N/A placeholders. Add a real address on the customer.
My sync says 5 succeeded, 3 failed.
Integrations → History → click the run. Each failed record has the exact provider error. Common cause on QuickBooks Start: missing VAT code on the underlying invoice line.
Can I sync historic data?
Yes. Initial sync defaults to "last 90 days" but you can extend. Chunked progress bar means a 12-month backfill doesn't block the UI.

eBay Sync

How do I connect eBay?
Integrations → eBay → Connect. OAuth at eBay. Pick or configure policies after.
What's read-only mode?
Safety toggle that's ON by default. Blocks every write call to eBay. Flip it off when you're ready to publish.
Publish to eBay isn't visible on my part.
Four prerequisites: addon active, OAuth connected, read-only OFF, four defaults set (category + 3 policies). The preflight tells you exactly what's missing.
Publishing fails with "Item Specifics required".
eBay tightened requirements on vehicle-parts categories. Add a Brand item specific to the part and republish.
eBay images duplicated after a refresh.
That was a 2026-05 bug — fixed. If you still have old duplicates from before the fix, ask support to run the dedupe cleanup.
Can I download eBay-hosted videos?
No. eBay's CDN URLs need signed tokens we don't have, and the Browse API explicitly excludes the video field. For eBay videos we render a "Watch on eBay" tile that links out.
How do I delist?
From the part page → Withdraw from eBay. Or from the listing page on eBay itself. Withdrawal calls work only when read-only is off.

Email marketing

How do I send my first campaign?
Email Marketing → New campaign. Pick a starter template, edit content, choose recipients, send or schedule.
My emails are landing in spam.
SPF, DKIM, DMARC on your sending domain. Settings → Notification channels has the exact records to copy into your DNS. Reputation builds over a few weeks.
How does the MOT-due cron work?
Runs daily. Finds customers whose cached MOT expiry is inside your reminder window (default 30 days). Queues your reminder template to each. Set it once, forget.
Can I A/B test subject lines?
Not yet — on the roadmap.
Are unsubscribes tracked?
Yes. Standard one-click unsubscribe header on every campaign. Unsubscribed customers are excluded from future sends in the same channel.

SMS & WhatsApp marketing

Do I bring my own Twilio account?
Yes. Account SID + Auth Token + your from-number. Configured under Settings → Notification channels.
Do I bring my own WhatsApp Business account?
Yes. Meta Cloud API: phone number ID + permanent token. We then send template messages (pre-approved) or free-form text within the 24h customer-service window.
Why can't I free-form WhatsApp without a template?
Meta's policy. Outside the 24-hour service window you can only send pre-approved templates. Inside the window (after the customer messages you) you can free-form.

Customer portal

How do customers sign in?
Email invite (they set a password) or magic link (one-click sign-in from email / SMS / WhatsApp).
Can customers buy parts through the portal?
Yes — if you enable the parts shop. Customer browses your catalogue, adds to cart, checks out using your connected gateway.
Can customers see other customers' data?
Never. Every query is scoped to the signed-in customer's ID. We test this in code review and runtime.
How do I revoke a customer's portal access?
Customer detail → Revoke portal account. Their login is disabled immediately. You can re-issue an invite later.
Can a customer have multiple vehicles?
Yes, no cap. They add each one in the portal and we DVLA-lookup the details.

Notifications

Where do my outbound notifications come from?
Email from your configured SMTP. SMS from your Twilio number. WhatsApp from your Meta Cloud API phone. We never send through our own infra — your accounts, your reputation.
Can I customise the wording of system emails?
Yes — Settings → Notification templates. Override any of the system templates (welcome, password reset, invoice issued, etc.).
How are queue retries handled?
Failed sends retry exponentially: 1 min, 5 min, 15 min, 1 hour, 6 hours, then permanently fail. Failures show in Settings → Notification queue.
Can the customer opt out of specific notifications?
Yes. Customer portal → Account → Notification preferences. Per-event, per-channel toggles.

Support and AI

What's the difference between Standard support and Premium Help?
Standard is included: email, 24 working hours, weekdays only. Premium Help (£15/month) unlocks WhatsApp and tightens to 2 hours, 7 days a week.
How do I subscribe to Premium Help?
Settings → Add-ons → Premium Help. £15/month. Effective immediately on your next new ticket.
What does the SLA badge on a ticket mean?
It shows how long until your response is due: green if comfortably inside, amber if approaching, red if overdue. The exact deadline shows alongside.
What is "Draft with AI"?
A button on every reply box that asks our Groq AI to propose a reply. The AI reads the ticket, the conversation, and our knowledge base, and produces a draft. You edit it, you send it. The customer never sees the original AI draft.
Does the AI ever post directly to the customer?
Only if a sysadmin explicitly toggles auto-answer on for tenant-to-sysadmin tickets. Otherwise the AI is internal-only — every public reply is human-reviewed.
Can I post replies from outside the dashboard?
Yes. Generate an API key under Help → API key and POST replies to /public/api/support.php. WhatsApp channel is gated on premium-tier tickets.
I lost my API key.
Generate a new one. We can't recover lost keys. The old one is automatically revoked when you create a new one with the same label.
What if I find a bug?
Open a ticket with "bug" in the subject. Reproducible steps and a screenshot are gold.
The AI keeps giving wrong answers about feature X.
Likely the knowledge base needs updating for that feature. Tell us; we update the KB and the AI's answers immediately get better.

Privacy, data, and security

Where is my data stored?
On our managed UK server, in a dedicated MySQL database per garage. No third-party data brokers, no analytics that sell your data.
Who at GarageSync can see my data?
Engineers debugging an issue you've opened a ticket about; sysadmins responding to platform tickets. Access is audit-logged. We never browse your data for any other reason.
Are passwords hashed?
Yes. bcrypt. We can't read passwords, we can only reset them.
Are connections HTTPS?
Yes, HTTPS-only. HTTP redirects to HTTPS. HSTS header set in production.
Can I export everything?
Yes. Settings → Backups for the whole tenant. Per-customer export from the portal under Account → Export.
Are you GDPR-compliant?
Yes. Customer-side: data export, deletion, opt-outs. Garage-side: data-processing agreement available on request.
How long are backups kept?
Nightly snapshots, 30-day retention. Full backups can be requested at any time from Settings → Backups.

Browsers, mobile, performance

Which browsers do you support?
Last two versions of Chrome, Edge, Firefox, Safari. Mobile Safari on iOS 15+ and Chrome on Android 10+.
Is there a mobile app?
The web app is mobile-responsive — works well on tablets and phones. A native iOS/Android app is on the roadmap.
Does the customer portal work on phones?
Yes. The customer portal is mobile-first.
Why is the dashboard slow this morning?
Check status (top right). If we're green, try a hard refresh (Cmd-Shift-R). If still slow, open a ticket with your browser, network speed, and the slow page URL.

API and webhooks

Do you have an API?
A focused support API today at /public/api/support.php. A general data API is on the roadmap.
How do webhooks work?
Outbound: we POST to your configured URL on configured events. Inbound: payment gateways (Stripe, PayPal, GoCardless), eBay, Sage notify us at fixed URLs.
Where do I configure outbound webhooks?
On the roadmap. Today, automation is per-add-on (e.g. accounting sync) rather than generic webhooks.
Can I generate multiple API keys?
Yes — one per integration. Revoke individually.

Troubleshooting

"Card payment failed" but the card was clearly fine
Check Stripe webhook log. Common cause is a PHP notice leaking into the JSON response. Refresh the page and retry. If the second attempt also fails, open a ticket with the full error and we'll trace it through Stripe.
Customer says they didn't get the verification email
1. Check Settings → Notification channels → SMTP test works. 2. Ask the customer to check spam. 3. Resend from the customer's row. 4. If still nothing, check your DNS for SPF / DKIM records.
Xero or Sage says "invalid_grant" on sync
Refresh token expired or rotated and we missed the rotation. Go to Integrations → [provider] → Disable, then Connect again. Persistent? Tell support.
eBay publish fails with "Item Specifics required"
eBay tightened this for vehicle-parts categories. Add a Brand item specific to the part and republish. The preflight will then go green.
Magic-link page says "expired"
Magic links are one-shot. Issue a fresh one from the customer's row.
Public cars-for-sale page is empty
Check three things: public_visible = 1, status is active or sold (not draft), and deleted is off. All three must be true.
AI draft button returns "AI agent not configured"
The Groq API key isn't set. We control this; message us and we'll set it.
AI draft returns "Groq API error 413 / TPM exceeded"
Free Groq tier caps tokens per minute. Wait 60 seconds and retry. If you hit this regularly, we upgrade the Groq tier.
Bulk-edit parts page shows "0 of 0 selected"
Apply your filters first, then use Select all on this page or the cycle button to select across pages. Bulk-edit acts on currently-selected parts.
A duplicate customer keeps reappearing in import
The CSV row has a different email / phone than the existing customer. Use Customers → Duplicates after import to merge.
"Access denied: Admin or Manager privileges required" but you are admin
Session desync after a role change. Sign out, sign back in. If it persists, check your role under Settings → Team.
"WhatsApp channel requires the premium-help add-on"
You (or your API client) tried channel=whatsapp on a standard-tier ticket. Subscribe to Premium Help, or use channel=email.
"Connection timed out" when drafting with AI
Our production host has flaky outbound to some Cloudflare-fronted APIs. We auto-retry 4× with backoff. If you see this repeatedly, message us — we may need to upgrade the host's networking.
Stock movements show a count that doesn't match the catalogue
Two common causes: (1) a manual adjustment posted without a reason that you missed; (2) a job line was edited after save and the stock decrement didn't reverse. Parts → row → Stock movements shows the full history with timestamps.
Vehicle MOT data looks wrong
We pull from DVSA. If DVSA is wrong, the override field on the vehicle lets you set it manually while DVSA fixes their record.
My logo doesn't show on invoices
Re-upload under Settings → Branding. Image must be PNG / JPG, under 2 MB, max 1000×400 px. We auto-resize for the invoice template.
Customer can't see their portal
Confirm their portal account isn't revoked (Customer detail → Portal access). If the account exists and is active, send them a magic link to log in without a password.
Public help page (this one) misses something obvious
Open a ticket — we update the underlying knowledge base, which improves both this page and the AI assistant's answers.

API & webhooks

Support API

Headless support ticket API. Authenticated per-tenant with an API key generated under Help → API key when signed in.
Base URL
https://garagesync.co.uk/public/api/support.php
Authentication
Header X-API-Key: gsk_… (preferred) or ?api_key=… query string.
GET ?op=list&status=open|in_progress|waiting_customer|closed|all&limit=50
List tickets for your tenant.
GET ?op=get&ticket_id=NN
Single ticket with its full conversation.
POST ?op=reply
Body: <code>{ticket_id, reply_text, author_type, author_name?, ai_model?, channel?, is_internal?}</code>. <code>author_type</code>: <code>human | ai | system</code>. <code>channel</code>: <code>web | email | whatsapp | api</code>. <code>whatsapp</code> is rejected with 402 on standard-tier tickets.
POST ?op=status
Body: <code>{ticket_id, status}</code> — one of <code>open / in_progress / waiting_customer / closed</code>.

Errors

401missing or invalid X-API-Key
402WhatsApp channel attempted on a standard-tier ticket
403key valid but operation forbidden for role
404ticket not found in your tenant
400malformed request body
429AI back-end rate limit hit (retry after a minute)

Inbound webhook URLs

URLs to configure in your payment / accounting / eBay providers so they can call us when an event happens. These accept POST only.
POST /webhooks/stripe.php
Stripe events (checkout.session.completed, invoice.payment_failed, customer.subscription.deleted, …).
POST /webhooks/paypal.php
PayPal IPN.
POST /webhooks/gocardless.php
GoCardless events.
POST /webhooks/ebay.php
eBay platform notifications.
POST /webhooks/sage_callback.php
Sage OAuth callback (Sage rejects callback URLs with query strings).
POST /webhooks/sage_notify.php
Sage connection-event notifications.

Glossary

Tenant
One independent garage on the platform. Each tenant has its own database, customers, parts, and settings.
Pit Wall
Our shared design system. Dark by default; light theme available.
Job card
A repair record tracking labour + parts for one job on one vehicle.
Proforma
Pro-forma invoice — a quote your customer can approve through their portal in one click.
Magic link
A one-shot password-less login URL you can send to a customer.
Read-only mode (eBay)
Safety toggle that blocks every write call to eBay. ON by default. Flip off when ready to publish.
Premium Help
The £15/month support add-on. Unlocks WhatsApp + 2-hour SLA, weekends included.
SLA tier
Either standard (24h working hours, weekdays only) or premium (2h, 7 days). Persisted on every ticket at create time.
Author type
Who wrote a support reply: human, ai, or system. Persisted on every reply row.
Standard support
The free included tier: email only, 24 working hours, weekdays only.
MOT
UK Ministry of Transport vehicle safety test.
DVLA
Driver & Vehicle Licensing Agency — UK vehicle records.
DVSA
Driver & Vehicle Standards Agency — UK MOT records.
VRM
Vehicle registration mark — the UK number plate.
Tenant admin
Garage owner role. Full access including billing and team.
Manager
Garage role with everything except billing and team.
Staff
Workshop-floor role. Job cards, parts, customers — no settings access.
Customer
A garage's customer. Uses the customer portal.
System admin
Runs the GarageSync platform itself. Sees all tenants for support purposes.
Add-on
A paid module that extends GarageSync. Each subscribed independently.

Still stuck?

Sign in and open a support ticket — we respond within your SLA window. 24 working hours on Standard support, 2 hours 7 days a week on Premium Help.

Sign in & open a ticket Don't have an account? Sign up