New reportWhy Black Friday is a retention event

Your abandoned cart flow doesn't know the difference between a lawnmower and a cake tin

Nicklas Beran Bergström·September 24, 2026·6 min read

Open almost any Klaviyo account today and you’ll find the same flow logic. An abandoned cart sequence splits into two branches: One for returning customers, one for first-timers. A post-purchase flow fires on a fixed schedule, day 7, day 14, day 30, the same three numbers regardless of what actually sold.

That split feels like personalization. It’s really just segmentation with a content swap attached. And according to Casper Ackermann and Emil Flou Hjorth Jensen, who run the marketing automation practice at s360, it’s close to the ceiling of what most ecommerce brands have actually built.

“For many of our clients, when they came to us, personalization in their view, it’s not so much dynamic personalization in a message the way we’d probably define it. It’s much more so, I do a bunch of different segments and send out different variations.” (Casper Ackermann)

We spoke with Casper and Emil as part of our Hello Retail Conversations series. One thing they said kept nagging at us after the recording stopped, because it names a gap almost nobody is talking about yet.

The gap: Content is personalized, timing usually isn’t

Most marketing automation maturity models describe the same arc. Batch newsletters, then triggered flows, then content personalization: A first name, a recommendation block, a dynamic hero image. Brands that have done all three consider themselves advanced.

Emil draws the next line differently.

“We can now way more effectively use product data as a trigger layer as well.” (Emil Flou Hjorth Jensen)

Trigger layer, not content layer. A content layer changes what’s inside the email. A trigger layer changes whether the email fires, and when. Right now, for most brands, only the content layer is actually built with product data. The trigger layer still runs on a generic clock, set once and forgotten.

A lawnmower and a cake tin don’t belong in the same flow

Emil’s example is the one that makes the problem concrete.

“If you’re a Bauhaus or a Jem & Fix, there’s a huge difference if a person bought a lawnmower or something to bake with.” (Emil Flou Hjorth Jensen)

A static post-purchase flow treats both purchases identically: Same delay, same next message, same logic. But a lawnmower and a cake tin don’t live on the same replenishment curve, don’t invite the same cross-sell, and don’t earn the same follow-up email on day 14. One of those purchases might not deserve a message again for six months. The other might be ready for a complementary product suggestion within a week.

Multiply that by a real catalog: Thousands of SKUs, dozens of categories, wildly different price points and repurchase cycles. No team can hand-build a branch for every meaningful product difference at that scale.

“It’s really, really hard to statically create different journeys.” (Emil Flou Hjorth Jensen)

Why segmentation can’t fix the timing gap

The instinct, when a flow feels too blunt, is to add more branches. More segments, more manually maintained rules. That’s how most teams have tried to close this gap so far, and it’s also why most give up before getting very far.

Segmentation scales linearly with effort. Every new distinction, lawnmowers versus garden furniture versus power tools, is another branch someone has to build and maintain by hand. Product-driven timing doesn’t work that way. It scales with the data itself. The system doesn’t rely on a person noticing that a lawnmower and a cake tin behave differently. It reads how each product actually behaves and adjusts the timing, SKU by SKU.

That’s a different kind of infrastructure than most marketing teams have built. Casper’s own audits back that up. It’s rarely a data problem at all.

“Normally when we do an audit, it’s probably, you’ve tapped into 20% of the use cases there is from a personalization perspective.” (Casper Ackermann)

The product data mostly already exists somewhere in the stack. What’s missing is a layer that turns it into timing decisions instead of leaving it as another field on a product page.

What one-to-one timing looks like in practice

Casper’s read on where this is heading is specific.

“I think we’ll get to a point where e-commerce businesses have the ability to fully tailor a message on a one-to-one basis.” (Casper Ackermann)

One-to-one on both dimensions at once: What the email shows, and whether it fires, and when. In practice, that means treating purchase cycle, price sensitivity, category, and complementary items as inputs a system reasons over continuously, rather than assumptions baked into a flow diagram once and left alone for a year.

Where Hello Retail fits

This is the layer Product Agents was built to sit on. It’s connected to Klaviyo, and it works from product-level behavioral intelligence. It knows when a product is likely to need replenishing, based on actual purchase history. It knows when a complementary item drops in price right after someone buys the thing it pairs with. Either way, the timing comes from the product’s own data, not from a generic day-14 send.

The intent gets defined once. The system decides who to contact, when, and with which product, product by product, instead of an agency or an in-house team maintaining that logic by hand across an entire catalog.

It’s also the thinking behind the partnership between Hello Retail and s360. The idea is to pair that product-level layer with the marketing automation practice already doing this work for clients every day.

The takeaway

The next round of personalization gains probably won’t come from a better subject line algorithm or a smarter recommendation block. They’ll come from finally answering a much blunter question: Does this product, this specific one, even belong in the flow it’s currently sitting in?

For most brands, right now, the honest answer is that nobody’s checked.

Read the full conversation with Casper Ackermann and Emil Flou Hjorth Jensen: Marketing automation beyond guesswork →