Website Traffic

Visit Duration and Pages per Session: How to Set Them

How to pick visit duration and pages per session for a traffic campaign, with plausible ranges by site type and why matching an average is the tell.

S SparkCliks 0 19 min read
Share
Visit Duration and Pages per Session: How to Set Them

Every traffic campaign asks you for two numbers before it will run, and most buyers guess them. Visit duration and pages per session are not quality dials you turn up until the reports look good. They are the settings that decide whether your delivered traffic resembles the sessions your site already produces, or stands out from them in the first histogram anyone draws.

The short answer

There is no correct duration and no correct page count. There is only the shape your own organic sessions already have, and settings that land near it.

Three rules cover almost every campaign:

  1. Copy your site, not an industry number. Your median organic session on the pages you are about to send traffic to is the target. Anything else is somebody else's site.
  2. Aim at a distribution, not a mean. Real traffic is lumpy. A campaign where every visit lasts the same length of time is the easiest thing in analytics to spot, and it will not match a mean anyway.
  3. Let the content set the ceiling. A 350 word contact page cannot honestly hold a visitor for five minutes. If your setting exceeds what the page could plausibly support, lower the setting rather than admiring the number.

Everything below is how to get those three right without guessing.

What visit duration and pages per session actually control

Before choosing values, know which dials exist. They differ by product, and the differences change what a "good" setting even means.

ProductVisit length controlPages per visitOn-page behavior
SERP ClicksUp to 2 minute session duration2 page visits, the second URL optionalReal people search, scroll the results, click your listing, stay, and never hit back
Website TrafficVisit time up to 5 minutes on paid tiers, up to 30 seconds on the free NANO tierUp to 3 pages per visitThe engine loads the page and waits. No scroll, no pointer movement, no click
Realistic TrafficSame ceilings as Website TrafficUp to 3 pages per visitScrolls in short steps, moves the pointer on a curve, engages with content, then clicks a link. Exactly 3x the Website Traffic price on every paid tier
Sparky Traffic BotMinimum and maximum time on page, plus a per session timeoutScripted flow, you define the stepsScroll by count, depth or delay, click internal, external or random links, refresh, back and forward

Two details in that table cause more misconfiguration than anything else.

The visit time is a session budget, not a per page timer. The Website Traffic control panel lists time on site as "split across those URLs". Enter 300 seconds with three URLs and you have not asked for three five minute pages, you have asked for roughly 100 seconds each. Pacing can be equal or randomized, and randomized is the setting you want, because equal splits produce three identical page timings inside every session.

The free tier cannot imitate a long session. Website Traffic's NANO tier caps visit time at 30 seconds. That is enough to test delivery and reporting, and not enough to reproduce the shape of a blog audience. Plan around it instead of discovering it after the campaign runs. The difference between the standard and realistic engines matters here too, and section six explains why it shows up in your reports.

Free trial

Stuck on page two?

Real human clicks that lift your CTR and move you up the rankings.

Why no single good duration exists

A visit of 14 seconds can be a complete success or a total failure, and the number alone will never tell you which.

Someone who searched for your opening hours, landed on the contact page, read the line they wanted and closed the tab got exactly what they came for in 14 seconds. The same 14 seconds on a 2,000 word buying guide means the page did not deliver. Duration is only readable next to the job the page was built to do.

Two things follow, and both cut against the way traffic is usually sold.

First, none of this is a ranking lever. Search engines say they do not use your analytics data, and they cannot see it. Session duration, pages per session and bounce rate live in your reporting, not in a ranking system. If a vendor sells you a duration setting as an SEO input, they are selling you a mechanism that does not connect. The reason to configure these settings carefully is that your own reports and your own decisions depend on them, which is a smaller claim and a true one. Our post on bounce rate not being a ranking factor covers the same ground for the metric buyers ask about most.

Second, the word "duration" hides three different clocks. Time on page, session duration and the industry coinage "dwell time" are measured by different observers with different start and stop rules, and no search engine publishes the last one. Configuring a campaign against the wrong one is how buyers end up setting 300 seconds because they read a benchmark that described something else entirely. If you are unsure which metric your vendor and your analytics are each talking about, read dwell time vs time on page vs session duration before you set anything.

Plausible ranges by site type

The table below is a worked estimate, not measured data. It is built from two things you can check yourself: how long the content takes to consume, and how many pages the task naturally requires. Replace every cell with your own numbers as soon as you have them.

