Read what you already run. Change none of it.

Connecting is the part most integration projects treat as solved and most integration debt starts in. Beetl reads from your systems without writing to them, and keeps a copy of what the source actually sent before anything is transformed.

What happens when a source is added

Four things, in this order.

Access is scoped before anything runs

You provision read-only access to a defined set of tables. Not the schema, not the database, the specific tables the flow needs.

Cloud systems connect through the vendor's own API. Systems that cannot be reached from outside your network use a connector deployed inside your perimeter, opening an outbound tunnel. No inbound firewall rules, no open ports.

The schema is read, not assumed

Beetl introspects the source and shows you what it found: tables, columns, types. That inventory is what the pipeline is written against.

This is also where undocumented reality surfaces. Fields that are always null, columns whose name stopped matching their contents years ago, the two tables that should have been one.

A source-faithful copy is retained

What the source sent is stored before any of your mappings are applied, with stable identifiers, extraction timestamps, and cursors.

This is the single decision that makes the rest recoverable. When a number is questioned six weeks later, the original record is still there, so the answer is a lookup rather than an investigation.

Incremental behaviour becomes the platform's problem

Cursors, watermarks, and what counts as changed are held by Beetl rather than inferred from whichever timestamp column somebody picked.

Missed updates and missed deletes are two of the nine ways integration debt accrues. This is where they stop.

Data landscape

Every connection, every dataset, every pipeline that depends on it.

Connections are not a list. They are a graph, because the thing you usually need to know is what breaks if this source changes.

1Connections on the left, each with its type and last-active time.
2Ingested datasets in their source-faithful form, versioned.
3Pipelines, showing how many sources each one depends on.
4Validated outputs, which is what the rest of the business reads.
Beetl's data landscape view: a graph linking file connections to bronze datasets, to pipelines, to gold datasets.
Data landscape. Connections, datasets, and the pipelines between them.

What we connect to today

Seven system types, and we would rather list them precisely than claim everything:

  • Databases. Read-only, over a scoped connection.
  • ERP systems. Including SAP Business One and Microsoft Dynamics 365 Business Central.
  • Files and spreadsheets. The format most operational truth actually lives in.
  • HTTP feeds. Structured feeds with a named output contract.
  • Webhooks. Connection-typed, media-type checked, and schema-enforced on ingest.
  • Local operational systems, reached through a connector deployed inside your network.
  • Object storage and staging locations you already maintain.

Broader ERP coverage is in active development. Generic connectors for arbitrary third-party APIs are not something we offer today, and we would rather say so than let you discover it during a scoping call.

Start with the source that worries you most.

Tell us what it is and what has to come out of it. We will tell you whether we can read it today.