Integration Runtime

Pre-launch · financial writes ship disabled

One signed path from your products to your customers’ books.

Integration Runtime Engine sits between ezeetel’s products and the accounting systems their customers already use. Product backends call it with HMAC-signed requests; it owns the OAuth state, the operation catalog, sync state, idempotency and webhook fan-out — so five products don’t each rebuild the same integration five times.

Request path

ERP
E‑commerce
Communication
CMS
Booking
Integration Runtime
hmac oauth idempotency catalog webhooks

QuickBooks Online

Calendar providers — planned

Five products, one runtime, one place where OAuth state, the operation catalog, idempotency and webhook fan-out live.

What happens to one write

Every step is a record you can read back.

Integrations fail in the gap between “we sent it” and “it worked”. This is what the runtime does with that gap.

  1. Signed, then read

    Your backend signs the request. The runtime checks the timestamp window, looks up your key, decrypts it, and compares the signature in constant time — and only then writes the replay nonce. An unverified request writes to no database and alters no customer data — it is still counted against the abuse limits that run ahead of authentication, which is the point of putting them there.

  2. Admitted, one connection at a time

    Each connection has its own coordinator holding the serialization slot, the rate budget and the circuit state. Two writes on the same connection never race, and that connection's share of the provider rate limit is spent deliberately rather than discovered by getting throttled.

  3. Reserved before the call

    A reservation row is written before the provider is contacted, and stamped again the moment the call starts. If the runtime dies mid-flight, the next attempt can tell the difference between “never sent” and “sent, outcome unknown”.

  4. Called with a stable key

    The create carries an idempotency key derived from yours. A retry replays the original response rather than creating a second invoice. Duplicate safety is the provider's guarantee, not a search-and-hope afterwards.

  5. Linked

    On success the reservation flips to linked with the provider's identifier and sync token. That mapping is what stops the same object being created twice, on any later attempt, from any replay path.

  6. Reported back

    When the job reaches a terminal state, a signed webhook carries the outcome to whatever endpoints you have configured for that event. Delivery is best-effort by design and never blocks the job, so the record itself is the source of truth: the whole attempt, including every failure, stays queryable at GET /v1/sync-jobs.

How it is built

Claims we can show you.

Tenancy is a required argument, not a filter you remember

On the interface you call, every function that reads or writes customer data takes both the product identifier and the customer identifier. There is no optional-scope path to leave off. Our operator console has a few deliberate cross-tenant paths — triaging a failed job means finding it before you know whose it is — and each is named individually in code and gated behind single sign-on. A test walks every endpoint the application actually mounts and refuses any that has not been classified with a reason, so adding a privileged endpoint quietly fails the build.

Credentials sealed to their owner

Tokens and secrets are encrypted with per-environment data keys wrapped by a root key held as a platform secret. The owning product and customer are bound into the encryption itself: decrypted in the wrong context, a credential does not come out wrong — it does not come out.

Forward-only migrations, published contract

Schema changes are forward-only and checksum-verified on every run; there is no rollback path that silently rewrites history. The public interface is versioned and emitted from the code that serves it, so the specification cannot drift from the runtime.

Where this is today

  • Pre-launch. No production traffic and no customers yet.
  • Operations that create financial documents — invoices, payments, refunds — ship disabled and cannot be enabled until a documented internal verification is completed and recorded.
  • QuickBooks Online is the first provider. Google and Microsoft Calendar are planned and not built.
  • The rendered documentation site is built but not yet published. Until it is, the OpenAPI specification is the contract.
  • No service level agreement is offered, and none is implied.