[No QA] Docs: fix broken links, filenames, duplicate text, and expand SEO keywords - #84470
Conversation
…words Fixes broken internal links across 10+ articles (incorrect paths to Contact-Methods, Enable-Global-Reimbursement, Automatically-submit-employee-reports), removes a filename with an extra space, cleans up duplicated navigation phrases and stray artifact text, and expands frontmatter keywords for Copilot, Per Diem, Merge, Contact Methods, and Auto Submit articles to improve help-site search discoverability. Co-authored-by: Stephanie Elliott <stephanieelliott@users.noreply.github.com>
Concierge reviewer checklist:
For more detailed instructions on completing this checklist, see How do I review a HelpDot PR as a Concierge Team member? |
|
@brianlee-expensify Please copy/paste the Reviewer Checklist from here into a new comment on this PR and complete it. If you have the K2 extension, you can simply click: [this button] |
| title: Managing Contact Methods in Expensify | ||
| description: Learn how to update or add an Email address and manage devices tied to your Expensify account. | ||
| description: Learn how to add email addresses or phone numbers as contact methods, change your primary login, and manage devices tied to your Expensify account. | ||
| keywords: [Expensify Classic, contact method, secondary login, add email, change email, primary email, additional email, phone number, login methods, multiple logins, change primary email] |
There was a problem hiding this comment.
AI Readiness violation (missing metadata): This file is adding keywords but is still missing the required internalScope field. Every article should include an internalScope entry in its YAML frontmatter to define audience and scope boundaries. Consider adding:
internalScope: Audience is all members. Covers how to add, change, and remove contact methods (email and phone) in Expensify Classic. Does not cover domain-level email enforcement or SSO configuration.
| title: Delegate When Out of Office | ||
| description: Assign a vacation delegate to act on your behalf or on behalf of another employee | ||
| keywords: [Expensify Classic, delegate approvals, out-of-office approver] | ||
| keywords: [Expensify Classic, delegate approvals, out-of-office approver, vacation, out of office, approval delegation, temporary delegate, vacation delegate, copilot vs delegate] |
There was a problem hiding this comment.
AI Readiness violation (missing metadata): Since this file's YAML metadata is being updated with expanded keywords, consider also adding the required internalScope field. For example:
internalScope: Audience is all members and Domain Admins. Covers how to assign and remove a Vacation Delegate in Expensify Classic. Does not cover Copilot access or approval routing configuration.
| title: Delegate When Out of Office | ||
| description: Assign a vacation delegate to approve reports on your behalf while you're away. | ||
| keywords: [New Expensify, delegate approvals, out-of-office approver] | ||
| keywords: [New Expensify, delegate approvals, out-of-office approver, vacation, out of office, approval delegation, temporary delegate, vacation delegate, copilot vs delegate] |
There was a problem hiding this comment.
AI Readiness violation (missing metadata): Since this file's YAML metadata is being updated with expanded keywords, consider also adding the required internalScope field. For example:
internalScope: Audience is all members. Covers how to assign and remove a Vacation Delegate in New Expensify. Does not cover Copilot access or approval workflow configuration.
| title: Copilot Access | ||
| description: How to add a Copilot or act as a Copilot for delegated account access | ||
| keywords: [New Expensify, copilot, delegated access, switch accounts, expense management, account assistant, view user account, expense forwarding] | ||
| keywords: [New Expensify, copilot, copilot access, delegated access, switch accounts, expense management, account assistant, view user account, expense forwarding, full access, limited access, account delegation, share account, behalf of, proxy access] |
There was a problem hiding this comment.
AI Readiness violation (missing metadata): Since this file's YAML metadata is being updated with expanded keywords, consider also adding the required internalScope field. For example:
internalScope: Audience is all members. Covers how to add, remove, and switch between Copilot accounts in New Expensify. Does not cover Vacation Delegate setup or workspace-level permissions.
| description: Allow employees to add per diem expenses | ||
| keywords: [Expensify Classic, per diem] | ||
| description: Learn how to enable per diem expenses and import daily allowance rates for meals, lodging, and travel in an Expensify Classic workspace. | ||
| keywords: [Expensify Classic, per diem, per diem rates, enable per diem, daily allowance, meal allowance, travel allowance, fixed daily rate, per diem setup, configure per diem, import per diem rates, business travel expenses, lodging allowance] |
There was a problem hiding this comment.
AI Readiness violation (missing metadata): Since this file's YAML metadata is being updated with a new description and expanded keywords, consider also adding the required internalScope field. For example:
internalScope: Audience is Workspace Admins. Covers how to enable per diem expenses and import per diem rates in Expensify Classic. Does not cover how members submit per diem expenses or per diem policy rules.
| title: Manage Duplicate Expenses | ||
| description: Learn how to identify and resolve potential duplicate expenses in New Expensify using the built-in Duplicate Detection tool. | ||
| keywords: [New Expensify, duplicate expense, review duplicate, expense on hold, resolve duplicates, flagged request, Collect plan, Control plan] | ||
| keywords: [New Expensify, duplicate expense, review duplicate, expense on hold, resolve duplicates, flagged request, Collect plan, Control plan, merge expenses, avoiding duplicates, duplicate detection] |
There was a problem hiding this comment.
AI Readiness violation (missing metadata): Since this file's YAML metadata is being updated with expanded keywords, consider also adding the required internalScope field. For example:
internalScope: Audience is all members and approvers. Covers how to identify and resolve duplicate expenses in New Expensify. Does not cover SmartScan automation logic or expense deletion workflows.
| title: Merge Accounts | ||
| description: Learn how to merge two Expensify accounts into one and keep all your data in a single login. | ||
| keywords: [Expensify Classic, merge accounts, combine logins, consolidate email addresses, multiple accounts] | ||
| keywords: [Expensify Classic, merge accounts, combine logins, consolidate email addresses, multiple accounts, combine accounts, link accounts, two Expensify accounts, consolidate accounts, merge Expensify accounts] |
There was a problem hiding this comment.
AI Readiness violation (missing metadata): Since this file's YAML metadata is being updated with expanded keywords, consider also adding the required internalScope field. For example:
internalScope: Audience is all members. Covers how to merge two Expensify accounts in Expensify Classic. Does not cover contact method management or domain migration.
HelpDot Documentation ReviewOverall AssessmentThis PR is a well-scoped maintenance pass across 25 documentation files. The changes fall into four clear categories: (1) fixing broken internal links to match actual file paths, (2) correcting a filename with an errant space, (3) removing duplicate text lines and stray markup, and (4) expanding SEO keywords and improving YAML metadata. The vast majority of changes are correct and beneficial. A small number of inconsistencies in the proposed changes are worth addressing before merge. Scores Summary
Key FindingsIssues to address:
Positive aspects:
Recommendations
Files Reviewed
This review assessed only the proposed changes in the diff, not unchanged content. |
|
@ChavdaSachin Please copy/paste the Reviewer Checklist from here into a new comment on this PR and complete it. If you have the K2 extension, you can simply click: [this button] NOTE: It looks like |
…or-remove-a-Copilot.md Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
…ment-Settings.md Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Merge main into my branch
|
@MelvinBot can you help me resolve the build error? I don't see any double commas in redirects.csv |
The redirect entry for the renamed Export-Expenses file was using file paths instead of URLs, which fails the verifyRedirect.sh validation. Also updated an existing redirect (line 762) to point to the new URL without the space. Co-authored-by: Stephanie Elliott <stephanieelliott@users.noreply.github.com>
|
Fixed the failing Root cause: The redirect entry on line 909 used raw file paths ( What I changed:
|
|
🚀 Deployed to staging by https://github.com/brianlee-expensify in version: 9.3.35-0 🚀
|
|
🚀 Deployed to production by https://github.com/luacmartins in version: 9.3.35-1 🚀
|
Explanation of Change
This PR addresses items 5–21 from the documentation audit in Expensify/Expensify#606974 (excluding items 1–4 under "Copy-paste errors in Global Reimbursement docs" which were already fixed separately). Changes fall into four categories:
Broken filenames (items 5–6):
Export- Expenses-from-the-Expenses-Page.md→Export-Expenses-from-the-Expenses-Page.md(extra space produced a broken URL slug)title: Personal-Expense-Rules.md) was already fixed on mainBroken internal links (items 7–17):
Contact-Methods(wasChange-or-add-email-address)Enable-Global-Reimbursement(wasGlobal-Reimbursements)Automatically-submit-employee-reports(wasScheduled-Submit)Merge-Accountscasing (Merge-accounts→Merge-Accounts)#submission-frequency→#how-to-set-a-submission-frequencyDuplicated text and stray artifacts (items 18–21):
Copilot-Access.mdHow-to-Set-Up-Automatic-Report-Submissions.mdConfigure-Reimbursement-Settings.mdReimbursement-Payment-Methods.mdSEO keyword expansion (High Priority items from analysis):
keywordsfield toContact-Methods.md(was completely absent)<div>wrapper from NEDelegate-when-out-of-office.mdFixed Issues
$ https://github.com/Expensify/Expensify/issues/606974
Tests
Offline tests
N/A — documentation-only changes, no runtime behavior affected.
QA Steps
PR Author Checklist
### Fixed Issuessection aboveTestssectionOffline stepssectionQA stepssectiontoggleReportand notonIconClick)src/languages/*files and using the translation methodSTYLE.md) were followedAvatar, I verified the components usingAvatarare working as expected)StyleUtils.getBackgroundAndBorderStyle(theme.componentBG))npm run compress-svg)Avataris modified, I verified thatAvataris working as expected in all cases)Designlabel and/or tagged@Expensify/designso the design team can review the changes.ScrollViewcomponent to make it scrollable when more elements are added to the page.mainbranch was merged into this PR after a review, I tested again and verified the outcome was still expected according to theTeststeps.Screenshots/Videos
Android: Native
N/A — documentation-only changes
Android: mWeb Chrome
N/A — documentation-only changes
iOS: Native
N/A — documentation-only changes
iOS: mWeb Safari
N/A — documentation-only changes
MacOS: Chrome / Safari
N/A — documentation-only changes