{"id":978,"date":"2026-05-03T13:00:00","date_gmt":"2026-05-03T18:00:00","guid":{"rendered":"https:\/\/tolinku.com\/blog\/?p=978"},"modified":"2026-03-07T04:46:04","modified_gmt":"2026-03-07T09:46:04","slug":"onboarding-completion-rates","status":"publish","type":"post","link":"https:\/\/tolinku.com\/blog\/onboarding-completion-rates\/","title":{"rendered":"Improving Onboarding Completion Rates"},"content":{"rendered":"\n<p>The average mobile app loses 50-60% of users during onboarding. That means more than half of the users who install your app leave before completing setup. Each user who drops out represents wasted acquisition spend and a missed opportunity. This guide covers how to measure, diagnose, and fix onboarding completion problems.<\/p>\n\n\n\n<p>For A\/B testing onboarding flows, see <a href=\"https:\/\/tolinku.com\/blog\/onboarding-ab-testing\/\">A\/B Testing Onboarding Flows<\/a>. For personalization strategies, see <a href=\"https:\/\/tolinku.com\/blog\/personalized-onboarding-flows\/\">Personalized Onboarding Flows with Deep Link Data<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Measuring Onboarding Completion<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Define Your Funnel<\/h3>\n\n\n\n<p>Before you can improve completion rates, you need to define what &quot;completed onboarding&quot; means. It&#39;s not just the last screen of the tutorial:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table>\n<thead>\n<tr>\n<th>App Type<\/th>\n<th>Onboarding Complete When<\/th>\n<th>Why This Point<\/th>\n<\/tr>\n<\/thead>\n<tbody><tr>\n<td>E-commerce<\/td>\n<td>First product view + account created<\/td>\n<td>Ready to browse and buy<\/td>\n<\/tr>\n<tr>\n<td>Social<\/td>\n<td>Profile created + first connection<\/td>\n<td>Ready to engage<\/td>\n<\/tr>\n<tr>\n<td>Productivity<\/td>\n<td>First project\/document created<\/td>\n<td>Experienced core value<\/td>\n<\/tr>\n<tr>\n<td>Fintech<\/td>\n<td>Account verified + first deposit<\/td>\n<td>Regulatory + activation<\/td>\n<\/tr>\n<tr>\n<td>Gaming<\/td>\n<td>Tutorial completed + first real game<\/td>\n<td>Understands mechanics<\/td>\n<\/tr>\n<\/tbody><\/table><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Track Every Step<\/h3>\n\n\n\n<p>For a comprehensive analytics setup including funnel definitions, cohort analysis, and event taxonomy, see <a href=\"https:\/\/tolinku.com\/blog\/onboarding-analytics\/\">Onboarding Analytics: Measuring Activation Success<\/a>.<\/p>\n\n\n\n<pre><code class=\"language-javascript\">const ONBOARDING_STEPS = [\n  &#39;app_opened&#39;,\n  &#39;welcome_screen_viewed&#39;,\n  &#39;signup_started&#39;,\n  &#39;signup_completed&#39;,\n  &#39;profile_created&#39;,\n  &#39;permissions_granted&#39;,\n  &#39;first_action_completed&#39;,\n  &#39;onboarding_completed&#39;,\n];\n\nfunction trackOnboardingStep(step, metadata) {\n  analytics.track(&#39;onboarding_step&#39;, {\n    step: step,\n    stepIndex: ONBOARDING_STEPS.indexOf(step),\n    totalSteps: ONBOARDING_STEPS.length,\n    source: metadata.source, \/\/ organic, ad, referral\n    platform: metadata.platform, \/\/ ios, android\n    timeFromPreviousStep: metadata.timeDelta,\n    sessionId: metadata.sessionId,\n  });\n}\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Build the Funnel Report<\/h3>\n\n\n\n<pre><code class=\"language-javascript\">async function getOnboardingFunnel(dateRange) {\n  const steps = {};\n\n  for (const step of ONBOARDING_STEPS) {\n    steps[step] = await countUniqueUsers(&#39;onboarding_step&#39;, {\n      step: step,\n      dateRange: dateRange,\n    });\n  }\n\n  \/\/ Calculate drop-off between each step\n  const funnel = [];\n  for (let i = 0; i &lt; ONBOARDING_STEPS.length; i++) {\n    const current = steps[ONBOARDING_STEPS[i]];\n    const previous = i &gt; 0 ? steps[ONBOARDING_STEPS[i - 1]] : current;\n\n    funnel.push({\n      step: ONBOARDING_STEPS[i],\n      users: current,\n      dropOff: previous &gt; 0 ? ((previous - current) \/ previous * 100).toFixed(1) + &#39;%&#39; : &#39;0%&#39;,\n      cumulative: (current \/ steps[ONBOARDING_STEPS[0]] * 100).toFixed(1) + &#39;%&#39;,\n    });\n  }\n\n  return funnel;\n}\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Common Drop-Off Points and Fixes<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Drop-Off at Signup<\/h3>\n\n\n\n<p><strong>Symptoms<\/strong>: 30-50% of users leave at the signup form.<\/p>\n\n\n\n<p><strong>Causes<\/strong>:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Too many required fields<\/li>\n<li>No social login options<\/li>\n<li>Asking for sensitive data too early (phone number, date of birth)<\/li>\n<\/ul>\n\n\n\n<p><strong>Fixes<\/strong>:<\/p>\n\n\n\n<pre><code class=\"language-javascript\">\/\/ Minimal signup: email + password only\nfunction MinimalSignup({ onComplete }) {\n  return (\n    &lt;Form&gt;\n      &lt;Input label=&quot;Email&quot; type=&quot;email&quot; autoFocus \/&gt;\n      &lt;Input label=&quot;Password&quot; type=&quot;password&quot; \/&gt;\n      &lt;Button type=&quot;submit&quot;&gt;Create Account&lt;\/Button&gt;\n\n      &lt;Divider text=&quot;or&quot; \/&gt;\n      &lt;GoogleSignIn onSuccess={onComplete} \/&gt;\n      &lt;AppleSignIn onSuccess={onComplete} \/&gt;\n\n      &lt;GuestOption onPress={() =&gt; onComplete({ guest: true })}&gt;\n        Browse as Guest\n      &lt;\/GuestOption&gt;\n    &lt;\/Form&gt;\n  );\n}\n<\/code><\/pre>\n\n\n\n<p>Allow guest access. Users who see value first are more likely to create an account later.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Drop-Off at Permissions<\/h3>\n\n\n\n<p><strong>Symptoms<\/strong>: 20-40% decline push notification or location permissions.<\/p>\n\n\n\n<p><strong>Causes<\/strong>:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Asking on the first screen with no context<\/li>\n<li>No explanation of why the permission is needed<\/li>\n<li>Users don&#39;t trust the app yet<\/li>\n<\/ul>\n\n\n\n<p><strong>Fixes<\/strong>:<\/p>\n\n\n\n<p>Show a pre-permission screen that explains the value:<\/p>\n\n\n\n<pre><code class=\"language-javascript\">function PushPermissionScreen({ onAllow, onSkip }) {\n  return (\n    &lt;Screen&gt;\n      &lt;Illustration source={notificationPreview} \/&gt;\n      &lt;Heading&gt;Stay in the loop&lt;\/Heading&gt;\n      &lt;Text&gt;\n        Get notified when your order ships, when prices drop on items\n        you&#39;re watching, and when friends invite you to collaborate.\n      &lt;\/Text&gt;\n\n      &lt;Button onPress={onAllow}&gt;Enable Notifications&lt;\/Button&gt;\n      &lt;LinkButton onPress={onSkip}&gt;Not Now&lt;\/LinkButton&gt;\n    &lt;\/Screen&gt;\n  );\n}\n<\/code><\/pre>\n\n\n\n<p>Ask permissions after the user has experienced value, not before. Move permission requests to the moment they&#39;re relevant (e.g., ask for location when the user taps &quot;Find nearby stores&quot;).<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Drop-Off at Profile Setup<\/h3>\n\n\n\n<p>For a focused guide on diagnosing and fixing drop-off points, see <a href=\"https:\/\/tolinku.com\/blog\/reducing-onboarding-dropoff\/\">Reducing Onboarding Drop-Off<\/a>.<\/p>\n\n\n\n<p><strong>Symptoms<\/strong>: Users create accounts but never complete their profiles.<\/p>\n\n\n\n<p><strong>Causes<\/strong>:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Too many profile fields<\/li>\n<li>Unclear why profile information is needed<\/li>\n<li>Upload requirements (avatar, cover photo) feel like too much effort<\/li>\n<\/ul>\n\n\n\n<p><strong>Fixes<\/strong>:<\/p>\n\n\n\n<p>Make profile setup optional. Collect only what&#39;s needed for the app to work:<\/p>\n\n\n\n<pre><code class=\"language-javascript\">function ProfileSetup({ onComplete, onSkip }) {\n  return (\n    &lt;Form&gt;\n      &lt;Input label=&quot;Display Name&quot; required \/&gt;\n\n      &lt;OptionalSection label=&quot;Optional: Help us personalize your experience&quot;&gt;\n        &lt;AvatarUpload \/&gt;\n        &lt;Select label=&quot;Industry&quot; options={industries} \/&gt;\n        &lt;TagPicker label=&quot;Interests&quot; options={interests} \/&gt;\n      &lt;\/OptionalSection&gt;\n\n      &lt;Button type=&quot;submit&quot;&gt;Continue&lt;\/Button&gt;\n      &lt;LinkButton onPress={onSkip}&gt;Skip for Now&lt;\/LinkButton&gt;\n    &lt;\/Form&gt;\n  );\n}\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Drop-Off at First Action<\/h3>\n\n\n\n<p><strong>Symptoms<\/strong>: Users complete setup but never perform the core action (create first project, make first purchase, post first content).<\/p>\n\n\n\n<p><strong>Causes<\/strong>:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Unclear what to do next<\/li>\n<li>Empty state is confusing<\/li>\n<li>Feature overwhelm<\/li>\n<\/ul>\n\n\n\n<p><strong>Fixes<\/strong>:<\/p>\n\n\n\n<p>Guide users to their first action with a clear, single CTA:<\/p>\n\n\n\n<pre><code class=\"language-javascript\">function FirstActionPrompt({ appType }) {\n  const prompts = {\n    productivity: {\n      title: &#39;Create your first project&#39;,\n      description: &#39;Start with a template or create from scratch.&#39;,\n      cta: &#39;Create Project&#39;,\n      screen: &#39;NewProject&#39;,\n    },\n    social: {\n      title: &#39;Find your friends&#39;,\n      description: &#39;See who you know on [App].&#39;,\n      cta: &#39;Find Friends&#39;,\n      screen: &#39;FindFriends&#39;,\n    },\n    ecommerce: {\n      title: &#39;Explore trending items&#39;,\n      description: &#39;See what others are buying right now.&#39;,\n      cta: &#39;Start Browsing&#39;,\n      screen: &#39;Trending&#39;,\n    },\n  };\n\n  const prompt = prompts[appType];\n\n  return (\n    &lt;Card&gt;\n      &lt;Heading&gt;{prompt.title}&lt;\/Heading&gt;\n      &lt;Text&gt;{prompt.description}&lt;\/Text&gt;\n      &lt;Button onPress={() =&gt; navigation.navigate(prompt.screen)}&gt;\n        {prompt.cta}\n      &lt;\/Button&gt;\n    &lt;\/Card&gt;\n  );\n}\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Re-Engagement for Incomplete Onboarding<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Identify Incomplete Users<\/h3>\n\n\n\n<pre><code class=\"language-javascript\">async function getIncompleteOnboardingUsers() {\n  return await db.query(`\n    SELECT user_id, last_completed_step, last_active_at\n    FROM users\n    WHERE onboarding_completed = false\n      AND created_at &gt; NOW() - INTERVAL 7 DAY\n      AND last_active_at &lt; NOW() - INTERVAL 24 HOUR\n    ORDER BY last_active_at DESC\n  `);\n}\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Send Re-Engagement Deep Links<\/h3>\n\n\n\n<p>Use deep links to bring users back to exactly where they left off:<\/p>\n\n\n\n<pre><code class=\"language-javascript\">async function sendOnboardingReminder(user) {\n  const nextStep = getNextOnboardingStep(user.lastCompletedStep);\n  const deepLink = getStepDeepLink(nextStep);\n\n  await sendPushNotification(user.id, {\n    title: getReengagementTitle(nextStep),\n    body: getReengagementBody(nextStep),\n    data: { deepLink: deepLink },\n  });\n\n  analytics.track(&#39;onboarding_reminder_sent&#39;, {\n    userId: user.id,\n    nextStep: nextStep,\n    daysSinceLastActive: daysSince(user.lastActiveAt),\n  });\n}\n\nfunction getStepDeepLink(step) {\n  const deepLinks = {\n    signup_completed: &#39;\/onboarding\/profile&#39;,\n    profile_created: &#39;\/onboarding\/permissions&#39;,\n    permissions_granted: &#39;\/onboarding\/first-action&#39;,\n    first_action_completed: &#39;\/onboarding\/complete&#39;,\n  };\n\n  return deepLinks[step] || &#39;\/onboarding&#39;;\n}\n\nfunction getReengagementTitle(step) {\n  const titles = {\n    signup_completed: &#39;Finish setting up your profile&#39;,\n    profile_created: &#39;One more step to get started&#39;,\n    permissions_granted: &#39;Ready to try your first [action]?&#39;,\n    first_action_completed: &#39;You are almost done&#39;,\n  };\n\n  return titles[step] || &#39;Continue setting up&#39;;\n}\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Email Sequences for Incomplete Onboarding<\/h3>\n\n\n\n<pre><code class=\"language-javascript\">const incompleteOnboardingEmails = [\n  {\n    delay: &#39;24h&#39;,\n    subject: &#39;Finish setting up your [App] account&#39;,\n    template: &#39;onboarding_reminder_1&#39;,\n    includeDeepLink: true,\n  },\n  {\n    delay: &#39;72h&#39;,\n    subject: &#39;Your account is waiting&#39;,\n    template: &#39;onboarding_reminder_2&#39;,\n    includeDeepLink: true,\n  },\n  {\n    delay: &#39;7d&#39;,\n    subject: &#39;Need help getting started?&#39;,\n    template: &#39;onboarding_help_offer&#39;,\n    includeDeepLink: true,\n    includeHelpLink: true,\n  },\n];\n<\/code><\/pre>\n\n\n\n<p>Each email includes a deep link that opens the app directly to the user&#39;s next onboarding step. No login required (if the session is still valid), no navigating through the app.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Onboarding by Acquisition Source<\/h2>\n\n\n\n<p>Different acquisition sources produce users with different onboarding completion rates:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table>\n<thead>\n<tr>\n<th>Source<\/th>\n<th>Typical Completion Rate<\/th>\n<th>Why<\/th>\n<\/tr>\n<\/thead>\n<tbody><tr>\n<td>Referral<\/td>\n<td>65-80%<\/td>\n<td>Trust + social motivation<\/td>\n<\/tr>\n<tr>\n<td>Organic search<\/td>\n<td>40-60%<\/td>\n<td>High intent but no context<\/td>\n<\/tr>\n<tr>\n<td>Paid ads (targeted)<\/td>\n<td>35-50%<\/td>\n<td>Moderate intent<\/td>\n<\/tr>\n<tr>\n<td>Paid ads (broad)<\/td>\n<td>20-35%<\/td>\n<td>Low intent, high volume<\/td>\n<\/tr>\n<tr>\n<td>App store browse<\/td>\n<td>30-45%<\/td>\n<td>Exploratory, less committed<\/td>\n<\/tr>\n<\/tbody><\/table><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Customize by Source<\/h3>\n\n\n\n<p>Use deep link data to adapt onboarding length and content per source:<\/p>\n\n\n\n<pre><code class=\"language-javascript\">function getOnboardingConfig(source) {\n  switch (source) {\n    case &#39;referral&#39;:\n      return {\n        steps: 3, \/\/ Abbreviated\n        showReward: true,\n        skipFeatureTour: true,\n      };\n\n    case &#39;ad_campaign&#39;:\n      return {\n        steps: 4,\n        showRelevantFeature: true, \/\/ Based on ad creative\n        skipFeatureTour: false,\n      };\n\n    case &#39;organic&#39;:\n    default:\n      return {\n        steps: 5, \/\/ Full onboarding\n        showFeatureTour: true,\n        showValueProp: true,\n      };\n  }\n}\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Benchmarks<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Industry Averages<\/h3>\n\n\n\n<figure class=\"wp-block-table\"><table>\n<thead>\n<tr>\n<th>Category<\/th>\n<th>Onboarding Completion Rate<\/th>\n<\/tr>\n<\/thead>\n<tbody><tr>\n<td>Social media<\/td>\n<td>50-65%<\/td>\n<\/tr>\n<tr>\n<td>E-commerce<\/td>\n<td>45-60%<\/td>\n<\/tr>\n<tr>\n<td>Productivity<\/td>\n<td>35-50%<\/td>\n<\/tr>\n<tr>\n<td>Fintech<\/td>\n<td>30-45%<\/td>\n<\/tr>\n<tr>\n<td>Health\/fitness<\/td>\n<td>40-55%<\/td>\n<\/tr>\n<tr>\n<td>Gaming<\/td>\n<td>60-75%<\/td>\n<\/tr>\n<\/tbody><\/table><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Target Improvements<\/h3>\n\n\n\n<p>Realistic improvement targets based on optimization effort:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table>\n<thead>\n<tr>\n<th>Optimization<\/th>\n<th>Expected Lift<\/th>\n<th>Effort<\/th>\n<\/tr>\n<\/thead>\n<tbody><tr>\n<td>Reduce signup fields (5 to 2)<\/td>\n<td>+15-25%<\/td>\n<td>Low<\/td>\n<\/tr>\n<tr>\n<td>Add social login<\/td>\n<td>+10-20%<\/td>\n<td>Medium<\/td>\n<\/tr>\n<tr>\n<td>Add guest access<\/td>\n<td>+20-30%<\/td>\n<td>Medium<\/td>\n<\/tr>\n<tr>\n<td>Pre-permission screens<\/td>\n<td>+10-15%<\/td>\n<td>Low<\/td>\n<\/tr>\n<tr>\n<td>Source-based customization<\/td>\n<td>+15-25%<\/td>\n<td>Medium<\/td>\n<\/tr>\n<tr>\n<td>Re-engagement deep links<\/td>\n<td>+5-10% (recovered users)<\/td>\n<td>Medium<\/td>\n<\/tr>\n<tr>\n<td>Progressive onboarding<\/td>\n<td>+10-20%<\/td>\n<td>High<\/td>\n<\/tr>\n<\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Monitoring Dashboard<\/h2>\n\n\n\n<p>Track these metrics weekly:<\/p>\n\n\n\n<pre><code class=\"language-javascript\">const onboardingDashboard = {\n  completion_rate: &#39;Users who completed \/ Users who started&#39;,\n  avg_time_to_complete: &#39;Median time from install to completion&#39;,\n  step_drop_off: &#39;Per-step drop-off rates&#39;,\n  source_breakdown: &#39;Completion rates by acquisition source&#39;,\n  platform_split: &#39;iOS vs Android completion rates&#39;,\n  recovery_rate: &#39;Users who returned after incomplete onboarding&#39;,\n  time_to_recovery: &#39;How long until recovered users come back&#39;,\n};\n<\/code><\/pre>\n\n\n\n<p>Review the funnel weekly. Even a 1% improvement in completion rate compounds over thousands of installs.<\/p>\n\n\n\n<p>For analytics features, see <a href=\"https:\/\/tolinku.com\/features\/analytics\">Tolinku analytics<\/a>. For onboarding use cases, see the <a href=\"https:\/\/tolinku.com\/docs\/use-cases\/onboarding\/\">onboarding documentation<\/a>. For analytics setup, see the <a href=\"https:\/\/tolinku.com\/docs\/user-guide\/analytics\/\">analytics docs<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Identify and fix the steps where users drop off during onboarding. Use analytics, deep links, and re-engagement strategies to boost completion rates.<\/p>\n","protected":false},"author":2,"featured_media":977,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"rank_math_title":"Improving Onboarding Completion Rates","rank_math_description":"Identify and fix the steps where users drop off during onboarding. Use analytics, deep links, and re-engagement strategies to boost completion rates.","rank_math_focus_keyword":"onboarding completion rates","rank_math_canonical_url":"","rank_math_facebook_title":"","rank_math_facebook_description":"","rank_math_facebook_image":"https:\/\/tolinku.com\/blog\/wp-content\/uploads\/2026\/03\/og-onboarding-completion-rates.png","rank_math_facebook_image_id":"","rank_math_twitter_title":"","rank_math_twitter_description":"","rank_math_twitter_image":"https:\/\/tolinku.com\/blog\/wp-content\/uploads\/2026\/03\/og-onboarding-completion-rates.png","footnotes":""},"categories":[18],"tags":[37,191,20,223,224,69,27,47,33],"class_list":["post-978","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-use-cases","tag-analytics","tag-conversions","tag-deep-linking","tag-engagement","tag-funnel-optimization","tag-mobile-development","tag-onboarding","tag-retention","tag-user-experience"],"_links":{"self":[{"href":"https:\/\/tolinku.com\/blog\/wp-json\/wp\/v2\/posts\/978","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/tolinku.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/tolinku.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/tolinku.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/tolinku.com\/blog\/wp-json\/wp\/v2\/comments?post=978"}],"version-history":[{"count":4,"href":"https:\/\/tolinku.com\/blog\/wp-json\/wp\/v2\/posts\/978\/revisions"}],"predecessor-version":[{"id":2820,"href":"https:\/\/tolinku.com\/blog\/wp-json\/wp\/v2\/posts\/978\/revisions\/2820"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/tolinku.com\/blog\/wp-json\/wp\/v2\/media\/977"}],"wp:attachment":[{"href":"https:\/\/tolinku.com\/blog\/wp-json\/wp\/v2\/media?parent=978"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/tolinku.com\/blog\/wp-json\/wp\/v2\/categories?post=978"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/tolinku.com\/blog\/wp-json\/wp\/v2\/tags?post=978"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}