Most Instagram sellers measure success in reach. The boutique in this use case — a two-person accessories brand, anonymised with permission — measures it in margin, and that single change is why they stopped boosting posts. Their best month this year had no paid reach at all. It had one Reel that did well, an Instagram comment export of that Reel, and about three hundred direct messages sent by hand over four weeks. This post is the workflow, with the spreadsheet, so you can run it on your own comments.
Profit, not revenue: why DMs beat ads on margin
A boosted post produces an order that has already paid for its own ad, and usually carried a discount code to get the click. A DM order carries neither. The boutique's own numbers, once they'd added cost and discount columns to their tracking sheet, showed a DM order keeping roughly twice the margin of an ad order on the same product. Same item, same customer type, half the leakage. Shopify's margin guide makes the general point; the boutique's sheet made it specific.
The catch is that DMs don't scale by spending more. They scale by knowing who to message, and that's where the comment export comes in — it turns a Reel's comment section into a list you can filter, instead of a feed you scroll.
The boutique that stopped boosting posts
Before: post a Reel, boost it for a few days, answer whatever DMs arrived, reply to comments when there was time. After a good Reel they'd have 800 comments they had mostly not read — Instagram shows a ranked slice, and the app's "view more" is bottomless in a way that discourages actually reaching the end.
After: post a Reel, wait 48 hours, export the comments, work the list. No boost. The founder told us the moment it clicked was seeing the full file for the first time and counting 41 comments that contained the word "link" or "where" — on a Reel where they'd noticed maybe eight.
Building the DM list from a Reel's comment file
They paste the Reel URL into the Instagram comment exporter and download Excel. The columns are author, username, avatar_url, text, likes, replies, created_at, language, is_pinned, id and reply_to_id, followed by the Instagram-specific fields. They add three columns — lane, dm_sent, replied — and later the margin columns described below.
Assigning the lane is two filters and one lookup, about ten minutes on an 800-row file:
- Filter
textfor "link", "where", "price", "how much", "still available", "shop" → Buyer. - Filter
textfor a question mark, or "size", "colour/color", "ship", "material", "fit" → Asker. - VLOOKUP
usernameagainst the handles column of their shop's customer export → Past customer. Overrides the other two.
Everything else — and it's usually 70–80% of rows — gets a like from the phone and no message. That's the discipline the sheet enforces: the DM count goes down, and the people receiving one were already halfway to buying.
Three DM lanes: buyers, askers, and past customers
Buyers
They asked for the link. Give it, and hold one: "Here's the page — I've got four of the green left, want me to put one aside for an hour?" This is the shortest conversation and the highest close rate. No discount is offered, because none was asked for.
Askers
They asked a question. Answer it on the Reel first, in public, because everyone else with the same question reads it, and because a non-follower's DM lands in Requests where it may never be seen. If they reply to the public answer — and a surprising number do — a DM follows with a photo of the exact item on a person. The public reply is the warm-up; the DM is the close.
Past customers
This lane is the profit engine and it doesn't exist without the lookup. Someone who bought earrings in March and just commented on a necklace Reel gets: "You've got the leaf studs — this is the necklace we made to go with them, want to see them together?" The basket is bigger, the trust is already there, and the reply rate is the highest of the three lanes by a wide margin. The boutique's sheet showed past customers were about a tenth of commenters and roughly a third of DM margin.
Bundling inside the DM
Because a DM is a conversation, the upsell is a sentence, not a cross-sell widget. The rule the boutique uses: never offer a discount, always offer a pairing. "The bracelet is the same finish if you'd like the pair" costs nothing and lifts basket size; a percentage off costs margin every time it's accepted. Where they do give something away, it's shipping on a two-item order — which, from the margin columns, was cheaper than any code they'd previously run.
Tracking margin per DM in the same spreadsheet
This is the part that changed their decisions. Next to each row that got a DM they log ordered, sale, cost, discount, ship_cost, and minutes. Two pivot numbers come out weekly:
- Margin per DM sent, by lane. Past customers highest, Buyers next, Askers lowest but still positive.
- Margin per hour of DM work, compared to the margin per hour of money spent on boosts in the previous quarter.
When the second number crossed the boost figure, they stopped boosting. Not on principle — on the sheet. They still run occasional paid reach for new-product launches, where there's no comment section to work yet.
What Meta's rules allow in a DM
Selling by DM is explicitly a thing Instagram supports, but with two boundaries. Instagram's Community Guidelines prohibit spam — repeated, unsolicited, identical messages — and Meta's Commerce Policies govern what may be sold at all. The boutique's practice sits comfortably inside both: every message is hand-written, references the specific comment, is sent once, and stops if there's no reply. They've never been rate-limited at 15–30 DMs a day. Automating this is where accounts get restricted; the workflow's whole point is that the export makes automation unnecessary, because you're only messaging the 20% who matter.
And the data side: comments are personal data. They delete the raw export at the end of each Reel's cycle and keep only the tracking sheet, which is the data-minimisation posture regulators expect.
Why we can vouch for this workflow
We operate the exporter, and this customer's pattern is one we can see from our side. Instagram Reel exports are our most-repeated single-URL exports — the same Reel exported again two or three weeks later — which is exactly the "second wind" step below, and it was the repeat pattern that prompted us to ask what they were doing. We also see, on nearly every Instagram export, that the row count exceeds the comment number shown under the Reel: Instagram's counter and its rendered list disagree, replies are folded, and the app never shows the whole thread. That gap is why a seller "notices eight" link requests and the file holds 41. The column names quoted here are the live export columns and the free allowance — first 100 comments per post, no login — is the live product value; nothing above depends on a feature you'd need to pay to check.
What the month looked like (anonymised)
- One Reel, exported three times (day 2, day 16, day 30). About 1,100 comments in total by the third export.
- Roughly 300 DMs sent across four weeks, all by hand, all lane-specific.
- Reply rate: about 40% overall; past-customer lane over 60%.
- DM-attributed orders out-earned the previous quarter's average boosted-month orders on margin, with zero ad spend.
- Discount given across all DM orders: none. Free shipping on two-item orders only.
We're not quoting revenue on purpose; a two-person accessories brand's numbers won't be yours. The ratios are the transferable part — the share of commenters worth messaging, the lane reply rates, and the fact that the margin per hour beat paid reach.
Start with one Reel
- Pick your best-commented Reel from the last month. Export it — first 100 comments free, no login.
- Add
lane,dm_sent,replied. Filter for Buyers and Askers; VLOOKUP for past customers. - Answer Askers on the Reel. DM Buyers and past customers, one hand-written message each.
- Log sale, cost, discount, minutes. Compute margin per DM and per hour after a week.
- Re-export when the Reel resurfaces. New comments are the hottest ones.
- Delete the raw file when the cycle ends.
The export doesn't sell anything. It shows you the whole comment section as rows so that "who should I message" stops being a guess — and the margin columns tell you, in your own numbers, whether DMs are beating ads. For this boutique they were, by a wide margin, and the boost budget is now a launch-only line.
Download Instagram comments free → First 100 comments free, no login, no daily limit — bigger threads unlock with a one-time payment, never a subscription.
Related reading: the TikTok cold-to-hot lead use case · how to make money on Instagram · comment to DM on TikTok.
