Automations that move the work for you.
We write automations in TypeScript that run on scheduled jobs and webhooks beside your app on Vercel and Supabase, with every run logged. Where n8n, Make or Zapier suits you better, we'll work in those too.
Wired into your CRM, calendar and mail, so the busywork runs in the background and nobody retypes anything.
- A form is sent
- A call ends
- Every morning
- An email lands
One enquiry, every step, nobody retyping it.
Scroll to run it. In five steps, a form arrives, the CRM is updated, a slot is booked, a confirmation goes out and a task is created. Switch to Advanced to follow a phone call through eight steps, all the way to a paid invoice.
One enquiry, every step, nobody retyping it.
Scroll to run it. In five steps, a form arrives, the CRM is updated, a slot is booked, a confirmation goes out and a task is created. Switch to Advanced to follow a phone call through eight steps, all the way to a paid invoice.
A demo run with fictional data: a form arrives, then the crm is updated, then a slot is booked, then a confirmation is sent, then a task is created. Built as our own automation logic, tested and deployed like the rest of your product.
New enquiry runFinished in 3.2 seconds
Run log
- Form receivedEnquiry #3184 · Blocked drain · Marrickville
- Contact updatedContact Dana Wills · deal created
- Slot bookedThursday 10:00 · Sam L.
- Email sentTo Dana Wills · Booked for Thursday 10:00
- Task createdPrepare for Thursday's job · Sam L.
How we build itRuns as a server function
A task is created
A task lands on the right person's board, and every step is written to the run log.
Writes to the run logTask created
Built as our own automation logic, tested and deployed like the rest of your product.
Six automations SMBs ask us for most.
Most of what we build for SMBs follows one of these patterns, fitted to your tools and the way you run.

Calls logged into your job or practice software
When a call ends, who rang, what was said and what happens next land on the right job, client or patient record. Nobody types up the day's calls at five o'clock.
Call recordings, with summaries
Calls are recorded where your policy and the caller allow, transcribed, and boiled down to a short summary and the follow-ups it promised, filed against the record.
Leads captured and booked
An enquiry from a form, an ad or a phone call becomes a CRM record, a booked slot and a confirmation, straight away, outside business hours as much as inside them.

Your n8n, Make or Zapier set-up, untangled
A web of scenarios that has grown past anyone's comfort becomes TypeScript we write, test and run on a schedule or webhook, with a log of every run and an alert when something fails. Where a scenario is better left where it is, we tidy it there.
Your software, finally talking to each other
Jobs, invoices, contacts and payments stay in step between your CRM, accounts and job software, so one change is made once instead of three times.
Admin and timings, handled
Rosters and appointments scheduled around who is free, reminders sent at the right moment, reports assembled each week. The manual hours go back to the work.
One automation, twelve industries.
We have implemented countless internal automations for small and medium businesses across many major industries, including trades, health, professional services and property, saving them hours of admin every week.
Trades
- When: Missed call
- Step 1: SMS booking link
- Step 2: Job in ServiceM8
A missed call gets a text with a booking link, and the job lands in ServiceM8 with the address.
Secured like production software.
An automation holds keys to your CRM, your calendar and your inbox, so we deploy it like production software. These controls ship with every automation we build.
On our default Vercel and Supabase stack, data is encrypted in transit (TLS 1.2+) and at rest (AES-256).
- Signed webhooks
- Incoming events are verified, using the sender's signature wherever it offers one, so a forged or replayed request is turned away at the door.
- Auth on every endpoint
- There are no open back doors. Every route checks who is calling and what their role allows.
- Server-side validation
- Every action is checked on the server against a strict schema before anything changes. Nothing is trusted from the browser.
- Rate limiting
- Each endpoint caps how often it can be called, per user and per key where it applies, so a runaway script or a bad actor cannot flood it.
- Least-privilege keys
- Each automation gets keys scoped to exactly what it needs, and read-only wherever it can be.
- Secrets management
- API keys and tokens live in encrypted environment secrets, never in the code, the repository or the browser.
- Audit logs
- Every run records what started it, what it changed and when, so any outcome can be traced back.
- Environment separation
- Development, preview and production run apart, with their own data and keys, so testing never touches live records.
Requests arriving at your endpoints
FromWebsite formPOST /hooks/enquiry
429 turned away. Rate limit: 120 calls in 10 seconds from one address.
6 accepted · 2 turned away
Of 8 requests, 6 are accepted and 2 are turned away: a POST to /hooks/stripe from Unknown, 203.0.113.47, with a 401: Bad signature: it doesn't match Stripe's signing secret; and a POST to /hooks/enquiry from Unknown, 198.51.100.12, with a 429: Rate limit: 120 calls in 10 seconds from one address.
If it has an API, we can work with it.
A few of the tools we can connect to. The same goes for anything that offers an API or sends webhooks.
Automations we can set up for you.
Ready-made starting points that we fit to your business and your tools.
Missed-call text back
A missed call gets a text within a minute with a booking link, and the call is logged to the contact.
Review requests
When a job is marked done, the customer gets a short thank-you and a link to leave a Google review.
Overdue invoice reminders
Unpaid invoices in Xero or MYOB get a polite reminder on the schedule you set, and stop the moment they're paid.
Call summaries to the record
Every call is transcribed, summarised and filed to the right contact or job, with the follow-ups it promised.
Lead capture and routing
Form, ad and email enquiries become one CRM record, assigned to the right person and answered straight away.
Document intake
Invoices, receipts and forms that arrive by email are read, checked and filed to the right place, with anything unclear flagged.
Inbound mail triage
Reads every mailbox and files each message to the right contact and job.
Reply assist
A suggested reply, drafted the moment an interested lead writes back.
Weekly operating review
A Friday roll-up: what shipped, the money, what's blocked.
Quote to invoice to build
One run from a quote to a raised invoice and a planned build.
Content flywheel
Audits your channels, researches the topic and drafts and schedules the day's posts.
Outreach funnel with spend caps
Email and voice outreach with a cap on every vendor and a daily report.
Questions we get asked
- We already use Zapier or Make. What changes?
- Your choice. Our default is to move what your zaps or scenarios do into TypeScript code that runs beside your product: scheduled jobs on Vercel Cron, webhooks for events as they happen, and every run logged in Supabase with what it did. If you'd rather keep n8n, Make or Zapier, we'll build and tidy it there instead, with the same care over keys, retries and alerts.
- What happens when a step fails?
- It is caught, not lost. Steps retry safely without doing the same work twice, every run is written to the log with what happened, and anything that still fails raises an alert instead of failing silently.
- Can it work with the systems we already use?
- Almost always. We work API-first: REST and GraphQL, webhooks and OAuth. If a system has an API or sends webhooks, your product can read from it and write to it, with retries and rate limits handled properly. When we build your software, we give it a clean REST API, or whatever API structure your other tools need, so it plugs into anything.
- Where does our data live?
- Wherever it needs to. By default on Vercel and Supabase, in an Australian region where you need it, or in your own cloud. On our default Supabase stack, each customer's data is isolated at the database level, encrypted in transit (TLS 1.2+) and at rest (AES-256), and backed up with point-in-time recovery.
Related services
Let's build it.
Tell us what you need automated and we'll show you how we'd build it.
Or email jack.west@sparkintegrations.com.au
