What This Guide Covers
When you set up Instagram comment automation, you want people who comment on your posts to receive a DM. But what happens if the same person comments multiple times? By default, they'll receive your message every single time they comment.
This guide shows you how to use conditional logic and contact tagging to ensure each person only receives your message once, even if they comment the same keyword 10 times.
Use cases:
Giveaways or contests where people comment to enter
Product inquiries where you send catalog links via DM
Lead magnets where you send a download link or discount code
Any scenario where duplicate messages would annoy customers or waste your resources
Why This Matters
Without this setup:
Person comments "interested" → Gets your DM
Same person comments "interested" again → Gets the same DM again
Repeat infinitely
With this setup:
Person comments "interested" → Gets your DM
Same person comments "interested" again → Nothing happens (they already got it)
Benefits:
Better customer experience (no spam)
Cleaner analytics (no inflated "messages sent" numbers)
What You'll Need
✅ An Instagram account connected to Spur
✅ At least one Instagram post you want to set up automation on
✅ A keyword you want people to comment (e.g., "broccoli," "interested," "info")
✅ The message you want to send via DM when they comment
Step-by-Step Setup
Watch this video if you'd rather follow along visually.
Step 1: Create a New Instagram Automation Flow
Go to Automations in the left-hand navigation menu (lightning bolt icon)
Click the blue "+ New Flow" button in the top right
In the "Select a channel" modal, click "Select Channel" under Instagram
In the "Start with a Template" modal, click "Start From Scratch" at the bottom right
You'll now see a blank workflow canvas with a "Starting Trigger" node.
Step 2: Set Up the Comment Trigger
Click "Click to add a trigger" inside the "Starting Trigger" node
From the list of triggers in the left sidebar, select "Comment"
In the trigger settings, click the dropdown that says "All Publications"
Select "Specific Post or Reel or Ad"
Click the blue "Select Publication" button
Check the boxes next to the Instagram posts you want this automation to apply to
Close the modal
Why choose specific posts?
You probably don't want this automation running on every post. Selecting specific posts gives you control. For example, you might want this on a product launch post but not on a casual brand update.
Step 3: Configure Keywords and Comment Replies
Click the blue "Configure Triggers & Replies" button in the left sidebar
In the "Keywords" text box, type the keyword you want to trigger the automation (e.g.,
broccoli
,interested
,info
)Scroll down to the "Reply In Comments" section
Click "+ Add Comment Reply" and type your first comment reply (e.g., "Thanks for your interest! Check your DMs 😊")
(Optional) Click "+ Add Comment Reply" again and add a second reply if you want to randomize responses
Close the modal
What are comment replies?
These are public replies that show up under the person's comment. They're separate from the DM you'll send. If you add multiple comment replies, Spur will randomize which one gets posted so your comment section doesn't look robotic.
Step 4: Add the DM You Want to Send
Click the blue plus (+) icon on the canvas
In the modal that appears, select "Instagram/Facebook" under the "Content" section
A "Send Message #0" node is added to the canvas. Click on it.
In the left sidebar, type the message you want to send via DM (e.g., "Hello! Here's what you enquired about: [link]")
Tips for writing your DM:
Keep it conversational and friendly
Include a clear call-to-action (e.g., "Click here to shop," "Reply with your email")
Avoid overly promotional language if you're trying to start a conversation
Step 5: Add a Tag to the Contact (So You Know They Got the Message)
This is the critical step. After sending the DM, you'll tag the contact. This tag will act as a "marker" that says "this person already received the message."
Click the plus (+) icon on the canvas again
Select "Action" from the "Logic" section
An "Action #1" node is added. Connect the "Next Step" output of the "Send Message #0" node to the input of this new action node.
Click on the "Action #1" node
In the left sidebar, select "Add Spur Tag to Contact" from the list of actions
In the "Add Contact Tag" field, create a unique tag name
How to name your tag:
Use a format like: [post-identifier]-msgreceived
Examples:
If this is for a giveaway post, use:
giveaway-march-msgreceived
If this is for a product launch, use:
sneaker-drop-msgreceived
If you're running this on multiple posts, use:
v1-msgreceived
,v2-msgreceived
, etc.
Why unique tag names matter:
If you use the same tag across multiple automations, people who already have that tag from a different post won't receive your message on this post. Keep each automation's tag unique.
Step 6: Add a Condition to Check If the Person Already Has the Tag
Now you'll add logic to check whether the person already received the message before sending it again.
Click the plus (+) icon on the canvas again
Select "Condition" from the "Logic" section
A "Condition #2" node is added. Drag it so it sits between the "Starting Trigger" and the "Send Message #0" node
Connect the "First Step" output of the "Starting Trigger" to the input of the "Condition #2" node
Click on the "Condition #2" node
In the left sidebar, click "+ Condition"
In the "Select Variable" dropdown, select "Tags (comma separated)"
In the operator dropdown, select "Array Does not contain"
In the text field, type the exact tag name you created earlier (e.g.,
v1-msgreceived
)
What this condition does:
It checks: "Does this contact not have the tag yet?" If they don't have it, the flow continues. If they do have it, the flow stops.
Step 7: Connect the Condition to the Message
Connect the top output (green checkmark) of the "Condition #2" node to the input of the "Send Message #0" node
What this does:
If the condition is true (the person doesn't have the tag), they get the message. After they get the message, the tag is added. The next time they comment, the condition will be false (they now have the tag), so nothing happens.
Step 8: Leave the "None of these conditions match" Output Unconnected
The bottom output of the "Condition #2" node (labeled "None of these conditions match the contact") should be left unconnected.
Why?
This is the path that gets triggered when the person already has the tag. Since they already received your message, you don't want anything to happen. Leaving it unconnected ensures the flow ends here.
How the Flow Works (Step-by-Step Walkthrough)
Let's walk through what happens when someone comments.
First Time the Person Comments:
User comments the keyword (e.g., "broccoli")
The automation checks: "Does this contact have the tag
v1-msgreceived
?"Answer: No (they've never been through this flow before)
The condition is true → Flow continues
The DM is sent: "Hello! Here's what you enquired about."
A tag is added to their contact:
v1-msgreceived
Flow ends
Second Time the Same Person Comments:
User comments the keyword again (e.g., "broccoli")
The automation checks: "Does this contact have the tag
v1-msgreceived
?"Answer: Yes (they received the message last time and got tagged)
The condition is false → Flow takes the "None of these conditions match" path
That path is unconnected → Nothing happens
Flow ends
Result:
No duplicate message. The person only gets your DM once, no matter how many times they comment.
Important: Keep Your Tags Unique
If you're running this type of automation on multiple posts, make sure each automation uses a unique tag.
Bad example:
Post 1: Uses tag
msgreceived
Post 2: Uses tag
msgreceived
What happens:
If someone comments on Post 1, they get tagged with msgreceived
. Later, if they comment on Post 2, the condition checks for msgreceived
and they already have it, so they won't get the Post 2 message.
Good example:
Post 1: Uses tag
v1-msgreceived
Post 2: Uses tag
v2-msgreceived
What happens:
Commenting on Post 1 tags them with v1-msgreceived
. Commenting on Post 2 checks for v2-msgreceived
(which they don't have), so they get the Post 2 message.
How to name your tags:
Use post identifiers:
[post-name]-msgreceived
Use version numbers:
v1-msgreceived
,v2-msgreceived
,v3-msgreceived
Use campaign names:
blackfriday-msgreceived
,newlaunch-msgreceived
Troubleshooting Common Issues
"People are still getting duplicate messages"
Possible causes:
You didn't connect the condition node correctly
The tag name in the condition doesn't match the tag name in the action (check for typos or extra spaces)
The condition operator is set to "is Empty" instead of "Array Does not contain"
How to fix:
Double-check your workflow connections and tag names. They must match exactly.
"Nobody is getting messages at all"
Possible causes:
The condition is checking if the tag exists instead of checking if it doesn't exist
You accidentally used the same tag from a previous automation, and people already have it
The keyword doesn't match what people are commenting (keywords are case-insensitive, but spelling must be exact)
How to fix:
Make sure the condition says "Array Does not contain"
Use a fresh, unique tag for this automation
Test by commenting the exact keyword yourself
"The tag isn't being added to contacts"
Possible causes:
The action node isn't connected to the message node
You didn't save the tag after typing it
How to fix:
Make sure there's a line connecting the "Send Message" node to the "Action" node. Open the action node and confirm the tag name is saved.
Best Practices
✅ Test the flow before going live
Comment on the post yourself (from a test account or your personal account) and make sure you get the DM. Comment again and make sure you don't get a second DM.
✅ Use clear, unique tag names
Future-you will thank you. Don't use vague names like "tag1" or "done." Use descriptive names that tell you what the tag is for.
✅ Keep comment replies friendly
Your public comment reply is visible to everyone. Keep it on-brand and professional.
✅ Monitor your inbox after launch
Check that DMs are going out as expected and that people aren't reporting issues.
Quick Reference: Node Connections
Here's the final workflow structure at a glance:
Starting Trigger (Comment)
↓
Condition #2 (Does contact NOT have tag?)
↓ (Yes, they don't have it)
Send Message #0 (Your DM)
↓
Action #1 (Add tag to contact)
↓
[End]
Condition #2 (Does contact NOT have tag?)
↓ (No, they already have it)
[Unconnected - Flow ends]
Summary
By using a condition node to check for a tag and an action node to add that tag after sending the message, you create a "gate" that only lets people through once. This prevents duplicate messages and keeps your automation clean and customer-friendly.
Key steps:
Set up comment trigger with keyword
Add a condition to check if contact doesn't have a specific tag
Send the DM if condition is true
Add the tag to the contact after sending
Leave the "condition false" path unconnected so nothing happens on repeat comments
Need help setting this up? Hit us on chat or check out our other automation guides.