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
Spark
Forms, calls, schedules and email start a run; it updates your CRM, calendar, mail, chat and accounts.

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

  1. Form receivedEnquiry #3184 · Blocked drain · Marrickville
  2. Contact updatedContact Dana Wills · deal created
  3. Slot bookedThursday 10:00 · Sam L.
  4. Email sentTo Dana Wills · Booked for Thursday 10:00
  5. 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.

Demo data

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

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.

Demo data

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.

  • 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.

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