Back to blog
May 10, 20268 min read

Click-to-Instagram-Direct ads — how to route paid ad-taps into per-campaign DMs

CTM ads are Meta's highest-converting format for IG creators, but most operators waste the moment by sending a generic DM that doesn't address what the ad promised. Here's how to route each ad-tap to a tailored DM (or carousel) per campaign, with sub-second latency.

Click-to-Instagram-Direct ads — how to route paid ad-taps into per-campaign DMs

Meta has been quietly making Click-to-Instagram-Direct (CTM) ads the highest-converting paid format for IG creators for about two years. The premise is simple: instead of sending paid traffic to a landing page (where mobile users abandon at ~70%), your ad has a Send Message button that opens a DM thread directly inside the IG app. No webview, no app-switching, no abandoned cart.

Conversion rates on CTM ads consistently beat link-out ads by 2-4x in our customer data, especially for creator-led brands and DTC businesses with strong mobile audiences.

The catch: when 200 people tap your ad's Send Message button on a Tuesday, they all open a fresh DM thread on your IG handle. If your DM doesn't immediately address what the ad promised, you've burned the warmest part of the funnel. Generic "Hi! Thanks for reaching out 👋" destroys the conversion.

The fix is per-campaign DM routing. Each ad gets its own scripted DM (or carousel). The right thing lands in the user's inbox in under 3 seconds. Let's walk through how it works.

Why generic DMs lose the moment

When someone taps a CTM ad's Send Message button, here's their mental model:

If the DM says "Hi! How can I help you today?", the user has to re-state what brought them. They lose the context. They abandon. Conversion drops 60-80% versus a DM that opens with "Hey! Here's the link to the [exact thing the ad promised]."

This isn't a marketing-speak observation. It's measurable in the DM-to-purchase rate per ad in any decent attribution system.

How Meta tells you which ad they tapped

When a CTM ad-tap fires, Meta sends a messaging_referral webhook event to whichever app you have connected. The event includes:

You can look at ad_id and decide which scripted DM to send. The same webhook handles two adjacent surfaces:

All three sources land on the same messaging_referral webhook. One trigger handles all of them.

Routing logic that scales beyond 1-2 campaigns

The simplest case is one CTM campaign + one DM. That's:

  1. Set up the ad in Meta Ads Manager (objective: Engagement → Send Message; destination: Instagram Direct)
  2. Note the ad_id (15-17 digit number)
  3. Create one automation in your DM tool that fires when referral.ad_id matches that number
  4. Done

What about when you're running 5-10 campaigns simultaneously? You need:

ReplyAtlas's Ad / link trigger handles this with a best-match precedence:

  1. Both adIds non-empty AND refMatch matches → most specific, picks first
  2. adIds non-empty, no refMatch, ad_id in list → next
  3. adIds empty, refMatch matches → next
  4. adIds empty, no refMatch → catch-all, fires when nothing else matches

This means you can ship 3-5 highly specific automations + 1 catch-all and the routing just works.

What to put in the DM (templates that convert)

Some patterns we've seen consistently outperform:

For product ads: Lead with the link, then a 2-line follow-up.

Hey {{firstName}}! Here's the link to [exact product from ad]: [your-shortlink]

Worth grabbing while it's still in stock — let me know if you have questions about sizing.

For lead-gen / educational content: Acknowledge what they came for, deliver, soft CTA.

Hey {{firstName}}! Saw you tapped my "[ad headline]" ad 🚀 Here's the [free resource / guide / etc]: [link]

Reply with what you're working on and I'll send the most relevant follow-ups.

For high-touch / consultative sale: Open with a single question that qualifies them.

Hey {{firstName}}! Quick question first — are you looking for [option A] or [option B]? Based on your answer, I'll send the right pricing breakdown.

For e-commerce with a catalog: Skip text, send a carousel.

The carousel-DM combo

Text DMs work, but for product-heavy campaigns the win is sending a carousel instead. Up to 10 image cards, each with up to 3 buttons, each button able to deep-link or open a postback.

Example carousel for an apparel ad:

