Use cases

Instagram comment-to-DM for digital product sellers

A catalog of digital products doesn't run on one keyword. It runs on one campaign per product, each with its own sample, its own code, and its own count of who actually asked for it, which is what makes the numbers worth looking at afterward.

Last updated

What the flow looks like for you

Someone comments a product-specific keyword under the post showing that item, gets a reply, and a DM carrying a sample or preview file plus a discount code you wrote directly into the message.

The mechanic is the same three steps every campaign runs: comment, public reply, DM. What's specific to a product catalog is what sits behind it. The DM text you write goes out exactly as written to everyone who matches that keyword, so a code like SAVE20 typed straight into that message reaches every commenter with the same identical wording a form letter would use, just triggered by that person's own comment instead of scheduled in advance.

The file that follows the code is a sample, not the full product: a cropped preview, an excerpt, a lower-resolution version, whatever gives someone enough to decide before they buy. The link in the DM always points to whatever's attached to that campaign, so the sample and the code for a given product live in the one place: the campaign for that product.

Keywords that work for this audience

One keyword per product, tied to the product's own name or a short code for it, works better than one shared word across a catalog, because a single campaign carries exactly one attached file and one keyword collision picks a single winner, not both.

A catalog of five presets, templates, or packs really needs five campaigns if each one has its own sample and its own code, since a campaign delivers one file. Naming the keyword after the product itself, PRESET1, SKU shorthand, the product's actual name, makes the Leads list and any exported data mean something later: a row that says which product someone asked for, not just that they commented something.

Worth knowing before it becomes a real problem: if two live campaigns could both technically match the same comment, only one fires, the older campaign wins, not both and not a random pick. Reusing the same keyword across two product campaigns, even by accident, means the newer one effectively never fires on that word, and there's no visible error, the comment just gets answered by the other product's campaign.

What to offer

A genuine sample or excerpt, saved as a PDF since that's the only file type the Assets page accepts today, works better as the delivered file than the full product, with the discount code living in the DM text itself rather than in the file.

The 25 MB, PDF-only constraint applies here the same as anywhere else. For a written product, a template pack, a workbook, a swipe file, that's rarely a real limit: a sample chapter or a stripped-down version of the template fits comfortably. For something that isn't naturally a PDF, a preset pack, an audio loop set, the workaround already covered elsewhere applies: a one-page PDF describing the sample with a link out to where it actually lives.

The code goes in the DM text, not the file. That keeps it simple to change: editing the campaign's DM message updates the code for everyone who comments after that point, without touching the sample file at all. The trade-off worth naming plainly: the code is the same for every person who comments that keyword, since the message is fixed text on the campaign, not something generated per lead.

Setting it up

Build one campaign per product, each scoped to that product's own post, named clearly so later data means something, and remember every campaign in the workspace draws from the same shared monthly engagement allowance, not a separate one per product.

Set each product up as its own campaign: its own post, its own keyword, its own sample file, its own DM text with that product's code. Name the campaign after the product, not the generic offer, since that name is what shows up later in Leads, in a CSV, and in the tag an ESP sync applies.

The one thing worth planning around before launching several at once: engagement quota is shared across the whole workspace, not split per campaign. Five product campaigns each getting steady traffic all draw down the same monthly allowance, so a catalog launch across several posts in the same week can use up a plan's headroom faster than running one campaign alone would suggest.

What to measure

Comments matched per campaign name is the real signal of which product people actually want, and the same person showing up under two different product campaigns is visible by username in Leads even though nothing flags it automatically as a repeat buyer.

Because each product is its own campaign, comparing matched-comment counts across campaigns is a direct read on which product the audience is actually asking about, no extra tagging required beyond naming the campaigns clearly in the first place. That's a real answer to "which of these five things should I make more of," sitting in data that already exists.

Repeat interest shows up the same way, just manually: the Leads list carries a username with every row, so someone who commented on both the preset pack and the template pack campaigns appears twice, once per product, both visible under the same username. Nothing bundles those two rows into a single "repeat customer" flag today, but the raw signal is there to look for. On Pro and Agency, an ESP sync tags each contact with the campaign it came from, so that same pattern is visible inside Mailchimp or Kit too, useful once there's an actual follow-up sequence to send.

Where it goes wrong

The three real mistakes: one shared keyword across a catalog instead of one per product, attaching the real product instead of a genuine sample, and treating quota as per-campaign when it's shared across the whole workspace.

Sharing a keyword across products is the most common one, covered above: it doesn't fail loudly, it just means one campaign quietly wins every match and the others never fire, so a product might look like it's getting zero interest when the comments were actually landing on a different campaign entirely.

Attaching the full product instead of a sample defeats the point of a preview. If the DM delivers exactly what someone would otherwise pay for, there's no reason left for them to buy, and "sample" stops meaning anything to future campaigns too.

The quota mistake is the quiet one: assuming five separate product campaigns means five separate monthly allowances. They don't. A workspace that's about to run several product launches in the same week is worth checking against the plan's total quota beforehand, not discovering mid-week that the fifth campaign is queuing instead of sending.

Common questions

Can I run a different discount code for every product?

Yes, since the code lives in each campaign's own DM text. A campaign built for one product carries its own message, so its code is independent of every other product's campaign. It's the same code for everyone who comments that product's keyword, though, not one generated per person.

Do my five product campaigns each get their own monthly quota?

No. Engagement quota is shared across the whole workspace, not split per campaign, so five active product campaigns all draw down the same monthly allowance. Worth checking the plan's total headroom before launching several products in the same week.

Can I tell which product someone actually wanted if two keywords are close?

Only one campaign fires on a given comment; if two could technically match, the older live campaign wins, not both. Reusing a near-identical keyword across products is worth avoiding rather than relying on, since the newer campaign's product effectively won't get credited for that comment.

What if the same person comments on more than one product's post?

They show up as separate rows in Leads, once per product campaign, under the same username, so the pattern is visible if you look for it. Nothing merges those rows into a single repeat-buyer record automatically today.

Keep reading