Skip to content

Part 2 of 7 · Abandoned form recoverer series ~5 min read

How an abandonment is detected

Detecting an abandoned form is genuinely easy and the temptation is to capture everything as it is typed, which is both unnecessary and the reason people are wary of this category. Capturing less turns out to cost almost nothing in effectiveness.

Key takeaways

  • Capture at step boundaries, not on every keystroke.
  • Never capture payment fields, passwords, or anything in a sensitive category.
  • A pause is thirty minutes; an abandonment is a pause that did not resume.
  • A late completion cancels everything, and the check runs immediately before sending.
  • Partial data is deleted on a short clock whether or not a message was sent.

Capture at boundaries

How an abandoned form is detected from step boundariesA vertical chain of five steps entered by a box labelled Somebody fills a form, step by step. Step one waits for a step to complete rather than watching every keystroke. Step two asks whether any field in it is sensitive, covering payment, health and password fields; if so it exits to Capture nothing from it, not even the fact it was filled. Step three stores the step with its fields and values. Step four asks whether the form has been quiet for thirty minutes with no further step; if not it exits to Still going and waits. Step five declares an abandonment and hands it to the basis check. A note says step boundaries capture almost everything a keystroke listener would, with far less.AWS ACCOUNTSomebody fills a formstep by stepA step completesnot every keystrokeIs any field sensitive?payment, health, passwordCapture nothing from itnot even that it was filledyesStore the stepfields and valuesQuiet for 30 minutes?no further stepStill goingwaitnoAn abandonmenthand to the basis checkStep boundaries capture almost everything a keystroke listener would, with far less.
Fig 1. How a partially completed form is captured. Recording at step boundaries rather than continuously is nearly as effective and avoids holding a keystroke log of somebody’s half-typed thoughts.
  • Database
  • App integration
  • Machine learning
  • Security & identity
  • Management
  • Analytics
  • Front-end & mobile

What is never captured

Payment fields, obviously, and for a reason beyond taste: capturing them at all brings a checkout into a compliance scope it was carefully kept out of. The same applies to anything in a special category — health details on a clinic booking form, for instance — where partial capture creates an obligation the completed form would have handled properly.

The rule is implemented as an explicit allow-list of fields that may be captured rather than a deny-list of fields that may not. A new field added to a form is not captured until somebody decides it should be, which is the correct default and the opposite of what most implementations do.

Pausing versus stopping

Thirty minutes of inactivity is a reasonable line and it is genuinely a guess. People go and find a tape measure, take a phone call, or get distracted, and a substantial number come back within the hour and finish.

What matters more than the exact interval is that the completion check runs again immediately before the message is sent. Somebody who abandoned at two o’clock, was detected at half past, and completed the form at ten to four must not receive a message at four saying they did not finish.

The late completion

How a late form completion cancels a queued messageA horizontal row of five boxes. Abandoned: at two o'clock. Detected: at half past two. Message queued: for four o'clock. They finish: at ten to four. Cancelled: because completion is checked at send time. A note says sending a you-did-not-finish message to somebody who finished is the worst output.THE CHECK THAT RUNS TWICEAbandoned14:00Detected14:30Message queuedfor 16:00They finish15:50Cancelledchecked at send timeSending a 'you did not finish' message to somebody who finished is the worst output.
Fig 2. Why completion is checked again at send time. It is a cheap check and its absence produces the single most embarrassing message this system could send.
  • App integration
  • Machine learning
  • Security & identity
  • Management
  • Analytics

The same check covers a second case that is easy to miss: somebody who abandoned one form and then submitted a different one, or rang up, or completed a purchase. Any conversion in the window cancels the message, and the check is against the customer rather than the specific form.

Deleting the partial data

Partial form data is deleted on a short clock — seven days is generous — whether or not a message was sent. There is no reason to keep a half-finished quote request indefinitely, and a table of them accumulating for years is a data question nobody wants to answer.

What survives is the anonymous fact of the abandonment: which step, which form, no personal data. That is what the conversion analysis needs and it carries none of the obligations the partial data does.

Next: whether you may contact them at all.

All posts