i want to send a live information about company that visited out website when they visit at least 3 unique pages. I have everything set but i dont want it to send new messages once the company get new visit. For example: one message when the company hits 3 visits, but no more messages when they hit 4 or more visits. How to implement it?
You can prevent duplicate messages by using conditional runs with an "Only run if" condition. Set up your messaging column to only run when the page visit count equals exactly 3, not greater than 3. [1]
In your messaging column's Run Settings, add a conditional formula like:
{{unique_pages_visited}} == 3
This ensures the message only triggers once when they hit exactly 3 pages, preventing additional messages at 4+ visits. [2] You can also combine this with other conditions using AND/OR operators if needed for more complex logic.
Is that what you were looking for?
but i also have a condition: 3 unique pages visited or 2 sessions
For multiple conditions with OR logic, you'll need to modify your conditional formula to:
({{unique_pages_visited}} == 3 AND {{sessions}} < 2) OR ({{sessions}} == 2 AND {{unique_pages_visited}} < 3)
This ensures the message only triggers once when either condition is first met, preventing duplicates when both thresholds are exceeded. [1]
Use the OR operator (||) to combine conditions - the message will send when the first qualifying condition is met but won't retrigger if additional thresholds are reached later. [2]
Did that answer your question?
create a db in sheet or supabase to keep track of the visits, and run automation on your db to count the visits and send messages once the criteria has been met
but when i use a message with these numbers included, then the message will change and force the message to be sent again
You're right - including dynamic numbers in messages causes them to change and retrigger. Instead of external databases, use Clay's conditional runs to prevent this.
Create a static conditional formula that only checks if thresholds are first met, not the actual numbers:
({{unique_pages_visited}} >= 3 AND {{previous_pages_visited}} < 3) OR ({{sessions}} >= 2 AND {{previous_sessions}} < 2)This triggers only when crossing the threshold, not on subsequent visits. [1]
Alternatively, use a separate tracking column with conditional runs that marks "message_sent" as true once criteria are met, then reference that status instead of the changing visit numbers. [2]
Was this helpful?
If you still need help refining your automation to avoid duplicate messages, I’m here to assist. Would you like to provide more details about your current setup or any specific challenges you’re facing?
i cant reference "message_sent" in conditional runs as it references a value that the column depends on
You're hitting a circular dependency issue. Instead of referencing the same column, create a separate tracking column first.
Set up a formula column that marks when thresholds are crossed:
IF({{unique_pages_visited}} >= 3 OR {{sessions}} >= 2, "qualified", "not_qualified")Then in your message column's conditional run, reference this tracking column:
{{tracking_column}} == "qualified" AND {{tracking_column_previous}} != "qualified"This prevents the circular reference while still tracking state changes.
Is that what you were looking for?
okay, lets analyze this example: I want Clay to send Slack message when a company with 500mln$ revenue visits /contact-sales page. But in the message i also include all visited pages. The problem is that whenever the company make a new page visit, this column changes its value and causes the Slack message to be sent once again
The issue is including dynamic data (all visited pages) in your message content. Here's the fix:
Option 1: Create two separate columns:
- Trigger column: Only checks if company visited /contact-sales with 500M+ revenue
- Message column: References the trigger column status, includes all page data
Option 2: Use conditional runs with a static trigger:
Set your Slack message to only run when:
{{revenue}} >= 500000000 AND {{pages_visited}} CONTAINS "/contact-sales" AND {{previous_pages_visited}} NOT CONTAINS "/contact-sales"
This triggers only when /contact-sales is first visited, not on subsequent page visits. [1]
The key is separating your trigger logic from your message content to prevent retriggering. [2]
