Airbyte Implementation Mistakes: Syncs, Schemas and Recovery
Data Engineer and Co-founder, martechdevs
Last updated 9 min read
An Airbyte implementation needs to prove that source changes arrive with the right identity, ordering and meaning. A successful job does not establish that a report is correct. Test inserts, updates, deletions, repeated delivery and schema changes before connecting the output to revenue reporting or customer activation, and plan recovery before you need it.
Last updated: 13 October 2026.
The useful unit of review is the stream. A single connection can contain streams with different keys, update behavior and historical requirements. Treating them all as interchangeable tables is how a working integration produces a misleading dashboard.
Start with one important consumer: perhaps the account health report or a renewal audience. Write down what one row means and which source changes must alter the result. Our warehouse and CDP implementation work connects that business definition to the extraction, modeling and validation rules. The following checks help you do the same in your own deployment.
Mistake 1: Choosing a sync mode without defining the output
Airbyte separates source reading from destination writing. Incremental reading, full refresh, append and deduplicated output solve different problems. Available combinations depend on the source, destination and stream. Check the sync-mode documentation alongside your connector's capabilities.
Before selecting a mode, complete this sentence: “The downstream table contains one row per ___, representing ___.”
For a current subscription report, the blanks might be “subscription” and “its most recent known state.” For an audit analysis, they might be “subscription change” and “the state observed at that change.” Those are different datasets. Counting every appended version as a separate current subscription inflates customers and recurring revenue.
Avoid treating a replicated observation as a complete audit trail. If a source changes several times between polls, the API may expose only the latest state. A warehouse can preserve everything it received without preserving everything that ever happened.
Use a current-state model for operational reporting and a separately defined history model where the source supports the required evidence. The MRR modeling guide explains why this distinction matters for subscription metrics.
Mistake 2: Trusting a cursor that does not track every change
A cursor determines which records an incremental read considers new or updated. Airbyte's incremental append documentation warns that updates can be missed if the cursor field is not updated. It also describes at-least-once delivery and inclusive cursors, which can resend records.
A field called updated_at is not proof that every relevant operation updates it. Application imports, administrative corrections and related-object changes may follow different paths.
For a test record in a nonproduction environment, exercise the actual operations the business uses:
- Create the record and confirm its initial arrival.
- Change a field used in reporting and confirm that the source cursor changes.
- Change it through a bulk import or administrative path, if one exists.
- Apply two changes within the cursor's smallest time unit.
- Run another sync with no further source changes and inspect repeated delivery.
Record the source value, source cursor and destination value for each step. If a change does not advance the cursor, changing the schedule alone will not repair the extraction logic. You need a supported alternative, such as a different source endpoint, an appropriate lookback or a connector's CDC mode where available.
Do not invent a universal lookback duration. Measure how late your source corrections arrive, then test a window that covers the requirement without creating unmanageable rereads. Late-arriving data also needs downstream correction rules, not just another extraction.
Mistake 3: Using a delivery ID as the business key
Airbyte documents _airbyte_raw_id as a random identifier for an incoming record. It is not a replacement for a source order, account or subscription key. The metadata reference also distinguishes extraction time from loading time and notes that some destinations do not populate the latter.
A repeated source record can arrive with a different delivery identifier. If your model treats that identifier as the customer key, it will manufacture new customers every time the source is reread.
Choose a stable key at the grain you need. An order-line stream needs a line-level key or a validated combination, not just the order ID. A multi-account integration may need the source account identifier as part of the key when IDs are only unique within an account.
The following fictional fixture illustrates deduplication logic without querying or changing a real warehouse. source_version is an assumed ordering field supplied by this example; it is not an Airbyte column that every connector provides.
WITH delivered (
source_account, order_id, source_version, amount
) AS (
VALUES
('store-a', 'order-7', 1, 80),
('store-a', 'order-7', 2, 100),
('store-a', 'order-7', 2, 100),
('store-b', 'order-7', 1, 50)
), ranked AS (
SELECT *, ROW_NUMBER() OVER (
PARTITION BY source_account, order_id
ORDER BY source_version DESC
) AS version_rank
FROM delivered
)
SELECT SUM(amount) AS current_amount
FROM ranked
WHERE version_rank = 1;The correct current total is 150. Summing the delivered rows produces 330. Deduplicating only on order_id would also be wrong because two stores reuse the identifier.
The equal highest versions in this fixture are identical. In production, conflicting rows with the same ordering value require an explicit tie rule or an exception to investigate. An arbitrary winner is not a reliable financial definition. Deletions also require their own source-specific handling; this simple example does not implement tombstones.
Mistake 4: Assuming a missing record means a captured deletion
A row that disappears from an API response is not necessarily sent as a deletion event. It may be outside the requested date range, hidden by permissions, archived, filtered or absent because the source is temporarily incomplete.
For every important entity, document the difference between:
- A source that emits a deletion marker.
- A complete snapshot whose absence can be interpreted under agreed rules.
- An incremental endpoint that stops returning deleted records.
- A source that intentionally expires history.
Then perform one deletion test in a safe environment. Inspect the source response and destination behavior, rather than inferring support from the presence of a sync mode.
For a customer audience, keeping a deleted or ineligible record can trigger an inappropriate message. For historical revenue, deleting an old transaction from the reporting model may erase a legitimate past result. The correct downstream response depends on the business object and retention requirements.
If you need to reconstruct current membership from snapshots, first prove each snapshot is complete. A partial extraction should fail validation, not quietly remove thousands of customers from an active audience.
Mistake 5: Treating schema propagation as a completed backfill
Creating a new destination column does not establish that old rows contain its value. Airbyte's schema change documentation describes separate propagation and backfill behavior. Without a backfill, a new field may populate only when existing rows are updated. Removing a cursor or primary key is a breaking change that pauses the connection for review.
Suppose a business adds an account segment field. If only recently changed accounts receive it, a report may show apparently strong performance for the new segment while older accounts remain unknown. That is a coverage problem before it is a marketing insight.
For a new field, measure its population by record age. Compare newly created, recently updated and long-unchanged records. Ask whether null means genuinely unknown, not applicable or not yet backfilled. Those meanings should not be merged automatically.
Choose how changes are reviewed based on downstream consequences. A raw exploration dataset may tolerate automatic additions. A customer activation model needs a named reviewer when a new field changes eligibility. A stopped sync also needs an owner who understands how quickly the affected audience becomes stale.
The same schema guide describes connector upgrades that can change field names, keys or output formats. Read the migration notes before the cutoff and replay the acceptance fixtures against the new version. A connector upgrade is part of operating the pipeline, not an unrelated housekeeping task.
Mistake 6: Ignoring row-level coercion because the job finished
A destination may accept a record while changing a field it cannot represent. Airbyte's metadata documentation describes _airbyte_meta.changes, which can record modifications such as a value being written as null after a serialization problem.
Monitor fields according to their consequence. A null campaign description is different from a null transaction amount or customer key. Set checks for required keys, numerical validity, allowed statuses and unexpected null growth in critical columns.
When a check fails, retain a small redacted sample, the stream, connector version and sync reference. Compare the source value to the replicated value and to the modeled output. That identifies whether the problem began during extraction, destination conversion or transformation.
Do not turn every null into zero to make a chart render. Zero revenue and unknown revenue lead to different decisions. Keep the exception visible and decide whether the report can publish with a qualification or must wait for correction.
Mistake 7: Using Clear as a harmless troubleshooting button
Airbyte's Clear documentation says the operation removes destination records and creates data downtime. If the source no longer retains the historical data, another sync may not recover it.
A Refresh is different. Supported refresh options can retain or remove prior records, and their behavior depends on the sync mode and destination. Refreshes reread data and can delay scheduled work. Choose the exact recovery operation after checking what the source can reproduce.
Before any destructive recovery, establish the affected streams, the last trusted output, historical availability and the restoration path. Preserve data that cannot be recreated. Identify every downstream job that might interpret an empty or partial result as a real business change.
For a renewal audience, for example, an empty intermediate table must not automatically mean “remove all accounts from renewal follow-up.” Pause that consumer or put a completeness gate in front of it while recovery runs.
Estimate reread cost separately from ordinary operation using the Airbyte pricing guide. Cost is one part of recovery; avoiding a false customer action is usually more important.
What should you keep in the acceptance pack?
Maintain a small set of synthetic records that represents the failure modes above. It should be easy to run after a connector upgrade or schema change. The purpose is to prove the business output remains correct, not merely that the connection still authenticates.
Checklist
- A new record appears once in the intended current-state model.
- An update changes the expected field without creating a second business entity.
- Repeated delivery does not change the result.
- Reused IDs across source accounts remain separate.
- A source deletion or archival action produces the agreed downstream outcome.
- A new field has the expected historical coverage.
- An incompatible critical value is detected and investigated.
- A recovery rehearsal protects consumers from incomplete data.
Airbyte's job logs help investigate extraction and loading failures; downloading a job's logs includes its attempts. Keep that technical evidence alongside the business reconciliation result. Neither is a substitute for the other.
Hand over the stream's key, cursor, mode, history requirement, owner and recovery procedure with the dashboard. That gives the next person enough context to fix an incident without guessing why the pipeline was configured that way.
Questions people ask
Why does Airbyte show duplicate records?
First establish whether you are inspecting delivered history or a current-state output. Repeated delivery and updated versions can be expected in an append workflow. Duplicates become an error when the business model counts them as separate entities without the required key and ordering rules.
Can changing the sync frequency fix missing updates?
It can reduce delay, but it cannot make an unsuitable cursor identify changes it never records. Trace a missing update at the source and confirm how the connector discovers it. Choose a supported extraction method that matches the source's change behavior.
Should all schema changes be propagated automatically?
That depends on the consequence of the change and the review process around it. Automatic propagation can be useful in exploratory data, while critical models still need coverage and compatibility checks. Assign ownership for both review queues and paused connections so manual control does not become permanent staleness.
Is extraction time the same as the business event time?
No. An old order can be extracted today, and a recently extracted record can still describe an old state. Keep source business timestamps separate from pipeline timestamps and use the appropriate one for each report.
What should I do first when a report is wrong after a sync?
Pick one affected business record and trace it from source through replication to the final model. Compare values, keys, ordering and deletion behavior at each stage. Repair the first incorrect stage and reconcile the affected output before resuming dependent customer actions.
Sources
- Airbyte sync modes, accessed 13 October 2026.
- Incremental Sync: Append, accessed 13 October 2026.
- Airbyte metadata fields, accessed 13 October 2026.
- Schema change management, accessed 13 October 2026.
- Clearing your data, accessed 13 October 2026.
- Refreshing your data, accessed 13 October 2026.
- Browsing logs, accessed 13 October 2026.
Written by
Jafrin Akter AloData Engineer and Co-founder, martechdevs
Jafrin Akter Alo is a data engineer and co-founder of martechdevs, where the team has delivered 74+ martech, data and growth stack implementations.