ZIPPY DOCS

ManyChat

Put a Zippy link inside your ManyChat comment-to-DM flow so the tap opens the real app instead of dying in Instagram's in-app browser — paste one link, or generate links per-subscriber with one External Request block.

ManyChat + Zippy

ManyChat gets the DM opened. That's the hard part, and it's genuinely good at it.

Then the link in that DM opens in Instagram's in-app browser — a webview where nobody is logged in, Apple Pay doesn't exist, and your pixel is blind. Your checkout, your shop, your track: all opened in the worst possible browser.

ManyChat can't fix that, because ManyChat isn't a link tool. A Zippy link in the same message detects the webview and springs the real app.

Because Instagram never hands the tap to your phone's browser in the first place. It opens the URL in its own webview, inside the Instagram app — and that decision belongs to Instagram, not to ManyChat. ManyChat's job ends when the message is delivered.

That webview is a browser where your visitor is logged into nothing, Apple Pay doesn't exist, and cookies are sandboxed away from the pixel you're paying for. Same tap, worse browser, and it's costing you checkouts you already earned. The Deep Link Debugger shows you exactly what your link does in there, side by side with a real browser.

Swap the raw URL in your flow for a Zippy link. There is no app to install and no ManyChat plan requirement — a Zippy link is just a URL.

  1. Paste your destination at app.zipthe.link and copy the short link you get back.
  2. In ManyChat, open your comment-to-DM flow and find the message or button holding your link.
  3. Replace the URL with the Zippy one. Publish.

That's the whole integration. When the tap comes from inside Instagram, Zippy escapes the webview into the native app. Wrong platform, desktop, or an app that isn't installed? It degrades to a normal redirect — see the rich fallback page. A link never stops working.

Use one link per flow

Give each ManyChat flow its own Zippy link rather than reusing one everywhere. The stats below are per-link, so a dedicated link is what makes "did my DM traffic open the app?" a question with an answer. Tags and folders keep them sorted — tag them manychat and you can pull the set later.

Use ManyChat's External Request action against the Zippy API. This is a Legend feature — see the API docs for keys and limits.

In your flow, add an External Request step:

FieldValue
MethodPOST
URLhttps://api.zipthe.link/v1/links
HeaderAuthorization: Bearer zip_…
HeaderContent-Type: application/json
Body{"url": "https://your-destination.com", "tags": ["manychat"]}

Then map the response into a ManyChat custom field:

Response fieldMaps to
$.shortUrla text custom field, e.g. zippy_link

Use {{zippy_link}} in the next message of the flow.

shortUrl is the complete, ready-to-paste URL. ManyChat binds one JSONPath per custom field and can't join strings, so bind that field — not slug and hostname separately.

You can interpolate ManyChat fields into the body to make the link campaign-specific:

{
  "url": "https://your-shop.com/product?ref={{subscriber_id}}",
  "tags": ["manychat", "{{campaign_name}}"],
  "utm": { "source": "instagram", "medium": "dm", "campaign": "{{campaign_name}}" }
}

The UTM builder covers what those parameters do downstream.

Don't create a link on every message

An External Request runs each time the flow hits that step, so a link per subscriber means a link per subscriber against your plan's cap and the API's rate limit (120 calls/minute per key). If everyone in a campaign gets the same destination, create one link and paste it — only branch to per-subscriber links when the destination genuinely differs.

This is the number a click counter can't give you, and it's already in your dashboard — nothing extra to set up.

Open the link's stats in Zippy (or GET /v1/links/:id/stats) and read appOpenRate alongside the outcome split:

  • opened — the tap reached the real native app. This is the one that matters.
  • browser — it opened a browser instead. Usually the in-app webview winning.
  • broken — the tap went nowhere useful.

A healthy comment-to-DM flow shows a high opened share on mobile. If browser is climbing, the destination platform is the thing to look at — check it in the Deep Link Debugger, which shows exactly what a link does from inside Instagram's webview versus a real browser.

App-open rates are a sampled estimate, and Zippy shows them as such. A brand-new link with no measured taps reports no rate at all rather than a misleading 0%.

To watch the outcomes live instead of checking the dashboard, point webhooks at your automation — app.opened and app.broken fire per tap, so ManyChat's own External Request isn't the only direction data can flow.

Notes

  • Any ManyChat plan works for pasting a link — it's a URL in a message. Only the External Request recipe needs ManyChat Pro (their side) and Zippy Legend (ours).
  • Zippy doesn't read your ManyChat account. There's no OAuth connection and no permissions to grant; the integration is the link itself, plus an optional outbound HTTP call that you configure.
  • Links outlive subscriptions. If you downgrade, your links keep redirecting — they go read-only, never dead. A DM you sent last year still works.

On this page