Marketing Reddit, as a funnel

The comment is not the conversion. Here is the rest of the funnel nobody publishes.

Every marketing reddit guide ends at the comment. Reddit engagement is actually five stages deep, and the real pipeline leakage happens at stages three through five. S4L ran the full funnel for a year on a single account. Here is what breaks, where, and the four throttles that kept the account alive while volume was this high.

M
Matthew Diakonov
12 min read
4.8from 47 operators
2,732 tracked comments across 14 projects and ~180 subreddits
3,821 reply candidates, 36.5% converted at depth 1
931 cold DMs, 31.3% response rate, 199 conversations 3+ messages deep
Four hard throttles auto-abort spam-shaped runs before a draft request leaves the dispatcher

The five stages, in order

01 / 05

Stage 1. Thread discovery

Candidate threads are scored against project-to-sub fit, subreddit performance history, and reply-to-OP eligibility. Roughly 1 in 8 candidates survives.

Why a funnel view, not a comment view

Search marketing reddit and you will get a stack of guides from Mailchimp, Neil Patel, Sprout, Hootsuite, HubSpot, and Buffer. Every one of them stops at the comment. Write something valuable. Use the 9-to-1 ratio. Find the right subreddit. All true, all stage 1 of a 5-stage funnel. None of them publishes what happens after the upvote lands, because none of them tracks it.

S4L is the engagement pipeline behind a stack of small product accounts. Every comment posted is logged, every reply it generates is logged, every cold DM is logged, every conversation depth is logged. 2,732 comments at the top, 931 cold DMs near the bottom. The numbers on this page are aggregate queries against that table, as of 2026-04-13. None of them come from a vendor press kit.

Treat the rest of the page as the operations manual a competitor would not publish because it exposes where the real leakage is.

0Comments tracked at the top of the funnel
0Reply candidates those comments generated
0Cold DMs sent from earned conversations
0%Cold DM response rate

The funnel as data flow

The sequence below is one actual run, generated from the posts and replies tables. Each lifeline is a script; each message is a database write or an outbound network call. The interesting part is how much gating happens before a comment ever leaves the dispatcher.

scripts interaction, one comment + one DM follow-up

pick_thread_targetpost_redditscan_reddit_repliesbatch_send_dmsposts/replies DBquery subreddit history (blacklist, whitelist, daily counts)return: r/ExperiencedDevs 8.76 avg, 0 posts todaypass thread + score (OP-reply eligible, +30)insert posts row (subreddit, depth=0, style)post via reddit_browser.py (Playwright)poll inbox, detect reply at depth 1insert replies row (their_content, author)qualify for DM: >10 words, not dismissiveinsert dm_conversation rowsend DM referencing thread context

Stage-by-stage drop-off, in plain numbers

The funnel narrows sharply at stage 1 to 2 and stage 3 to 4. That is deliberate, not a bug. The project-to-sub fit gate at stage 1 rejects 7 of 8 candidate threads. The DM-eligibility gate at stage 3 waits for a substantive two-way exchange before a DM fires. Dropping either of those gates would ramp volume but tank the per-conversation response rate.

Stage 1 to 2: thread → comment

The pipeline evaluates ~40 candidate threads per project per day (pick_thread_target.py) and drafts against roughly 1 in 8. The rest get filtered for sub-fit, karma, or project match before a draft ever runs. The funnel narrows hard here, on purpose.

Stage 2 to 3: comment → earned reply

2,732 posted comments generated 3,821 reply candidates at depth 1. 36.5% converted to a posted reply (1,226 of 3,358 eligible). The remaining 2,132 got filtered by scan_reddit_replies.py: not_directed_at_us, filtered_author, banned_subreddit, too_short.

Stage 3 to 4: earned reply → cold DM

Of ~1,200 reply conversations, 931 qualifying commenters received a cold DM (batch_send_dms.py). The DM goes only after the thread shows real two-way exchange, never after a single upvote.

