Automating Replies to Ad Messages: A Separate Welcome Flow
You can greet people who tap your ad and message you with their own flow, separate from your other DMs. Here is how to set up the ad trigger step by step.

In this post
You can greet people who tap your ad and message you with their own flow, separate from your other DMs. In UlakChat, all you need is a trigger of the When a user comes from an ad type in your message automation. This guide explains why a separate welcome makes sense and how to set it up.
Why greet ad clicks separately?
When you run a messaging ad on Instagram, people who see it can message you with one tap. They are not the same as a follower who browsed your profile first. You know what they saw: the product or offer in your ad.
If your general welcome starts with "Hi, how can we help?", the person from the ad has to type their question all over again. If they saw a dress in the ad, mentioning that dress in the first message moves the conversation forward. You can tell them the price, the sizes or when the offer ends right away.
There's also the budget side. You paid for that click. Leaving that person without a reply, or sending them into the wrong flow, is the most expensive kind of loss.
How the ad trigger works
When someone opens a chat from an ad, Meta sends the ad information along with the message. It includes the ad ID and, if you set one, the ad's ref value. UlakChat uses this to tell that the person came from an ad.
Three things about this trigger make life easier:
- No keyword needed. Other triggers look at the message text. This type only looks at the ad information. Whether the person writes "hi" or the product name, the flow starts.
- It is checked first. For a message that came from an ad, an ad trigger with a matching scope goes ahead of your other triggers.
- Nothing is lost if there's no match. If the scope doesn't match, or you have no ad trigger, the message is checked against your normal message flows.
People who open a chat from the ig.me link in your bio, or one you shared, also arrive with similar information from Meta. UlakChat doesn't count them as coming from an ad, so your ad flow won't run for them.
This type can only be picked inside a Manual Trigger. The AI Intent Detector reads the message text to work out what the person wants and ignores ad information. The two can still live in the same message automation: the ad trigger greets people from your ads, and the AI Intent Detector or keyword triggers handle everything else. The ad trigger uses no AI credits, because the decision is based on the ad information, not the message text.
Scope: All Ads or specific campaigns?
After adding the trigger, you set the ad scope on the node.
| Option | What it does | When to use it |
|---|---|---|
| All Ads on | Messages from any of your ads start the flow. | You run a single ad, or you want the same welcome for all your ads. |
| All Ads off, ref values added | Only runs for people who arrive with one of the ref values you added. | You run different ads for different products and want a separate welcome for each. |
A ref value is an optional label you give an ad when you set it up. For example, summer-dress for a summer dress ad or bag-sale for a handbag ad. If your ad has no ref, Meta sends this field empty. In that case, use All Ads.
With the scope off, you type values one by one into the Add a campaign ref value box. The node shows how many values you've added.
Step-by-step setup
- In the panel, go to the Message Automation screen and create a New Message Automation. Pick the Instagram account the flow will run on.
- In the flow editor, open the Trigger node and add a new trigger with Add Trigger.
- Choose Manual Trigger. Under Trigger Type, select When a user comes from an ad. No word field appears for this type, and there's no condition to fill in.
- Save and go back to the node. An ad scope section now appears on it. For a single ad, leave All Ads on. For a specific campaign, turn it off and add your ref values.
- Connect your welcome message to the trigger's output. Use a Text Message, or a Button Menu if you want to offer choices.
- Save the flow and turn it on.
To test the flow, open your ad from another account and send a message. Your welcome should arrive within a few seconds.
The flow skeleton:
How to write a good ad welcome
The first message to someone from an ad should read like the next part of the ad. A few tips:
Name the product from the ad. The person remembers what they tapped on. An opening like "Thanks for your interest in the linen dress from our ad" feels warmer than a generic hello.
Answer the common question right away. People from ads usually ask about price and size first. Put those in the first message, or offer options like "Price", "Size chart" and "I'd like to order" with a Button Menu.
Hi, thanks for checking out our linen dress. It's in stock in S, M and L, in three colors. Pick what you'd like to know below.
What the customer sees:
The chat was opened from the linen dress ad.
Hi
Hi, thanks for checking out our linen dress. It's in stock in S, M and L, in three colors. Pick what you'd like to know below.
Spell out the offer terms. If the ad mentions a discount, repeat its conditions and end date in the welcome. The ad and the message shouldn't contradict each other.
Leave a way to reach a person. Someone close to buying sometimes just wants to ask a question. With a Live Support step you can pause the automation and take over the conversation yourself. We cover this in our live support handover guide.
If your product catalog is ready, you can move on to product steps after the welcome. For example, Variant Selection can ask for size and color and reply based on stock.
If you run several campaigns
If you run different ads for different products, create a separate message automation for each campaign and give each one its own ref values. The ad scope in a flow is a single set, so one flow per campaign is the easiest setup to read.
One thing to watch: if more than one flow matches the same ad, only one of them runs. To stay in control of which one runs, don't let scopes overlap. For example, having All Ads on in one flow while another flow lists specific ref values leaves it unclear which welcome the person gets. If you use campaign-specific flows, don't leave All Ads on in any flow.
Common mistakes
- Ref value spelled differently. The ref value has to match exactly. If the ad says
summer-dressand the flow saysSummer-Dress, they won't match. - Picking specific campaigns when the ad has no ref. If Meta sends no ref, the scope doesn't match and the person doesn't enter the ad flow. Your normal flow picks up the message instead.
- Treating a link like an ad. An ig.me link is not an ad. Don't expect people who come from a link to get the ad flow.
- Forgetting the 24-hour rule. The 24-hour messaging window opens the moment someone from your ad writes to you. Plan your follow-up messages within that time. For details, see our post on Meta's 24-hour rule.
You'll find other ways to use message automation on our Instagram DM automation page.
Frequently asked questions
Does this flow always run for people who come from an ad?
Yes, if the message arrives from Meta with ad information and you have an ad trigger whose scope matches, this flow runs first. If the scope doesn't match, the message is checked against your normal message triggers, so it isn't lost.
Where do I find the ref value?
The ref value is an optional parameter you set on the ad when you create it. Meta sends it along with messages that come from the ad. If your ad has no ref, use the All Ads option.
Can I use the ad trigger together with the AI Intent Detector?
The "When a user comes from an ad" type can only be picked inside a Manual Trigger, because it looks at the ad information, not the message text. Other triggers that work on the message text, including the AI Intent Detector, can sit in the same flow.
Is this trigger available in comment automation?
No. People who come from an ad write to you by DM, so the trigger only exists in message automation.


