FreeThe +45-page Authentication Analytics Whitepaper — measuring real login journeysDownload
Back to Overview

Track Login and Form Errors in Adobe Analytics

Set up Adobe Analytics error tracking, validate login events and investigate authentication failures with the right context.

Vincent Delitz
Vincent Delitz

Created: August 13, 2026

Updated: September 10, 2026

Track Login and Form Errors in Adobe Analytics
Key Facts
  • Adobe Analytics can report login errors that your application sends it. A visible error message or page view is not required.
  • Use stable error codes and explicit flow steps. Keep rejected inputs, service failures and unknown outcomes separate.
  • A missing event is not a diagnosis. Check collection before interpreting silence as abandonment.
  • Authentication observability adds journey context. It does not reveal information that the browser deliberately withholds.

1. How to track login and form errors in Adobe Analytics#

A useful error report tells you what failed and where to investigate. Start with the errors your application already exposes: an invalid input, an unavailable identity service or a rejected authentication request. Send the event and its context to Adobe, then verify the report against a known test case.

The harder question is whether the report explains the whole login. A rejected password, an unanswered OTP challenge and a failed passkey request leave different evidence. Some produce explicit errors. Others leave an unfinished sequence or an outcome with an uncertain cause.

This guide answers five questions:

  1. Which Adobe events and dimensions should you configure?
  2. How do you send an error without generating a page view?
  3. How do you validate the data and keep reports readable?
  4. What can you conclude from incomplete login journeys?
  5. When does adding Corbado Observe help?
WhitepaperAuthenticationAnalytics Icon

Authentication Analytics Whitepaper. Practical guidance, rollout patterns and KPIs for passkey programs.

Get Whitepaper

2. Adobe Analytics terms with login examples#

A hit is a transmission of analytics data. With AppMeasurement, s.t() sends a page-view hit and s.tl() sends a link-tracking hit. A custom link can represent a caught login error even when no link was clicked. With the Web SDK, use sendEvent and the appropriate Analytics mapping instead.

Adobe documents custom link tracking separately from automatic download and exit-link tracking. Define the login signals explicitly; installing page tracking does not define them for you.

2.2 Success events and counter events#

Adobe calls a custom metric a success event, even when it counts errors. Choose its type according to the value you need to record.

Event typeWhat it recordsExamples
CounterOccurrences of an eventOne rejected submission or one completed login
NumericA numerical quantityElapsed milliseconds added to a duration metric
CurrencyA monetary valueOrder value; usually unnecessary for login errors

A calculated metric combines metrics already collected, such as errors divided by submissions. It does not require another tracking hit.

2.3 Dimensions, eVars and props#

A dimension describes the event. In an error report, it might identify the error code or the flow step. Custom values can be sent through eVars or props.

VariableBehaviourExamples
eVarAttribution depends on its allocation and expiration settingserror_code = idp_unavailable, login_method = password
propNormally describes the hit on which it was sentflow_step = otp_submit

For the examples below, use Hit expiration for the error dimensions and send them on each error hit. This keeps an earlier error from receiving credit for later events.

2.4 Report suites and dimension cardinality#

A report suite is the reporting destination. Confirm the correct suite before configuring or testing events. A high-cardinality dimension has many distinct values, often because raw messages contain timestamps or request identifiers. Keep codes predictable; section 7 shows why.

Adobe's Low-Traffic bucket groups dimension values when cardinality limits are reached. The documented default is two million unique values per dimension, report suite and calendar month, with configuration options and exceptions. It is not a simple rule that every value after the threshold disappears. Stable codes reduce the problem before you reach that limit.

3. Separate rejected inputs, system failures and unknown outcomes#

Choose categories your team can act on without claiming more than the evidence supports.

CategoryExampleNext check
ValidationInvalid email formatField validation and instructions
Authentication rejectionCredentials or OTP rejectedBackend reason code and retry path
SystemIdentity service unavailableService health and affected requests
Unknown causeWebAuthn request returns NotAllowedErrorRequest context and subsequent actions
Incomplete journeyOTP requested but no submission recordedResends, delivery evidence and observation window

Only label an outcome as a user cancellation when a reliable signal supports that conclusion. An ambiguous error or missing OTP submission is not enough.