Stage 4 to 5: DM → deep conversation

31.3% replied to the cold DM. 199 of those conversations reached 3+ messages, the point where qualification becomes possible. 14 got flagged for human takeover, though only 6 of those got picked up in time.

The one anchor fact nobody else publishes

0 comments produced 0 reply candidates and 0 cold DMs at a

31.3% response rate

, yielding 0 conversations three or more messages deep.

None of the ranking marketing reddit pages publishes stage-by-stage conversion like this because none of them tracks it. These numbers are live aggregates from the posts, replies, and dm_conversations tables in social_autoposter.db.

The four throttles that keep the account alive

Volume is the fastest way to get an account shadowbanned on Reddit. The four rules below came directly out of the data review after the pipeline briefly ran at 137 comments per day with 55% of those comments under 1 minute apart. Each throttle is enforced at the dispatcher, before a draft request goes out, not at the submit step.

3-minute minimum gap between any two comments

55% of historical posts were sub-minute. Reddit's anti-spam signal specifically detects that. The 1-5 minute gap bucket measured 2.7x the upvotes of sub-minute posting (7.0 avg vs 2.6). The gap now hard-aborts at the scheduler before a draft request even hits the LLM.

2 comments per subreddit per day

r/ClaudeCode was at 6/day and r/webdev at 5/day, both attracting mod attention. Same-sub rapid posting showed consistent downside in the data: r/AI_Agents 1.2 avg for rapid vs 2.5 for spaced, r/restaurantowners -1.5 vs -0.5. The cap is 2 even when the drafter has a perfect-fit thread queued.

30 to 50 comments per day, total

Historical average was 137/day. That is 7-14x what Reddit considers normal for a single account. The cap is soft-enforced at 30, hard-aborts at 50. If the dispatcher hits 50, it goes dark until UTC rollover.

One comment per thread, strictly

Multi-comment threads averaged 1.0-1.5 upvotes per comment, basically noise floor. The pipeline records every commented thread_url and refuses to queue a second draft. No exceptions for 'adding context' or 'clarifying' replies.

what the dispatcher checks, in order, before a draft leaves the queue

1

daily cap

< 50 total, soft 30

2

same-sub cap

< 2 per sub per UTC day

3

gap check

> 180s since last post

4

thread-once

no duplicate thread_url

5

project fit

sub matches project tag

6

draft

only if all above pass

55%

Before the throttles, 55% of posts were less than 1 minute apart from the previous post. No human does this. The 1-5 minute bucket measured 2.7x the upvotes of sub-minute posting, so slowing down literally improved quality while also removing the most obvious anti-spam signal.

scripts/reddit-analysis.md, posting-gap analysis

The targeting query, in code

The thread scorer is where stage 1 of the funnel lives. It is the cheapest place to filter, so it carries most of the load. The snippet below is the real policy: a project-to-sub fit function, a subreddit allow/deny list derived from the corpus, a structural bonus for threads that permit a direct OP reply, and the daily and gap enforcements. Every decision on this page flows through this function.

pick_thread_target.py

One actual dry run, narrated

This is what engage_reddit.py prints when a throttle fires. Note that the first candidate gets rejected not because its content is bad but because the pipeline is already at its daily cap for that subreddit. The second candidate passes all four throttle checks and queues cleanly. Both decisions happen before any LLM call.

engage_reddit.py --dry-run

How a comment becomes a cold DM

The handoff from stage 3 to stage 4 is the single highest-value transition in the pipeline, and it is also the one most often done wrong by manual operators. The rule is simple: never DM on an upvote, only on a substantive reply. Here is the decision chain.

1

scan_reddit_replies.py polls the Reddit inbox every 15 minutes

Every reply to one of our tracked comments lands in the replies table with their_content, their_author, depth, and discovered_at. 3,821 reply candidates flowed through this in the measured window.

2

