Identifying Inactive Contacts with the ‘Last Seen On’ Field

The Last Seen On field is a system-managed default contact field that automatically records the most recent time a contact interacted with your RapidPro.app workspace, and you can use it to find dormant contacts with search queries, build smart groups for re-engagement or cleanup, and schedule inactivity-based follow-ups in campaigns without manually updating the field.

Use “Last Seen On” to find inactive contacts in a few steps

If you just need the essentials, follow this:

  1. Understand what Last Seen On measures and when it updates
  2. Run a contact search using last_seen_on operators
  3. Create a smart group from the search results (optional)
  4. Use Last Seen On in a campaign event for automated inactivity follow-ups
  5. Troubleshoot: why dates don’t change and why campaigns didn’t trigger

You’re done. You can now monitor engagement and automate re-engagement or cleanup based on inactivity.

Step-by-Step Process

1
Understand what “Last Seen On” represents

The Last Seen On contact field records the most recent date a contact interacted with your RapidPro.app workspace.
You can use this field to identify inactive contacts, target re-engagement messages, clean up your contact database,
and drive campaign events based on inactivity.

Last Seen On is automatically updated when a contact:

  • sends a message to your workspace
  • interacts with a flow
  • communicates through any connected channel

You do not need to update this field manually.

⚙️
Note: Last Seen On is a default system field and cannot be edited directly by users or flows.

2
Search contacts using “Last Seen On”

You can use contact search queries to find contacts based on their last interaction date using last_seen_on.

Supported query operators

  • last_seen_on = “YYYY-MM-DD” → contacts seen on an exact date
  • last_seen_on > “YYYY-MM-DD” → contacts seen after a date
  • last_seen_on < “YYYY-MM-DD” → contacts seen before a date
  • last_seen_on >= “YYYY-MM-DD” AND last_seen_on <= “YYYY-MM-DD” → contacts seen within a date range
  • last_seen_on != “YYYY-MM-DD” → contacts not seen on a specific date
  • last_seen_on = “YYYY-MM-DD” OR last_seen_on = “YYYY-MM-DD” → contacts seen on multiple specific dates

[CAPTURE: Contacts search bar showing a query using last_seen_on.]

3
Create a smart group from search results (optional)

After running a Last Seen On search:

  1. Review the resulting contacts.
  2. Click Create smart group.
  3. Name the group (for example, Dormant).
  4. Save.

[CAPTURE: Search results page showing the “Create smart group” button.]
[CAPTURE: Smart group creation dialog with the group name “Dormant”.]

You can now send a reminder message, start a flow, or exclude/delete inactive contacts using that group.

4
Use “Last Seen On” in a campaign

You can also use Last Seen On directly in a campaign, without creating a group.
For example, you can send a message 90 days after a contact’s last interaction.

  1. Create or edit a campaign.
  2. Add a campaign event.
  3. Choose Last Seen On as the reference field.
  4. Set the offset (for example, 90 days after).
  5. Add the message or flow to send.

[CAPTURE: Campaign event configuration showing “Last Seen On + 90 days”.]

This approach is useful for automated follow-ups, inactivity reminders, and gradual database cleanup.

5
Common use cases and troubleshooting

Common use cases

  • Identify contacts who haven’t replied in weeks or months
  • Re-engage users before removing them
  • Automatically follow up without manual searches
  • Monitor contact engagement over time

Common Issues & Quick Fixes

Problem: A contact appears active but has an old “Last Seen On” date.

Fix: Last Seen On updates from inbound interactions. If the contact hasn’t sent any inbound messages recently, the date may remain old even if other activity occurred.

Problem: I can’t edit the “Last Seen On” value.

Fix: This is expected because the field is system-managed. Instead of editing it, use flows, searches, smart groups, or campaigns that react to the value.

Problem: A campaign didn’t trigger as expected.

Fix: Double-check the offset direction (before vs after), confirm the event timing, and make sure the campaign is active.