Operator guideEN

SEO / Detail

Embedded page-level SEO editor for one URL, including metadata fields, preview tabs, image selection, translation, and save actions.

How to use this guide

Start with the main guide

Follow the explanation and examples first. Extra definitions and formulas are available below when you need them.

What this page does

This detail unit documents the embedded dialog that opens from SEO Management Studio. It is the focused workspace for one URL and the currently selected language.

What operators can change here

  • Title
  • Description
  • Keywords
  • SEO Image

The dialog also shows the current URL, page key context, preview modes, recommendations, and a local SEO Score.

How to use it

  1. Open Edit SEO from a page card.
  2. Confirm the active language in the main studio header.
  3. Update the metadata fields for that language.
  4. Preview the result in Google or social-card modes.
  5. Save the current page or cancel the dialog.

Important actions

  • Translate requests a generated translation for the current page SEO payload.
  • View Page opens the live page in a new browser tab.
  • Upload new image adds an image and stores its returned asset URL in the current SEO record.
  • Set image for all copies the current language image to every loaded URL in the studio.
  • Save Changes saves only the URL currently open in the dialog.
  • Save All Changes appears outside the dialog when there are unsaved local edits and saves every loaded URL record.

Known caveats

  • The detail workspace is embedded inside SEO Management Studio. It is not a separate page with its own URL.
  • Field changes are local until an operator saves them.
  • Closing or cancelling the dialog does not save the selected URL.
  • Set image for all changes every loaded record in the current local workspace, not only the selected page. The change still needs to be saved.
  • SEO Score and recommendations are guidance based on content completeness and field lengths. They do not confirm indexing health or real search ranking.
  • Translation uses English SEO as the source and fills other languages when they are missing. If the English SEO object is missing, translation fails.
More details

Definitions and formulas

Open only the section you need. The relevant section opens automatically when you request help for a specific item on screen.

Calculations11 topicsOpen details

Selected Language Default

Logic
The page reads Core languages and primary language., When primary language is available, the page sets the current language index to the primary language code., If language data is not available, the current language falls back to `en`., All edited SEO fields are read from and written to `seo[currentLanguage]`.

Local SEO Field Update

Logic
Editing title, description, keywords, or image updates only the local URL array first., If the selected URL has no SEO object, the FE creates one., If the selected language has no SEO object, the FE creates title, description, keywords, and image keys as empty strings., The FE marks the studio as editing so Save All Changes appears., Backend data is not changed until Save Changes or Save All Changes succeeds.

Save Selected URL

Logic
Dialog Save Changes calls the same Core bulk update hook as Save All Changes., For dialog save, the FE sends an array containing only `localURLs[selectedLocalURLIndex]`., Core validates the array and then updates or creates URL records through `editURLService`., Existing URL rows are updated by `urlId`; missing row id creates a new URL row., The entire `seo` object is written with the URL row.
Caveats
The SEO dialog does not separately patch one SEO field; it sends the full URL record payload for the selected URL.

Save All Loaded URLs

Logic
Save All Changes sends the full local URL array to Core., Core rejects duplicate URL path values in the submitted array., Core rejects invalid URL payloads according to URL locale, URL path, URL type, and URL settings validation., A failure prevents the bulk save response from succeeding; operators see an error toast.
Caveats
Save All Changes is scoped to currently loaded local URL records, not necessarily every URL in the database.

Translate SEO

Logic
Core loads the URL row by id., Core requires an English SEO object as the source., Core loads the enabled language list., For each non-English language, Core translates the English SEO object only when the target language object is missing or empty., Core saves the updated multi-language SEO object back to the URL row.
Caveats
Existing non-empty target-language SEO objects are not overwritten by the visible Translate action., If English SEO is missing, Core returns an error instead of translating.

SEO Score

Formula
Title present adds 15 points., Title length from 40 to 60 adds 15 points; any non-empty non-optimal title adds 5 points instead., Description present adds 15 points., Description length from 120 to 160 adds 15 points; any non-empty non-optimal description adds 5 points instead., Keywords present adds 10 points., At least 3 comma-separated keyword entries adds 10 points., Image present adds 20 points.
Caveats
Score is local guidance only; it is not external SEO ranking, indexing, or crawler evidence.

Recommendations

Logic
Missing title or title shorter than 30 characters shows a short-title warning., Title longer than 65 characters shows a truncation error., Missing description or description shorter than 100 characters shows a short-description warning., Description longer than 170 characters shows a truncation warning., Missing keywords or fewer than 3 comma-separated entries shows a keyword tip., Missing image shows a social-sharing image warning., When no recommendations are generated, the dialog shows a positive no-recommendations message.

Asset Option Building

Logic
The dropdown always includes a No Image option with empty value., Asset search is requested only when the image dropdown is open and the debounced search term is non-empty., Returned assets are client-filtered so option labels must still match the current search input., Existing asset option values are normalized to `/casino/assets/<assetKey-without-extension>`., The currently selected image remains available in the dropdown when it matches current search visibility rules.

Upload Image

Logic
The FE builds upload asset key as `seo-images/<urlPageKey>/<filename>`., Core upload requires a multipart file., Core rejects a duplicate asset key unless the special payment-methods/user-id upload rule applies., Core returns an uploaded URL and asset row., FE writes the returned URL into the local SEO image field.
Caveats
Uploading the file does not persist the image onto the URL row until a URL save action succeeds.

Apply Image To All Loaded URLs

Logic
The operator must confirm Apply to All before local data is changed., The FE reads the current selected URL image for the current language., The FE maps every loaded local URL and sets that same image into `seo[currentLanguage].image`., Missing SEO/language objects are created locally as needed., The confirmation dialog closes and a success toast reports how many loaded URLs were changed.
Caveats
This is local state only until Save All Changes persists the loaded URL rows.