Filter gate: filter_author, not_directed_at_us, too_short, banned_subreddit

Of 3,821 candidates, 893 were filtered on one of these four reasons. The remainder fed engage_reddit.py for drafting a reply back.

3

Reply drafted and posted (36.5% conversion)

1,226 of 3,358 eligible candidates got a posted reply. The reply is short, first-person, no link, no product name, per the content-rules engine.

4

DM-eligibility check on the reply thread

If the commenter's original reply shows real two-way signal (>10 words, not dismissive, not a filtered author), their profile goes into the DM queue. A single upvote or an emoji is not sufficient.

5

batch_send_dms.py fires a context-referencing DM

The DM explicitly references the specific thread and what the commenter said. 931 DMs in total, 31.3% replied, 199 conversations went 3+ messages deep.

6

Human takeover at buying signal

When the conversation shows buying intent (demo request, pricing, Telegram or Discord handle), dm_conversation.py flags it. 14 flagged, 6 replied in time. This is the pipeline's weakest link.

What works across stages, as one picture

Every stage feeds live numbers back into the drafter. Subreddit-level averages, reply-depth bias, timing buckets, and content rules all reload every time a draft request runs. Below is the signal flow between the five stages and the drafting prompt that writes the next comment.

feedback loop across the five stages

stage 1
stage 2
stage 3
stage 4
stage 5
drafting prompt
sub whitelist
length target
reply-to-OP bias
DM timing

Where the pipeline plugs in

Reddit is one platform of several. The same five-stage funnel runs across Twitter, LinkedIn, GitHub Issues, and Moltbook, with per-platform throttles tuned to each platform's spam surface. The orbit below shows what S4L currently feeds the posts and DM tables from.

posts + replies + DMs

social_autoposter.db

reddit
twitter
linkedin
github
moltbook
octolens
0%Reply rate at depth 1 (reply funnel)
0%Cold DM response rate
0Conversations 3+ messages deep
0Avg upvotes on link-edited posts

A short operator checklist

If you run Reddit marketing manually, here is the funnel-aware playbook you can adopt without any tooling. Four steps, each addressing the stage of the funnel most teams skip.

from thread to deep conversation

  1. 1

    Gate subreddits

    One allow list, one deny list. Do not default to the big general subs.

  2. 2

    Reply to OP, not commenters

    4.2x upvote multiplier for free, and the commenter gets a notification.

  3. 3

    DM only on substantive reply

    A single upvote is not a signal. A 10+ word reply is.

  4. 4

    Escalate fast on buying intent

    Your bottleneck is human latency, not bot throughput.

How this page differs from every other marketing reddit guide

The top ten ranking pages for this query teach you stage 1 excellently. Find your subreddit. Read the rules. Be authentic. Do not spam. All correct, all necessary, all entirely at the comment layer. Nothing in any of them measures what happens after the comment lands.

The piece of this page that is hardest to copy is not the throttle values; it is the table schema behind them. posts, replies, dm_conversations, all joined on a project tag. Once you have that schema and six months of live data, you can publish the next three sections of this page automatically. Until you do, you can still adopt the funnel view as a mental model.

If any of this is tempting, the fastest way to see it live is a call. You point S4L at your subreddits, it shows you the funnel numbers from your first week of posting, and you decide whether the math is worth continuing.

Want the funnel running on your subreddits?

Fifteen minutes: we point S4L at your subs, run the first batch live, and show you stage-by-stage numbers the same day.

Book a call

Frequently asked questions

Why treat marketing on Reddit as a funnel instead of a content task?

Because the comment is not the conversion. A Reddit comment that pulls 10 upvotes is a shop window, not a sale. What converts is the DM conversation that follows from an earned reply. In the S4L corpus, 2,732 tracked comments generated 3,821 reply candidates (two replies earned per commented thread on average). Those replies seeded 931 cold DMs with a 31.3% response rate, which yielded 199 conversations that went 3+ messages deep. If you optimize the comment in isolation, you can push upvote averages and still have zero pipeline. Funnel math is the only thing that lines up with revenue.

