DTC brandsKlaviyo

Back-in-stock systemYou paid to tell people a product exists, then went silent when it returned

The product is gone. You capture emails in a pop-up. When it returns, someone remembers to blast the list on Thursday. Half already bought something else. The rest get a campaign that also hits people who own it.

00

The short version

Intern through CEO

Read it once, then stop negotiating with it. Back-in-stock system for DTC brands is a wiring job: waitlist → trigger → exclude → speed. Objects, then edges, then one test conversion. You do not need a new tool to start. You need the first writer to land on one contact this week.

  1. 01

    DTC brands do not have a Back-in-stock system problem because they lack Klaviyo. They have it because you paid to tell people a product exists, then went silent when it returned.

  2. 02

    Wire these objects first: BIS waitlist (Klaviyo or app), inventory metric/trigger, flow (not campaign), suppress already-bought, hours-not-Thursday timing, profile per SKU.

  3. 03

    Then these edges, in order: Subscribe to restock → profile on a SKU waitlist; not a generic newsletter · Inventory > 0 (or app event) → flow in hours; not a Thursday campaign · Already purchased that SKU → suppress; they do not need the ping · Sold out again → stop; do not drip a lie

  4. 04

    Done looks like a test you can repeat: Waitlist a test SKU. Toggle inventory (or simulate the event). Confirm a flow message in hours, not the next newsletter. Confirm a buyer of that SKU is out. Confirm it does not send if you zero inventory again before send.

  5. 05

    Start here: The waitlist is a flow, not a campaign

In even plainer words

DTC brands already have Klaviyo. The leak is not a missing feature. You paid to tell people a product exists, then went silent when it returned. Software did not cause it. A missing write-in did: the person exists in one tool and not in the pipeline.

Here is how you actually wire it. Name the objects: BIS waitlist (Klaviyo or app), inventory metric/trigger, flow (not campaign), suppress already-bought, hours-not-Thursday timing, profile per SKU. Then connect these edges, in order: Subscribe to restock → profile on a SKU waitlist; not a generic newsletter · Inventory > 0 (or app event) → flow in hours; not a Thursday campaign · Already purchased that SKU → suppress; they do not need the ping · Sold out again → stop; do not drip a lie. If you skip an edge, the next one is decoration. If you add a Klaviyo feature first, you usually skip an edge without noticing.

Prove it with a test, not a screenshot. Waitlist a test SKU. Toggle inventory (or simulate the event). Confirm a flow message in hours, not the next newsletter. Confirm a buyer of that SKU is out. Confirm it does not send if you zero inventory again before send. How you know it worked on the board: Trigger is inventory (not a thursday). If that number is a vibe, do not add traffic.

What to do this week, and only this week: The waitlist is a flow, not a campaign An intern can run the objects page and one test conversion. A CEO should protect that from a second priority.

Who

Same system. Three jobs.

Read your row

Intern

What you actually do

Day one: you paid to tell people a product exists, then went silent when it returned — make waitlist a flow. Inventory truth is the trigger. Do not add it to the Thursday blast. Suppress people who already bought.

Operator

What you protect

You already feel you paid to tell people a product exists, then went silent when it returned. You paid to tell people a product exists, then went silent when it returned. Protect one sequence for 90 days. The four moves are waitlist → trigger → exclude → speed. The edges are Subscribe to restock → profile on a SKU waitlist; not a generic newsletter then Inventory > 0 (or app event) → flow in hours; not a Thursday campaign. Back-in-stock is a flow triggered by inventory, not a calendar. It mails people who asked for that SKU. It suppresses people who already bought it. Timing is hours after restock, not the next campaign slot.

CEO

What you refuse to fund

This is a money leak, not a preference about tools. The product is gone. Until trigger is a number you will defend, buying more traffic or more seats makes the leak more expensive. Refuse a second database: Subscribe to restock → profile on a SKU waitlist; not a generic newsletter.

Example

A Tuesday that looks familiar

Before / after

Before

Tuesday. Someone among DTC brands. You paid to tell people a product exists, then went silent when it returned. Klaviyo is open. A colleague asks where a person sits. The answer is a screenshot, a Slack thread, or “I think they’re interested.” The writer (form, calendar, shop, or phone) and the pipeline are two databases.

After

Same Tuesday, after write-in exists. Back-in-stock is a flow triggered by inventory, not a calendar. It mails people who asked for that SKU. It suppresses people who already bought it. Timing is hours after restock, not the next campaign slot. Subscribe to restock → profile on a SKU waitlist; not a generic newsletter The next move is written. That is the difference between a login and a system.

Worked example

