# Completion

Completion measures whether users reach the end of a flow. It captures both the functional success of the design and the user's ability to follow through from start to finish.Use this metric when testing onboarding, checkout, sign-up, or any linear path where completing the full journey is essential. It helps identify where users drop off, lose interest, or run into blockers that prevent them from finishing.Completion gives you a clear view of how well your flow holds together. It helps you focus your improvements on the moments that matter most for conversion and follow-through.Interpreting the ResultsUse this key to understand what your Completion score means and how to interpret that for your product experience:How to Calculate CompletionTo measure Completion, you’re identifying whether participants were able to make it all the way through a specific user flow—and how efficiently they did so.Set up questionsTo collect this data, use a prototype directive that asks participants to complete a specific task.These questions can be embedded in a usability test distributed to your target audience via an online research platform or panel.Collect dataAs participants attempt to complete the task, their outcomes are categorized into three groups:Direct Success: Participants who followed the ideal, most efficient path through the prototype to complete the task.Indirect Success: Participants who took a non-ideal or alternate path—such as clicking through extra or out-of-order screens—but still successfully reached the end.Failed: Participants who were unable to complete the task or abandoned the flow before finishing.Plug data into the formulaThe Completion score combines two specific data points:The percentage of participants who completed the task through the ideal path (Direct Success Rate)The percentage of participants who completed the task through an alternate path (Indirect Success Rate)Calculate the Usability scoreIn this example, 76% of participants completed the flow directly, and 11% completed it indirectly.This Completion score of 87% reflects a Good outcome on a scale from Very Poor to Very Good, meaning most users were able to complete the task, with the majority following the expected path.When to Use Completion MetricsCompletion metrics are ideal for evaluating user flows, task success, and areas of friction within a product. These metrics help teams pinpoint specific obstacles that impact usability and task completion rates. Here are some common use cases for measuring completion:Multi-Step WorkflowsEvaluate how well users navigate through multi-step processes like onboarding, account setup, or complex forms.Task-Specific FeaturesMeasure success when users complete specific tasks, such as scheduling an appointment or exporting data.E-Commerce CheckoutsTrack user completion rates through checkout flows to uncover friction points that hinder purchases.How We Measured Completion on Advent’s Ad Campaign Targeting PageTo evaluate how easily users can complete a multi-step task within Advent’s audience targeting interface, we tested a prototype flow where participants were asked to update the targeting parameters of an ad campaign. This task is a common and critical action for platform users managing live campaigns, making it essential to measure how successfully users could complete it from start to finish.The SetupCompletion is measured by giving participants a realistic task directive and observing their success. Outcomes are classified into:Direct Success – completed the task smoothly and correctlyIndirect Success – completed the task but with hesitation, backtracking, or minor confusionFailed – did not complete the task or misinterpreted the flowA weighted combination of Direct and Indirect Success results in an overall Completion score.The ResultsOur prototype test produced the following results:We plugged the data into our Completion formula to reveal the score:The flow earned a Completion score of 87%, rated Good on the Glare scale76% of participants completed the task with Direct Success, navigating the interface without friction11% achieved Indirect Success, usually due to slight uncertainty when switching between audience segments13% failed to complete the task, with most of these participants overlooking the “Edit” button or misinterpreting the structure of the campaign listClick patterns showed solid alignment with the intended interaction path, but a few key elements lacked visual hierarchyThe ImpactThese insights helped Advent identify exactly where users encountered uncertainty. With a few interface refinements—such as improving the visibility of the edit action and clarifying step order—the team could likely push Completion past the Very Good threshold. Most importantly, the results validated that the core flow is usable and aligns with user expectations, with only minor tuning needed.SourceHelio SurveyCSVHow to Use AI to Measure CompletionUsing the prototype directive outlined in the How to Calculate section above, gather responses on a survey from an audience of at least 100 respondents. We find that 100 responses is statistically significant in most markets. Once the responses are collected, download the CSV file of your data report and upload it into an AI platform along with the prompt below.Copy this AI prompt to calculate your own Completion score, and check out the type of output it would produce:Technicals for Measuring CompletionThe code snippets below show how UX metrics can be measured using data from a survey platform. Take a peak into the development of these metrics, and even become a contributor in ourpublic repo.Data StructureThe following JSON structure tracks user completion scores and paths taken in a prototype. The scores object includes percentages of direct and indirect success. prototype_paths logs interactions, such as the coordinates where users clicked and the timestamp.{\n\tscores: {\n\t\tdirect_success: 60,\n\t\tindirect_success: 20,\n\t},\n\tprototype_paths: [\n\t\t{\n\t\tid: 1,\n\t\trelative_x: 0.5341614906832298,\n\t\trelative_y: 0.17133956386292834,\n\t\tcreated_at: \u00222018-12-13 17:54:24\u0022,\n\t\tsection_response_id: 424242,\n\t\t},\n\t\t....\n\t]\n\t\n}Parsing DataIn Ruby, thenet_completion_scoremethod calculates the completion score based on two criteria:direct success, where users complete a flow without unnecessary actions, andindirect success, where users reach the goal with extra steps. The scores are calculated as percentages of total section responses.ThePrototypeDirectiveSectionResponseclass checks whether a user has failed, indirectly succeeded, or directly succeeded in completing the task.This code determines if the user failed, succeeded indirectly (more steps than necessary), or achieved direct success (fewer steps and precise choices).class UxMetric\n\tdef net_completion_score\n\t\tdirect_success = section_responses.direct_successes\n\t\tindirect_success = section_responses.indirect_successes\n\n    @scores ||= {\n\t    direct_success:   (direct_success / section_responses.count) * 100,\n\t    indirect_success: (indirect_success / section_responses.count) * 100\n    }\n  end\nend\n\n\n\nclass PrototypeDirectiveSectionResponse\n\n  def fail?\n    prototype_paths.user_give_ups? \u0026\u0026\n    prototype_paths.views.pluck(:text).last != last_path.text\n  end\n\n  def indirect_success?\n    !fail? \u0026\u0026 !direct_success? \u0026\u0026 prototype_paths.count \u003e 0\n  end\n\n  def direct_success?\n    perfect_match = false\n    if !fail? \u0026\u0026 variation.choices.count === prototype_paths.views.count\n      perfect_match = true\n      prototype_paths.views.each_with_index do |path, index|\n        break if !perfect_match\n        perfect_match = (path['text'] === variation.choices[index]['text'])\n      end\n    end\n    perfect_match\n  end\nendValidationValidation ensures that the question used to measure completion is structured appropriately. The JavaScript function checks that the question is of typePrototypeDirectiveand that there are at least two steps or prototype paths to evaluate the user's progress through the flow.This validation logic guarantees that the question contains enough detail to measure success through the prototype and is focused on task completion.function isValidCompletionQuestion(question) {\n  if (\n    question.type !== 'PrototypeDirective' \u0026\u0026\n    question.prototype_paths.length \u003c 2\n  ) {\n    return false;\n  }\n  return true;\n}Score TranslationThe JavaScript function below translates the raw completion scores into qualitative categories. Based on the sum ofdirectandindirectsuccess rates, users are classified intoHigh,Average, orLowcompletion groups.This function categorizes the overall completion score based on specific thresholds, allowing product teams to assess whether users are completing tasks effectively.function translateCompletionScore(scores) {\n  let {\n    direct_success,\n    indirect_success\n  } = scores;\n\n  let total_scores = direct_success + indirect_success;\n\n  if (total_scores \u003e= 90) {\n    return 'High';\n  } else if (total_scores \u003e= 75 \u0026\u0026 total_scores \u003c 90) {\n    return 'Avg';\n  } else {\n    return 'Low';\n  }\n}\nTemplates & Presentation MaterialsCreate effective presentation slides, document design concepts, and implement UX Metrics with templates and resources.We've done the work to provide professional layouts that communicate to your stakeholders. UX Metric cards clearly communicate the totals, allow space for breakdowns, and styled to allow for your own brand.Visit Findings for TemplatesTake This Further with the UX Metrics AI SkillsCompletion measures whether users finish the tasks they set out to do. TheUX Metrics AI Skillsis a package you load into your LLM so you can ask questions and get expert answers anytime.Find out why users are dropping off before finishingSet a meaningful completion rate benchmarkCompare completion across flows or user segmentsConnect completion data to design improvementsDrop it into your LLM and start asking questions right away.