ArchitectureUI glossary: one name per concept, in the web app and in the Chrome extension

UI glossary: one name per concept, in the web app and in the Chrome extension

The web app and the BoostEcom Spy extension show the same store records. A reader who sees "Similar Shops" in one and "Similar stores" in the other has to wonder whether they are two features. This file fixes ONE name…

The web app and the BoostEcom Spy extension show the same store records. A reader who sees "Similar Shops" in one and "Similar stores" in the other has to wonder whether they are two features. This file fixes ONE name per concept, in English and French (the extension ships those two languages; the web app ships six, whose translations already follow the same concept).

Rules used to decide:

  • The web app is the product; the extension is a companion. Where the app already has a consistent name, the extension adopts it.
  • Where the app itself is inconsistent, the term with the most uses, the closest to the data field and to the platform's own vocabulary wins.
  • American English, Shopify lexicon ("store", not "shop"), sentence case for labels ("Active ads", not "Active Ads"). Sentence case is enforced by pnpm copy:case on the web app.
  • A concept keeps its name in prose too, unless the sentence needs a description rather than the feature name.

Canonical names

ConceptENFRRejected variantsWhy
Lookalike stores of a storeSimilar storesBoutiques similairesSimilar Shops"Store" is the lexicon; the app's own tool names, the extension and the data field (similar_stores) already say it.
Apps detected on a storefrontShopify appsApps ShopifyApps, Applications, Shopify AppsNames what the list is (a bare "Apps" is ambiguous next to the marketplace). The app's store record, its empty states and the marketplace nav already use it.
Ad, analytics and pixel tags detected on a storefrontPixelsPixelsTracking pixels, Pixels de suiviShort label already used by the app's detail view, the Store Spy filters and the field list. "Tracking pixel" stays fine in running prose.
Ads the library shows as running nowActive adsPubs activesLive Ads, Publicités actives, Annonces activesMatches the Ad Library vocabulary, the data field (active_creatives), the public pages and the extension. One FR short form for labels.
The platform's store index (search, filter, rank, open a store record)Store SpyVeille boutiquesStores Spy, Spy (alone)Singular, like "Brand Tracker". The FR navigation already calls it "Veille boutiques". The extension itself is "BoostEcom Spy" and its tab may be labelled "Spy"; any sentence that points to the platform's index says "Store Spy".
Shared, server-side competitor watchlist with digestsBrand TrackerSuivi de marquesTeam competitor tracking, Suivi concurrentiel de l'équipe, WatchlistThe app's navigation, row actions and digest emails.
Add a store to the Brand TrackerTrack in Brand TrackerAjouter au suivi de marquesTrack this website, Suivre ce siteRow action in the app.
Remove a store from the Brand TrackerUntrack this storeNe plus suivre cette boutiqueStop tracking, Arrêter le suiviRow action in the app.
Browser-only bookmark kept in the extension's LibrarySave locallyEnregistrer localementSave this store, Save this website, Mettre de côté, Enregistrer iciThe word "locally" is what separates it from the Brand Tracker, which is shared and server-side. Saved state: "Saved locally" / "Enregistré localement".

The two "save" actions must never share a name. "Save locally" never leaves the browser (unless the user pushes the library to the cloud); "Track in Brand Tracker" writes to the team's list on the platform.

Words that are NOT the same thing (do not unify)

TermMeaningKeep
BoostEcom SpyThe Chrome extension (product name, in legal pages and the Web Store).Always the full name when naming the extension.
Spy Intelligence, Spy brief, Spy recordThe extension's feature family and its briefs.Untouched; they name the companion product.
Active ads vs Total adsRunning now vs held by the library. Two different numbers.Both, never one for the other.
Estimate vs MeasuredA modelled figure vs a disclosed one (see the contract below).Always the word that says which.

Applied in the web app (this change)

