Connect WorkWing to another system
There are five ways to join WorkWing to the rest of your software, and the right one depends on which side starts the conversation. Work out whether your other system needs to ask WorkWing something, be told when something happens, or answer a question while an engineer is on site, and the choice mostly makes itself.
The short version
Section titled “The short version”| Option | Who starts it | Use it when | Plans |
|---|---|---|---|
| API | Your system | Your software needs to read or change jobs, customers or schedules | Every plan |
| Webhooks | WorkWing | Your software needs to know the moment something happens | Every plan |
| Integrations | WorkWing, from a job | Someone working a job needs an answer from another service | Basic and above |
| Automation tools | Either | You want to join systems without writing code | Every plan |
| AI assistants | A person | Someone wants to look things up or book work by asking | Every plan |
Most real connections use two of these together. A webhook says a job has been completed; the API is how you then read the job’s parts and notes.
The API: your system calls WorkWing
Section titled “The API: your system calls WorkWing”Your own software sends requests to WorkWing to read and write the same jobs, customers, resources and locations your team works with. Your system decides when to call, and WorkWing answers.
Reach for it when:
- A booking form on your website should create a job, put it in the diary and assign an engineer.
- Your CRM is where customers are created, and WorkWing should get a copy every night.
- Your own customer portal should show where a job is up to. The tracking endpoint returns the stage, the booked window and a rough position for the technician that is safe to show a customer.
- A finance system should pull last week’s completed jobs for invoicing.
You need a key from Settings > API Keys, and creating one needs the Tenant Admin role. Every key belongs to one brand and carries only the permissions you tick, so give each connection its own key with the least it needs. Every write carries an Idempotency-Key header, which is what makes a retry safe.
Start with Getting started with the API, then the recipes:
- Create and schedule a job
- Safely create jobs with idempotency
- Nightly customer sync
- Handling API errors
Webhooks: WorkWing tells your system
Section titled “Webhooks: WorkWing tells your system”A webhook is WorkWing calling a URL you own when something happens: a job is created, changes status or is completed, an engineer sets off or arrives, a customer is added. Your system doesn’t have to ask over and over whether anything has changed. It’s told.
Reach for it when:
- A completed job should raise an invoice in your accounting package.
- An engineer setting off should trigger your own text message to the customer.
- A job missing its resolution target should post to your team’s chat channel.
- A new customer in WorkWing should appear as a contact in your CRM.
A webhook body carries ids and the few plain values you need to decide whether you care. It doesn’t carry names, addresses or notes, so a webhook receiver usually calls the API next to fetch the record. Requests are signed, so your receiver can check each one came from WorkWing, and the same event can arrive more than once, so store the event id and skip the ones you’ve handled.
You set webhooks up in Settings > Webhooks, which needs the Tenant Admin role or a custom role that includes managing webhooks. Webhooks lists every event and shows the signature check. The recipes take you from there:
Integrations: WorkWing asks another service
Section titled “Integrations: WorkWing asks another service”An integration is a request WorkWing sends to another service’s API while someone is working a job. You set the request up once in Settings > Integrations, then put it on a job type’s form as a button. The engineer, or whoever is filling in the form, presses it and the answer lands in the form.
Reach for it when:
- A broadband installer runs a line test from the job and the result fills in the completion form.
- A maintenance firm looks up a customer’s account balance before starting work.
- An engineer checks an address or a stock level against another system from the job.
The difference from a webhook is that someone is waiting for the answer. A webhook tells your system something happened and nobody in WorkWing waits for the reply. An integration asks a question and shows the answer to the person who asked.
Integrations are on Basic and above. Setting one up needs the Tenant Admin role, or a custom role with the integration permissions. Your own software can run a saved integration through the API too. See the Integrations overview, What you need from the other service and Running integrations from the API.
Automation tools: joining them up without code
Section titled “Automation tools: joining them up without code”Tools such as n8n, Zapier and Make sit between WorkWing and your other systems and do the joining for you. They connect to WorkWing with the same two pieces described above: a webhook pointed at the tool starts a workflow, and the tool’s HTTP request step calls the API with your key.
Reach for one when:
- You have no developer and the other system already has an app in the tool, such as your accounting package or your chat tool.
- You want to try a connection quickly before deciding whether it’s worth building properly.
WorkWing has no app of its own inside these tools. You use their generic webhook trigger and HTTP request steps. In practice:
- In the tool, start a workflow with its webhook trigger and copy the URL it gives you.
- In WorkWing, create a webhook for that URL in Settings > Webhooks and tick the events the workflow is for. Add a custom header carrying a secret value of your choosing, and have the tool check it.
- In the workflow, add an HTTP request step that calls
https://api.workwing.io/v1with the headerAuthorization: Bearerfollowed by your API key, to fetch whatever the webhook body leaves out. - Add the steps for your other system, using the tool’s own app for it.
Every write to the API needs an Idempotency-Key header, so add one to each HTTP step that creates or changes something. Use a value that stays the same if the tool retries the step, such as the webhook’s event id with a suffix for the step.
AI assistants: a person asks in plain language
Section titled “AI assistants: a person asks in plain language”Claude and ChatGPT can connect to WorkWing directly. Someone in your office types “who’s free on Thursday afternoon?” or “book Sam onto the boiler service at 14 Mill Lane at 10 tomorrow”, and the assistant looks it up or does it.
Reach for it when the person asking is a person, not a program. The assistant acts as whoever connected it, with that person’s own permissions, in the workspace they chose. It can look up customers, engineers, schedules, jobs and projects, and it can create jobs, book them, add someone to a project’s crew, add notes and cancel jobs. Everything else stays in the web app.
Each person connects their own assistant, and no API key is involved. See AI assistants. If you’re building your own agent rather than using Claude or ChatGPT, Connect an AI assistant covers how it should handle access and confirmations.
To have an AI coding assistant write an API integration for you, which is a different thing, point it at the API description in Getting started with the API.
What’s next
Section titled “What’s next”- Getting started with the API: keys, permissions and your first request
- Webhooks: every event and how to check a signature
- Import existing customers and work: bring your data across before you connect anything