Skip to content

Moves: Repeat purchases

Klaviyo agency

Klaviyo run properly: store events checked, segments that update themselves, flow filters that stop overlap, and forms and consent kept clean.

Klaviyo agency: focused business owner updating the online shop.

Who it's for

  • Stores with Klaviyo installed and only the default flows switched on
  • Accounts where campaigns go to one master list and nothing is segmented
  • Merchants whose flows overlap so buyers get several messages in a day
  • Teams who want the account documented well enough to run themselves

Most stores using Klaviyo are using a fraction of it. The integration is connected, three flows were switched on during setup, and everything since has been campaigns sent to one big list. The platform is doing the easy part while the parts that separate a good account from an average one sit untouched.

We work inside your existing account. First we check what your store is actually sending into it, because every segment, trigger and report is built on those events and a missing product identifier or a broken checkout event quietly limits everything downstream. Then we move the account from static lists onto segments that maintain themselves, set trigger filters and exit conditions so a customer is never in two sequences arguing with each other, and use the profile data the platform already collects rather than guessing at delays.

We also deal with the unglamorous half: sign-up forms that collect consent properly, a dedicated sending domain, suppressions handled rather than ignored, and a naming convention so the account still makes sense to whoever inherits it.

It mainly moves the repeat purchases lever. The account stays yours and so does the data in it. The free plan scopes the work inside your account and states the base fee plus growth share.

How we run it

The honest process, in order.

  1. Check what the store integration is really sending

    Before any building, we look at the event stream. Are orders arriving with line items, product identifiers, categories and values attached. Is the started checkout event firing once and carrying the cart contents. Are viewed product events present, and do they include enough to segment on. Are refunds and cancellations coming through, so a returning customer is not chased for a review of something they sent back. Gaps here are invisible until a flow behaves strangely six months later, so they get fixed before anything is written.

  2. Move the account from lists onto segments

    A list is a snapshot of who was in it when someone pressed save. A segment is a rule that keeps checking. Almost everything a store wants to target is a rule: bought this category and not that one, subscribed but never ordered, ordered twice, has not opened anything in ninety days, lives where the product is in season. We rebuild the audiences as segments, retire the stale lists rather than leaving them to confuse the next person, and write down what each one means.

  3. Set trigger filters and exits so flows stop colliding

    The most common Klaviyo problem is not a missing flow, it is several flows firing at the same person at once. Someone abandons a cart, buys an hour later, and still receives two reminders plus a browse message. We set filters on every trigger and exit conditions on every flow, so a purchase stops the sequences it should stop, and the smart sending window prevents a person receiving more than the account has decided is reasonable. Then we test it with real profiles rather than assuming.

  4. Use the profile data instead of guessing a delay

    Klaviyo builds properties on each profile from the order history it has, including an expected date for the next order once enough purchases exist. That is more useful than a flat thirty day wait, because a customer buying a large size and one buying a small size do not run out on the same schedule. We use those properties where the data supports them, fall back to a product-level cycle where it does not, and keep the two clearly separated so nobody assumes a prediction is a fact.

  5. Tidy the forms, the consent and the suppressions

    Sign-up forms decide the quality of everything downstream. We check what each form asks for, what consent it records, where it appears and how aggressively it interrupts. Collecting a first name and a category preference at signup makes the welcome sequence far more useful than an email address alone. Suppressed and bounced profiles get handled properly rather than accumulating, and any list bought or imported from an old system gets treated with suspicion before it is mailed.

  6. Test one variable per flow message

    Flows can run split tests continuously, which makes them the right place to test and campaigns the wrong one. We change one thing at a time: the subject line, the timing of the second message, whether an offer appears at all, the order of the content. Tests run until the difference is large enough to act on, not until the end of the month. Results and decisions get logged in the account so a future test does not repeat one we already answered.

Worked example, not a result

Example: the discount that went to people already buying

Say a store has 40,000 subscribers. A win-back email with a code goes to everyone who has ever ordered, which is 15,000 people, and produces 300 orders at $50.

Looked at more closely, 9,000 of those 15,000 had already ordered within the last 60 days and were on their normal cycle. Around 200 of the 300 orders came from that group, so the code discounted revenue the store was getting anyway. The other 100 orders came from the 6,000 who had genuinely gone quiet.

The fix is a segment, not a better email. The win-back goes only to the lapsed group, and the recent buyers get a message about the product they bought instead. Round made-up numbers, used to show the shape of the mistake.

Questions about klaviyo agency

Usually the plumbing before the writing. In most accounts we find events arriving incomplete, audiences built as static lists, flows without exit conditions, and forms collecting nothing but an address. Fixing those changes what every future message can do. Then we look at which flows are missing for your product cycle, and rewrite the ones sending at the wrong moment.

A list is a fixed group of profiles that only changes when someone is added or removed. A segment is a definition that re-evaluates itself, so a profile joins or leaves as their behaviour changes. Lists still make sense for a one-off import or a specific sign-up source. Almost everything else is better as a segment, because it stays correct without maintenance.

Yes, for anything beyond a very small volume. Sending from your own authenticated subdomain means your reputation is yours rather than shared, and it lets inbox providers connect the mail to your brand. It takes a short warm-up period where volume is increased gradually. Skipping the warm-up is the usual reason a new domain starts landing in spam.

It can, and keeping both in one place has real advantages: one profile per customer, one set of segments, and flows that can choose between an email and a text based on what the person responds to. The consent rules are different for each channel though, so the two subscriber bases are not interchangeable and we treat them separately.

Only where rebuilding is genuinely quicker than repairing. A flow with reasonable content and a broken trigger needs a filter, not a rewrite. A flow that has been edited by four people over three years and nobody can explain is usually worth replacing. The plan lists which is which, with the reason, before anything is switched off.

Niches where this matters most

See how klaviyo fits your store.

The plan scopes this service for your store before anything starts.

Store, name, email and phone. A person replies from a real inbox. Privacy

Get your free growth plan