Runs when a chat starts from an ad, a short link or a QR code. The link tag (ref), QR generation, channel differences and the 24-hour window trap are all covered here.
You are running ads, you printed a QR code on your business card and you put a link in your bio — but you have no idea which incoming message came from which campaign. The Link / ad trigger solves that: it gives every campaign its own tag and routes the person who arrives with that tag straight into its own flow. This guide covers building the tag, generating the link and QR code, the channel differences, and the 24-hour trap people fall into most often.
💡 You do not have to create a separate link for this trigger: the address and the QR code carrying your tag are generated right under the Link tag field.
In this article you will find:
What it does
Building the trigger
Fields and buttons
The 24-hour window trap
Channel differences
Limits and known issues
Common mistakes and how to fix them
What it does
When someone starts a chat from somewhere you shared, Instagram attaches a small record to the conversation: where they came from (an ad, a short link, a QR code) and the tag you put in the link. The trigger reads that record and starts the flow.
That lets you run many campaigns from one account:
The QR code on the autumn campaign poster carries the tag autumn and starts the discount flow.
The QR code on your business card starts the booking flow with the tag card.
A new-product ad starts the product flow with the tag ad-new-product.
The session log shows which tag the person arrived with; read that column on the Logs tab to count how many conversations each campaign brought in.
Building the trigger
Let us build a business-card QR flow for a dental clinic.
Open an empty flow with New automation from the Automations list.
On the Flow tab, click the When… box on the canvas.
Press Add trigger in the panel on the side.
Pick Link / ad from the list.
Set the Source list to QR code. That is the right choice if you only want QR arrivals; to accept every route, leave it on All sources.
Type card into the Link tag (ref) box. Keep tags short, lower-case and hyphenated.
In the Link and QR code block that appears under the field, press QR code and save the image with Download QR code.
Connect the start box's Next output to a Message step and write "Hello! You found us from our business card. Write the day that suits you and we will book an appointment."
Press Publish at the top right. Your automation is now running.
Print the QR code you downloaded onto the card.
Fields and buttons
The trigger card holds two fields, a link block and a remove button.
Source — Where the chat started. Four options:
All sources: whichever route they used.
Ad: chats arriving from a Meta ad.
ig.me / m.me link: arrivals from a short link you shared.
QR code: arrivals from scanning a QR code you printed.
Narrowing the source gives the trigger 1 specificity point.
Link tag (ref) — The tag appended to the link. Left empty it runs on every tag; the hint under the field says so: "Leave empty to run for every tag." When it is filled the match is exact: a trigger tagged autumn does not catch someone arriving with autumn-2. Up to 120 characters. A trigger with a tag earns 10 specificity points, which outweighs even the narrowest keyword mode.
Channel — Which account the trigger runs on. It appears only when more than one channel is connected.
Remove — The cross at the top right of the card deletes the trigger.
The link and QR code block
Under the Link tag field a box appears for every eligible channel connected to your account. Each box holds:
Link — The full address including the tag. The box is read-only; change the tag and the address updates itself.
Copy — Puts the address on the clipboard. Use this address in your ad setup, in your bio or in an email.
QR code — Opens the QR code for that address. The Download QR code link beneath it saves the image as a PNG.
The note above the block says: "Share this address or print the QR code: anyone who writes from here lands in this flow."
If the account has no active connection, a warning appears instead of the box: "This account has no active connection; reconnect it under Settings › Connection first."
The 24-hour window trap
This is the most surprising part of the trigger, and the reason flows built without knowing it stay silent.
When someone taps your link or scans your QR code and opens the chat, Instagram sends you a record — but the person has not written anything yet. Because no written message arrived, the messaging window does not open. The flow starts, but the first message cannot be sent and the log records the reason "24-hour window closed".
It is different when the person arrives from the link and writes a message at the same time: that message carries the record too, the window opens, and the flow runs normally.
In practice this means:
Set up your ads and links so that they push the person to write. Instagram's "send message" ad format makes the person send a ready-made text, which opens the window.
If the person only opens the chat and waits, your first message does not go out. That is not a fault, it is Meta's rule.
You can split the two paths with a Condition step using the Messaging window rule: greet them when the window is open, and end the flow quietly when it is closed.
⚠️ Note: this rule is only about message-free link and ad events. Comment-started flows have an allowance of their own (see the post comment trigger), and story replies and shares arrive in a message, so they open the window anyway.
Channel differences
Instagram (ig.me) and Messenger (m.me) — This is exactly where the link tag works. The address carries a ?ref= parameter and the tag reaches the trigger. The QR code is generated from that address too.
WhatsApp — A WhatsApp link carries no tag. Instead of a tag, a wa.me address puts ready-made text in the message box, and when the person presses Send that text arrives as an ordinary message. So you separate WhatsApp campaigns with the keyword trigger rather than with this one: put something like campaign code: autumn in the prefilled text and add the word to your keyword list.
Chats arriving from click-to-WhatsApp ads carry no link tag and no source value either. If you do build this trigger on a WhatsApp account, leave Source on All sources and the Link tag field empty; a narrowed setting never matches.
Limits and known issues
The link tag is at most 120 characters and the match is exact; there is no partial matching.
Message-free link and ad events do not open the messaging window, so the first message cannot be sent.
The link tag only travels on Instagram and Messenger addresses; WhatsApp has no equivalent.
If the account has no username (or the connection has dropped) the address cannot be generated and a warning appears in the block.
When no link/ad trigger matches, the event is evaluated as an ordinary message and the person lands in your welcome or default reply flow.
It is an explicit trigger: it cuts the person's running session.
The trigger only runs while the automation is Live.
Common mistakes and how to fix them
Typing the tag into the link by hand. Building the address yourself and adding ?ref= manually invites typos. Always use the Copy button under the trigger.
Using capitals and spaces in the tag. Because the match is exact, Autumn 2026 and autumn-2026 are not the same thing. Choose short, lower-case, hyphenated tags.
Giving every campaign the same tag. With one shared tag you cannot measure which poster worked. Give each placement its own tag: poster-north, poster-south.
Narrowing the source unnecessarily. Pick Ad and a QR code carrying the same tag will not work. When in doubt, leave it on All sources.
Not reprinting the QR code after changing the tag. Change the tag and the address and the QR code change with it; the printed code keeps carrying the old tag.
Using a tagless trigger alongside other flows. A trigger with an empty tag catches every link and competes with your campaign flows. If you want a general greeting in its own flow, make sure your campaign flows all have their tags filled in.
If people arriving from a link get no message, check the reason in the log first; if it says "24-hour window closed", see the message cannot be sent guide or get in touch with our Support team.