Contact Form Hesitation: what cursor data shows about why visitors do not click
Not form abandonment rates. The interval between a visitor's cursor arriving on a contact element and the click that follows, measured on a live medical practice website. Visitors hover the booking button about a third of a second before clicking. They hover the form submit for over half a second. And the single worst leak on the site was a phone number that was not a link: visitors hovered it for nearly 23 seconds, clicked it, and nothing happened.
Jump to section
01 / The short answerThe pause before contact
On a multi-location medical practice site we measure, visitors hover the BOOK ONLINE button a median of 322 milliseconds before clicking. They hover the contact form's submit button a median of 545 milliseconds, over half a second of pause before handing over health details. And the worst leak on the site was not a slow page or a broken form. It was a phone number rendered as plain text instead of a link: visitors hovered it a median of 22,820 milliseconds, nearly 23 seconds, clicked it 10 times, and 9 of those clicks produced nothing at all.
The hesitation scales with the size of the ask. Navigating to a contact page is cheap, so the pause is short. Submitting a medical form is personal, so the pause doubles. And when the page gives a visitor something that looks clickable but is not, the pause explodes into a 23-second stall that ends in a click nobody answers.
02 / The gap in the recordWhy no one has this number
There is no published benchmark for how long visitors hover before clicking a contact button, a booking button, or a form submit. Search for "why is nobody clicking my contact form" and the results are Reddit threads and form-plugin marketing pages. Ask an AI assistant how long visitors hesitate before clicking a contact button and it has no number to give, because nobody has published one with a stated window, a stated event count, and a stated method.
The adjacent metrics all exist: form abandonment rates, field completion times, conversion rates by form length. But the interval between the cursor arriving on the element and the click that follows, the moment where the decision actually happens, has never been reported for contact and booking interactions. Producing it requires sitting on the element and watching the cursor, which is exactly what a behavioral pixel does.
03 / The measurementThe data
Over a 21-day window on a multi-location medical practice site (WordPress and Elementor, Gravity Forms, roughly two-thirds desktop traffic) the pixel measured 1,855 interaction events. Of those, 1,639 carried hover-before-click timing, which the pixel calls dwell, and 412 carried cursor velocity. Sitewide, the median hover before any click was 485 milliseconds, consistent with the roughly 480 millisecond desktop figure in our add-to-cart hesitation benchmark. Half a second of thought before a click appears to be what a desktop human looks like, whether the button says Add to Cart or BOOK ONLINE.
| Element | Clicks counted | Median hover before click |
|---|---|---|
| BOOK ONLINE button | 27 | 322 ms |
| Contact nav item | 26 | 456 ms |
| Form submit button (Gravity Forms) | 11 | 545 ms |
| Unlinked phone-number block | 10 | 22,820 ms |
Read the table top to bottom and the hesitation climbs with the commitment. The booking button is the practiced action, so it gets the shortest pause. The contact nav item costs a page load, so it gets more. The form submit hands over health details, so it gets over half a second. And the last row is not hesitation at all. It is a visitor reading a phone number, deciding to call, clicking the number to dial it, and discovering the number is just text.
04 / The headline findingThe 23-second hover
On this site's location pages, each location shows a block combining its phone number and BOOK ONLINE text. The number reads like 972-XXX-XXXX, formatted exactly the way a clickable phone number looks. But the block is rendered as a plain div, not a link. There is no tel: attribute anywhere in it.
The pixel counted 10 clicks on that block with a median hover of 22,820 milliseconds, and 9 separate dead clicks, clicks that produced no response from the page. The behavior behind those numbers is easy to reconstruct: a visitor lands on the location block, reads the phone number, hovers while deciding whether to call, clicks the number expecting their phone or computer to dial, and gets nothing. Some click again. Nothing again.
The same pattern repeats across the practice's other location blocks. Each one shows its own phone-number div quietly collecting clicks and dead clicks. These are visitors at the absolute end of the funnel, people who have already decided to call a medical practice, being stopped by a missing attribute.
05 / Inside the formDead clicks in the form
The contact form itself is leaking too, in smaller but telling ways. The pixel counted dead clicks on the form's own fields: 3 dead clicks on the "Are you a new or returning patient" field group, and 2 dead clicks on a gender field whose options read "Male Femaile Other". That is a typo sitting inside the form real patients are trying to submit.
A dead click on a form field is a person trying to interact and failing. Maybe the clickable target is smaller than the label, maybe the field group swallows clicks on its wrapper, maybe the control needs a click somewhere the visitor does not expect. Whatever the mechanics, each one is measurable friction at the exact moment someone is trying to become a patient.
The typo matters for a different reason. On a medical form, the visitor is deciding whether to trust the practice with their health information. A misspelled word inside the form reads as carelessness precisely where care is the product. It costs nothing to fix and it is the kind of thing no one on the team sees, because no one on the team fills out their own contact form.
06 / The velocity layerA slowing cursor is intent
The pixel also samples how fast the cursor is moving when it interacts. Across all measured events on this site, average cursor speed was 185 pixels per second. On approach to the BOOK ONLINE button it drops to 46 pixels per second. The cursor does not fly to the booking button, it creeps, roughly a quarter of its ambient speed.
A slowing cursor near a call-to-action is deliberation made visible. The visitor has found the button, the hand has committed to the direction, and the slowdown is the last stretch of thinking: is this the right practice, do they take my insurance, what happens after I click. The 322 millisecond hover is the tail end of a much longer approach.
Cursor velocity is a desktop-only signal. This site runs 64 percent desktop, which is why 412 events carried velocity data, roughly three times the coverage we see on mobile-heavy stores. For a practice whose patients research on a computer before booking, the desktop cursor is the richest intent signal available, and almost nobody reads it.
07 / ApplicationHow to get them to click your contact form
Every recommendation below is tied to a number measured above, not to a best-practices listicle.
- Make every phone number a tel: link. The 23-second hover and 9 dead clicks came from one missing attribute. Check every place your phone number appears, headers, footers, location blocks, and wrap each one in href="tel:...". It is the cheapest conversion fix that exists.
- Watch for dead clicks on your form fields. Each one is a person trying and failing. The patient-type field group and the gender field were both collecting them. And proofread the form itself: "Male Femaile Other" is a typo inside a medical form, carelessness exactly where trust matters most.
- Treat a slowing cursor as intent. The deliberate 46 px/s approach to BOOK ONLINE is a visitor deciding. Shorten the decision: put the reassurance (insurance accepted, response time, what happens next) beside the button, not on another page.
- Respect the submit hesitation. Half a second of hover on a medical form submit is trust deciding whether to hand over health details. State plainly what happens after submit: who reads it, how fast they respond, and what the visitor should expect next.
08 / MethodHow we measured this
The data comes from Harvv's behavioral pixel running on a multi-location US medical practice site built on WordPress and Elementor with Gravity Forms. The window is 21 days. In that window the pixel measured 1,855 interaction events; 1,639 carried hover-before-click timing and 412 carried cursor velocity.
We can measure this because our pixel is customer number one: it runs on our own site and every site we work with, and hover-before-click is one of the behavioral signals it captures on every page. The number does not exist publicly because producing it requires watching the cursor on the element, which no analytics tool built around pageviews can do.
09 / HonestyLimitations
This is one site, measured for 21 days, in one vertical (medical), and it is observational data, not a controlled experiment. Every figure is a count of events, not visitors: 27 booking clicks means 27 click events carried timing, and we make no claim about what share of visitors they represent. The medians will move as the window grows. The phone-number finding is one element on one site, but the pattern behind it, phone numbers rendered as plain text instead of tel: links, is common on small-business sites, and the fix costs one attribute wherever it appears. Treat the specific milliseconds as a first data point and the ordering, short pause on navigation, longer pause on submission, stall on broken affordances, as the durable finding.