Ecommerce

How to choose a data ingestion tool for ecommerce: Fivetran, Airbyte, Daton, Funnel, and custom code

Compare Fivetran, Airbyte, Daton, Funnel, Portable, Stitch, and custom code for Shopify, Amazon, TikTok Shop, Klaviyo, and ads, and pick one per source.

Linus Tse

Greyfield Data

13 min read
In this article 9 sections

I have run ecommerce data through Fivetran, Airbyte (Cloud and self-hosted), Daton, Funnel, and pipelines we wrote ourselves in Python and Java. The tool matters less than most comparisons suggest. What matters is whether each source lands complete, on time, and at a cost that doesn't surprise you.

Greyfield sets up and runs this layer for ecommerce brands as part of an ecommerce data warehouse and reporting build. If you're not sure you need a warehouse yet, the ecommerce analytics setup quiz gives you a starting answer in eight questions.

Key takeaways

  • Choose a tool per source, not one tool for everything. It's normal to end up with two or three ingestion methods across a stack.
  • The pricing model matters more than the price list. Fivetran charges by monthly active rows, Daton and Stitch by rows, Airbyte Cloud by credits or capacity, Funnel by connectors, accounts, and destinations, and Portable a flat fee per data flow.
  • Connector coverage for ecommerce sources differs most on TikTok Shop, Amazon, Recharge, and NetSuite. Check the vendor's own connector page before you sign.
  • Custom code is worth it when a managed connector can't keep up with a source's volume or rate limits, or doesn't load the fields you report on. Klaviyo profiles are the case we've hit most.
  • Whatever you choose, alert on freshness per source and compare row counts against the source. A connector that says "succeeded" can still be missing data.

This post builds on our earlier Fivetran vs Airbyte vs Daton comparison. It adds Funnel, Portable, Stitch, and custom code, a source-by-source view, and the lessons from running custom pipelines in production.

Decision flow for choosing an ingestion option per ecommerce source: custom code, Airbyte self-hosted or dlt, a managed loader, or Funnel
Decision flow for choosing an ingestion option per ecommerce source: custom code, Airbyte self-hosted or dlt, a managed loader, or Funnel

What are your options for getting ecommerce data into a warehouse?

There are three kinds of option: a managed connector service, open-source software you run yourself, and code you write. The table below lists how each one is priced, as each vendor describes it on its own site. Prices change often, so the link is the source of truth.

Option How you run it Pricing model Source
Fivetran Managed service Monthly active rows (MAR), priced per connection; a free plan covers low volumes Fivetran pricing
Airbyte Cloud Managed service Credits on Standard (volume-based on Standard and Plus); capacity-based "Data Workers" on Pro and Enterprise Flex Airbyte pricing
Airbyte self-hosted Your servers Airbyte Core is free to self-host; you pay for servers and the time to run them Airbyte pricing
Daton (Saras Analytics) Managed service Rows loaded into your warehouse per month, with a row allowance per plan and overage per million rows; a free Lite plan Daton pricing
Funnel Managed marketing data hub Plan tier plus Flexpoints, spent on connectors, accounts, and destinations; Snowflake as a destination is on Enterprise Funnel pricing
Portable Managed service Fixed monthly fee by number of data flows, with no data volume caps Portable pricing
Stitch Managed service Rows per month, in plan tiers Stitch pricing
dlt or custom code Your code, your scheduler dlt is an Apache 2.0 open-source Python library; you pay for compute and engineering time dlt on GitHub

Two notes on the table. Fivetran counts inserts, updates, and deletes toward MAR, but not unchanged rows during re-syncs or the initial load. Funnel is built for marketing data and includes harmonization and dashboards, so it isn't a like-for-like price with a plain loader.

Which tools cover Shopify, Amazon, TikTok Shop, and the rest?

All of them cover Shopify, Meta, and Google Ads. The differences are TikTok Shop, Amazon, Recharge, and NetSuite. We checked each vendor's own connector catalog on November 4, 2026.

Source Fivetran Airbyte (Cloud and self-hosted) Daton Funnel Portable Stitch dlt
Shopify Yes Yes Yes Yes Yes Yes Verified source
Amazon Seller (SP-API) Yes Yes Yes Yes Yes Not found Build it
Amazon Ads Yes Yes Yes Yes Yes Not found Build it
TikTok Shop Private preview Not found Yes Yes Yes Not found Build it
Meta (Facebook) Ads Yes Yes Yes Yes Yes Yes Verified source
Google Ads Yes Yes Yes Yes Yes Yes Verified source
Klaviyo Yes Yes Yes Yes Yes Yes Build it
Recharge Yes Yes Yes On request, Business or Enterprise plan Yes Yes Build it
NetSuite Yes (SuiteAnalytics) Yes Yes Not found Not found Yes (SuiteAnalytics) Build it
GA4 Yes Yes Yes Yes Not confirmed Yes Verified source