4. Configure the error event and dimensions#

4.1 Create the event in the report suite#

In Admin → Report Suites, select your test suite. Open Edit Settings → Conversion → Success Events, choose an unused event and give it a clear name such as Login Error. Set its type to Counter and save. The examples use event10; replace it if that slot already has another purpose.

Source: Adobe's Success Events documentation. This is Adobe's example screen, not a Corbado test account. © Adobe; MIT license.

4.2 Configure the dimensions#

Open Edit Settings → Conversion → Conversion Variables. Assign unused eVars to the fields below. Set expiration to Hit, use Most Recent allocation and save. Document the mapping so the application and analytics teams use the same slots.

DimensionNameExampleExpiration
eVar20Error Codeidp_unavailableHit
eVar21Error ClasssystemHit
eVar22Flow Steppassword_submitHit

Source: Adobe's eVar documentation. The screenshot shows example variables; use the error fields defined above. © Adobe; MIT license.

5. Send and verify error events#

Use one collection approach per event. These examples assume an already configured Adobe library, the correct report suite and your site's consent rules. Do not place credentials, tokens or raw user input into analytics fields.

5.1 AppMeasurement#

function reportLoginError() { try { s.tl(true, "o", "Login Error", { events: "event10", eVar20: "idp_unavailable", eVar21: "system", eVar22: "password_submit", linkTrackVars: "events,eVar20,eVar21,eVar22", linkTrackEvents: "event10", }); } catch { // A telemetry problem must not interrupt the login or recovery UI. } }

The fourth argument supplies overrides for this call. The event must be in events; the variable filter must include events and the eVars; the event filter must include event10. See Adobe's link-tracking reference. Do not duplicate this hit in a tag-manager rule.

5.2 Adobe Experience Platform Web SDK#

function reportLoginError() { try { void Promise.resolve( alloy("sendEvent", { data: { __adobe: { analytics: { linkName: "Login Error", linkType: "o", linkURL: "https://example.com/login", events: "event10", eVar20: "idp_unavailable", eVar21: "system", eVar22: "password_submit", }, }, }, }), ).catch(() => {}); } catch { // Keep telemetry failure separate from authentication failure. } }

Replace the example URL with your approved, query-free login URL. The configured datastream must have the Adobe Analytics service enabled and point to your report suite. This example uses the direct Analytics data mapping; it does not also send the same fields through XDM.

5.3 Verify one failure end to end#

Trigger a controlled failure in your test environment. Inspect the outgoing payload with browser developer tools or Adobe's debugger. Confirm the event number, error code, class and flow step. Then check the intended report suite after processing.

Repeat the check with a successful login and verify that it does not carry the earlier error. Test retries too: one failed submission should not generate a hit from both application code and Adobe Tags.

6. Measure form abandonment consistently#

Define a form start at a meaningful interaction and a completion at the intended successful outcome. Count each once per form journey. For an authentication flow, successful browser credential retrieval is only an intermediate step; backend verification and the intended authenticated state must follow.

Subtracting completions from starts is meaningful only when both refer to the same population and observation window. Handle retries, duplicate events and journeys still in progress before labelling the remainder as abandonment. A separate abandonment hit is optional for that calculation and can be lost when a page closes.

For field-level diagnostics, record approved field names or step labels, never their entered values. Keep unanswered OTP challenges separate from explicit errors.

7. Keep error dimensions readable#

7.1 Send stable codes#

Use idp_unavailable or otp_expired rather than the full error message. Embedding a timestamp or request ID creates another dimension item for every occurrence and makes grouping harder.

7.2 Put readable labels in a lookup#

Maintain a small mapping from code to description and owner. Adobe classifications can add readable labels to collected codes. Do not send personal information merely to make the report easier to read.

7.3 Separate error instances from failed journeys#

A submission can fail validation on several fields. Decide whether the metric counts affected fields, rejected submissions or failed journeys. If using an Adobe list variable for multiple codes, verify how credit is allocated; adding breakdown rows does not necessarily produce a unique journey count.

8. What login error reports still cannot explain#

8.1 Capture the authentication outcome#

For passkeys, capture the application-visible lifecycle of the WebAuthn request. A resolved request returns a credential for verification. A rejected request exposes an error. Both can be sent to Adobe even when nothing changes on the page.

Illustrative event sequence. The added track shows instrumented application events, not a recording of browser or phone interfaces.

SituationEvidence to collectInterpretation limit
Passkey request rejectsError name, timing and request contextThe exact cause may remain unknown
User chooses password fallbackObserved application actionDoes not prove which browser prompt appeared
Cross-device login completesOutcome on the initiating device and backend resultPhone-internal actions are not automatically exposed
OTP requested but not submittedRequest, resend and submission eventsDoes not prove delivery failure

8.2 Separate observations from inferred causes#

Keep NotAllowedError as the observed result. Use duration, device context and subsequent actions to investigate possible explanations. A short duration alone does not prove a bug or a cancellation. Browser capability checks also do not prove that a passkey suggestion appeared.

The WebAuthn specification limits what an application can learn about some unsuccessful requests. That boundary applies to every analytics and observability vendor.

8.3 Reconcile frontend and backend evidence#

An implementation may record enrollment interactions in the browser but login outcomes on the server. Compare the definitions and available correlation keys before combining the streams. Two complete datasets can still describe different stages or populations.

For OTP, keep request, resend, submission and verification separate. A missing submission is an incomplete journey; delivery failure requires additional evidence. For automatic passkey prompts, distinguish prompt initiation from demonstrated login intent. Web and native platforms may expose different signals.

8.4 Audit the missing events#

Reproduce a failure, verify collection and compare the frontend record with the backend result where correlation is available. Check consent, blocked requests, duplicate instrumentation and reporting windows. Do not attribute every discrepancy to authentication friction.

For the denominator and retry rules, see login success rate in Adobe Analytics.

9. When to add Corbado Observe alongside Adobe#

Your team can build custom login reporting in Adobe. It then owns the event definitions, mapping, journey model and ongoing validation. Corbado Observe provides a dedicated workflow for investigating authentication alongside your existing login stack.

Some customers keep Adobe Analytics as their foundation and add Observe for detailed authentication analysis. Evaluate the additional value against a real question: which users fall back, where OTP journeys stall or which browser segment changed after an update.

See Passkey Errors in Corbado Observe →

Observe connects available events into journeys, supports method and device breakdowns and provides event histories for support investigations. That history is telemetry, not a video of the browser's biometric interface. Ambiguous causes still need evidence; a specialised view does not remove platform limits.

Explore Corbado Observe or discuss your login measurement with us.

Corbado

About Corbado

Corbado is the Passkey Intelligence Platform for large-scale CIAM teams running consumer authentication. We help you see what IDP logs and generic analytics tools can't: where passkeys, passwords, OTP, social login and fallback journeys succeed, stall or fail, which devices and browsers create friction, and when an OS update silently breaks login. Two products: Corbado Observe layers process mining and observability across authentication journeys. Corbado Connect adds managed passkeys with analytics built in alongside your IDP. VicRoads runs passkeys for 5M+ users with Corbado (+80% passkey activation). Talk to a Passkey Expert

Frequently Asked Questions#

Can Adobe Analytics track login errors without a page view?#

Yes. Use an AppMeasurement custom link hit or a mapped Web SDK event. Send the configured error metric and dimensions, then verify the payload and report suite.

Should I send raw error messages to Adobe?#

Use stable codes instead. Raw messages may contain personal data or unique identifiers and can fragment the report into many distinct values. Keep readable descriptions in a controlled lookup.

Can Adobe Analytics track passkey errors?#

Yes. Your application can capture an exposed WebAuthn error and send it to Adobe. The error may not identify the exact cause, and events that were never collected cannot be reconstructed by a report.

Does a missing OTP submission mean the message was not delivered?#

No. It means no submission was recorded within the chosen observation window. Delivery failure, delay and user abandonment are different possible explanations.

Does Corbado Observe replace Adobe Analytics?#

Observe can run alongside Adobe Analytics and your existing identity provider. It adds a dedicated authentication journey view; assess its collection coverage and diagnostic workflow against your current implementation.

See what's really happening in your passkey rollout.

Book a Demo

Share this article


LinkedInTwitterFacebook