The reading arithmetic is the honest starting point. Brysbaert's 2019 meta-analysis in the Journal of Memory and Language put silent reading of English non-fiction at roughly 238 words per minute. So a 1,200 word article read end to end takes about five minutes. Almost nobody reads end to end, and scanners consume a fraction of that, which is why a blog's realistic engaged time band is wide and sits well below the full read.

Page typeWhat a satisfied visit looks likePlausible engaged timePlausible pages in the sessionWhat breaks the illusion
Blog post or editorialScan, read part, maybe follow one internal link45 seconds to 3 minutes, with a long tail above that1.2 to 1.8Every session multi page. Real blogs are dominated by single page reads
Ecommerce product pageCheck price, images and variants, then compare or add to cart40 to 120 seconds2 to 5Fewer than 1.5 pages. Shoppers almost always look at a second thing
Service landing pageOne offer, one decision, scroll and either convert or leave30 to 90 seconds1 to 1.5High page counts. The page was designed to be the only page
Documentation or knowledge baseFind the section, copy the snippet, jump to a related page30 to 90 seconds per page2.5 to 5Long single page sessions. Docs users move, they do not linger
Local or contact pageRead one fact and leave10 to 40 seconds1 to 1.3Anything over a minute. There is nothing on the page to spend it on

Notice that the two dials move in opposite directions across the rows. Documentation earns short visits and deep sessions. A service landing page earns longer single page visits. A campaign that sets long duration and deep sessions on both is describing a site that does not exist.

The average that hides two populations

This is where most campaigns go wrong, and it is arithmetic rather than opinion.

Suppose you pull organic sessions for one blog post and get the following. Figures are an example, not SparkCliks data.

GroupSessionsSession lengthPages viewed
Arrived, wrong page, left629 seconds1
Read part of it2695 seconds2
Read it and kept going12340 seconds4

The mean session length is (62 x 9 + 26 x 95 + 12 x 340) divided by 100, which is 7,108 / 100, or 71 seconds. Views per session is (62 + 52 + 48) / 100, or 1.62.

Now look at what those two numbers describe. Not one of the 100 sessions lasted anything close to 71 seconds. Not one viewed 1.62 pages. Both averages sit in an empty gap between two populations that behave nothing like each other.

A buyer who reads "71 seconds, 1.62 pages" and configures every visit at 70 seconds and 2 pages has produced traffic that matches the summary statistics and matches nothing else. Their single page session share falls to zero. Their session length histogram becomes one spike where the real one has two humps. The average is now correct and the distribution is unrecognizable.

The fix is cohorts, not a better average. Run the same site as two or three campaigns with different settings and weight them by volume. Against the example above, and staying inside the Website Traffic ceilings of 3 URLs and 5 minutes:

CohortShare of visitsURLsSession timeContribution to mean timeContribution to pages
Quick look60%115 seconds9.0 s0.60
Partial read30%2110 seconds33.0 s0.60
Deep read10%3300 seconds30.0 s0.30
**Blended**100%**72 seconds****1.50**

72 seconds against an organic 71, and 1.50 pages against 1.62. Close on both, and far more importantly the shape is right: most visits are short and single page, a minority are long and deep, and the histogram has humps instead of a spike. You can nudge the page count up by shifting five points of volume from the first cohort to the second. Chasing the second decimal is not worth the effort.

One practical note: the quick look cohort is the only one the free NANO tier can run, because of its 30 second ceiling. Cohort campaigns are a paid tier technique.

Why longer and deeper is a tell, not a win

Buyers instinctively max the sliders. Five minutes, three pages, every visit. It reads as premium and it is the loudest signal in the dataset.

Here is what an auditor, an analytics lead or a curious client actually sees:

  • A spike at exactly your setting. Human sessions never cluster on a round number. A histogram with a wall at 300 seconds says the number was typed, not earned.
  • Pages per session pinned at the cap. 3.00 and 2.00 are configuration values. Real properties land on messy figures like 1.62 or 2.37.
  • Zero single page sessions. Every real site has them, in volume. Their absence is not an improvement, it is an impossibility.
  • Duration the content cannot support. Five minutes on a 350 word page means the visitor read it eight times.
  • An engagement rate at or near 100%. Google Analytics 4 counts a session as engaged if it lasts more than 10 seconds, fires a key event (formerly called a conversion), or records at least two page views. Configure every visit at three pages and every single session qualifies. No genuine property does that.
  • Long engagement time with no scroll events. This one is specific to the engine you chose. The standard Website Traffic engine loads a page and waits, with no scroll and no click, so GA4 accrues engagement time while the enhanced measurement scroll event, which fires when a visitor reaches 90% depth, never fires at all. Long sessions plus a scroll rate near zero is an internally contradictory pattern. Realistic Traffic scrolls to the bottom of the page in short steps, which is the practical reason to pay 3x for the pages you actually care about.

