Klaviyo alternative

I used Klaviyo every day for a decade. Here is what it never fixed.

I was an early adopter, and I know the product better than most of the people who sell it. Carpe Messaging exists because of the limits I hit year after year. I built it on Shopify’s own identity and discount systems.

Identity

How Carpe Messaging recognizes a returning visitor

Safari limits how long a cookie written by a script can last — seven days — which interrupts how well a platform built that way recognizes a visitor who comes back later. Carpe Messaging writes no cookie of its own. It runs as part of your store and uses Shopify’s own visitor identifier, which is set by your store’s server and is not subject to that limit. Recognition still depends on the shopper’s consent and on what their browser has kept: inside an app’s own browser it depends on that app’s storage, and it may not carry between the app and Safari.

Discounts

A discount engine from another era

Klaviyo’s native unique-code setup asks you to configure the discount in Klaviyo.

Its native discount editor exposes a defined, limited subset of Shopify discount settings: only what Klaviyo chose to offer.

Klaviyo does not let me set a form’s discount code to expire three days after each person signs up, or an automation’s discount code to expire two days after its email is sent.

Here a discount is your store’s own, mirrored as it is. On a form, each person gets one code and its expiry counts down from the moment they sign up, on the window you set.

Cost

Paying for profiles you never mail

Klaviyo’s email plans account for active profiles as well as sending volume. Keeping an active profile can affect your plan even when you do not email it. Sending is per message, and checking that an address is worth sending to is per address.

Here you are priced by what you send. The size of your list opens tiers of sending; it is never a bill of its own.

List quality

The hygiene you build by hand

In my own Klaviyo account, eighteen of thirty-three segments existed only to keep bad addresses, bots and the never-engaged out of sends. That is plumbing, and it was my job to maintain it. That was my own account and my own way of running it.

Here every address is validated at signup and at migration, a profile that has never been corroborated by your store is never mailed, and the “suspected bots” segment is built in. Consent-first is a stance: the platform will not help you blast people who never asked.

Consent

Consent is one word, and it belongs to the person

Someone has said yes to your email, or has said no, or has bounced or complained and will never be mailed again. That is the whole of it, and it comes from your store: the same checkbox at checkout and on your forms that Shopify records. There is no second state. No “subscribed to a list” that can disagree with the consent on the profile, and no list or segment that grants permission by putting someone in it. A list is people you chose; a segment is a question you asked; neither one is a yes.

In my own store, people who checked “Please send me email” at checkout were never emailed. They had given consent, but the checkout sync did not put them on the list the welcome automation started from, and the platform had three things that could each say yes or no: consent, a subscription, and a list. Here there is one. A welcome automation starts from what happened, an order, a checkout, a form, a name added to a list, and every message it sends checks that one consent as it goes out, so nobody who said yes is skipped for being on the wrong list, and nobody who said no is mailed for being on the right one.

There is also a word for the merchant’s side of this, and it is not the same word. A pause is yours: stop marketing to this person, or to this whole segment, for now, because of a season, a complaint you are handling, or a reason of your own. A paused person stays in your segments, still hears about an order they place, and comes back the moment you resume. Do not email, the state Klaviyo calls “suppressed”, is different and final: the address bounced, the person reported you as spam, the address was never real, or you decided this person must never be mailed again. The platform will not resume it for you, and it will not let a segment, a list or a pause put it back. Two words, because they are two different things: one is a decision you can change, the other is a fact about the address.

Quality of life

The small things, every day

None of these is a headline feature. Each one is a thing that was annoying, frustrating or a waste of clicks, every single day, and is simply gone.

  • List hygiene happens by rule, not by segment. Bad addresses, bots and the long-gone are kept out of sends automatically. Nobody maintains eighteen segments whose only job is plumbing.
  • A discount is your store’s discount. You pick it, it is mirrored as it is, each person gets one code, and the expiry counts from the moment they receive it. Nothing is rebuilt in a second editor with fewer settings.
  • Things sit where you put them. Boxes nest, so a badge overlaps an image or copy sits beside one without 400 pixels of padding to fake it.
  • Desktop and mobile, side by side, in place. The preview is the form or the email itself, not a screen drawn around it.
  • Describe a segment in a sentence. Talaria drafts it; you keep the last word on every condition.
  • Works with your AI assistant — it drafts, you send. Connect your own assistant and it reads the store and writes drafts. It can never send, schedule, publish or turn anything on.
  • Every published version stays. Name it, go back to it, make an earlier one live again in a click.
  • When someone is not mailed, it says why. Refusals are a screen, not a mystery in a report.
  • One clock. Every date is your store’s timezone, on every screen, in every report.
  • Products stay current. A product in an email is looked up again at send time, so the price and the image are the ones on your store that morning.
  • Send a test to yourself from the composer, pause a campaign and resume it, and never re-enter consent settings per channel; consent is one word and one screen.
Scope

What is not here, on purpose

No reviews. No help desk. No data platform. Email and SMS marketing for a Shopify store, done properly, and nothing you will be sold later.

Migration

Import your work

Our goal is to automate as much of the move as we can. Today you import your profiles and their consent from a Klaviyo export, and every address is validated on the way in, so what arrives is a list you can send to.

A good fitA small or mid-sized store that already runs email and knows what it is worth.A merchant tired of paying enterprise prices for a tool that stopped improving for them.Anyone who cares what their open rate is, and why.
Not a good fitAn enterprise with a marketing department, where a dozen people stand between an idea and a send.A store that sends five emails a day and calls it a strategy.Anyone content with an open rate in the toilet.

If that sounds like your store, let’s talk

Request early access