{"id":981,"date":"2026-05-03T17:00:00","date_gmt":"2026-05-03T22:00:00","guid":{"rendered":"https:\/\/tolinku.com\/blog\/?p=981"},"modified":"2026-03-07T04:46:17","modified_gmt":"2026-03-07T09:46:17","slug":"reducing-onboarding-dropoff","status":"publish","type":"post","link":"https:\/\/tolinku.com\/blog\/reducing-onboarding-dropoff\/","title":{"rendered":"Reducing Onboarding Drop-Off: 10 Proven Strategies"},"content":{"rendered":"\n<p>Onboarding drop-off is the single biggest leak in your user acquisition funnel. You pay to acquire users, they install the app, and then they leave before completing setup. Every user who drops out wasted your acquisition budget and never experienced your product&#39;s value. Here are ten strategies that measurably reduce onboarding drop-off, each with implementation guidance.<\/p>\n\n\n\n<p>For measuring completion rates, see <a href=\"https:\/\/tolinku.com\/blog\/onboarding-completion-rates\/\">Improving Onboarding Completion Rates<\/a>. For personalization approaches, see <a href=\"https:\/\/tolinku.com\/blog\/personalized-onboarding-flows\/\">Personalized Onboarding Flows with Deep Link Data<\/a>. For tracking experiment results, see <a href=\"https:\/\/tolinku.com\/blog\/onboarding-analytics\/\">Onboarding Analytics: Measuring What Matters<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">1. Cut Steps (Ruthlessly)<\/h2>\n\n\n\n<p>Every additional onboarding step loses 8-15% of remaining users. If your onboarding has 7 steps, moving to 4 steps can improve completion by 30-45%.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">How to Decide What to Cut<\/h3>\n\n\n\n<p>For each onboarding step, ask: &quot;Can the app function without this information right now?&quot;<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table>\n<thead>\n<tr>\n<th>Step<\/th>\n<th>Can It Wait?<\/th>\n<th>Decision<\/th>\n<\/tr>\n<\/thead>\n<tbody><tr>\n<td>Email + password<\/td>\n<td>No<\/td>\n<td>Keep<\/td>\n<\/tr>\n<tr>\n<td>Profile photo<\/td>\n<td>Yes<\/td>\n<td>Defer<\/td>\n<\/tr>\n<tr>\n<td>Interests\/preferences<\/td>\n<td>Usually<\/td>\n<td>Defer or infer<\/td>\n<\/tr>\n<tr>\n<td>Phone number<\/td>\n<td>Depends on app<\/td>\n<td>Defer unless required for auth<\/td>\n<\/tr>\n<tr>\n<td>Notification permissions<\/td>\n<td>Yes<\/td>\n<td>Ask later, in context<\/td>\n<\/tr>\n<tr>\n<td>Feature tour<\/td>\n<td>Yes<\/td>\n<td>Use progressive onboarding<\/td>\n<\/tr>\n<tr>\n<td>Survey (&quot;How did you hear about us?&quot;)<\/td>\n<td>Yes<\/td>\n<td>Remove or defer to day 7<\/td>\n<\/tr>\n<\/tbody><\/table><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">The Two-Step Minimum<\/h3>\n\n\n\n<p>The minimum viable onboarding for most apps is:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Account creation (email + password, or social login)<\/li>\n<li>One action that demonstrates core value<\/li>\n<\/ol>\n\n\n\n<p>Everything else can be collected later through profile completion prompts, contextual permission requests, or progressive education.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">2. Offer Guest Access<\/h2>\n\n\n\n<p>Let users explore the app without creating an account. This removes the biggest barrier (commitment) and lets users discover value before investing effort.<\/p>\n\n\n\n<pre><code class=\"language-javascript\">function WelcomeScreen({ onSignUp, onGuest }) {\n  return (\n    &lt;Screen&gt;\n      &lt;Heading&gt;Welcome to [App]&lt;\/Heading&gt;\n\n      &lt;Button primary onPress={onSignUp}&gt;Create Account&lt;\/Button&gt;\n\n      &lt;Button secondary onPress={onGuest}&gt;\n        Browse Without an Account\n      &lt;\/Button&gt;\n\n      &lt;Text style={styles.subtext}&gt;\n        You can create an account anytime to save your progress.\n      &lt;\/Text&gt;\n    &lt;\/Screen&gt;\n  );\n}\n<\/code><\/pre>\n\n\n\n<p>Guest users who find value convert at 30-50% within 7 days. That&#39;s far better than losing them entirely at signup.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Prompt Account Creation at the Right Moment<\/h3>\n\n\n\n<p>Trigger signup when the guest user tries to do something that requires an account:<\/p>\n\n\n\n<pre><code class=\"language-javascript\">const REQUIRES_ACCOUNT = [&#39;save_item&#39;, &#39;purchase&#39;, &#39;share&#39;, &#39;post&#39;, &#39;follow&#39;];\n\nfunction checkAccountRequired(action) {\n  if (user.isGuest &amp;&amp; REQUIRES_ACCOUNT.includes(action)) {\n    pendingAction.save(action);\n    navigation.navigate(&#39;CreateAccount&#39;, {\n      reason: getAccountReason(action),\n    });\n    return true;\n  }\n  return false;\n}\n\nfunction getAccountReason(action) {\n  const reasons = {\n    save_item: &#39;Create an account to save items across devices.&#39;,\n    purchase: &#39;Sign up to complete your purchase.&#39;,\n    share: &#39;Create an account to share with friends.&#39;,\n    post: &#39;Sign up to publish your content.&#39;,\n    follow: &#39;Create an account to follow users.&#39;,\n  };\n  return reasons[action];\n}\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">3. Use Social Login<\/h2>\n\n\n\n<p>Adding Google Sign-In and Apple Sign-In reduces signup friction from &quot;fill out a form&quot; to &quot;tap one button.&quot;<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table>\n<thead>\n<tr>\n<th>Signup Method<\/th>\n<th>Average Completion Time<\/th>\n<th>Drop-Off<\/th>\n<\/tr>\n<\/thead>\n<tbody><tr>\n<td>Email + password form<\/td>\n<td>45-90 seconds<\/td>\n<td>35-50%<\/td>\n<\/tr>\n<tr>\n<td>Social login (Google\/Apple)<\/td>\n<td>5-15 seconds<\/td>\n<td>10-20%<\/td>\n<\/tr>\n<tr>\n<td>Magic link (email)<\/td>\n<td>30-60 seconds<\/td>\n<td>25-35%<\/td>\n<\/tr>\n<\/tbody><\/table><\/figure>\n\n\n\n<p>Offer social login as the primary option, with email as a fallback:<\/p>\n\n\n\n<pre><code class=\"language-javascript\">function SignupScreen({ onComplete }) {\n  return (\n    &lt;Screen&gt;\n      &lt;AppleSignIn onSuccess={onComplete} \/&gt;\n      &lt;GoogleSignIn onSuccess={onComplete} \/&gt;\n\n      &lt;Divider text=&quot;or sign up with email&quot; \/&gt;\n\n      &lt;EmailSignUpForm onComplete={onComplete} \/&gt;\n    &lt;\/Screen&gt;\n  );\n}\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">4. Show Progress<\/h2>\n\n\n\n<p>Users are more likely to complete a process when they can see how far along they are and how much is left.<\/p>\n\n\n\n<pre><code class=\"language-javascript\">function OnboardingProgress({ currentStep, totalSteps }) {\n  return (\n    &lt;View style={styles.progress}&gt;\n      &lt;ProgressBar progress={currentStep \/ totalSteps} \/&gt;\n      &lt;Text&gt;Step {currentStep} of {totalSteps}&lt;\/Text&gt;\n    &lt;\/View&gt;\n  );\n}\n<\/code><\/pre>\n\n\n\n<p>Research on the <a href=\"https:\/\/en.wikipedia.org\/wiki\/Goal_gradient_effect\" rel=\"nofollow noopener\" target=\"_blank\">goal gradient effect<\/a> (studied by Clark Hull in the 1930s) shows that people accelerate their effort as they get closer to a goal. A progress bar leverages this, especially in the final steps.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Endowed Progress<\/h3>\n\n\n\n<p>Start the progress bar at 20-30% instead of 0%. Users feel like they&#39;ve already started and are more motivated to finish:<\/p>\n\n\n\n<pre><code class=\"language-javascript\">function EndowedProgress({ currentStep, totalSteps }) {\n  \/\/ Start at 20%, end at 100%\n  const progress = 0.2 + (currentStep \/ totalSteps) * 0.8;\n\n  return &lt;ProgressBar progress={progress} \/&gt;;\n}\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">5. Pre-Fill with Deep Link Data<\/h2>\n\n\n\n<p>If the user came from a deep link, use the link data to skip questions and pre-fill forms:<\/p>\n\n\n\n<pre><code class=\"language-javascript\">async function initOnboarding() {\n  const deferred = await Tolinku.checkDeferredLink();\n\n  if (deferred) {\n    const params = deferred.params;\n\n    \/\/ Pre-fill and skip based on context\n    if (params.product) {\n      onboardingState.skipCategorySelection = true;\n      onboardingState.selectedCategory = params.product;\n    }\n\n    if (params.ref) {\n      onboardingState.skipReferralQuestion = true;\n      onboardingState.referrer = params.ref;\n    }\n\n    if (params.email) {\n      onboardingState.prefillEmail = params.email;\n    }\n  }\n}\n<\/code><\/pre>\n\n\n\n<p>Every question you don&#39;t need to ask is a step that can&#39;t cause drop-off. For a complete guide on running and measuring onboarding experiments, see <a href=\"https:\/\/tolinku.com\/blog\/onboarding-ab-testing\/\">Onboarding A\/B Testing: What to Test and How<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">6. Delay Permissions<\/h2>\n\n\n\n<p>Asking for push notification, location, or camera permissions during onboarding without context leads to reflexive &quot;Don&#39;t Allow&quot; taps. Instead, ask permissions when the user takes an action that requires them.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Before (Bad)<\/h3>\n\n\n\n<pre><code>Step 1: Welcome\nStep 2: Allow push notifications?  \u2190 40% say no\nStep 3: Allow location access?     \u2190 50% say no\nStep 4: Create account\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">After (Better)<\/h3>\n\n\n\n<pre><code>Step 1: Welcome\nStep 2: Create account\nStep 3: [User tries to track delivery]  \u2192 &quot;Allow location to track your package?&quot;\nStep 4: [User makes first purchase]     \u2192 &quot;Get notified when your order ships?&quot;\n<\/code><\/pre>\n\n\n\n<p>Contextual permission requests have 2-3x higher acceptance rates than upfront asks.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">7. Optimize Form Fields<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Remove Optional Fields<\/h3>\n\n\n\n<p>If a field isn&#39;t required, remove it from onboarding entirely. Collect it later.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Use Smart Defaults<\/h3>\n\n\n\n<pre><code class=\"language-javascript\">function ProfileForm({ context }) {\n  return (\n    &lt;Form&gt;\n      &lt;Input\n        label=&quot;Name&quot;\n        defaultValue={context.socialLoginName || &#39;&#39;}\n      \/&gt;\n      &lt;Select\n        label=&quot;Country&quot;\n        defaultValue={detectCountryFromLocale()}\n      \/&gt;\n      &lt;Select\n        label=&quot;Currency&quot;\n        defaultValue={getCurrencyForCountry(detectCountryFromLocale())}\n      \/&gt;\n    &lt;\/Form&gt;\n  );\n}\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Use Input Types That Speed Up Entry<\/h3>\n\n\n\n<pre><code class=\"language-javascript\">\/\/ Use appropriate keyboard types\n&lt;Input label=&quot;Email&quot; keyboardType=&quot;email-address&quot; autoComplete=&quot;email&quot; \/&gt;\n&lt;Input label=&quot;Phone&quot; keyboardType=&quot;phone-pad&quot; autoComplete=&quot;tel&quot; \/&gt;\n&lt;Input label=&quot;ZIP&quot; keyboardType=&quot;number-pad&quot; maxLength={5} \/&gt;\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">8. Add Motivational Copy<\/h2>\n\n\n\n<p>Replace generic instructions with copy that motivates:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table>\n<thead>\n<tr>\n<th>Generic<\/th>\n<th>Motivational<\/th>\n<\/tr>\n<\/thead>\n<tbody><tr>\n<td>&quot;Enter your email&quot;<\/td>\n<td>&quot;Where should we send your order updates?&quot;<\/td>\n<\/tr>\n<tr>\n<td>&quot;Create a password&quot;<\/td>\n<td>&quot;Secure your account&quot;<\/td>\n<\/tr>\n<tr>\n<td>&quot;Set up your profile&quot;<\/td>\n<td>&quot;Let others know who you are&quot;<\/td>\n<\/tr>\n<tr>\n<td>&quot;Select your interests&quot;<\/td>\n<td>&quot;We&#39;ll personalize your feed based on this&quot;<\/td>\n<\/tr>\n<tr>\n<td>&quot;Step 3 of 5&quot;<\/td>\n<td>&quot;Almost there, just 2 more steps&quot;<\/td>\n<\/tr>\n<\/tbody><\/table><\/figure>\n\n\n\n<p>Each field label is an opportunity to explain why the user should care.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">9. Handle Errors Gracefully<\/h2>\n\n\n\n<p>Form errors are a major drop-off cause. Users who see an error message are 2x more likely to abandon than users who don&#39;t.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Inline Validation<\/h3>\n\n\n\n<p>Validate as the user types, not after they submit:<\/p>\n\n\n\n<pre><code class=\"language-javascript\">function EmailInput({ value, onChange }) {\n  const [error, setError] = useState(null);\n\n  function validate(email) {\n    if (email.length &gt; 0 &amp;&amp; isValidEmail(email) === false) {\n      setError(&#39;Please enter a valid email address&#39;);\n    } else {\n      setError(null);\n    }\n  }\n\n  return (\n    &lt;View&gt;\n      &lt;Input\n        label=&quot;Email&quot;\n        value={value}\n        onChange={(v) =&gt; { onChange(v); validate(v); }}\n        error={error}\n      \/&gt;\n    &lt;\/View&gt;\n  );\n}\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Password Requirements<\/h3>\n\n\n\n<p>Show password requirements as a checklist that updates in real time instead of showing a single error message after submission:<\/p>\n\n\n\n<pre><code class=\"language-javascript\">function PasswordStrength({ password }) {\n  const checks = [\n    { label: &#39;At least 8 characters&#39;, met: password.length &gt;= 8 },\n    { label: &#39;Contains a number&#39;, met: \/\\d\/.test(password) },\n    { label: &#39;Contains a letter&#39;, met: \/[a-zA-Z]\/.test(password) },\n  ];\n\n  return (\n    &lt;View&gt;\n      {checks.map(check =&gt; (\n        &lt;Row key={check.label}&gt;\n          &lt;Icon name={check.met ? &#39;check&#39; : &#39;circle&#39;} color={check.met ? &#39;green&#39; : &#39;gray&#39;} \/&gt;\n          &lt;Text&gt;{check.label}&lt;\/Text&gt;\n        &lt;\/Row&gt;\n      ))}\n    &lt;\/View&gt;\n  );\n}\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">10. Re-Engage with Deep Links<\/h2>\n\n\n\n<p>For users who drop off mid-onboarding, use push notifications and emails with deep links to bring them back:<\/p>\n\n\n\n<pre><code class=\"language-javascript\">async function reengageIncompleteUser(user) {\n  const nextStep = getNextIncompleteStep(user);\n  const deepLink = `https:\/\/go.yourapp.com\/onboarding\/${nextStep}`;\n\n  \/\/ Wait 24 hours before re-engaging\n  if (hoursSince(user.lastActiveAt) &lt; 24) return;\n\n  \/\/ Push notification\n  await sendPush(user.id, {\n    title: &#39;Finish setting up your account&#39;,\n    body: getReminderMessage(nextStep),\n    data: { deepLink },\n  });\n}\n\nfunction getReminderMessage(step) {\n  const messages = {\n    profile: &#39;Just add your name and you are ready to go.&#39;,\n    preferences: &#39;Tell us what you like so we can personalize your experience.&#39;,\n    first_action: &#39;Create your first project in under a minute.&#39;,\n  };\n  return messages[step] || &#39;Pick up where you left off.&#39;;\n}\n<\/code><\/pre>\n\n\n\n<p>The deep link takes the user directly to their next incomplete step, not back to the beginning. Starting over is a guaranteed drop-off.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Re-Engagement Timing<\/h3>\n\n\n\n<figure class=\"wp-block-table\"><table>\n<thead>\n<tr>\n<th>Channel<\/th>\n<th>When to Send<\/th>\n<th>Expected Recovery Rate<\/th>\n<\/tr>\n<\/thead>\n<tbody><tr>\n<td>Push notification<\/td>\n<td>24 hours after drop-off<\/td>\n<td>5-10%<\/td>\n<\/tr>\n<tr>\n<td>Email<\/td>\n<td>48 hours after drop-off<\/td>\n<td>3-7%<\/td>\n<\/tr>\n<tr>\n<td>Push + email combo<\/td>\n<td>24h push, 72h email<\/td>\n<td>8-15%<\/td>\n<\/tr>\n<tr>\n<td>In-app message (next session)<\/td>\n<td>Next app open<\/td>\n<td>15-25%<\/td>\n<\/tr>\n<\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Measuring the Impact<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Before\/After Tracking<\/h3>\n\n\n\n<pre><code class=\"language-javascript\">\/\/ Track each strategy&#39;s impact\nanalytics.track(&#39;onboarding_experiment&#39;, {\n  strategy: &#39;reduced_steps&#39;, \/\/ or &#39;guest_access&#39;, &#39;social_login&#39;, etc.\n  variant: &#39;treatment&#39;, \/\/ or &#39;control&#39;\n  stepReached: &#39;signup_completed&#39;,\n  completedOnboarding: true,\n  timeToComplete: 145, \/\/ seconds\n  source: &#39;organic&#39;,\n});\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Expected Impact Summary<\/h3>\n\n\n\n<figure class=\"wp-block-table\"><table>\n<thead>\n<tr>\n<th>Strategy<\/th>\n<th>Typical Lift<\/th>\n<th>Implementation Effort<\/th>\n<\/tr>\n<\/thead>\n<tbody><tr>\n<td>Cut steps (7 to 4)<\/td>\n<td>+25-40%<\/td>\n<td>Low<\/td>\n<\/tr>\n<tr>\n<td>Guest access<\/td>\n<td>+20-30%<\/td>\n<td>Medium<\/td>\n<\/tr>\n<tr>\n<td>Social login<\/td>\n<td>+15-25%<\/td>\n<td>Medium<\/td>\n<\/tr>\n<tr>\n<td>Progress bar<\/td>\n<td>+5-10%<\/td>\n<td>Low<\/td>\n<\/tr>\n<tr>\n<td>Deep link pre-fill<\/td>\n<td>+10-15%<\/td>\n<td>Medium<\/td>\n<\/tr>\n<tr>\n<td>Delayed permissions<\/td>\n<td>+10-15%<\/td>\n<td>Low<\/td>\n<\/tr>\n<tr>\n<td>Optimized forms<\/td>\n<td>+5-10%<\/td>\n<td>Low<\/td>\n<\/tr>\n<tr>\n<td>Better copy<\/td>\n<td>+3-8%<\/td>\n<td>Low<\/td>\n<\/tr>\n<tr>\n<td>Graceful errors<\/td>\n<td>+5-10%<\/td>\n<td>Low<\/td>\n<\/tr>\n<tr>\n<td>Re-engagement deep links<\/td>\n<td>+5-10% (recovered)<\/td>\n<td>Medium<\/td>\n<\/tr>\n<\/tbody><\/table><\/figure>\n\n\n\n<p>These improvements compound. Implementing 3-4 strategies can double your <a href=\"https:\/\/tolinku.com\/blog\/onboarding-completion-rates\/\">onboarding completion rate<\/a>.<\/p>\n\n\n\n<p>For deep linking features, see <a href=\"https:\/\/tolinku.com\/features\/deep-linking\">Tolinku deep linking<\/a>. For onboarding use cases, see the <a href=\"https:\/\/tolinku.com\/docs\/use-cases\/onboarding\/\">onboarding documentation<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Cut onboarding drop-off with proven strategies. From shorter forms to deep link re-engagement, these techniques keep users moving through your funnel.<\/p>\n","protected":false},"author":2,"featured_media":980,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"rank_math_title":"Reducing Onboarding Drop-Off: 10 Proven Strategies","rank_math_description":"Cut onboarding drop-off with proven strategies. From shorter forms to deep link re-engagement, these techniques keep users moving through your funnel.","rank_math_focus_keyword":"reduce onboarding drop-off","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-reducing-onboarding-dropoff.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-reducing-onboarding-dropoff.png","footnotes":""},"categories":[18],"tags":[191,20,223,224,113,69,27,47,33],"class_list":["post-981","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-use-cases","tag-conversions","tag-deep-linking","tag-engagement","tag-funnel-optimization","tag-growth","tag-mobile-development","tag-onboarding","tag-retention","tag-user-experience"],"_links":{"self":[{"href":"https:\/\/tolinku.com\/blog\/wp-json\/wp\/v2\/posts\/981","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=981"}],"version-history":[{"count":4,"href":"https:\/\/tolinku.com\/blog\/wp-json\/wp\/v2\/posts\/981\/revisions"}],"predecessor-version":[{"id":2829,"href":"https:\/\/tolinku.com\/blog\/wp-json\/wp\/v2\/posts\/981\/revisions\/2829"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/tolinku.com\/blog\/wp-json\/wp\/v2\/media\/980"}],"wp:attachment":[{"href":"https:\/\/tolinku.com\/blog\/wp-json\/wp\/v2\/media?parent=981"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/tolinku.com\/blog\/wp-json\/wp\/v2\/categories?post=981"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/tolinku.com\/blog\/wp-json\/wp\/v2\/tags?post=981"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}