Keep it this plain. A person in DTC brands already paid for Klaviyo. You paid to tell people a product exists, then went silent when it returned. They add a page, a form, a calendar. None of it writes into a spec. By Friday the calendar has ghosts and the pipeline still looks like the snapshot.

The fix is not a better template. Back-in-stock is a flow triggered by inventory, not a calendar. Prove write-in: Waitlist a test SKU. Toggle inventory (or simulate the event). Confirm a flow message in hours, not the next newsletter. Confirm a buyer of that SKU is out. Confirm it does not send if you zero inventory again before send. This week is one move: The waitlist is a flow, not a campaign If that feels too small, that is the point. Operators fail by starting at move four.

01

Leak versus system

Klaviyo

The leak

The product is gone. You capture emails in a pop-up. When it returns, someone remembers to blast the list on Thursday. Half already bought something else. The rest get a campaign that also hits people who own it.

The system

Back-in-stock is a flow triggered by inventory, not a calendar. It mails people who asked for that SKU. It suppresses people who already bought it. Timing is hours after restock, not the next campaign slot.

How it actually works

Use Klaviyo's back-in-stock or a documented equivalent. The trigger is the SKU, the list is waiters for that SKU, the exclusion is placed order for that SKU. If you cannot say those three sentences, you have a newsletter.

Do not pause it 'for a brand campaign.' Restock is when they wanted the email. Thursday is when you wanted to send one.

Back-in-stock is a flow triggered by inventory, not a calendar. It mails people who asked for that SKU. It suppresses people who already bought it. Timing is hours after restock, not the next campaign slot.

You paid to tell people a product exists, then went silent when it returned. The waitlist is a flow, not a campaign. It suppresses people who already bought. Timing is hours, not a Thursday blast. Inventory truth is the trigger. A campaign that says 'it's back' to the whole list trains non-waitlisters to ignore you and waitlisters to not bother joining.

Wire the BIS app or native Klaviyo back-in-stock. The event must include the SKU. People waitlisted on SKU A should not get SKU B unless you wrote a related logic. Cap sends if inventory is 3 and waitlist is 800 — or tell the truth. Flows stay on during campaigns; a seasonal email should exclude those who already got the BIS ping that day.

Two databases: a Shopify app waitlist and a Klaviyo list named 'restock' that is actually a newsletter. One object per SKU. The intern waitlists and restocks a dummy SKU. They do not write hype. Hype without inventory truth is a complaint. If the trigger is a human remembering to send, you do not have BIS. You have a hope on a calendar.

Wire

How to connect it

Objects, then edges, then a test

BIS waitlist (Klaviyo or app), inventory metric/trigger, flow (not campaign), suppress already-bought, hours-not-Thursday timing, profile per SKU.

  1. 01

    Subscribe to restock → profile on a SKU waitlist; not a generic newsletter

  2. 02

    Inventory > 0 (or app event) → flow in hours; not a Thursday campaign

  3. 03

    Already purchased that SKU → suppress; they do not need the ping

  4. 04

    Sold out again → stop; do not drip a lie

Prove write-in

Waitlist a test SKU. Toggle inventory (or simulate the event). Confirm a flow message in hours, not the next newsletter. Confirm a buyer of that SKU is out. Confirm it does not send if you zero inventory again before send.

Day one: you paid to tell people a product exists, then went silent when it returned — make waitlist a flow. Inventory truth is the trigger. Do not add it to the Thursday blast. Suppress people who already bought.

02

The spine

Scan first
01

Waitlist

Per SKU, as a flow. Not a master 'notify me' dump.

02

Trigger

Inventory truth. Not a human remembering.

03

Exclude

People who already bought that SKU.

04

Speed

Hours after restock. Not the next campaign calendar.

Steps

Do this in order