For the full version of this from the auditor's side, including referrers, geography and the conversions that should not move, see how to spot bought traffic in analytics. Reading it as a buyer is the cheapest quality check available.

Worked example: read your own organic sessions

Do this before you configure anything. It takes about fifteen minutes.

Step 1: find the entry pages that matter. In Search Console, open Performance, then Search results, then the Pages tab. Set the date range to the last 28 days. Sort by clicks and export the top 20 to 50 pages. These are the pages organic visitors actually land on, and they are the URL list your campaign should use. Sending traffic to pages that receive no organic entries produces a channel mix nobody can explain later.

Step 2: get the central numbers per page. In Google Analytics 4, open Explore and create a Free form exploration:

  • Rows: Landing page + query string
  • Filter: Session default channel group exactly matches Organic Search
  • Metrics: Sessions, Average engagement time per session, Views per session, Engaged sessions, Bounce rate
  • Date range: the last 90 days ending 7 days ago, so no partial or unprocessed days sit at the edge
  • Sort by Sessions descending, then export

Use average engagement time per session, not average session duration. Engagement time counts foreground focus only, so a tab left open in a background window does not inflate it.

Step 3: get the shape, because the average is not enough. GA4 has no session duration histogram, so approximate one with three session scoped segments in the same exploration, each built from a condition on Session duration:

SegmentConditionWhat it tells you
Quick exitsSession duration less than 10 secondsThe size of your short population, and the share your quick look cohort should carry
MiddleSession duration 10 to 120 secondsThe bulk that your partial read cohort imitates
LongSession duration greater than 120 secondsThe tail, and the ceiling your deep cohort should aim at

Three buckets is all the resolution you need. Write down the session share of each, plus views per session for organic overall. Those four numbers are your campaign settings.

Step 4: check the ceiling. If your long bucket sits above five minutes, no Website Traffic campaign can reproduce it, because the product caps visit time there. That is not a reason to abandon the plan. It is a reason to keep the deep cohort at the ceiling, keep it small, and know that your delivered tail will be shorter than your organic tail.

Turning measured numbers into settings

What you measuredWhich setting it drivesNotes
Share of sessions under 10 secondsVolume weight of the single URL cohortUsually the largest cohort. Resist shrinking it because it looks unflattering
Median session length in the middle bucketSession time on the two URL cohortHalved across the two URLs by the split, so check the per page result
The long bucket's typical lengthSession time on the three URL cohort, capped at the product ceilingKeep this cohort small. It is a tail, not a target
Views per session for organicThe blended page count you are aiming atCompute the blend, do not set it directly on any single campaign
Top organic landing pages from Search ConsoleThe URL list per campaignUp to 3 URLs per Website Traffic campaign
Time each page can plausibly hold someoneWhether to lower any of the aboveThe content is the real ceiling, not the product's maximum

Two configuration mistakes are worth calling out on their own.

Splitting is silent. Because the session budget divides across the URLs, a three URL cohort set to 300 seconds produces roughly 100 seconds per page. If your organic pages earn 40 seconds each, you have just made every page two and a half times more engaging than reality, without touching the duration field.

Randomized pacing is not optional. Equal splits give every session three identical page timings. Randomized pacing is a listed feature on the paid tiers precisely because uniformity is the artifact that stands out.

If you are still deciding budget and product rather than settings, buying website traffic without wasting budget covers the tier and cost side of the same decision.

The second page, bounce rate and what it does not buy

Adding a second URL is the cheapest way to change your reported shape, and the most misunderstood.

Mechanically it is simple. Analytics counts a single page session as a bounce. On SERP Clicks you can specify a second internal page at no extra cost, and the clicker visits it after the timer on the first finishes, so the session is no longer single page. On Website Traffic the same lever exists as the URL list, capped at three.

Now the honest part. Bounce rate is not a ranking factor, and SparkCliks says so in its own product FAQ: search ranking does not read your analytics and does not know whether a bounce occurred. So the reason to add a second page is not that a search engine will reward it. The reason is that a campaign of exclusively single page sessions distorts your own reports, and a campaign where every session has exactly two pages distorts them in the opposite direction.

The Website Traffic FAQ gives the same advice this article gives, in one line: there is no single right answer, average bounce rates run somewhere between 30% and 70%, so look at sites in your own sector and pick something close. Your own site is an even better reference than your sector.

