← all posts
The Zippy Team

Every Comment-to-DM Funnel Ends at "DM Sent." Ours Ends at "They Opened Spotify."

A four-step funnel for Instagram comment-to-DM automations: commented, DM sent, tapped, and the step nobody else can render — opened the real native app. Plus the gap between the last two, which is the audience you paid for and lost to the in-app browser.

instagramdm automationfunnelanalyticsin-app browserapp opensattribution
Zippy the limbless lightning-bolt mascot beside a four-step funnel narrowing from a comment bubble at the top down to a glowing phone with its native app open at the bottom
Zippy, the lightning-bolt mascot

Zippy: "DM sent" is a receipt for postage. it is not a receipt for arrival.

The funnel everybody ships

Open any comment-to-DM tool and the report says the same three things:

  1. how many people commented
  2. how many DMs went out
  3. how many links got clicked

Then it stops. Not because the vendor is lazy — because that is genuinely the last thing they can see. The link in that DM is a plain URL. A follower taps it, Instagram opens it in its own in-app browser, and the vendor's involvement ends at the redirect. Whatever happened after the tap happened somewhere they have no instrumentation.

So the number that gets celebrated is clicks. And clicks are the most flattering possible place to stop counting.

What happens in the two seconds after the tap

Your follower is now inside Instagram's webview looking at your Spotify page, or your Shopify checkout, or your course.

They are logged out. Their saved cards aren't there. Their playlist isn't there. Apple Pay isn't there. Your pixel doesn't fire. If they want to actually do the thing, they have to tap the "⋯" menu, find "Open in browser" or "Open in app", and start over.

Most people don't. They bounce.

That bounce is invisible in every funnel on the market, because it happens on the far side of the last step anybody measures. Your dashboard says the automation is working. Your revenue says otherwise. Nobody can reconcile the two, so it gets filed under "Instagram traffic just converts badly."

It doesn't. It gets intercepted.

The two steps we added

Every DM Zippy sends carries an engine-backed Zippy link instead of a raw URL. That link does two jobs: it springs the native app out of the in-app browser, and — because it is our redirect — it reports what actually happened on the other side.

Which means the funnel gets two more rows:

#StepKind of number
1commentedexact
2DM sentexact
3tapped the linksampled
4OPENED THE APPsampled

Step 4 is a count of human beings who ended up inside the real native app. Logged in. Cards saved. Pixel alive. Not a page that looks like the app — the app.

The gap is the product

Look at a real shape:

commented         1,840
DM sent           1,802
tapped the link     736
OPENED THE APP      312

Every other tool shows you the first three rows and invites you to feel good about 736.

The row that matters is the one underneath: 424 people tapped and never made it into the app. They wanted it enough to tap. They got a logged-out webview instead. That is not a conversion-rate problem, a copy problem, or an offer problem — it is a door problem, and until now nothing in your stack could even tell you the door was there.

Zippy prints that sentence under the funnel in plain words. It is the single most useful number on the page and it only exists because there is a fourth step to subtract from.

The parts we refuse to fake

This is the report creators are most likely to screenshot, which is exactly why it is the one we were strictest about.

Steps 3 and 4 are sampled. They come from Analytics Engine and are extrapolated, and they are marked sampled on the step itself — not buried in a footnote. Steps 1 and 2 are exact database counts. Those are two different kinds of number and we never present the four as one clean ledger.

Whole numbers only. A decimal on an extrapolated figure is false precision dressed as rigour.

Unavailable is not zero. If Zippy can't measure a step, it says unavailable and tells you why — the rule sends no link, analytics isn't connected, or the rule sends personal links whose taps we can't total yet. It never quietly prints 0, because 0 means "nobody did this" and that is a completely different fact from "we don't know."

No invented drop-offs. If step 3 is unavailable there is no "lost between 3 and 4" number, because computing one would mean guessing at both ends.

A brand-new rule gets a sentence, not a funnel of zeros. Four empty bars look like a verdict. They're not; they're an absence of data.

The share card

There's a one-tap image: all four steps, with the count of people who opened the real app as the headline. "My comment-to-DM put 312 people INSIDE the app" is a sentence no competitor's customer can post, because no competitor can compute the last word of it.

The card is deliberately all-or-nothing. It renders only when all four steps are real measured numbers and somebody actually opened the app. Otherwise you get a message naming the step that's missing. An image travels without the page that framed it — a stranger seeing a chain with a hole in it reads a complete chain. The sampling note is printed on the card's own face for the same reason.

What this still doesn't do

  • App-open detection is a heuristic, not a certificate. It's sampled, it has known false negatives on some Android hand-offs, and we say so everywhere it appears.
  • It's per-link, not per-person, in the aggregate view. Per-person activity lives on the contact, not in this funnel.
  • Our Meta app is still unapproved and DM automations are dark. Nothing is going out to real followers today. This report is real, tested and shipped; the channel that fills it isn't open yet, and we'd rather say that than let a screenshot imply otherwise.

Read next