Same trigger (Ad / link), same per-campaign matching — just dmFormat: CAROUSEL instead of TEXT. Each button's URL gets click-tracked individually so you can A/B-test which card converts.

The full carousel walkthrough: /tutorials/carousel-dms.

Pairing with drip sequences for non-converters

Most ad-driven leads don't convert on the initial DM. The best operators recover ~30% of non-converters by following up at Day 3 and Day 7 — automatically.

Drip sequences let you script those follow-ups once and they enroll every ad-tap automatically. The Day-3 DM might be a soft "Hey, did you have a chance to check that link?" The Day-7 might be a stronger CTA or a different offer.

Critically, drip stops the moment the lead replies (STOPPED_ON_REPLY) or is marked converted (STOPPED_ON_CONVERSION). So you're not pestering converters or people already in conversation. The full drip walkthrough: /tutorials/drip-sequences.

What you need to set this up

On the Meta side:

On the tool side:

ReplyAtlas's Ad / link trigger is on the Pro+ plan. The full walkthrough is at /tutorials/ad-funnels. Set up time: about 5 minutes per campaign once your ad is live in Ads Manager.

Common gotchas

The webhook hasn't subscribed. When you (or your tool) connect to a Meta App, the app has to be subscribed to the messaging_referral webhook field at the App Dashboard level. If only the comments field is subscribed, ad-taps don't deliver. Tools usually do this on connect; check the tool's docs.

App in Development mode. While the Meta App is unpublished (pre-App-Review), Meta only delivers test webhooks from the Dashboard's "Test Webhooks" button. Real ad-taps don't fire until the app is approved and flipped to Live. This is the single biggest blocker for new IG-DM tools — Meta App Review is 5-14 business days, plus iteration.

Wrong ad_id. The ad_id is the ad id, not the campaign id, not the ad set id. Easy to confuse in Ads Manager. Numeric, 15-17 digits.

Account in Personal mode. Personal IG accounts don't receive messaging_referral events at all. Switch to Business or Creator and reconnect.

FAQ

Does this work with Reels ads? Yes. Any ad with the "Send Message → Instagram Direct" destination fires messaging_referral regardless of placement (Reels, feed, stories, Explore).

Can I send the DM from the same account I'm running the ad to, or do I need a separate IG account? Same account. The ad is on your IG handle; the DM lands on your IG handle from the user. No separate sender needed.

How fast does the DM land after the ad tap? Usually 2-5 seconds. Webhook delivery from Meta to ReplyAtlas: ~1-2 sec. Cloud Tasks dispatch: ~500ms. IG Send API call: ~500-1000ms. Total: well under 5 sec on a normal day.

What's the difference between this and ManyChat's CTM flow? Mostly pricing and integration. ManyChat is the legacy leader; their pricing tops out at $145/mo for higher tiers. ReplyAtlas's Pro+ is $99/mo at this writing with the same trigger. The integration is simpler if you're also using ReplyAtlas for other automation surfaces (carousel DMs, drip, lead pipeline). We're cheaper if you don't need ManyChat's broader Messenger / WhatsApp / SMS reach.

Does the DM have a 24-hour reply window like other auto-DMs? Yes — the standard 24-hour rule from Meta applies. After 24 hours, you can't send another freeform message to that user without the HUMAN_AGENT tag (which extends to 7 days, available on Pro+). For most ad funnels, 24 hours is plenty since the conversion happens in the first session anyway.

Can I A/B test different DMs per ad? Yes — A/B testing is supported on every automation type (50/50 deterministic split, auto-promote winner at ≥100 sends/variant ≥20% CTR delta). Worth setting up for high-spend campaigns.


If you're spending $1k+/month on CTM ads and currently using a generic DM, swapping to per-campaign routing is one of the highest-leverage changes you can make this quarter. ReplyAtlas's Pro+ plan includes the Ad / link trigger plus the full Carousel + Drip stack the strategy depends on.

Ready to try it on your own Instagram?

Free Starter plan · 1,000 DMs/month · No credit card · Setup in 60 seconds.

Get started — free