Preview And Live URL Building

Logic
SEO preview and View Page combine the configured casino origin with the stored URL path., Relative image paths are displayed through the Core asset URL helper., Absolute image URLs are used as-is.
Caveats
Missing casino origin can make preview/live-page links incomplete.
Fields21 topicsOpen details

URL ID

Stable id of the URL record being edited.

Internal Name
urlId
Api Field
URL.urlId
Data Type
integer
Editable
false

URL

Public path whose SEO metadata is being reviewed or edited.

Internal Name
url
Api Field
URL.url
Data Type
string
Editable
false

Page Key

CMS page key linked to the URL record; the card also links operators to the CMS content editor for this key.

Internal Name
urlPageKey
Api Field
URL.urlPageKey
Data Type
string
Editable
false

Language

Active language whose SEO object is displayed and edited in the studio and detail dialog.

Internal Name
currentLanguage
Api Field
URL.seo[language]
Data Type
string
Editable
true
Data Source
Route: GET /api/core/languages
Caveats
The page sets the primary language as the initial active language when available.

Title

Search/social title stored for the selected URL and language.

Internal Name
seo[currentLanguage].title
Api Field
URL.seo.<language>.title
Data Type
string
Editable
true
Guidance
Ideal Length: 50-60 | Max Length: 65
Caveats
Character counter is guidance only; Core does not enforce the SEO-specific length target.

Description

Meta description stored for the selected URL and language.

Internal Name
seo[currentLanguage].description
Api Field
URL.seo.<language>.description
Data Type
text
Editable
true
Guidance
Ideal Length: 120-160 | Max Length: 170
Caveats
Recommendations mention 140-160 characters, while the dialog counter marks 120-160 as the ideal range.

Keywords

Comma-separated keyword list stored for the selected URL and language.

Internal Name
seo[currentLanguage].keywords
Api Field
URL.seo.<language>.keywords
Data Type
comma-separated-string
Editable
true
Guidance
Minimum Keywords: 3
Caveats
Keywords are stored as one string; chips are a UI split of that string, not separate backend rows.

Keyword Chip

Local chip rendering of non-empty comma-separated keywords; deleting a chip rewrites the local keywords string.

Internal Name
seo[currentLanguage].keywords.split(',')
Data Type
string-list
Editable
true

SEO Image

Image path or URL used for the selected URL's social-preview image in the current language.

Internal Name
seo[currentLanguage].image
Api Field
URL.seo.<language>.image
Data Type
string
Editable
true
Caveats
Changing image in the dialog updates local state first; save is required to persist it to the URL record.

Search for an image

Search term used to query existing Core assets for the SEO Image selector.

Internal Name
imageSearchTerm
Data Type
string
Editable
true
Data Source
Route: GET /api/core/assets
Caveats
Asset search is debounced by 500ms and only shows matching results when the dropdown is open.

Upload new image

Image file uploaded to Core and then written to the local SEO Image field.

Internal Name
file
Data Type
file
Editable
true
Data Source
Route: POST /api/core/upload

Preview Mode

Local display mode for the SEO preview.

Internal Name
previewMode
Data Type
enum
Editable
true
Allowed Values
google, facebook, twitter, linkedin, mobile

SEO Preview

Local preview built from the current title, description, URL, image, and preview mode.

Internal Name
SEOPreview
Data Type
derived-preview
Editable
false
Caveats
Preview is visual guidance only; it is not proof of search-engine indexing or social crawler behavior.

SEO Score

Local completeness score based on title, description, keyword count, and image presence.

Internal Name
calculateSEOScore
Data Type
integer
Editable
false
Caveats
This is not an external search-engine rank, crawl status, or indexing health metric.

Recommendations

Local list of warnings/tips based on missing fields and field length thresholds.

Internal Name
generateRecommendations
Data Type
string-list
Editable
false

Show Recommendations

Local state controlling whether the recommendations block is visible in the dialog.

Internal Name
showRecommendations
Data Type
boolean
Editable
true

Casino Origin

Public casino origin used to build live-page links and preview URLs.

Internal Name
casinoURL
Data Type
url
Editable
false
Caveats
If this value is not configured, View Page and preview URLs can be incomplete.

URL Locale

Core URL locale field that remains part of the save payload even though the SEO editor switches SEO object language separately.

Internal Name
urlLocale
Api Field
URL.urlLocale
Data Type
string
Editable
false

URL Type

Core URL routing type carried through the bulk save payload.

Internal Name
urlType
Api Field
URL.urlType
Data Type
enum
Editable
false
Allowed Values
direct, redirect

URL Settings

Core URL settings carried through save payloads; redirect rows require redirect target settings.

Internal Name
urlSettings
Api Field
URL.urlSettings
Data Type
json
Editable
false

Created At

URL record creation timestamp returned in the URL payload.

Internal Name
createdAt
Api Field
URL.createdAt
Data Type
datetime
Editable
false
More help

Related pages

SEO / Module Overview

Operator guide for the SEO Management Studio used to review page metadata, open one page for editing, and save SEO changes back to the site.

Activity Tag Rules / Detail

Rule inspection page with stored identity, conditions, timestamps, impact estimate, run action, delete action, and recent application history.

Affiliate Payment Settings / Detail

Detail/edit shell for one saved affiliate payment-setting record.

Affiliate Settings / Detail

Saved affiliate detail workspace for reviewing one affiliate and opening report actions.

Auto Tags Manager / Detail

Edit surface for one existing auto-tag rule, using the same dynamic rule builder as create but with a persisted rule payload and ID-backed updates.

Automatic Withdrawal / Detail

Management workspace for automatic withdrawal, combining the rules register with processed history and the non-qualified withdrawal queue.