You can use Ping Pong to deliver targeted content across your external web properties — configured entirely in Slate. Ping Pong content is based on who is visiting the website and what pages they're viewing.
Ping Pong can:
Show a welcome message to first-time visitors on your homepage
Promote an event, such as Homecoming, for visitors browsing alumni and giving pages
Present an application form popup to prospective students who have spent time browsing your admissions pages
Announce a special scholarship to visitors who meet certain criteria
Insert helpful content at specific points during a visitor's browsing session
In most cases, Ping Pong does not require assistance from your institution’s website development team. Instead, Slate uses existing Ping configurations to drive its dynamic content.
How Ping Pong works
Your institution enables Ping: Ping Pong uses the Ping tracking script embedded on your webpages. This script is usually set up when your Slate database is first activated. See Enabling Ping Pong.
A visitor arrives: When someone visits your website, the Ping code loads and checks several things:
Is this visitor from an excluded network? You can configure Ping to not track certain IP addresses, like your own staff.
Does the visitor have tracking consent preferences already set?
Is their browser sending a "Do Not Track" signal?
Consent management: If the visitor is in a region requiring privacy consent, such as the EU, they'll see a consent dialog asking permission to track their activity. Ping Pong won’t activate until they’ve granted consent to be tracked.
Ping Pong checks in: Once tracking is approved, the Ping code checks with Slate to see if any Ping Pong actions match:
The specific page URL the visitor is viewing
The visitor's browsing history and session duration
Whether the visitor is a known record in Slate
Content is delivered: If a match is found, Ping Pong delivers the configured content—whether that's a popup message, an embedded form, or custom interactive content.
Enabling Ping Pong
Ping Pong requires Ping tracking to be enabled on your institution’s website. Ping is a Slate-native web analytics system that tracks visitor activity across your external websites. For setup instructions, see Enabling Ping.
❓ How do I know if Ping is enabled?
Go to Database → Ping in Slate. This page displays a chart of aggregate Ping data. If the chart is empty, Ping is likely not enabled on your websites.
Alternatively, go to a page on your website where you expect Ping to be active. Open your browser's developer console and search for the Ping script shown on the Database → Ping page.
Configuring Ping Pong actions
To set up a Ping Pong action in Slate, go to Database → Ping and select the Ping Pong view. Select "New Action" to create an action, or select an existing entry to edit it.
Status
Set whether this action is Active or Inactive. Inactive actions won't show their content even if all other conditions are met.
Name
Give your action a descriptive name, for example: "Homepage Welcome Message," or "Application Form Popup."
URLs
Enter the URLs where this action should trigger, one per line. Ping Pong matches pages to these URLs exactly. For example:
https://www.yourschool.edu/
https://www.yourschool.edu/admissions
https://www.yourschool.edu/admissions/undergraduatePopulation
Link this action to a specific Population if you want to show content only to visitors who are matched to records in your database, and whose records match certain criteria. See Populations for more information.
Session Min
The minimum time in seconds a visitor must spend in their current browsing session before the action triggers. For example, set this to 30 to wait 30 seconds after they arrive on your webpage.
Session Max
The maximum session duration when the action can trigger. Set this to 300 seconds (5 minutes) to only show content to visitors who have been browsing for less than 5 minutes.
Session Exec Count
The maximum number of times this action can show content during a single browsing session. Set this to 1 to ensure a visitor only sees the Ping Pong action content once per visit.
Lifetime Exec Count
The total number of times this action can show content to the same visitor across all their browsing sessions. Setting this to 1 means they'll only ever see it once, even if they return days later.
📝 Lifetime Exec Count depends upon the visitor being recognized.
If the visitor can’t be identified using cookies or by Ping matching, they may see Ping Pong content more than once, even with the Lifetime Exec Count set to 1.
Action
The selected Action determines what kind of content is shown.
Display Form
Shows a Slate form in a popup dialog. This is perfect for inquiry forms, quick surveys, or event registrations.
Title: Add a title that appears at the top of the popup
Form: Select the form from your active Slate forms
Display Popup
Shows a custom message in a popup dialog with a title and formatted content.
Title: Add a title that appears at the top of the popup
Content: Write or paste your content (supports HTML formatting)
Insert Content
Places content directly into a designated area on your webpage. This requires a special div element with a specific ID to be added to the desired page by a member of your web development team.
Content: Write or paste your content (supports HTML formatting)
Execute Script
👍 Be a team player
Before adding scripts that might be executed on your institution’s website, consult with your web development team.
Runs custom JavaScript code. This option is recommended for advanced users and web developers only.
Script: Write or paste your script. Always exercise caution when adding scripts to a webpage, especially if you did not write them yourself.
⛑️ An important note on code safety
Don’t use any code you find online or generate with AI that you don’t understand and haven’t tested in a secure environment. Proceed with caution!
Examples
Example 1: First-time visitor welcome
Scenario: You want to welcome new visitors to the your school’s admissions homepage with a friendly message and link to a virtual tour.
Configuration
Name: "Admissions Welcome Message"
Action Type: Display Popup
Title: "Welcome to (Your School)!"
Content:
Thanks for visiting our admissions page! New here?
Check out our <a href="/virtual-tour">virtual campus tour</a>
to get a feel for life at (Your School).Session Min: 10 seconds (wait a moment so they can start reading the page)
Lifetime Exec Count: 1 (only show this once to each visitor, ever)
Result
After 10 seconds on the admissions page, first-time visitors see a friendly welcome popup that guides them to a virtual tour. They'll never see it again on future visits.
Example 2: Application form prompt for engaged visitors
Scenario: You want to present an inquiry form to prospective students who have browsed multiple admissions pages, indicating active interest.
Configuration
Name: "Quick Inquiry Form"
URL: Enter all relevant URLs, for example:
https://www.yourschool.edu/admissions https://www.yourschool.edu/admissions/undergraduate https://www.yourschool.edu/admissions/requirements https://www.yourschool.edu/tuitionAction Type: Display Form
Form: Select your "Quick Inquiry" form
Title: "Interested in Learning More?"
Session Min: 120 seconds (wait 2 minutes so they're clearly engaged)
Session Exec Count: 1 (only once per visit)
Result
After visitors spend 2 minutes browsing your admissions pages, they see a popup with your inquiry form. This captures interest from engaged visitors who are actively researching your institution.
Example 3: Homecoming registration prompt for alumni visitors
Scenario: You want to promote Homecoming registration to visitors who are browsing your alumni and events pages and are recognized as alumni in your Slate database.
Configuration
Name: "Homecoming Registration Prompt"
URL: Enter all relevant URLs, for example:
https://www.yourschool.edu/alumni https://www.yourschool.edu/alumni/events https://www.yourschool.edu/homecomingPopulation: Select a population that identifies alumni records — for example, a population filtered to records with an alumni affiliation or class year.
Action Type: Display Popup
Title: "Homecoming 2026 is coming!"
Content:
Join fellow alumni back on campus October 16–18! Check out this year's <a href="/homecoming/schedule">schedule of events</a> and <a href="/homecoming/register">register today</a>.Session Min: 15 seconds (wait 15 seconds so they have time to orient themselves)
Session Exec Count: 1 (only once per visit)
Lifetime Exec Count: 3
Result
After 15 seconds on an alumni or Homecoming page, recognized alumni see a popup promoting Homecoming registration. The action shows once per visit but can show again on up to two future visits, giving returning visitors a gentle reminder as the event approaches.
Advanced configuration for web developers
For developers implementing custom Ping Pong scripts, several JavaScript variables and functions are available in the execution context.
Available variables
When your custom script executes, the following context information is accessible:
Session and timing data
The visitor's session start time is tracked in
localStoragewith the key[ping_id]_stIndividual Ping Pong action execution counts are stored as
[ping_id]_pp_[action_id]Current session duration can be calculated:
Date.now()-sessionStart
Ping Pong configuration object
The Ping Pong configuration is stored in localStorage as [ping_id]_pp and follows this structure:
{
"[url_hash]": [
{
"id": "guid-of-pingpong-action",
"sc": "session_count", // Session execution limit
"sn": "session_min", // Minimum session seconds
"sx": "session_max", // Maximum session seconds
"lc": "lifetime_count" // Lifetime execution limit
}
],
"v": "md5-hash-of-updates" // Version hash for cache busting
}Error handling
All Ping Pong script execution is wrapped in try-catch blocks. Errors are logged to the browser console but don't prevent page functionality.
Recommendations for custom scripts
Check for existing elements before creating new ones to avoid duplicates
Use namespaced IDs to prevent conflicts with page content
Test cross-browser compatibility (especially for older browsers if your audience requires it)
Keep scripts lightweight to minimize page load impact
Always include fallback behavior in case
localStorageor other APIs aren't availableUse event delegation rather than direct element binding when possible