---
title: "Manual Pageview Control"
description: "Control when pageviews are tracked in Sealmetrics. Useful for SPAs, multi-step forms, and custom navigation patterns."
canonical_url: "https://docs.sealmetrics.com/implementation/tracking-methods/ignore-page-view"
lang: "en"
date_generated: "2026-08-27T14:18:06.639Z"
source_hash: "40c629dcc70797753ee694a268871a74954f6af90b0482ac4bcf5a01ed5ab3a2"
content_type: "implementation"
owner: "engineering"
llm_priority: "critical"
source_file: "implementation/tracking-methods/ignore-page-view.mdx"
publisher: "Sealmetrics"
---

# Manual Pageview Control

Canonical page: https://docs.sealmetrics.com/implementation/tracking-methods/ignore-page-view

The Sealmetrics tracker automatically tracks pageviews on page load and SPA navigation. However, there are scenarios where you need manual control over when pageviews are recorded.

---

## Automatic Behavior

By default, the tracker:

1. **Tracks initial pageview** when the script loads
2. **Tracks SPA navigation** via History API (`pushState`, `replaceState`, `popstate`)

For most websites, this is all you need.

---

## When to Use Manual Control

### 1. Hash-Based Routing

If your SPA uses hash-based routing (`#/page` instead of `/page`), you need to manually trigger pageviews:

```javascript
window.addEventListener('hashchange', function() {
  if (typeof sealmetrics !== 'undefined') {
    sealmetrics();
  }
});
```

### 2. Multi-Step Forms

Track each step of a multi-step form as a separate pageview:

```javascript
function goToStep(stepNumber) {
  // Your form logic...

  // Track as pageview with content group
  if (typeof sealmetrics !== 'undefined') {
    sealmetrics({ group: 'checkout-step-' + stepNumber });
  }
}
```

### 3. Modal/Tab Navigation

Track when users open significant modals or tabs:

```javascript
function openProductModal(productId) {
  // Your modal logic...

  // Track modal open as pageview
  if (typeof sealmetrics !== 'undefined') {
    sealmetrics({ group: 'product-modal' });
  }
}
```

---

## Tracking Events Without Pageviews

When you want to track an event (conversion or microconversion) without recording an additional pageview, simply call the event method directly:

```javascript
// Track a microconversion (no pageview recorded)
sealmetrics.micro('video_play', {
  video_id: 'demo-2025'
});

// Track a conversion (no pageview recorded)
sealmetrics.conv('lead', 0, {
  form_name: 'contact'
});
```

Events (`conv()` and `micro()`) never create additional pageviews. Only `sealmetrics()` creates pageviews.

---

## Content Grouping with Manual Pageviews

When calling manual pageviews, you can set the content group:

```javascript
// Navigate to checkout step 2
sealmetrics({ group: 'checkout' });

// Navigate to product detail
sealmetrics({ group: 'product' });
```

---

## Best Practices

1. **Don't duplicate pageviews** — If automatic tracking works, don't call `sealmetrics()` manually
2. **Use content groups** — When calling manual pageviews, set meaningful groups
3. **Events don't need pageviews** — `conv()` and `micro()` are standalone events
4. **Check tracker exists** — Always use `typeof sealmetrics !== 'undefined'`

---

## Related Documentation

- [SPA Support](/implementation/tracker/spa-support) - Automatic SPA tracking
- [Content Grouping](/implementation/content-site-structure/content-grouping) - Page categorization
- [Microconversions](/implementation/tracker/microconversions) - Event tracking
