Skip to content

[No QA] Docs updates for E/A#96912 optional Card name column for CSV import - #97143

Merged
stephanieelliott merged 2 commits into
mainfrom
jpersaud-docs-csv-card-name-match
Jul 27, 2026
Merged

stephanieelliott merged 2 commits into
mainfrom
jpersaud-docs-csv-card-name-match

Conversation

@MelvinBot

Copy link
Copy Markdown
Contributor

Explanation of Change

Updates the help-site article Import Company Card Transactions From a Spreadsheet to reflect #96912, which adds an optional Card name column to the NewDot company-card CSV import mapping step. Card identity is now either/or — a feed can map a Card number or a Card name (at least one required), instead of always requiring a card number.

What changed in the doc

  • Field mappings step: now explains that you map either a Card number or a Card name (at least one required) so transactions can be matched to a card.
  • "What columns are required" FAQ: rewritten so the card-identity column is either/or, and removed the outdated "Card Number required" wording.
  • New FAQ — "How does matching transactions by card name work?": explains that a Card name column matches each transaction to the assigned card of that name, and that a row with an unmatched card name isn't imported.
  • "Oops!" empty-values FAQ: updated to mention that the mapped Card number or Card name column must not contain empty cells.

UI labels were verified against src/languages/en.ts in #96912 — the mapping options are Card number and Card name (sentence case).

Related PR


@justinpersaud, please review the files changed and confirm they reflect the current behavior. Then post a new comment saying @MelvinBot mark this PR as ready for review.

Co-authored-by: Justin Persaud <justinpersaud@users.noreply.github.com>
@MelvinBot MelvinBot added the HelpDot Apply this label if the issue relates to ExpensifyHelp label Jul 27, 2026
@justinpersaud
justinpersaud marked this pull request as ready for review July 27, 2026 19:26
6. Choose the CSV, TXT, XLS, or XLSX file you want to upload.
7. Enter a name for the card feed.
8. Set your field mappings (e.g., Card Number, Date, Amount, Merchant).
8. Set your field mappings. Map either a **Card number** or a **Card name** (at least one is required so each transaction can be matched to a card), along with **Date**, **Merchant**, **Amount**, and **Currency**.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Step formatting: Per HELP_AUTHORING_GUIDELINES.md Section 5, steps must be clear and action-oriented. This step packs a full explanation (the parenthetical rationale about matching) into a single numbered action, which weakens scannability. Keep the step to the action (e.g. Set your field mappings, mapping either a **Card number** or a **Card name**, along with **Date**, **Merchant**, and **Amount**.) and move the "at least one is required so each transaction can be matched" explanation to prose or the FAQ section below.


## How does matching transactions by card name work?

Instead of a card number, you can map a **Card name** column, and Expensify will match each transaction to the assigned card whose name matches the value in that column. If a row's card name doesn't match an assigned card, that transaction won't be imported. You only need one card-identity column, so map a **Card number** column instead if you'd rather match by number.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

UI referencing / consistency: This sentence uses lowercase "card number" while the same UI label is written as the bold Card number column elsewhere in this section. Per HELPSITE_NAMING_CONVENTIONS.md (exact UI referencing + Deterministic Writing Rule), reference the label consistently: use Card number here to match.

@github-actions

Copy link
Copy Markdown
Contributor

HelpDot Documentation Review

Overall Assessment

This PR updates the company card spreadsheet import article to document that transactions can be matched by either a Card number or a Card name column (at least one required). It updates the import step, the "required columns" FAQ, and the "Oops!" error FAQ, and adds a new task-based FAQ explaining card-name matching. The changes are accurate, well-scoped to a single workflow, and improve on the prior text.

Scores Summary

  • Readability: 8/10 - Clear and actionable. The new card-name matching FAQ is easy to follow. A couple of the revised sentences are em-dash heavy (the "required columns" and "Oops!" answers), which slightly reduces scannability.
  • AI Readiness: 9/10 - The new heading "How does matching transactions by card name work?" is task-based, question-led, feature-specific, and uses UI-exact labels. Heading hierarchy stays correct (only H1 and H2), and frontmatter (including internalScope) is unchanged and intact.
  • Style Compliance: 8/10 - Good improvements: field names are now bolded and corrected to Sentence case (Card number vs. the old "Card Number"), matching the naming conventions. Minor inconsistency: in the "What columns are required" list, Card number/Card name are bolded while Date, Merchant, Amount, and Currency are not.

Key Findings

  • Positive: Casing fix from "Card Number" to Card number aligns with Sentence-case UI referencing rules.
  • Positive: The new FAQ is genuinely task-based and searchable, and correctly explains the match behavior and the one-identity-column requirement.
  • Positive: The "Oops!" FAQ was updated consistently with the new card-identity logic.
  • Minor: Bolding is inconsistent within the "required columns" list (some field labels bolded, others plain). Apply bolding consistently to all UI field labels for uniformity.

