---
title: "Ping Pong"
slug: "ping-pong"
updated: 2026-06-19T21:59:18Z
published: 2026-06-19T21:59:18Z
canonical: "knowledge.technolutions.net/ping-pong"
---
> ## Documentation Index
> Fetch the complete documentation index at: https://knowledge.technolutions.net/llms.txt
> Use this file to discover all available pages before exploring further.
# Ping Pong
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](/v1/docs/ping-overview) configurations to drive its dynamic content.
## How Ping Pong works
1. **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](/v1/docs/ping-pong#enabling-ping-pong).
2. **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?
3. **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.
4. **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
5. **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](/v1/docs/ping-overview) 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](/v1/docs/enabling-ping).
> [!NOTE]
> ❓ 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.
[Video](https://cdn.us.document360.io/cd8ea7a6-07f3-4846-a554-627ac016d3e3/Images/Documentation/ping-pong.webm?sv=2026-02-06&spr=https&st=2026-10-27T12%3A05%3A28Z&se=2026-10-27T13%3A05%3A28Z&sr=c&sp=r&sig=cUdXxj5H2kG96wQYUDEPBHhcgV%2FZtmQWMrUNnQ1OiOQ%3D)
### 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:
```plaintext
https://www.yourschool.edu/
https://www.yourschool.edu/admissions
https://www.yourschool.edu/admissions/undergraduate
```
### Population
Link this action to a specific [Population](/v1/docs/populations) 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](/v1/docs/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.
> [!WARNING]
> 📝 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
> [!NOTE]
> 👍 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.**
> [!CAUTION]
> ⛑️ 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"
- **URL:** [https://www.yourschool.edu/admissions](http://about:blank)
- **Action Type:** Display Popup
- **Title:** "Welcome to (Your School)!"
- **Content:**
```xml
Thanks for visiting our admissions page! New here?
Check out our virtual campus tour
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:
```plaintext
https://www.yourschool.edu/admissions
https://www.yourschool.edu/admissions/undergraduate
https://www.yourschool.edu/admissions/requirements
https://www.yourschool.edu/tuition
```
- **Action 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:
```plaintext
https://www.yourschool.edu/alumni
https://www.yourschool.edu/alumni/events
https://www.yourschool.edu/homecoming
```
- **Population:** 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:**
```xml
Join fellow alumni back on campus October 16–18!
Check out this year's schedule of events
and register today.
```
- **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 `localStorage` with the key `[ping_id]_st`
- Individual 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:
```javascript
{
"[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 `localStorage` or other APIs aren't available
- Use event delegation rather than direct element binding when possible