Every lead lands in your CRM, or you'll know exactly why.
From your website form to HubSpot, Slack and your pipeline sheet, with retries, a duplicate guard and a plain-English reason when something can't go through.
No sign-up. Your own private sandbox and a 3-minute guided tour.
Or start as Operations (fix failed runs), Developer (webhooks, signed cURL, tests), or Admin (policies, keys, audit).
Step 8 of 9: Held, not dropped: the explanation says what went wrong and names the one change that fixes it.
Held at HubSpot, not dropped
HubSpot rejected the deal because the amount arrived as a range (for example 10k-25k), and the amount field needs a number.
Map the amount with “Budget range → lower bound”, then replay. The steps that already happened won't repeat.
- 10:01:03 AMmapped for HubSpot create or update contact
- 10:01:03 AMHubSpot create or update contact → 429 · Retry-After 6 s
- 10:01:10 AMretry 2 → 200
- 10:01:11 AMHubSpot create deal → 429 · Retry-After 6 s
- 10:01:17 AMretry 2 → 400 invalid_property_value
- 10:01:17 AMheld R-1001 · not retried: won't fix itself
Website form in
Done
Mapped, then HubSpotSimulated
Done
HubSpot · Create dealSimulated
Diego A.
Held, not dropped: the explanation says what went wrong and names the one change that fixes it.
Held at HubSpot, not dropped
HubSpot rejected the deal because the amount arrived as a range (for example 10k-25k), and the amount field needs a number.
Map the amount with “Budget range → lower bound”, then replay. The steps that already happened won't repeat.
Then Slack and Google SheetsSimulated
Post to #new-leads, Add to the pipeline sheet
- 10:01:17 AMretry 2 → 400 invalid_property_value
- 10:01:17 AMheld R-1001 · not retried: won't fix itself
Step 8 of 9
Recorded from this build's engine (commit 7eda814); the apps are simulated. In your sandbox it happens live.
What happens to every lead
Received and verified
The webhook's signature is checked against the sender's secret before anything else happens. A bad signature gets a 401 and is logged.
HMAC-SHA256 per sender
Duplicate guard
Senders retry, so the same event can arrive twice. Lampline stores each event once and answers the repeat with the original run.
unique (sandbox, sender, event id)
Mapped
Fields are copied and reshaped by rules you can read: paths, fixed transforms and filters. No code runs from a mapping.
data-only mapping language
Delivered at each app's pace
Every app has its own rate limit. A call that would exceed it waits for its slot instead of failing.
GCRA slot per app
Retried or held
Temporary errors retry with backoff, honoring Retry-After. Errors that won't fix themselves hold the run with the reason and the fix.
exponential backoff with jitter
Recorded
Every attempt keeps its request, response and timing. Replays skip what already happened, so nothing is done twice.
effect ledger + idempotency keys
The engine, queue, retries, API and tests are real and running. The connected apps are simulated so you can break them safely.
Real, running now
- Signed webhook endpoints
- Duplicate guard
- Postgres queue with leases
- Retries with backoff
- Failure queue and replay
- Public API with keys
- The tests of this build
Simulated
- Shopify
- QuickBooks
- Slack
- Google Sheets
- Stripe (test mode, no real charges)
- HubSpot
- Twilio
They answer like the real services, including their failures and rate limits. Nothing leaves Lampline.
Outgrowing a no‑code automation?
Here is what a built integration gives you, each one something you can check in the demo.
Every step's request and response, for every run
Open any runReplay held runs without doing anything twice
The failure queueRate limits per app: calls wait for their slot instead of failing
Break it › Send 25 leads at onceWebhooks and an API you can test with curl
The Webhooks page
What Flickode would build for you
Lampline is the working sample. Your version runs the same engine, pointed at your tools.
Connectors to your real accounts
Your keys, your rate limits, the webhooks your apps already send.
Your flows
The rules your team follows today, written down as steps you can read and change.
Alerts where your team works
Held runs and expired connections reach the channel you watch.
Deployed in your cloud
On your infrastructure, with the code and the data in your hands.
1448 tests passed in the build serving this page
The build stops on any failure, on a missing report or on fewer than 1448 tests. Commit 7eda814.
See every test in Under the hood- Passed: stores a duplicate delivery once and returns the original runsintegration/engine.test.ts
- Passed: works a sandbox until its runs finish, sleeping through Retry-Afterintegration/drain.test.ts
- Passed: fences a stale worker: after its lease expires, its completion writes nothingintegration/engine.test.ts
- Passed: replays from the failed step on the fixed version; earlier steps are not repeatedintegration/engine.test.ts
- Passed: spreads a burst with GCRA slots: 12 orders at 5 per 10 s all succeed, throttles don't count as attemptsintegration/engine.test.ts
- Passed: rejects a bad signature, logging metadata and at most 1 KB of bodyapi/api.test.ts