Why, then done when
  1. 01

    Write the leak in one sentence

    On one line, for DTC brands: You paid to tell people a product exists, then went silent when it returned. Add who gets hurt (calendar, cash, inbox, or reputation). If two people write different sentences, you do not agree yet — stop and agree.

    Why: Teams skip this and jump into settings. Then every person is fixing a different problem with the same login.

    Done when: One sentence. Shared. No adjectives required.

  2. 02

    Name the objects

    BIS waitlist (Klaviyo or app), inventory metric/trigger, flow (not campaign), suppress already-bought, hours-not-Thursday timing, profile per SKU.

    Why: If objects aren't named, software invents a second database.

    Done when: A stranger can list them.

  3. 03

    Waitlist

    Per SKU, as a flow. Not a master 'notify me' dump. Then wire: Subscribe to restock → profile on a SKU waitlist; not a generic newsletter

    Why: DTC brands cannot skip this edge. You paid to tell people a product exists, then went silent when it returned. If it is not true, Klaviyo is already a second database.

    Done when: Subscribe to restock → profile on a SKU waitlist; not a generic newsletter is true on a test.

  4. 04

    Trigger

    Inventory truth. Not a human remembering. Then wire: Inventory > 0 (or app event) → flow in hours; not a Thursday campaign

    Why: DTC brands skip this and the leak returns as a private language. Wire the BIS app or native Klaviyo back-in-stock. Spec tags, fields, and states have to be the same objects the next workflow will read.

    Done when: Inventory > 0 (or app event) → flow in hours; not a Thursday campaign is true on a test.

  5. 05

    Exclude

    People who already bought that SKU. Then wire: Already purchased that SKU → suppress; they do not need the ping

    Why: DTC brands feel this as You paid to tell people a product exists, then went silent when it returned. Two databases: a Shopify app waitlist and a Klaviyo list named 'restock' that is actually a newsletter.

    Done when: Already purchased that SKU → suppress; they do not need the ping is true on a test.

  6. 06

    Prove write-in

    Waitlist a test SKU. Toggle inventory (or simulate the event). Confirm a flow message in hours, not the next newsletter. Confirm a buyer of that SKU is out. Confirm it does not send if you zero inventory again before send.

    Why: Calendar full + pipeline empty means two databases.

    Done when: One test conversion, one contact, right stage/state.

  7. 07

    Put a number on the wall

    Every Monday, look at Trigger (Not a Thursday), then bought (They already own it). Write one action or write “hold.” A dashboard with no action is theatre.

    Why: What gets reviewed gets run. What only lives in a tool gets ignored the week someone is busy.

    Done when: Three numbers. One owner. Fifteen minutes. Actions attach.

  8. 08

    Finish one move this week

    The waitlist is a flow, not a campaign

    Why: Operators fail by starting at move four. Interns fail by making a 40-item checklist. CEOs fail by adding a second priority. One proven write-in beats an elegant plan.

    Done when: The move is true, or you can name the blocker in one sentence.

Walkthrough

The four moves, expanded

Same spine. More words.
01

Name the objects

BIS waitlist (Klaviyo or app), inventory metric/trigger, flow (not campaign), suppress already-bought, hours-not-Thursday timing, profile per SKU.

If objects aren't named, software invents a second database.

You paid to tell people a product exists, then went silent when it returned.

02

Waitlist

Per SKU, as a flow. Not a master 'notify me' dump. Then wire: Subscribe to restock → profile on a SKU waitlist; not a generic newsletter

DTC brands cannot skip this edge. You paid to tell people a product exists, then went silent when it returned. If it is not true, Klaviyo is already a second database.

On Klaviyo, this means the data model matches how DTC brands actually work — not the snapshot demo. Edge: Inventory > 0 (or app event) → flow in hours; not a Thursday campaign

03

Trigger

Inventory truth. Not a human remembering. Then wire: Inventory > 0 (or app event) → flow in hours; not a Thursday campaign

DTC brands skip this and the leak returns as a private language. Wire the BIS app or native Klaviyo back-in-stock. Spec tags, fields, and states have to be the same objects the next workflow will read.

Back-in-stock is a flow triggered by inventory, not a calendar. It mails people who asked for that SKU. It suppresses people who already bought it. Timing is hours after restock, not the next campaign slot.

04

Exclude

People who already bought that SKU. Then wire: Already purchased that SKU → suppress; they do not need the ping

DTC brands feel this as You paid to tell people a product exists, then went silent when it returned. Two databases: a Shopify app waitlist and a Klaviyo list named 'restock' that is actually a newsletter.

The waitlist is a flow, not a campaign

Why

Questions people actually ask

Pushback is normal

Why not just buy another Klaviyo feature?

Because the login already exists. The product is gone. You capture emails in a pop-up. A new feature on a missing spec is a second database. Finish this edge first: Subscribe to restock → profile on a SKU waitlist; not a generic newsletter.

Why start with objects instead of a workflow?

Day one: you paid to tell people a product exists, then went silent when it returned — make waitlist a flow. Inventory truth is the trigger. Do not add it to the Thursday blast. Suppress people who already bought. Workflows on unnamed objects fire on folklore. Name contact (or profile), stage or state, and the writer (form, calendar, metric) before any on-switch.

What does “wired” actually mean?

A test conversion creates or updates one person, on the right stage or state, with the fields the next sequence will read. Waitlist a test SKU. Toggle inventory (or simulate the event). Confirm a flow message in hours, not the next newsletter. Confirm a buyer of that SKU is out. Confirm it does not send if you zero inventory again before send. If you merge after the test, identity is wrong — fix that, do not add a dedupe automation.

Why write it down if the team already knows?

If it is only in someone's head, a new hire needs a story, reporting cannot be defended, and automations fire on folklore. Writing is how two people mean the same object on Monday.