"Not found" means the source wasn't in that vendor's public catalog when we checked, not that it can never be done. "Build it" for dlt means using its REST API source or your own code. Portable lists a Google Analytics connector but its page doesn't say whether it reads GA4.

Where each "Yes" comes from:

A listed connector is a starting point. It doesn't tell you whether the tables you report on are included, how far back history goes, or how the connector handles late changes. Test those with your own account before you commit. For which sources are worth connecting at all, see 9 ecommerce data sources worth connecting to a warehouse.

What would we use for each ecommerce source?

This is Greyfield's view from the builds we've run, not a ranking. It assumes a brand loading into Snowflake or BigQuery with no full-time data engineer.

Source What we'd start with Why Watch for
Shopify A managed connector (Fivetran, Airbyte, or Daton) Every option covers it, and orders, refunds, and customers are the core of every report Edited orders and late refunds; re-read a trailing window rather than only new orders
Amazon SP-API and Ads Daton or Fivetran when Amazon is a large channel Amazon reports are slow to request and fees arrive after the sale Settlement and fee timing; see where Amazon seller fees live in the SP-API
TikTok Shop Daton, Funnel, or Portable The broad tools list it as preview or not at all Check the tables offered against what finance needs
Meta and Google Ads Whatever loader you already use; Funnel if marketing owns the data and wants harmonized spend Volumes are modest and every tool covers them Platforms can update recent days' results, so re-sync a trailing window
Klaviyo A managed connector first; custom code or Klaviyo's own warehouse export once profiles get large Profile volume and API limits are where managed connectors struggled for us Profile updates that change nothing you report on (below)
Recharge A managed connector Fivetran, Airbyte, Daton, Portable, and Stitch all list it Funnel needs a data request on Business or Enterprise
NetSuite Fivetran, Airbyte, Stitch, or Daton Coverage is narrower, so the choice is smaller Setup usually needs a NetSuite admin to grant access
GA4 Google's own BigQuery export, then load it where you need it It's raw events from Google itself Standard properties have a daily export limit of 1 million events

For joining these sources once they land, see how to combine Shopify, Klaviyo, and Recharge data and how to track a customer across platforms.

When is custom code worth it?

Custom code is worth it when a managed connector can't load a source completely and on time, or loads far more than you need. It's rarely worth it to save a modest connector bill: you swap a vendor invoice for engineering and on-call time.

The clearest case we've run is a DTC apparel brand we work with. Airbyte loads most of its raw sources into Snowflake on a scheduled window. Custom Java and Python jobs load Klaviyo profiles and email events, plus several other sources, into the tables reports read. These are the lessons from running them.

Respect the API's rate limits by design

Klaviyo limits API requests per account, with a one-second burst window and a one-minute steady window, and returns HTTP 429 with a Retry-After header when you hit either. Our incremental sync waits as long as that header says, retries server errors with increasing delays, and work inside a fixed time budget per run, so one slow stream can't starve the others.

Pick the incremental cursor carefully

An incremental sync reads only records changed since the last run, usually by an updated timestamp. Klaviyo's profile updated field changes on any property change, including activity timestamps such as last_event_date. In one catch-up we measured, more than 99.9% of profiles marked as updated had no change in email or marketing consent, the fields reports used.

That doesn't make the cursor wrong. Filtering to subscribed profiles only would have missed unsubscribes. But it means the load is much bigger than the business change, and under row-based pricing you'd pay for every one of those updates.

Dedupe on the source's own ID

APIs repeat records across pages and retries, and a crash can replay a batch. We merge events on the event ID and keep one row per profile ID with the latest updated timestamp. When we cleaned up duplicates already in the tables, we took a zero-copy backup first and wrote a rollback script before the cutover.

Checkpoint in the same transaction as the data

The pipeline commits the merged rows, the cursor, and the watermark together, so a crash replays at most one group of pages and never skips one. Retries never reset a cursor. Grouping 100 API pages into one merge, instead of several smaller merges, cut the measured merge time by 60 to 75% in two trials, with identical output.

Run backfills as a separate, supervised job

A catch-up after an outage runs as its own job, with a lock so it can't collide with the scheduled sync and a hard time limit. We don't call it fixed after one green run. We wait for three scheduled batches in a row that finish with time to spare.

Monitor freshness, not job status