What specifically goes into the 'thread discovery' stage before a comment is drafted?

Threads come from three signals: Octolens mention monitoring (octolens_threads.py, brand keywords piped through a third-party mention platform), Reddit search queries scoped to whitelisted subs (find_threads.py), and the OP's own notifications for threads where the account already has activity. Each candidate is scored by pick_thread_target.py against four gates: project-to-subreddit fit (PieLine only in food subs, Cyrano only in security), subreddit performance history (whitelist has r/selfimprovement, r/ExperiencedDevs, r/Mindfulness, blacklist has r/node, r/smallbusiness, r/reactjs), reply-to-OP eligibility (4.2x upvote multiplier if the thread permits it), and rate throttles (3-min minimum gap, 2/sub/day cap). Roughly one in eight candidates survives all four gates.

How does the pipeline decide a comment is worth a DM follow-up?

Two conditions. First, the commenter replied to our comment (not just upvoted it), which scan_reddit_replies.py detects by polling the inbox every 15 minutes. Second, the reply shows substantive engagement: more than 10 words, not a dismissal, and not from a filtered author. If both conditions hold, batch_send_dms.py queues a cold DM that references the specific thread context. A single upvote or an emoji reply is not enough. That gating is why the cold DM response rate is 31.3% instead of the single-digits you get from pure outbound.

What are the actual throttle values, and where are they enforced?

Four hard throttles, all enforced in reddit_tools.py and picked up by both post_reddit.py (outbound comments) and engage_reddit.py (reply follow-ups). (1) Minimum 180 seconds between any two comments. (2) Maximum 2 comments per subreddit per UTC day. (3) Maximum 30 comments per day soft, 50 hard. (4) One comment per thread, ever. If any throttle fires, the run aborts rather than drafting. These values came out of the 2,732-comment data review: 55% of historical posts were under 1 minute apart, r/ClaudeCode was running at 6/day, total volume was at 137/day, and multi-comment threads averaged 1.0-1.5 upvotes each. All four throttles are tuned to keep the account within what Reddit's spam detection treats as a plausible human.

What happens when a DM conversation goes deep? Does a human ever step in?

Yes, and this is currently the pipeline's weakest link. When a DM exchange shows buying intent (requests for a demo, Telegram or Discord handles, questions about pricing), dm_conversation.py flags the thread for human takeover. 14 conversations were flagged in the tracked window. Only 6 got picked up and replied to in time, the other 8 went cold. The pipeline is tuned for reliable top-of-funnel activity, but human latency at the bottom of the funnel is where the real leakage is. That is one of the things you can see live on a call with us.

Is this safe to run from a single account?

Safe is relative. The corpus shows a shadowban indicator at the old volume: 58.6% of all posts sat at exactly 1 upvote (default self-upvote), where a healthy engaged account is 30-40%. The pipeline now caps daily volume at a fraction of historical, strictly enforces the 3-minute gap, and audits the 1-upvote-only ratio weekly. If that ratio climbs back toward 58% at reduced volume, it is a sign of soft-shadowban risk and the account cools off for a week. For brand-safety operators, the answer is: do not hot-start an account at 30+ comments per day. Ramp slowly and keep the 3-minute gap even during ramp.

How does this compare to what Mailchimp, Neil Patel, and Hootsuite teach?

Those guides teach the first stage of the funnel exceptionally well: find subreddits, read the rules, be authentic, post useful content, do not spam links. Where they stop is where the funnel actually monetizes. None of them publish comment-to-DM conversion numbers, cold-DM response rates, throttle values that keep an account off the shadowban curve, or stage-by-stage drop-off from impression to qualified conversation. The advice is not wrong; it is just stage-1. You can follow all of it and still have no pipeline.