Why does this keep coming back after we 'set it up'?

Because setup was a project, not a review. Delay (While they still care) is how you stop the leak returning dressed as a new feature. If Placed Order is dirty, every metric is theatre. If browse collides with cart, you trained people to ignore you. Discount-first abandon trains the wrong buyer — especially when consideration is long. Score the system. Then ship the two worst gaps. Not another brand story.

Why should DTC brands care about this versus more leads?

More leads into a leak is a more expensive leak. Back-in-stock is a flow triggered by inventory, not a calendar. It mails people who asked for that SKU. It suppresses people who already bought it. Timing is hours after restock, not the next campaign slot. Watch trigger before you buy traffic. If that number is folklore, acquisition is a vanity spend.

What if we do not have time?

Then you only have time for the objects page and one test conversion. The waitlist is a flow, not a campaign That is the intern version of strategy. Protect it from a second priority for seven days.

03

Skip this / do this

Same four moves

Skip this

Leaving objects unnamed because Klaviyo is “set up”.

Do this

BIS waitlist (Klaviyo or app), inventory metric/trigger, flow (not campaign), suppress already-bought, hours-not-Thursday timing, profile per SKU.

Skip this

Building a workflow or flow before a writer lands on one contact.

Do this

Subscribe to restock → profile on a SKU waitlist; not a generic newsletter

Skip this

Calling it done because a screenshot looks busy.

Do this

Waitlist a test SKU. Toggle inventory (or simulate the event). Confirm a flow message in hours, not the next newsletter. Confirm a buyer of that SKU is out. Confirm it does not send if you zero inventory again before send.

Skip this

Leaving “Speed” to chance.

Do this

Hours after restock. Not the next campaign calendar.

Misses

How this usually goes wrong

Then the fix

The usual miss

Calling Klaviyo “set up” because someone logged in and imported a snapshot.

Do this instead

Per SKU, as a flow. Not a master 'notify me' dump. Then prove write-in: Waitlist a test SKU.

The usual miss

Building the workflow or flow before the writer (form, calendar, shop event) lands on one contact.

Do this instead

Connect Subscribe to restock → profile on a SKU waitlist; not a generic newsletter first. Automations on a missing writer invent a second database.

The usual miss

Adding a page, form, flow, or campaign every time last week hurt.

Do this instead

Name which edge is missing. Fix that edge. Hurt is usually a skipped write-in, not a missing asset.

The usual miss

Reporting that nobody will defend in a meeting — screenshots, vanity opens, 'interested' counts.

Do this instead

Trigger: Inventory. Not a Thursday. If you cannot say it out loud, it is not a scoreboard.

The usual miss

Hiring or retaining an agency to invent the spec while also running the calendar.

Do this instead

Hands on a known sequence are useful. Hands inside a missing spec pick the louder job (the calendar) and the leak stays.

04

What to watch

A scoreboard

Trigger

Inventory

Not a Thursday

Bought

Suppressed

They already own it

Delay

Hours

While they still care

This week

The waitlist is a flow, not a campaign

01

The waitlist is a flow, not a campaign

02

It suppresses people who already bought

03

Timing is hours, not a Thursday blast

04

Inventory truth is the trigger

Want the longer lesson, not the page for this niche? Replenishment is a clock

Working notes

DTC Retention Scorecard

Score your Klaviyo and lifecycle system the way an operator would. Request the file. It arrives by email — not a public dump, not a drip of slogans.

Request the notes ↗
Wire

This job is a connection, not a geo page

Hub only

Back-in-stock system does not split by niche and city. The wiring is the same: objects, edges, one test conversion. Read a connect map if two tools are already in the stack, or a vertical essay if the language needs to change.

Wire

Calendly only counts when GoHighLevel sees the booking

A full calendar and an empty pipeline is two databases.

Read ↗
Wire

ScoreApp is a door. GoHighLevel is the follow-up.

A high score in a CSV is not a qualified opportunity.

Read ↗
Wire

A form is a writer, not a lead vault

If the thank-you does not change the contact, the page was a brochure.

Read ↗
beauty brands

Beauty retention is a cadence problem more than a creative problem

Revenue per recipient on flows is the number. Open rate is a meeting.

Read ↗
supplement brands

Supplements are a subscription and replenishment system pretending to be a brand

If Placed Order is dirty, every flow metric is theatre. Fix the event before the subject line.

Read ↗
apparel brands

Apparel lives on returns, second purchase, and segments that are not all subscribers

Returns and second purchase are different states. Mailing a returner like a VIP is how you look careless.

Read ↗
Next

If the leak is expensive, talk.

Email and WhatsApp stay open. A call is for installing the system.