The incidents that hurt were the quiet ones:

  • A single order note with unusual characters made the warehouse reject a whole Shopify batch. Every downstream job still ran on time, on stale data. Bad records should be quarantined, not allowed to fail the batch.
  • An alert that was already open for a Klaviyo backlog absorbed a new, unrelated Shopify failure, so no email went out. The client noticed stale numbers in a dashboard first. Each new failure now alerts on its own.
  • An ad platform token was read from a shared spreadsheet that someone edited. Credentials now live in a protected file, and a missing or malformed token file stops the load before it touches the warehouse.

Check what the vendor offers before you build

Before writing more code, check whether the source can push data to you. Klaviyo, for example, offers a managed Snowflake export under its Advanced KDP subscription, which is separate from the standard marketing plan. If the entitlement and fields fit, that can replace custom pagination entirely.

What does each option cost to run?

Cost is the subscription plus the warehouse plus people's time, and each pricing model grows with a different thing. We don't publish example totals here because they depend on your volumes and your negotiated rates.

Pricing model What makes the bill grow Where it bites in ecommerce
Monthly active rows (Fivetran) Rows inserted, updated, or deleted each month, per connection Sources that update many rows without real change, such as email profiles
Rows loaded (Daton, Stitch) Rows written to your warehouse The same churny sources, plus full re-syncs of large tables
Credits or capacity (Airbyte Cloud) Sync volume on Standard and Plus, or reserved capacity on Pro Frequent syncs of large sources
Connectors, accounts, destinations (Funnel) Each new connector, ad account, and destination Many ad accounts or several destinations
Flat per data flow (Portable) Number of source and destination pairs Fine for high volume; less so for many small sources
Self-hosted or custom (Airbyte Core, dlt, your code) Servers, warehouse compute, engineering and on-call time Upgrades, API changes, and incidents land on your team

Brands often question Funnel's cost against Airbyte's. They are priced on different things: Funnel's price includes harmonized marketing data and dashboards, while Airbyte only moves data. If marketing uses Funnel's dashboards and harmonization every day, compare it to what building those would cost. If you only need raw data in a warehouse, compare it to a loader.

Don't forget the warehouse side. Loaders that merge into large tables use warehouse compute on every sync, and that cost sits on your warehouse bill, not the connector's.

How do you decide? A checklist

Work through this per source, then look at the stack as a whole.

  1. List the tables and fields your reports actually use for this source.
  2. Confirm the connector loads those tables, with enough history, on the vendor's own docs.
  3. Run a trial on your own account and compare row counts and totals to the source for a recent week.
  4. Estimate monthly volume under the vendor's pricing model, including updates, not just new rows.
  5. Decide who gets the alert when the source is stale, and how stale is too stale.
  6. Check whether the source offers its own export to your warehouse.
  7. Prefer one or two loaders across the stack. Each extra tool is another bill, login, and failure mode.
  8. Write down what would make you switch: a coverage gap, a cost threshold, or repeated incidents.

Frequently asked questions

Is Airbyte cheaper than Fivetran for ecommerce?

It depends on your volumes, because they bill differently. Fivetran charges by monthly active rows per connection, and Airbyte Cloud by credits or capacity; self-hosted Airbyte is free software you pay to run. Price both with your own row counts, especially for Klaviyo and Shopify.

Which ingestion tools support TikTok Shop?

Daton, Funnel, and Portable list TikTok Shop connectors. Fivetran has a TikTok Shop Partner Center connector in private preview, and we didn't find one in Airbyte's or Stitch's catalogs when we checked in November 2026.

Can I use more than one ingestion tool?

Yes, and most brands do. A managed loader for the core sources plus custom code or a native export for one or two hard sources is a common, sensible setup. Keep monitoring in one place so every source reports freshness the same way.

When should I self-host Airbyte?

Self-host when someone on your team can own servers, upgrades, and monitoring, and when row or credit pricing would be large at your volume. Without that owner, Airbyte Cloud or another managed tool is usually cheaper once you count time.

Does Funnel load data into Snowflake?

Yes, but Funnel's pricing page lists Snowflake as a destination on its Enterprise plan. BigQuery and other cloud destinations are on Business. Compare the plan you'd need with a loader if a warehouse is your only destination; see Funnel vs a custom data warehouse.

What to do next

If you're choosing between a marketing data tool and a warehouse, the comparisons with Supermetrics, Windsor.ai, and Improvado show where each fits. For the rest of the stack around ingestion, see the ecommerce data stack, mapped and the modern data stack, mapped.

Not sure which setup fits? Take the ecommerce analytics setup quiz, read about ecommerce data warehouses with Greyfield, or book a call with Linus to talk through your sources.

Part of the Ecommerce reporting guides, a reading path through related articles.

Related

← All articles