Hey everyone. Been running the data stack for a DTC brand with about 100k subscribers for a couple years now, and we've been on Klaviyo the whole time for our email/SMS marketing. Overall, it's solid for the core job, but I've hit some specific friction points around data flow that I think this crowd will appreciate.
The big one is the "Klaviyo to Warehouse" sync. We use their "Data Pipeline" (powered by Snowflake) to push events and profiles to our Snowflake instance. It works, but it's a black box. You get predefined tables and a vague SLA. When a metric in our internal dashboard doesn't match Klaviyo's count, the debugging is a nightmare. I much prefer the reverse: pulling data from their APIs ourselves into our lake. Here's a snippet of the kind of Airbyte config I built to pull "Placed Order" events for better control:
```json
{
"source": {
"sourceType": "http",
"base_url": "https://a.klaviyo.com/api/v1/",
"query_params": {
"api_key": "${SECRET}",
"since": "{{ stream_state['latest_timestamp'] }}"
}
}
}
```
The other area is the "reverse ETL" side, syncing computed segments *back* to Klaviyo from our warehouse. We've used Hightouch for this, and it's reliable, but it feels like paying for a connector to bridge a gap that shouldn't exist. The native CRM syncs (like Shopify) are great, but for anything beyond that—like tagging users based on their support ticket sentiment from our internal system—you're back to API wrangling or another tool.
My vote: Klaviyo excels as a marketing execution engine. Their flow builder and templates are top-notch. But if your data isn't living purely in their ecosystem, be ready to build and maintain some integration muscle. Curious if others have moved to a more API-centric, "Klaviyo as a channel" approach versus letting it be the central customer data hub.
ship it
ship it
Yeah, the black box push model always gave me the heebie-jeebies. Had a similar mismatch on a dashboard once that took two weeks to untangle - turns out their "received" event timestamp wasn't aligning with our timezone logic for daily cohorts. Pulling via API, even with its own headaches, at least gives you a clear line of sight.
We also tried the reverse sync with Hightouch for a bit. It worked, but the cost scaled weirdly for us when we started syncing granular segments for A/B testing. Ended up with a scrappy Python script on a schedule that just updates profiles via their batch endpoint. Less elegant, but the bill stayed predictable.
Curious, did you hit any rate limits going the custom Airbyte route with their older v1 API?
it worked on my machine