Recommendations

  • For consistency, bold all UI field labels in the "What columns are required" list (Date, Merchant, Amount, Currency) to match the bolded Card number/Card name.
  • Optional: tighten the em-dash-heavy sentences in the "required columns" and "Oops!" answers for readability.

Files Reviewed

  • docs/articles/new-expensify/connect-credit-cards/Import-Company-Card-Transactions-From-a-Spreadsheet.md - Accurate, well-scoped update; minor bolding-consistency nit only.

Note: This is a summary review; the changes are small and self-contained.

6. Choose the CSV, TXT, XLS, or XLSX file you want to upload.
7. Enter a name for the card feed.
8. Set your field mappings (e.g., Card Number, Date, Amount, Merchant).
8. Set your field mappings. Map either a **Card number** or a **Card name** (at least one is required so each transaction can be matched to a card), along with **Date**, **Merchant**, **Amount**, and **Currency**.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Step formatting: Per HELP_AUTHORING_GUIDELINES.md Section 5, steps must be clear and action-oriented. This step packs a full explanation (the parenthetical rationale about matching) into a single numbered action, which weakens scannability. Keep the step to the action (e.g. Set your field mappings, mapping either a **Card number** or a **Card name**, along with **Date**, **Merchant**, and **Amount**.) and move the "at least one is required so each transaction can be matched" explanation to prose or the FAQ section below.


## How does matching transactions by card name work?

Instead of a card number, you can map a **Card name** column, and Expensify will match each transaction to the assigned card whose name matches the value in that column. If a row's card name doesn't match an assigned card, that transaction won't be imported. You only need one card-identity column, so map a **Card number** column instead if you'd rather match by number.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

UI referencing / consistency: This sentence uses lowercase "card number" while the same UI label is written as the bold Card number column elsewhere in this section. Per HELPSITE_NAMING_CONVENTIONS.md (exact UI referencing + Deterministic Writing Rule), reference the label consistently: use Card number here to match.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 176a1894de

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".


## How does matching transactions by card name work?

Instead of a card number, you can map a **Card name** column, and Expensify will match each transaction to the assigned card whose name matches the value in that column. If a row's card name doesn't match an assigned card, that transaction won't be imported. You only need one card-identity column, so map a **Card number** column instead if you'd rather match by number.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Correct the claim that card names must match assigned cards

For a new CSV feed, no cards are assigned when this mapping is performed; imported card identifiers are exposed as unassigned entries for assignment after upload (buildCompanyCardEntries() adds names from cardList/accountList in src/hooks/useCompanyCards.ts). Therefore, a new Card name value does not need to match an already-assigned card and is not discarded merely because it is unmatched. This FAQ may make admins believe they must pre-create or rename cards before importing; describe the value as identifying/grouping a feed card that can subsequently be assigned.

Useful? React with 👍 / 👎.

@justinpersaud

Copy link
Copy Markdown
Contributor

@MelvinBot address review feedback

…label, correct card-name matching FAQ

Co-authored-by: Justin Persaud <justinpersaud@users.noreply.github.com>
@MelvinBot

Copy link
Copy Markdown
Contributor Author

Addressed the review feedback in 0a485dc:

  • Step formatting — Trimmed the field-mappings step to a single action and moved the "at least one required" rationale to prose below the steps (Import-Company-Card-Transactions-From-a-Spreadsheet.md:33).
  • UI referencing — Changed the lowercase "card number" to the bold Card number label for consistency (:95).
  • P2 — card-name matching claim — Corrected. Verified against buildCompanyCardEntries() in useCompanyCards.ts, which exposes imported identifiers as unassigned entries (isAssigned: false) for assignment after upload — consistent with the doc's own step 9. The FAQ now says a Card name value identifies/groups a feed card that you assign afterward, rather than needing to match an already-assigned card.

Ready for another look.

@github-actions github-actions Bot changed the title Docs updates for E/A#96912 optional Card name column for CSV import [No QA] Docs updates for E/A#96912 optional Card name column for CSV import Jul 27, 2026
@OSBotify

Copy link
Copy Markdown
Contributor

A preview of your ExpensifyHelp changes have been deployed to https://0c7aaea3.helpdot.pages.dev ⚡️

Updated articles:

@stephanieelliott
stephanieelliott merged commit dcb4a02 into main Jul 27, 2026
14 checks passed
@stephanieelliott
stephanieelliott deleted the jpersaud-docs-csv-card-name-match branch July 27, 2026 22:00
@OSBotify

Copy link
Copy Markdown
Contributor

🚀 Deployed to staging by https://github.com/stephanieelliott in version: 9.4.46-0 🚀

platform result
🕸 web 🕸 success ✅
🤖 android 🤖 success ✅
🍎 iOS 🍎 success ✅

@OSBotify

Copy link
Copy Markdown
Contributor

🚀 Deployed to production by https://github.com/marcaaron in version: 9.4.46-10 🚀

platform result
🕸 web 🕸 success ✅
🤖 android 🤖 success ✅
🍎 iOS 🍎 success ✅

Bundle Size Analysis (Sentry):

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

HelpDot Apply this label if the issue relates to ExpensifyHelp

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants