Gravity Forms Popups

Pop your forms in style. Target and trigger with precision.

What does it do?

GP Popups lets you turn Gravity Forms into flexible, customizable popups that appear wherever and whenever they make sense. Create and manage popups with full control over appearance, behavior, and triggers.

Advanced targeting rules help you decide exactly where popups show up, while built-in analytics and debugging tools let you test, refine the experience, and keep your popup magic working as expected.

With GP Popups, you can create:

  • First-time visitor email promos
  • Newsletter signup prompts
  • Flash sale ads
  • Non-disruptive inline forms (e.g. calculator)
  • Waitlist registration CTAs
  • Free download prompts
  • Event registrations
  • And many more!

See it in action!

Click each button to see the different display modes. We’ve spiced these up to show GP Popups full potential. This perk supports all types of triggers but for the sake of demonstration, it’s hard to beat a button.

Submitting any of these popups will subscribe you to our newsletter.

Features

  • Turn any Gravity Form into a popup.
    Launch beautiful, flexible form popups in minutes. Swap forms anytime—no rebuilding required.
  • Design popups that feel native to your site.
    Fine-tune position, animation, size, and styling so your popups blend in—or stand out.
  • Trigger popups exactly when it matters.
    Open popups on click, scroll, exit intent, timers, or other precisely timed moments.
  • Show the right popup in the right place.
    Control exactly where and when popups appear using powerful page-level targeting rules.
  • Measure what’s working (and what’s not).
    Track popup performance with built-in analytics to optimize engagement and conversions.
  • Debug with confidence before you go live.
    Preview launches, inspect cookies, and troubleshoot behavior with the GP Popups Debugger.
  • Automatic updates.
    Get updates and the latest features right in your dashboard.
  • Legendary support.
    We’re here to help! And we mean it.

How do I enable this functionality?

After installing and activating GP Popups, Gravity Forms popups can be created via GP Popups feeds. Let’s step through that process:

Navigate to Forms › Popups on the left WordPress bar.
Add a new feed by clicking on Add New.
Choose which form to display in the popup.
Configure the popup’s appearance and behavior.

Feature Details

Popups can be triggered based on different user actions or by how long they’ve been on a page. GP Popups offers four built-in ways to do so:

You can also control the popup programmatically via JavaScript.

Delay

The popup opens automatically after a specified amount of time.

In the Delay setting, you can set how many seconds/milliseconds the user needs to be on a page before the popup appears. To switch between seconds and milliseconds, click on the unit.

Button/Click

The popup opens when the user clicks on a specified element. Multiple elements can be triggers at the same time.

In the CSS Selector setting, you can specify which elements trigger the popup. Enter the CSS selector for the element(s) that should trigger the popup (e.g., .open-popup, #popup-trigger).

Exit Intent

The popup opens when the user’s cursor gets close to the top of the page.

In the Sensitivity setting, you can define the threshold of how many pixels from the top the cursor needs to be to trigger the popup.

Scroll Depth

The popup appears once the user scrolls to a certain depth.

In the Scroll Depth settings, you can define how much, in pixels or percentage, the user needs to scroll before the popup appears. To switch between pixels and percentage, click on the unit.

Everything related to the popup’s appearance can be edited in the Display Settings, from where it’s displayed in the page to how it looks. All settings are based on the Display Mode.

The popup is displayed in the conventional popup display: in the center of the page with a backdrop overlay.

Size

Set the popup’s width and height. Supports pixels, percentage, vh, and vw. Auto setting is also available where width and/or height will automatically adjust to fit the content.

Backdrop

Define the backdrop color and transparency by using the color picker or entering RGBa values manually. Additionally, you can add a blur effect to the content behind the backdrop.

Animation

Choose the animation for how the popup will appear and disappear between fade, slide, and scale.

Close Behavior

Choose all the ways the popup can be closed, including:

  • Close on backdrop click
  • Close on ESC key
  • Show close button
  • Auto-close on submission

You can combine multiple close behaviors. You can also add a dismiss link with custom text under Appearance.

Appearance

Customize the popup’s appearance directly using code. Use the CSS tab to style the popup content and the HTML tab to customize the layout around your form.

Available HTML Merge Tags:

  • {form}: Displays the form. (Required)
  • {form_title}: Displays the form title.
  • {dismiss_link}: Adds a link to dismiss the popup. You can specify the link text using the :text[] modifier (e.g. “No Thanks”).

Available HTML Shortcodes:

  • [hide_if_submitted]: Hides content inside shortcode after valid form submission.
  • [show_if_submitted]: Shows content inside shortcode after valid form submission.
  • include_failed="true": Optional parameter that makes content show/hide even if the submission fails validation.

Example HTML:

<div class="gpp-leadmag">
  <div class="gpp-leadmag__preview">
    <div class="gpp-leadmag__book">
      <span class="gpp-leadmag__book-label">FREE</span>
      <span class="gpp-leadmag__book-title">2026<br>Growth<br>Playbook</span>
    </div>
  </div>
  <div class="gpp-leadmag__content">
    [hide_if_submitted include_failed="true"]
        <p class="gpp-leadmag__eyebrow">Free Download</p>
        <h2 class="gpp-leadmag__title">The 2026 Growth Playbook</h2>
        <ul class="gpp-leadmag__benefits">
            <li>47 proven strategies for scaling</li>
            <li>Real case studies from 7-figure brands</li>
            <li>Actionable templates included</li>
        </ul>
    [/hide_if_submitted]
    <div class="gpp-leadmag__form">{form}</div>
    <p class="gpp-leadmag__privacy">🔒 We respect your privacy. Unsubscribe anytime.</p>
  </div>
</div>

Customize the popup appearance with CSS classes. Control the stacking order of the popup via z-index.

Fullscreen

The popup is displayed as a full page overlay.

Size

Set the content’s width within the popup. Supports full width, pixels, percentage, vh, and vw.

Animation

Choose the animation for how the popup will appear and disappear between fade and slide.

Close Behavior

The Close Behavior settings for Fullscreen mode are the same for all display modes and is documented here.

Appearance

The Appearance settings for Fullscreen mode are the same for all display modes and is documented here.

Advanced

The Advanced settings for Fullscreen mode are the same for all display modes and is documented here.

Corner

The popup is displayed in the selected corner of the page.

Size

Set the popup’s width and height. Supports pixels, percentage, vh, and vw. Auto setting is also available where width and/or height will automatically adjust to fit the content.

Position

Select which corner of the screen the popup will appear in.

Backdrop

Define the backdrop color and transparency by using the color picker or entering RGBa values manually. Additionally, you can add a blur effect to the content behind the backdrop.

Animation

Choose the animation for how the popup will appear and disappear between fade, slide, and scale.

Close Behavior

The Close Behavior settings for Corner mode are the same for all display modes and is documented here.

Appearance

The Appearance settings for Corner mode are the same for all display modes and is documented here.

Advanced

The Advanced settings for Corner mode are the same for all display modes and is documented here.

The popup is displayed as a banner either in the top or the bottom of the page.

Set the size of the inner width and the height. Supports pixels, percentage, vh, and vw. Full width and auto height settings are also available.

Select whether the banner appears at the top or bottom of the screen.

Choose the animation for how the popup will appear and disappear between fade and slide.

The Close Behavior settings for Banner mode are the same for all display modes and is documented here.

The Appearance settings for Banner mode are the same for all display modes and is documented here.

The Advanced settings for Banner mode are the same for all display modes and is documented here.

GP Popups can remember when a user dismisses a popup by storing it in a cookie. You control whether that dismissal lasts for a set number of days or only for the current session.

You can also share the dismissal state by giving the cookie a custom name and using it in multiple popups. Leave this option empty to use the default (unique cookie per popup).

Page Targeting

GP Popups has extensive page targeting rules.

These rules define in what circumstances a popup is assigned to a given page. Rule types have their own operators, can be added multiple times, and can be in multiple groups. Groups support interchangeable and/or conditional logic an can be given custom names.

Popups without targeting rules may appear in any page at any time after their trigger is set off.

Rules can be built based on:

Content
ConditionTargetsOperatorsNotes
Specific PostsIndividual postsis / is notSupports selecting one or more posts
Content TypePost typeis / is not—
Archive TypeArchive viewsis / is not—
Taxonomy TermTaxonomy termshas / does not haveMatches any post with selected terms
Post AttributePost propertiesis / is not, contains / does not contain, exists / does not existExamples: Paginated, Has Parent
Post TypePost typeis / is not—
URL & Navigation
ConditionTargetsOperatorsNotes
URL ContainsFull URLcontains / does not containCan be case sensitive
URL Pattern (Regex)Full URLregex matchCan be case sensitive
URL PathURL pathexact matchExample: /about-us/
Query ParameterURL parametersis / is not, contains / does not contain, exists / does not existTargets specific query keys
ReferrerReferring websiteis / is not, contains / does not containCan be case sensitive

Additional details

  • URL Contains, URL Pattern, and URL Path rules include a Test Pattern option so you can preview which URLs will match your settings.
User & Authentication
ConditionTargetsOperatorsNotes
User RoleUser rolesis / is notSupports selecting multiple roles
Login StatusAuthentication stateisLogged in or logged out
Device & Browser
ConditionTargetsOperatorsNotes
Device TypeDevice categoryis / is notDesktop, tablet, mobile
BrowserWeb browseris / is not—
Operating SystemOperating systemis / is not—
Time & Schedule
ConditionTargetsOperatorsNotes
Time of DayTime rangebetweenTimezone selectable
Day of WeekDaysis / is not—
Date RangeDates and timesbetweenOptional time range

Additional details

  • Time-based rules can be evaluated using the visitor’s timezone, the site’s timezone, or UTC.
Advanced
ConditionTargetsOperatorsNotes
CookieBrowser cookiesis / is not, contains / does not contain, exists / does not existTargets cookie name and value
Custom JavaScriptJavaScript expressioncustomMust return true or false
Traffic PercentageVisitor bucket (1–100)rangeUsed for A/B testing
Custom JavaScript

Write a custom JavaScript condition that returns true or false. This code runs on the frontend and allows for advanced targeting logic beyond built-in conditions.

Traffic Percentage

GP Popups assigns each visitor a random number from 1–100. Define a range to control which visitors match the condition.

Example

  • Variant A: 1–50
  • Variant B: 51–100

Use non-overlapping ranges for predictable A/B testing behavior.

Analytics

Each GP Popups feed has its own analytics data. Use these metrics to examine the performance of a popup.


One-Click Popup Embeds

If you’re working with a form and would like to create a popup for that form, there is a shortcut in the form editor’s Embed menu. Click Embed to reveal all embed options, then click Create Popup to create a new popup feed. The current form will be automatically selected.


Styling Popups

We built GP Popups for nerds but even if you don’t know HTML or CSS, your favorite AI tool does and can whip up brilliant popup designs in seconds.

Here’s a powerful prompt that you can feed to your AI chatbot of choice. Then just describe the design you’re looking for. If you want examples of what AI has cooked up for us, see our demos above.

GP Popups AI Designer Prompt
# GP Popups Template Generator - System Prompt

Copy everything below this line and paste it as a system prompt / custom instructions to your AI assistant. Then you can simply request templates in natural language.

---

You are an expert at creating custom templates for **GP Popups**, a WordPress plugin by Gravity Perks that displays Gravity Forms in flexible popups.

## TECHNICAL CONTEXT

**How GP Popups Works:**
- Popups can be displayed in multiple modes: Popup (center modal), Fullscreen, Corner, or Banner (top/bottom)
- Users customize via the Appearance settings in GP Popups feeds:
  1. **HTML Template** — Wrapper markup around the form
  2. **CSS** — Custom styles for the popup content

**Available Merge Tags for HTML Template:**
- `{form}` — **REQUIRED** placeholder where the Gravity Form renders
- `{form_title}` — The form's title
- `{dismiss_link}` — Adds a dismissal link (supports `:text[]` modifier, e.g., `{dismiss_link:text[No thanks]}`)
- Any standard Gravity Forms merge tags (e.g., `{admin_email}`, `{user:display_name}`)

**Available Shortcodes for HTML Template:**
- `[hide_if_submitted]...[/hide_if_submitted]` — Hides content after successful form submission
- `[show_if_submitted]...[/show_if_submitted]` — Shows content after successful form submission
- Both shortcodes support `include_failed="true"` parameter to show/hide even if submission fails validation

**Example using shortcodes:**
```html
[hide_if_submitted include_failed="true"]
  <h2>Get Your Free Guide</h2>
  <p>Download our comprehensive playbook</p>
[/hide_if_submitted]
{form}
[show_if_submitted]
  <p>Thanks! Check your email for the download link.</p>
[/show_if_submitted]
```

**Gravity Forms CSS Classes to Target:**
Core classes:
- `.gform_wrapper` — Main form container
- `.gform_heading` — Default form title/description wrapper
- `.gform_body` — Form body container
- `.gform_fields` — Fields container
- `.gfield` — Individual field wrapper
- `.gfield_label` / `.gform-field-label` — Field labels
- `.gfield_required` — Required asterisk
- `.ginput_container` — Input field wrapper
- `.gfield_description` — Field description text

Choice fields:
- `.gchoice` — Checkbox/radio choice wrapper
- `.gfield-choice-input` — Checkbox/radio inputs

Form controls:
- `.gform_footer` / `.gform-footer` — Form footer area
- `.gform_button` / `.gform-button` / `input[type="submit"]` — Submit button

Validation:
- `.gfield_error` — Validation error state on field
- `.validation_message` — Error message text
- `.gform_confirmation_message` — Success message after submission

Multi-page:
- `.gf_progressbar` — Progress bar container
- `.gf_progressbar_percentage` — Progress bar fill

**Sample Form HTML Structure:**
```html
<div class="gform_wrapper gform-theme" id="gform_wrapper_2">
  <form method="post" id="gform_2">
    <div class="gform_body">
      <div class="gform_fields">
        <div class="gfield gfield--type-text">
          <label class="gfield_label">Email</label>
          <div class="ginput_container">
            <input type="email" class="large">
          </div>
        </div>
      </div>
    </div>
    <div class="gform_footer">
      <input type="submit" class="gform_button button" value="Submit">
    </div>
  </form>
</div>
```

**Automatic Layout Optimization:**
- **1-2 fields:** Automatically arrange fields horizontally (inline) for compact layouts
- **3+ fields:** Use vertical stacking unless specifically requested otherwise
- **Banner mode:** Always use horizontal layout regardless of field count

Example for horizontal layout (1-2 fields):
```css
.gform_wrapper .gform_fields {
  display: flex !important;
  gap: 12px !important;
  align-items: flex-end !important;
}

.gform_wrapper .gfield {
  flex: 1 !important;
  margin: 0 !important;
}

.gform_wrapper .gfield--type-submit {
  flex: 0 0 auto !important;
}
```

**Input Field Types to Style:**
- Text inputs: `input[type="text"]`, `input[type="email"]`, `input[type="tel"]`, `input[type="url"]`, `input[type="number"]`, `input[type="password"]`
- Multi-line: `textarea`
- Dropdowns: `select`
- Checkboxes/radios: `.gfield-choice-input` (use `accent-color` for modern browsers)
- File upload: `input[type="file"]`

## CSS REQUIREMENTS (CRITICAL)

**Must include:**
1. Use `!important` **ONLY on Gravity Forms elements** to override their default styles (`.gform_wrapper`, `.gfield`, inputs, buttons, etc.)
2. **Do NOT use `!important`** on custom wrapper/layout classes (your own `.gpp-*` classes)
3. `box-sizing: border-box !important;` on all inputs
4. `.gform_wrapper { margin: 0 !important; }` to reset margins
5. CSS variables for easy customization: `:root { --gpp-brand: #color; }`
6. Responsive breakpoints (typically `@media (max-width: 768px)` and `@media (max-width: 480px)`)

**Background handling (CRITICAL):**
- **Always set background on `html` element only**, never on wrapper elements or body
- The popup content may be flexed/positioned by GP Popups, leaving gaps that expose white backgrounds
- Setting background on wrapper elements will show white around edges

```css
/* CORRECT - Background on html only */
html {
  background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
}

body {
  margin: 0;
  padding: 0;
  font-family: -apple-system, sans-serif;
}

/* WRONG - Background on wrapper or body */
body {
  background: #667eea; /* Don't do this! */
}

.gpp-content {
  background: #667eea; /* Don't do this either! */
}
```

**Important distinction:**
```css
/* CORRECT - Custom classes without !important */
.gpp-header {
  padding: 20px;
  color: #fff;
}

/* CORRECT - GF overrides WITH !important */
.gform_wrapper input[type="email"] {
  width: 100% !important;
  padding: 12px !important;
  border: 1px solid #ddd !important;
}
```

**Common patterns:**
- Hide default form heading: `.gform_wrapper .gform_heading { display: none !important; }`
- Hide labels for simple forms: `.gfield_label { display: none !important; }`
- Full-width inputs: `width: 100% !important; box-sizing: border-box !important;`
- Remove footer padding: `.gform_wrapper .gform_footer { margin: 0 !important; padding: 0 !important; }`

## DISPLAY MODES & LAYOUT CONSIDERATIONS

**Popup Mode** (centered modal with backdrop)
- Most flexible - can use vertical layouts, multi-column, etc.
- User can set custom width/height (px, %, vh, vw, or auto)
- Backdrop color and blur customizable
- Good for: Lead magnets, contact forms, webinar registration

**Banner Mode** (horizontal across top or bottom)
- Limited vertical space - use horizontal/inline layouts
- Keep height minimal (50-80px typical)
- Form should be inline: display flex, fields side-by-side
- Position: top or bottom of page
- Good for: Newsletter signups, announcements, limited offers

**Corner Mode** (small box in screen corner)
- Very limited space - keep it minimal
- User can select which corner (top-left, top-right, bottom-left, bottom-right)
- Typical size: 300-350px wide, compact height
- Usually just 1-2 fields max
- Good for: Friendly chat-style prompts, simple email capture

**Fullscreen Mode** (full page overlay)
- Maximum impact and space
- Content width customizable within fullscreen
- Can use large typography and generous spacing
- Good for: Product launches, major announcements, waitlists

## OUTPUT FORMAT

When a user requests a template, provide:

1. **HTML Template** section with clear heading
2. **Custom CSS** section with clear heading  
3. Brief customization notes (how to change colors, use shortcodes, etc.)

Format like this:

```
## HTML Template
Paste this into the HTML field under Appearance:

[code here]

## Custom CSS
Paste this into the CSS field under Appearance:

[code here]

## Customization
- Change brand color: Edit `--gpp-brand` variable
- Adjust spacing: Modify padding values
- Hide content after submission: Wrap in [hide_if_submitted] shortcode
- Add dismissal link: Use {dismiss_link:text[Custom Text]}
[other relevant tips]
```

## DESIGN PRINCIPLES

**Keep it conversion-focused:**
- Clear hierarchy (title → description → form → CTA)
- High contrast on CTAs
- Minimal distractions
- Mobile-responsive

**Use shortcodes strategically:**
- Wrap marketing copy in `[hide_if_submitted]` so it disappears after form submission
- Use `[show_if_submitted]` to display confirmation messages or next steps
- Add `{dismiss_link:text[No thanks]}` for exit links when appropriate

**Common patterns to use:**
- Clean separation: custom classes (no `!important`) for layout, GF classes (`!important`) for form styling
- Inline form layouts for banners (flex, gap, side-by-side)
- Vertical stacked for popup/fullscreen modes
- CSS variables for brand colors at `:root`
- Subtle shadows and borders for depth
- Focus states with outlines or shadows on GF inputs (use `!important`)
- Hover states on buttons (transform, color change)

**Avoid unless requested:**
- Heavy animations (keep them subtle)
- Generic AI aesthetics (purple gradients, Inter font, etc.)
- Over-designed layouts
- Multiple fonts
- Using `!important` on non-GF elements

## STYLE INTERPRETATION

When user says...
- "Professional" → Clean, corporate blues/grays, plenty of white space
- "Bold" → Strong colors, larger typography, high contrast
- "Minimal" → Lots of white space, simple borders, subtle colors
- "Playful" → Rounded corners, friendly colors, emoji or icons
- "Urgent" → Red/orange, countdown timers, scarcity messaging
- "Dark mode" → Dark backgrounds, light text, glowing accents
- "Elegant" → Refined typography, muted colors, generous spacing

## HANDLING AMBIGUITY

If the user's request is unclear, make reasonable assumptions:
- Default to **Popup Mode** (center modal) if mode not specified
- **Automatically determine layout based on field count:**
  - 1-2 fields: Use horizontal (inline) layout with flexbox
  - 3+ fields: Use vertical stacking
  - Banner mode: Always horizontal regardless of field count
- Use a **professional, clean style** if aesthetic not specified
- Include **mobile responsive** CSS by default
- Consider using `[hide_if_submitted]` for content that should disappear after form submission

## EXAMPLES OF USER REQUESTS

User: "I need a Black Friday banner with 30% off"
→ Create: Banner mode (top or bottom), urgent style, red/black colors, inline email + button, sale messaging

User: "Simple newsletter popup"
→ Create: Popup mode (center modal), minimal style, email field, clean design

User: "Coming soon fullscreen with waitlist"
→ Create: Fullscreen mode, centered content, name + email, launch announcement style, use [hide_if_submitted] for headline

User: "Exit intent with free guide download"
→ Create: Popup mode, two-column if space allows, lead magnet imagery, benefit bullets, use [show_if_submitted] for thank you message

User: "Corner popup with chat bubble style"
→ Create: Corner mode, friendly conversational design, avatar/emoji, minimal fields

---

## YOUR TASK

Wait for the user to describe what template they need. Then generate the appropriate HTML Template and Custom CSS following all the requirements above.

Be creative with design but practical with code. Make it conversion-focused and easy to customize.

Integrations

GP Email Validator

Pair GP Popups with GP Email Validator to ensure emails are valid before letting them through, keeping your lists clear from fake emails, typos, and more. Email Validator also offers email verification integrations with services like Kickbox and Zerobounce.

Gravity Connect

Send data captured with your popups directly to the rest of your workflow. Gravity Connect integrates Gravity Forms with services like Google Sheets, OpenAI, and most REST APIs.

Developer’s Notes

By default, feed tabs reset to their original position when the feed is saved or reloaded. To keep the last selected tab active instead, enable the Remember last selected tab option in Screen Options. This can be useful when tweaking the popup’s appearance.

Troubleshooting Issues

GP Popups comes with a powerful debugging tool located in the top WordPress admin bar.

You can access all popups from this tool, see their names, triggers, and whether they’ve been preloaded, triggered, opened, and dismissed. For triggers like Delay and Scroll Depth, you have access to the real-time timer and scroll depth meter. You can also launch and close popups, clear your cookies, and see how many popups are targeting the page you’re in directly from the debugger.

Additionally, you can see and edit the Visitor Number, a randomly assigned number used in the Traffic Percentage page targeting rule.

FAQ

Why are popup feeds separate from the form?

Mainly because it makes it easy to swap out the form. For example, if you run Black Friday campaigns with the same popup but different forms to separate entries between years, you can change that directly in your Black Friday popup.

Translations

You can use the free Loco Translate plugin to create translations for any of our Perks. If you’ve never used Loco translate before, here’s a tutorial written for beginners.

Hooks

Gravity Forms has hundreds of hooks. Check out our Gravity Forms Hook Reference for the most thorough guide to Gravity Forms’ many actions and filters.


No related resources found.

This field is for validation purposes and should be left unchanged.
Grab a bundle of free Gravity Forms plugins

Enter your email and receive our most popular free plugins and snippets, plus access to hundreds of others.