Message keys in messages/*.json; English and French changed, the four other locales already used the equivalent term (German "Aktive Anzeigen", Spanish "Anuncios activos", Portuguese "Anúncios ativos"). Italian keeps "Inserzioni attive" inside the store detail panel for internal consistency with its other labels there.

KeyEN beforeEN afterFR beforeFR after
hub.intelDetail.similarShopsSimilar ShopsSimilar stores(unchanged)Boutiques similaires
hub.intelDetail.noSimilarShopsNo similar shops indexed yetNo similar stores indexed yet(unchanged)Aucune boutique similaire indexée pour l'instant
hub.intelDetail.shopifyAppsShopify AppsShopify appsApps ShopifyApps Shopify
hub.marketplace.nav.install.subs.apps.labelShopify AppsShopify appsApps ShopifyApps Shopify
hub.intelDetail.liveAdsLive AdsActive adsPublicités activesPubs actives
hub.intelDetail.liveAdsOverTimeLive Ads Over TimeActive ads over timeÉvolution des publicités activesÉvolution des pubs actives
hub.intelDetail.historicLiveAdsHistoric of Live AdsActive ads historyHistorique des publicités activesHistorique des pubs actives
hub.intelDetail.activeAds{count} Active Ads{count} active ads{count} pubs actives{count} pubs actives
hub.intelDetail.backBack to Stores SpyBack to Store SpyRetour à la veille boutiquesRetour à la veille boutiques
hub.marketplace.nav.intel.subs.intelStores.labelStores SpyStore SpyVeille boutiquesVeille boutiques
watchDigest.adsUp, adsDown, adsLocked, board.minAds, board.sortLiveAds, board.sortLiveAdsDelta, board.tipAds"Live ads ...""Active ads ...""Annonces actives ...""Pubs actives ..."
spyFinish.adPeakHint, peakHeaderTip, legend.metric.ads, legend.ads"live ads""active ads"(already "pubs actives")(unchanged)
directories.directory.row.ads, directories.dossier.bands.ads.label(already "Active ads")(unchanged)Publicités activesPubs actives
savedSearches.email.subject, eyebrow, ctaStore Spy(unchanged)Store SpyVeille boutiques
directories.directory.method.items.bands.textStore Spy(unchanged)Store Spyveille boutiques

Known residuals, deliberately left: German, Spanish, Italian and Portuguese emails and directory text still say "Store Spy" as a proper noun (those four locales have no extension counterpart); src/services/discovery/categories.ts carries the literal label "Top Shopify Apps" (a ranking title, not a UI label); marketing prose that says "tracking pixels" in a sentence.

Extension keys to change (for the extension agent)

File: _locales/en/messages.json and _locales/fr/messages.json. Change the message value only; keep the key name (renaming trackerOff and friends would break stored references and tests for no gain). Every t("key", "fallback") call in sidebar/*.js and ui/*.js whose fallback string repeats an old value must change with it.

Shopify apps

KeyEN nowEN newFR nowFR new
intelAppsAppsShopify appsAppsApps Shopify
briefAppsAppsShopify appsApplicationsApps Shopify

Pixels

KeyEN nowEN newFR nowFR new
intelPixelsTracking pixelsPixelsPixels de suiviPixels
briefPixelsTracking pixelsPixelsPixels de suiviPixels
intelNoPixelsNo tracking pixels observed in SpyNo pixels observed in Store SpyAucun pixel observé dans SpyAucun pixel observé dans la veille boutiques
localNoPixelsNo tracking pixel recognised on this pageNo pixel recognized on this pageAucun pixel de suivi reconnu sur cette pageAucun pixel reconnu sur cette page

Active ads

KeyEN nowEN newFR nowFR new
intelActiveAdsTitleActive AdsActive adsPubs actives(unchanged)

(intelAds and intelAdsPageAds already match.)

Store Spy (sentences that point to the platform's index)

The tab label "Spy" and the names "BoostEcom Spy", "Spy Intelligence", "Spy brief" stay. Change only where the text names the platform's store index.

KeyEN nowEN newFR nowFR new
pageSpyPixelsSeeOpen SpyOpen Store SpyOuvrir SpyOuvrir la veille boutiques
intelNotIndexedThis store isn’t in Spy yet.This store isn’t in Store Spy yet.Cette boutique n’est pas encore dans Spy.Cette boutique n’est pas encore dans la veille boutiques.
metricScriptsHintThird-party hosts on this tab. Not the Shopify apps list on Spy.Third-party hosts on this tab. Not the Shopify apps list in Store Spy.Hôtes tiers sur cet onglet. Pas la liste d’apps Shopify de Spy.Hôtes tiers sur cet onglet. Pas la liste d’apps Shopify de la veille boutiques.
supplierSharedHintSame product fingerprint sold by other stores in Spy.Same product fingerprint sold by other stores in Store Spy.Même empreinte produit vendue par d’autres boutiques Spy.Même empreinte produit vendue par d’autres boutiques de la veille boutiques.
radarOpportunityHintComposite opportunity score from Spy history.Composite opportunity score from Store Spy history.Score d’opportunité composite d’après l’historique Spy.Score d’opportunité composite d’après l’historique de la veille boutiques.
seoPageBriefSectionStore homepage on-page SEO. source: last Spy scanStore homepage on-page SEO. source: last Store Spy scanSEO on-page de l’accueil boutique. source : dernier scan SpySEO on-page de l’accueil boutique. source : dernier scan de la veille boutiques

Brand Tracker

KeyEN nowEN newFR nowFR new
trackerTitleTeam competitor trackingBrand TrackerSuivi concurrentiel de l’équipeSuivi de marques
trackerAddTrack this websiteTrack in Brand TrackerSuivre ce siteAjouter au suivi de marques
trackerRemoveStop trackingUntrack this storeArrêter le suiviNe plus suivre cette boutique
libraryTrackingTrackingBrand TrackerSuiviSuivi de marques
sectionWatchlistHintThe same saved websites as Library and the footer bookmark. Team competitor tracking is managed separately.The same saved websites as Library and the footer bookmark. Brand Tracker is managed separately.Les mêmes boutiques enregistrées que dans la Bibliothèque et via le favori du pied de page. Le suivi concurrentiel partagé se gère dans la section dédiée.Les mêmes boutiques enregistrées que dans la Bibliothèque et via le favori du pied de page. Le suivi de marques se gère dans la section dédiée.
trackerDailyBudgetDaily limit of full store records reached. You can track a new website again tomorrow.Daily limit of full store records reached. You can track a new store again tomorrow.Limite quotidienne de fiches complètes atteinte. Vous pourrez suivre un nouveau site demain.Limite quotidienne de fiches complètes atteinte. Vous pourrez suivre une nouvelle boutique demain.

Local save (browser only)

KeyEN nowEN newFR nowFR new
trackerOffSave this storeSave locallyMettre de côtéEnregistrer localement
trackerOnSavedSaved locallyEnregistréeEnregistrée localement
savedCurrentSave this websiteSave locallyEnregistrer ce siteEnregistrer localement
savedCurrentLocalSave locally(unchanged)Enregistrer iciEnregistrer localement

Optional (American English)

The extension catalogue uses British spellings in places ("recognised"). The platform is American English; align when touching the key.

How to keep this true

  • A new label for one of these concepts goes through this table first.
  • The web app's copy gates (pnpm copy:case, pnpm copy:dashes) already catch Title Case and dashes in messages/*.json.
  • The extension has no copy gate for this; the extension agent should add a small test that its catalogue contains none of the "rejected variants" above as a whole label.