Zapier¶
A private Zapier app records one run event per Zap execution. Push it into your own Zapier account once, add the Record a Run action at the end of a Zap, and the value report builds itself.
Zapier shows tasks and, on its Enterprise plan, a time-saved figure computed as a flat two minutes per action step. LumaTrack prices each run at a rate you can cite, counts failures against the total, and keeps the baseline as your labeled assumption, per client where you report to clients. The app is how a Zap gets into that ledger.
Install the app¶
The app is distributed as source and installed as a private integration in your Zapier account. That needs no review and no listing; it is yours, and you can invite teammates to it. You need Node 18 or newer.
git clone https://github.com/LumaTrack/lumatrack-zapier.git
cd lumatrack-zapier
npm install
npx zapier-platform login
npx zapier-platform register "LumaTrack"
npx zapier-platform push
zapier-platform register creates the private integration under your account and writes
its id to a local file that never leaves your machine. zapier-platform push uploads it.
LumaTrack (1.0.0) then appears in the Zap editor's action search for you, and
for anyone you add with npx zapier-platform invite <email>.
Source and issues: github.com/LumaTrack/lumatrack-zapier.
Connect¶
When you add the action, Zapier asks for a connection:
| Field | Value |
|---|---|
| API key | From Settings, API keys in LumaTrack, shown once at creation |
| Base URL | Prefilled with https://lumatrack.io; change it only for a self-hosted instance or a custom domain |
An ingest-only key is enough and is the one to use: if it leaks, an attacker can post junk runs, and they cannot read or restate your ledger. The connection test reads your automations list, which is the one read an ingest-only key is allowed.
Record a run¶
Pick the automation from the dropdown, map External ID, and leave the rest alone on the happy path.
| Field | Notes |
|---|---|
| Automation | Required. The slug this Zap reports as; create it in the app or over the API |
| Status | success, failure, skipped or cancelled; defaults to success |
| External ID | Idempotency key. Map the trigger record's own id, so a replayed Zap run returns the original run instead of creating a duplicate |
| Units processed | Records this run handled; drives per-unit valuation. A Zap that processed 240 rows reports one run with 240 units |
| Duration (seconds) | Wall-clock runtime. Leave it blank rather than send a guess |
| Failure reason | Root cause, e.g. auth/credential. Powers the failure-reason Pareto |
| Executed at | Only for evidence that genuinely happened earlier. Closed months are refused; send late evidence without it |
| Baseline minutes override | Manual minutes this specific run replaced, when it differs from the automation's baseline |
| Metadata | Key/value pairs kept with the run. Store references; a whole payload bloats the run |
| Source | Defaults to zapier |
The step returns the run id, whether the request was a replay (deduplicated),
and whether the run was held over the plan's monthly cap.
All three are available in later steps. A held run is stored and earns nothing,
so a Zap that cares can branch on it.
Report failures too¶
One action on the happy path is half the integration. Failed Zaps cost money and save nothing, and reporting them is what makes the reliability chart and the net numbers credible.
Zapier stops a Zap at the step that errors, so the failure has to be reported from somewhere that still runs. Two ways that work:
- A second Zap on Zapier Manager's New Zap Error trigger, with a Record a
Run step set to Status
failure, the Zap name mapped to the automation, and the error message mapped to Failure reason. - Paths inside the Zap, where the risky work sits on one path and a Record a
Run with Status
failuresits on the fallback.
skipped and cancelled each book as themselves. A filtered-out Zap run did no
work, and a cancelled one did not finish. Neither earns value and neither inflates
your failure count.
Record a loss event¶
The second action, Record a Loss Event, books a ticket, an outage or a truck roll into the loss ledger: pick the event type, map the ticket or alert id to External ID, and send measured downtime only. Dollars are never estimated from a guess. See incidents.
Limits and honesty¶
- The app is private to your Zapier account. There is nothing to find in the Zapier app directory, by design; a public listing waits until enough people use the private one to justify its maintenance promise.
- A run is one HTTP call. Zapier retries a failed step by replaying it, and the External ID is what keeps a replay from counting twice.
- Runs over your plan's monthly cap are held and released when you upgrade or the month resets.