One current definition to keep straight: GA4 removed bounce rate at launch and reintroduced it in 2022 as the inverse of engagement rate. A GA4 bounce is not a Universal Analytics bounce, and standard Universal Analytics properties stopped processing data on 1 July 2023, so any bounce rate benchmark written before then is describing a different metric.

A before and after test for your settings

Settings are a hypothesis. Test them the way you would test a title tag change.

  • Baseline window. 28 days with no campaign running. Record, for organic only: session share in each of the three duration buckets, views per session, engagement rate, and key events.
  • Control set. Pick 5 to 10 pages of the same template and similar traffic level that you deliberately exclude from the campaign. Seasonality and site wide changes hit these too, which is what makes them useful.
  • Change window. 28 days with the cohort campaigns live.
  • Read the channels separately. This is the step people skip. Never read organic and the campaign channel in one total, because a blended average of two populations tells you nothing, which is the same trap as section five. Segment by channel and compare the campaign's bucket shares against organic's.
  • What counts as signal. If any duration bucket in the campaign channel differs from organic's by more than about 10 percentage points, the settings are wrong and you should rebalance the cohort weights. Smaller gaps are noise.
  • What must not move. Key events and revenue on the control set, and conversion rate on the campaign pages. Automated visits do not buy anything, so a conversion rate that dilutes is expected arithmetic, while a conversion count that moves means something else is going on.

Re-run step 3 of the worked example at the end of the change window. If your campaign channel's three buckets sit inside 10 points of organic's, your settings are as close as this exercise gets.

Settings checklist

Run this before a campaign goes live.

  1. Entry URLs come from Search Console's Pages tab, not from a list of pages you wish were popular.
  2. You have measured average engagement time per session for organic on those exact pages.
  3. You have the three duration bucket shares written down.
  4. Views per session for organic is written down, to two decimal places.
  5. Your campaign is split into at least two cohorts with different settings.
  6. The largest cohort is single URL and short, because that is what your site actually looks like.
  7. No cohort's per page time exceeds what the content could hold a person for.
  8. You have accounted for the split: session time divided by URL count is the per page number.
  9. Pacing is set to randomized, not equal.
  10. Your blended page count lands near your organic figure and nowhere near the 3 page cap.
  11. The channel is segmented in your reporting so the campaign never contaminates your organic averages.
  12. You know your engagement rate will rise, and you have decided in advance what number would be too high to explain.

Frequently asked questions

FAQ

How long should a bought visit last?

Long enough to match your own organic sessions on the same pages, which for most sites means a majority of visits under 30 seconds and a minority running to several minutes. Set one flat duration for every visit and you will match the average while missing the distribution entirely.

How many pages per session should I configure?

Aim for a blended figure close to your organic views per session, usually somewhere between 1.2 and 2.5 for content sites and higher for documentation or ecommerce. Do not set it directly on one campaign. Blend it from cohorts, because a fixed 2 or 3 pages on every visit removes single page sessions completely, and no real site has zero of those.

Does session duration or pages per session affect rankings?

No. Search engines say they do not use analytics data, and they have no access to your Google Analytics property. These are campaign realism and analytics hygiene settings, not ranking levers, and any vendor framing them as SEO inputs is describing a mechanism that does not exist.

Is a longer visit always better?

No. A five minute visit to a 350 word contact page is not engagement, it is an artifact, and it is one of the easiest patterns to spot in a session length histogram. The content sets the ceiling, not the product's maximum setting.

What is a good average session duration for a blog?

There is no benchmark worth using, because the average sits in the empty gap between quick exits and real reads. Work from the arithmetic instead: a 1,200 word post read end to end takes roughly five minutes at normal silent reading speed, most visitors scan rather than read, so a plausible band is wide and the median lands far below the full read.

Should I set the same duration for every visit?

No, and this is the most common mistake. Uniform durations produce a spike in the histogram where genuine traffic has a long tail, so use randomized pacing and split the campaign into two or three cohorts with different settings and different volume weights.

About the Author

The SparkCliks Team builds and runs search CTR and website traffic services at sparkcliks.com, including SERP Clicks, Sparky Traffic Bot, Website Traffic and Realistic Traffic. Everything above comes from the settings customers actually configure and the analytics questions they ask afterwards. We publish what the products do and what they do not do, including the places where a search engine's behavior is not ours to promise. Questions about a specific campaign setup can go to the team at support@sparkcliks.com.

Keep reading

Related articles