Intern
What you actually do
Day one: the integration is 'on'. The data model is not. List events you need. Verify Placed Order. Hunt duplicates. Do not build welcome until the metric is trustworthy. Onsite tracking is a test, not a checkbox.
Library / DTC brands / Shopify Klaviyo setup
Luxury cannot sound like a flash sale. The system still has to be tight.
Read it once, then stop negotiating with it. Shopify Klaviyo setup for luxury DTC is a wiring job: events → placed order → identity → stranger test. 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.
Luxury DTC do not have a Shopify Klaviyo setup problem because they lack Shopify + Klaviyo. They have it because the integration is 'on'. The data model is not.
Wire these objects first: Shopify integration, Placed Order metric trust, onsite tracking (js), profile identity, duplicate junk, events you need vs events you ignore.
Then these edges, in order: Test Placed Order → one profile, correct revenue, correct items; no duplicate profiles · Onsite tracking → Viewed Product / Added to Cart fire on a real browse · Historical sync → understood (what came over, what did not); not assumed complete · Account extras (reviews, subscriptions) → metrics verified or explicitly out of scope
Done looks like a test you can repeat: Place a $1 order. Find exactly one profile. Confirm the metric payload. Browse a product in a private window with the tracker; confirm Viewed Product. Search for your email: if two profiles exist, identity is the ticket — not a new flow.
Start here: No discount in welcome. Cart with proof. VIP defined without shouting.
Luxury DTC already have Shopify + Klaviyo. The leak is not a missing feature. The integration is 'on'. The data model is not. 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: Shopify integration, Placed Order metric trust, onsite tracking (js), profile identity, duplicate junk, events you need vs events you ignore. Then connect these edges, in order: Test Placed Order → one profile, correct revenue, correct items; no duplicate profiles · Onsite tracking → Viewed Product / Added to Cart fire on a real browse · Historical sync → understood (what came over, what did not); not assumed complete · Account extras (reviews, subscriptions) → metrics verified or explicitly out of scope. If you skip an edge, the next one is decoration. If you add a Shopify + Klaviyo feature first, you usually skip an edge without noticing.
Prove it with a test, not a screenshot. Place a $1 order. Find exactly one profile. Confirm the metric payload. Browse a product in a private window with the tracker; confirm Viewed Product. Search for your email: if two profiles exist, identity is the ticket — not a new flow. How you know it worked on the board: Placed Order is clean (or every metric downstream is dirty). If that number is a vibe, do not add traffic.
What to do this week, and only this week: No discount in welcome. Cart with proof. VIP defined without shouting. An intern can run the objects page and one test conversion. A CEO should protect that from a second priority.
Intern
Day one: the integration is 'on'. The data model is not. List events you need. Verify Placed Order. Hunt duplicates. Do not build welcome until the metric is trustworthy. Onsite tracking is a test, not a checkbox.
Operator
You already feel the integration is 'on'. the data model is not. Luxury cannot sound like a flash sale. The system still has to be tight. Protect one sequence for 90 days. The four moves are events → placed order → identity → stranger test. The edges are Test Placed Order → one profile, correct revenue, correct items; no duplicate profiles then Onsite tracking → Viewed Product / Added to Cart fire on a real browse. Exclusions and quiet frequency are the brand. A 20% blast is a different company.
CEO
This is a money leak, not a preference about tools. The integration is 'on'. Until placed order is a number you will defend, buying more traffic or more seats makes the leak more expensive. Refuse a second database: Test Placed Order → one profile, correct revenue, correct items; no duplicate profiles.
Before
Tuesday. Someone among luxury DTC. Luxury cannot sound like a flash sale. The system still has to be tight. Shopify + 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. Exclusions and quiet frequency are the brand. A 20% blast is a different company. Test Placed Order → one profile, correct revenue, correct items; no duplicate profiles The next move is written. That is the difference between a login and a system.
Keep it this plain. A person in luxury DTC already paid for Shopify + Klaviyo. Luxury cannot sound like a flash sale. The system still has to be tight. 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. Events you need actually fire. Prove write-in: Place a $1 order. Find exactly one profile. Confirm the metric payload. Browse a product in a private window with the tracker; confirm Viewed Product. Search for your email: if two profiles exist, identity is the ticket — not a new flow. This week is one move: No discount in welcome. Cart with proof. VIP defined without shouting. If that feels too small, that is the point. Operators fail by starting at move four.
The leak
The integration is 'on'. Viewed Product never fires. Placed Order is duplicated or missing value. Profiles are junk. Flows look live and do nothing.
The system
Events you need actually fire. Placed Order is trustworthy. Profiles are not duplicated. On-site tracking is verified as a stranger — not as a logged-in admin.
Test as an incognito buyer. Add to cart. Purchase. Check the profile. If the events are wrong, every flow you write is cosplay. This is unglamorous and it is the whole job in week one.
Duplicate profiles and missing product data make revenue metrics theatre. Fix identity and Placed Order before anyone argues about subject lines.
Exclusions and quiet frequency are the brand. A 20% blast is a different company.
Klaviyo 'connected' is not a data model. Events you need must actually fire. Placed Order must be trustworthy — revenue, items, discounts. Profiles must not be duplicated junk (email case, guest checkout, POS). Onsite tracking is verified on a real product page, with ad blockers noted. If Viewed Product does not fire, browse abandonment is fiction.
Wire identity: email as key, phone if SMS, Shopify customer ID as a property. Guest vs account: know what happens. Refunds should emit a metric you will use later. If you use Recharge or a reviews app, those integrations are separate proofs. Do not assume they came along. A metric that sometimes fires is worse than one you know is absent.
Two databases: Shopify customers and a Klaviyo profile graveyard from an old store URL or a second account. The intern places an order and a refund and a browse. They do not install five apps. If duplicates exist, merge rules and form settings are the work. Flows built on a lying Placed Order will lie at scale. That is expensive folklore.
Shopify integration, Placed Order metric trust, onsite tracking (js), profile identity, duplicate junk, events you need vs events you ignore.
Test Placed Order → one profile, correct revenue, correct items; no duplicate profiles
Onsite tracking → Viewed Product / Added to Cart fire on a real browse
Historical sync → understood (what came over, what did not); not assumed complete
Account extras (reviews, subscriptions) → metrics verified or explicitly out of scope
Place a $1 order. Find exactly one profile. Confirm the metric payload. Browse a product in a private window with the tracker; confirm Viewed Product. Search for your email: if two profiles exist, identity is the ticket — not a new flow.
Day one: the integration is 'on'. The data model is not. List events you need. Verify Placed Order. Hunt duplicates. Do not build welcome until the metric is trustworthy. Onsite tracking is a test, not a checkbox.
Viewed product, added to cart, checkout, placed order — proven.
One clean event. Product, value, customer.
Profiles not duplicated junk. Email is the key.
Incognito. The admin view lies.
On one line, for luxury DTC: The integration is 'on'. The data model is not. 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.
Shopify integration, Placed Order metric trust, onsite tracking (js), profile identity, duplicate junk, events you need vs events you ignore.
Why: If objects aren't named, software invents a second database.
Done when: A stranger can list them.
Viewed product, added to cart, checkout, placed order — proven. Then wire: Test Placed Order → one profile, correct revenue, correct items; no duplicate profiles
Why: Luxury DTC cannot skip this edge. Klaviyo 'connected' is not a data model. If it is not true, Shopify + Klaviyo is already a second database.
Done when: Test Placed Order → one profile, correct revenue, correct items; no duplicate profiles is true on a test.
One clean event. Product, value, customer. Then wire: Onsite tracking → Viewed Product / Added to Cart fire on a real browse
Why: Luxury DTC skip this and the leak returns as a private language. Wire identity: email as key, phone if SMS, Shopify customer ID as a property. Spec tags, fields, and states have to be the same objects the next workflow will read.
Done when: Onsite tracking → Viewed Product / Added to Cart fire on a real browse is true on a test.
Profiles not duplicated junk. Email is the key. Then wire: Historical sync → understood (what came over, what did not); not assumed complete
Why: Luxury DTC feel this as the integration is 'on'. The data model is not. Two databases: Shopify customers and a Klaviyo profile graveyard from an old store URL or a second account.
Done when: Historical sync → understood (what came over, what did not); not assumed complete is true on a test.
Place a $1 order. Find exactly one profile. Confirm the metric payload. Browse a product in a private window with the tracker; confirm Viewed Product. Search for your email: if two profiles exist, identity is the ticket — not a new flow.
Why: Calendar full + pipeline empty means two databases.
Done when: One test conversion, one contact, right stage/state.
Every Monday, look at Placed Order (Or every metric downstream is dirty), then on-site (As a stranger). 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.
No discount in welcome. Cart with proof. VIP defined without shouting.
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.
Shopify integration, Placed Order metric trust, onsite tracking (js), profile identity, duplicate junk, events you need vs events you ignore.
If objects aren't named, software invents a second database.
Luxury cannot sound like a flash sale. The system still has to be tight.
Viewed product, added to cart, checkout, placed order — proven. Then wire: Test Placed Order → one profile, correct revenue, correct items; no duplicate profiles
Luxury DTC cannot skip this edge. Klaviyo 'connected' is not a data model. If it is not true, Shopify + Klaviyo is already a second database.
On Shopify + Klaviyo, this means the data model matches how luxury DTC actually work — not the snapshot demo. Edge: Onsite tracking → Viewed Product / Added to Cart fire on a real browse
One clean event. Product, value, customer. Then wire: Onsite tracking → Viewed Product / Added to Cart fire on a real browse
Luxury DTC skip this and the leak returns as a private language. Wire identity: email as key, phone if SMS, Shopify customer ID as a property. Spec tags, fields, and states have to be the same objects the next workflow will read.
Exclusions and quiet frequency are the brand. A 20% blast is a different company.
Profiles not duplicated junk. Email is the key. Then wire: Historical sync → understood (what came over, what did not); not assumed complete
Luxury DTC feel this as the integration is 'on'. The data model is not. Two databases: Shopify customers and a Klaviyo profile graveyard from an old store URL or a second account.
no discount in welcome. Cart with proof. VIP defined without shouting.
Because the login already exists. The integration is 'on'. Viewed Product never fires. A new feature on a missing spec is a second database. Finish this edge first: Test Placed Order → one profile, correct revenue, correct items; no duplicate profiles.
Day one: the integration is 'on'. The data model is not. List events you need. Verify Placed Order. Hunt duplicates. Do not build welcome until the metric is trustworthy. Onsite tracking is a test, not a checkbox. Workflows on unnamed objects fire on folklore. Name contact (or profile), stage or state, and the writer (form, calendar, metric) before any on-switch.
A test conversion creates or updates one person, on the right stage or state, with the fields the next sequence will read. Place a $1 order. Find exactly one profile. Confirm the metric payload. Browse a product in a private window with the tracker; confirm Viewed Product. Search for your email: if two profiles exist, identity is the ticket — not a new flow. If you merge after the test, identity is wrong — fix that, do not add a dedupe automation.
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.
Because setup was a project, not a review. Duplicates (Identity before creative) 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.
More leads into a leak is a more expensive leak. Exclusions and quiet frequency are the brand. A 20% blast is a different company. Watch placed order before you buy traffic. If that number is folklore, acquisition is a vanity spend.
Then you only have time for the objects page and one test conversion. No discount in welcome. Cart with proof. VIP defined without shouting. That is the intern version of strategy. Protect it from a second priority for seven days.
Skip this
Leaving objects unnamed because Shopify + Klaviyo is “set up”.
Do this
Shopify integration, Placed Order metric trust, onsite tracking (js), profile identity, duplicate junk, events you need vs events you ignore.
Skip this
Building a workflow or flow before a writer lands on one contact.
Do this
Test Placed Order → one profile, correct revenue, correct items; no duplicate profiles
Skip this
Calling it done because a screenshot looks busy.
Do this
Place a $1 order. Find exactly one profile. Confirm the metric payload. Browse a product in a private window with the tracker; confirm Viewed Product. Search for your email: if two profiles exist, identity is the ticket — not a new flow.
Skip this
Leaving “Stranger test” to chance.
Do this
Incognito. The admin view lies.
The usual miss
Calling Shopify + Klaviyo “set up” because someone logged in and imported a snapshot.
Do this instead
Viewed product, added to cart, checkout, placed order — proven. Then prove write-in: Place a $1 order.
The usual miss
Building the workflow or flow before the writer (form, calendar, shop event) lands on one contact.
Do this instead
Connect Test Placed Order → one profile, correct revenue, correct items; no duplicate profiles 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
Placed Order: Clean. Or every metric downstream is dirty. 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.
Placed Order
Clean
Or every metric downstream is dirty
On-site
Verified
As a stranger
Duplicates
Killed
Identity before creative
This week
no discount in welcome. Cart with proof. VIP defined without shouting.
remote-first US teams · Remote US. If it only happened in Slack, the CRM never saw it.
Events you need actually fire
Placed order is trustworthy
Profiles are not duplicated junk
Onsite tracking is verified
Want the longer lesson, not the page for this niche? A CRM login is not a system ↗
Working notes
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.
Luxury DTC do not have a Shopify Klaviyo setup problem because they lack Shopify + Klaviyo. They have it because the integration is 'on'. The data model is not. Wire these objects first: Shopify integration, Placed Order metric trust, onsite tracking (js), profile identity, duplicate junk, events you need vs events you ignore. Then these edges, in order: Test Placed Order → one profile, correct revenue, correct items; no duplicate profiles · Onsite tracking → Viewed Product / Added to Cart fire on a real browse · Historical sync → understood (what came over, what did not); not assumed complete · Account extras (reviews, subscriptions) → metrics verified or explicitly out of scope Done looks like a test you can repeat: Place a $1 order. Find exactly one profile. Confirm the metric payload. Browse a product in a private window with the tracker; confirm Viewed Product. Search for your email: if two profiles exist, identity is the ticket — not a new flow. Start here: No discount in welcome. Cart with proof. VIP defined without shouting.
The integration is 'on'. Viewed Product never fires. Placed Order is duplicated or missing value. Profiles are junk. Flows look live and do nothing. Exclusions and quiet frequency are the brand. A 20% blast is a different company.
Before: Tuesday. Someone among luxury DTC. Luxury cannot sound like a flash sale. The system still has to be tight. Shopify + 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. Exclusions and quiet frequency are the brand. A 20% blast is a different company. Test Placed Order → one profile, correct revenue, correct items; no duplicate profiles The next move is written. That is the difference between a login and a system.
Leaving objects unnamed because Shopify + Klaviyo is “set up”. Building a workflow or flow before a writer lands on one contact. Do the four moves instead: events → placed order → identity → stranger test.
Placed Order: Clean — Or every metric downstream is dirty. Then on-site (As a stranger). If those are folklore, do not add another Shopify + Klaviyo workflow.
no discount in welcome. Cart with proof. VIP defined without shouting.
Because the login already exists. The integration is 'on'. Viewed Product never fires. A new feature on a missing spec is a second database. Finish this edge first: Test Placed Order → one profile, correct revenue, correct items; no duplicate profiles.
Day one: the integration is 'on'. The data model is not. List events you need. Verify Placed Order. Hunt duplicates. Do not build welcome until the metric is trustworthy. Onsite tracking is a test, not a checkbox. Workflows on unnamed objects fire on folklore. Name contact (or profile), stage or state, and the writer (form, calendar, metric) before any on-switch.
A test conversion creates or updates one person, on the right stage or state, with the fields the next sequence will read. Place a $1 order. Find exactly one profile. Confirm the metric payload. Browse a product in a private window with the tracker; confirm Viewed Product. Search for your email: if two profiles exist, identity is the ticket — not a new flow. If you merge after the test, identity is wrong — fix that, do not add a dedupe automation.
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.
GSC and GA4 sit in silos. Nobody sequences the work.
Read ↗Roadmaps are annual. Execution is weekly panic.
Read ↗You have access. You do not have a Monday ritual.
Read ↗You write better emails into a worse inbox.
Read ↗Campaigns do the work flows should do.
Read ↗Email and WhatsApp stay open. A call is for installing the system — not for a tour of tools.