Shopmonkey API: The One Shop API You Can Actually Get
The customer approves an estimate at 10am; Carly can tell the tech, update the work, and send the customer a useful next-step message before a service advisor notices the screen. It can also deliver inspections, follow up on declined work, send repair-status updates, and give the shop a concise brief from intake through pickup.
Shopmonkey includes the API and webhooks on every plan, and an admin can generate a key in under a minute. No partner program, no application, no review period, no sales call.
In most software categories that would be unremarkable. In auto repair it’s close to unique. AutoLeap’s own documentation excludes Essentials, Pro, and Elite — every published plan. Tekmetric’s API is partner-gated behind a two-to-three week review at its “sole discretion.” Mitchell 1, CCC ONE, and the dealership systems are gated harder still.
So if you’re trying to automate a shop and wondering which system will actually let you, this is the short list.
What shops actually automate with it
The jobs that come up in every shop, all of which Shopmonkey already knows about:
- Estimate approvals that start work immediately. The customer approves at 10am and the tech finds out when a service advisor happens to check. That gap is billable hours.
- Declined work that gets followed up. A customer defers the brakes today; nobody calls in six weeks. This is the single largest recoverable revenue line in most shops and almost nobody works it consistently.
- Status updates that don’t need a phone call. “Your car’s ready” and “we’re waiting on a part” sent automatically rather than a service advisor working through a call list.
- Inspections that reach the customer with the photos attached, while they’re still deciding.
The declined-work one is worth building first. Every shop has a list of it, and every shop knows the list isn’t being called.
Getting a key
Settings → Integration → API Keys → Get Started or Add New Key → Create API Key. Copy it, because it can’t be viewed again.
Two things Shopmonkey states directly: “Only Admins can create API Keys in Shopmonkey,” and “All API Keys will be created with the same permissions and access as the user who creates them.”
That second one has a failure mode worth planning for. The key inherits the creating admin’s permissions, so if you offboard that person or narrow their role, the integration breaks with a 403, not a 401 — which sends you debugging credentials that are perfectly valid.
The basics:
- Base URL
https://api.shopmonkey.cloud, versioned at/v3. HTTPS only; plain HTTP is rejected. - OAuth 2.0 bearer token —
Authorization: Bearer <token>. Verify one withGET /v3/auth/api_key/status. - Keys are long-lived with an optional expiry date, set and revoked from the web app.
401means missing or bad auth;403means valid credentials without sufficient permission.
Rate limits aren’t published. Shopmonkey’s docs say to contact support for details. You discover your own ceiling from response headers — X-RateLimit-Limit-Minute and X-RateLimit-Remaining-Minute on a rolling 60-second window, with Retry-After on a 429.
One host note that would trip a shallow check: api.shopmonkey.io, docs.shopmonkey.io, and developer.shopmonkey.io all fail TLS. The live surface is api.shopmonkey.cloud and shopmonkey.dev. Those .io dead-ends look exactly like a gated API if you stop there.
Every tier, no add-on
Shopmonkey’s plan comparison carries a row for “Integration → API and Webhooks” marked included on Basic, Clever, Genius, and Multi-Shop alike.
| Tier | Annual | Monthly | Seats |
|---|---|---|---|
| Basic | $215/mo | $239/mo | 3 |
| Clever | $359/mo | $399/mo | 4 |
| Genius | $449/mo | $499/mo | 5 |
| Multi-Shop | Custom | Custom | — |
Extra seats are $20/month. There’s no API add-on fee and no published metering tier.
The one thing that is gated is EDS (Enterprise Data Streaming) — a change-data-capture firehose into Postgres, SQL Server, Snowflake, S3, MySQL, Event Hub, or Kafka. That needs an entitlement provisioned and a sales conversation. You don’t need it for a normal integration.
Full CRUD across about 50 resources
Everything a shop actually cares about is writable: orders (create, read, update, patch, delete), customers with dedicated email and phone search endpoints, vehicles with VIN, license plate, make, model, submodel, and year lookups, appointments with search, and inventory parts with templates and a SKU-exists check.
You can also register webhooks programmatically via POST /v3/webhook rather than only through the UI.
The data model has one shape you must get right up front: estimates, repair orders, and invoices are all the same Order object, discriminated by a status field set to Estimate, RepairOrder, or Invoice. There is no /v3/estimate endpoint. Building three separate resources into your model is the most common early mistake here.
Webhooks: real, signed, and CDC-shaped
Set up under Settings → Webhooks with a name, endpoint URL, and selected events.
Eleven event objects fire: Appointment, Customer, Inspection, Inventory (fanning out to fees, labor, parts, and tires), Message, Order, Payment, PurchaseOrder, User, Vehicle, and Vendor — each on INSERT, UPDATE, and DELETE.
Payloads carry apiVersion, operation, table, data, and on updates a diff array naming the changed top-level fields. Security is the Webhook Standard spec — HMAC256(msgId.timestamp.payload, secret) — with secret rotation keeping old keys valid for 30 days.
Two things that will shape your design:
These are table-level change events, not business events. You get an UPDATE on order with a diff array. There is no “order approved” or “status changed to invoice” event — you derive semantic meaning by inspecting the diff yourself. It’s compounded by normalization: Shopmonkey notes that “certain objects are normalized into multiple tables,” so one logical change can emit several webhooks across different tables. Deduplicating that is on you.
Webhooks disable themselves and don’t backfill. Shopmonkey’s docs: “After a certain number of redelivery failures, the Event will be marked failed and your Webhook will be temporarily disabled… events will not be redelivered automatically when re-enabled. You will need to re-deliver them manually in the UI.”
So an endpoint outage becomes permanent silent data loss unless a human notices and manually replays. Combined with a 55-second delivery timeout, the lesson is to acknowledge immediately and process asynchronously.
Shopmonkey’s AI is two narrow features
Worth being precise, because this vertical is full of AI marketing.
What ships: AI Suggested Response for Google review replies inside the Reviews Manager, and AI Smart Replies in the Message Center. Both are assistive, both keep a human in the loop before anything sends.
What doesn’t exist: any AI agent, AI phone agent, or AI service advisor. Shopmonkey’s pricing page mentions AI nowhere, in-plan or as an add-on.
One thing not to repeat: the old Shopmonkey AI Bot website chat widget is dead — the endpoint returns a deployment-not-found error. It was a real embeddable widget through early 2025, and a config object still lingers in the schema browser, but Shopmonkey does not ship a customer-facing chatbot today.
Getting the event to do something
A repair order moving to invoice, an inspection completed, a payment landing — Shopmonkey fires all of these. What it gives you is a row-level diff, not a decision.
That’s the actual work: turning UPDATE on order, diff: [status] into “the customer approved the estimate, so text them the ETA and tell the tech to start.”
Handing that to an AI assistant runs into a specific limit.
ChatGPT Scheduled Tasks and Claude Cowork both run unattended on timers. Their ordinary task schedulers do not subscribe directly to arbitrary events in connected business apps. ChatGPT Workspace Agents can be invoked through an API, but an upstream system must still detect the event and call it.
“Summarize last month’s average repair order” is well within what ChatGPT or Claude will do with a Shopmonkey export. “Text the customer the moment they approve, and flag the tech” is not, because nothing on that side is watching for the approval.
Carly covers that half:
- Fires on the Shopmonkey webhook — order updated, payment inserted, inspection completed
- Reads the diff and decides — interpreting a table-level change as a business event is exactly the interpretation layer that otherwise gets hand-coded
- Runs the whole response in one flow — pull the customer and vehicle, draft the message, send it, log it
- Acknowledges fast — which matters a great deal when failures auto-disable the webhook and nothing backfills
Because Shopmonkey exposes a public API on every plan, you can connect it natively to Carly from the Integrations tab with your API credentials. Carly can then use Shopmonkey in on-demand, recurring, and event-triggered workflows. AI agents start at $35/month, and workflow steps that don’t use AI run free.
Frequently Asked Questions
Which Shopmonkey plan includes API access?
All of them. Shopmonkey’s plan comparison marks “API and Webhooks” as included on Basic, Clever, Genius, and Multi-Shop, with no add-on fee. Only Enterprise Data Streaming, the change-data-capture firehose, requires a sales conversation.
How do I get a Shopmonkey API key?
Settings → Integration → API Keys → Add New Key. Only admins can create keys, and the key is shown once. It inherits the creating admin’s permissions, so changing that person’s role can break the integration with a 403.
What is the Shopmonkey API rate limit?
Not published — Shopmonkey directs you to support. You read your own limit from X-RateLimit-Limit-Minute and X-RateLimit-Remaining-Minute headers on a rolling 60-second window, with Retry-After returned on a 429.
What webhooks does Shopmonkey support?
Eleven objects — appointment, customer, inspection, inventory, message, order, payment, purchase order, user, vehicle, and vendor — each firing on insert, update, and delete. Payloads are HMAC-signed and include a diff array on updates. They’re table-level change events rather than business events like “order approved.”
Why did my Shopmonkey webhook stop delivering?
Repeated delivery failures mark the event failed and temporarily disable the webhook — and events are not redelivered automatically when it’s re-enabled. You have to replay them manually in the UI, so an unnoticed outage means permanent data loss.
Are estimates and invoices separate in the Shopmonkey API?
No. Estimates, repair orders, and invoices are all the same Order object, distinguished by a status field. There’s no separate estimate endpoint.
More: Tekmetric AI · AI agents for ops · Best AI workflow automation tools
Ready to automate your busywork?
Carly schedules, researches, and briefs you—so you can focus on what matters.
See what people say
"Before Carly, I relied on a Calendly link, but the whole process felt impersonal and not very professional. Carly changed that by handling all the back-and-forth, so I'm no longer stuck in endless email threads trying to line up schedules.
Now Carly reaches out to candidates, shares my real-time availability, lets them pick a slot, then sends a Zoom link and drops it straight into my calendar. She sends reminders to both of us before each call, which has significantly reduced no-shows and last-minute confusion.
On top of scheduling, Carly acts like a full executive assistant, sending me my schedule the night before so I can prepare for each call. It reminds me of the old x.ai assistant, but Carly is noticeably smarter, faster, and better suited to my healthcare recruitment business."


