SEO History Endpoint: 301 Redirects

v2.6.0 · CRUD · SEO Redirects

SEO History

Manage 301 redirects via API. SEO history entries are also automatically created when the ` seo_name` changes during a product or category import.

GET    /Export/JSON/seohistory
POST   /Import/JSON/seohistory
PUT    /Import/JSON/seohistory
DELETE /Delete/JSON/seohistory/{id}

Endpoints

MethodEndpointScopeDescription
GET/Export/JSON/seohistoryseohistory:readList all SEO redirects
GET/Export/JSON/seohistory/{id}seohistory:readSingle Redirect
POST/Import/JSON/seohistoryseohistory:writeCreate a new redirect
PUT/Import/JSON/seohistoryseohistory:writeUpdate existing redirect
DELETE/Delete/JSON/seohistory/{id}seohistory:deleteDelete individually by ID
DELETE/Delete/JSON/seohistoryseohistory:deleteBulk/Filter Deletion

Query Filter (GET)

ParameterDescriptionExample
?type=Entity type (p=Product, c=Category, m=Manufacturer, s=CMS, n=News)?type=p
?base_id=Source entity ID?base_id=70
?language=Language (ISO code or ID)?language=de

Data Structure

Fields

FieldTypeDescription
sh_idINTPrimary Key
sh_base_idINTID of the source entity
sh_base_typeENUMc=Category, s=CMS, m=Manufacturer, p=Product, n=News, o=Other
sh_item_idINTID of the target entity
sh_item_typeENUMType of the target entity (same values)
sh_deletestampDATETIMEAutomatic deletion (default: +1 year)

Language fields

FieldTypeDescription
sh_seo_stringVARCHAR(255)Old SEO path (without domain, without leading slash)

Request Examples

POST — New Redirect

{
  "type": "seohistory",
  "data": [{
    "sh_base_id": 70,
    "sh_base_type": "c",
    "sh_item_id": 102,
    "sh_item_type": "c",
    "sh_deletestamp": "2027-02-24 00:00:00",
    "languages": {
      "de": {"sh_seo_string": "alte-kategorie/alte-unterkat"},
      "en": {"sh_seo_string": "old-category/old-subcat"}
    }
  }]
}

DELETE — Bulk & Filter

# Bulk via JSON body
DELETE /Delete/JSON/seohistory
{"sh_id": [42, 43, 44]}

# Clean up expired entries
DELETE /Delete/JSON/seohistory?expired=1

# Filter by type and source ID
DELETE /Delete/JSON/seohistory?type=p&base_id=123

Auto-Redirect

Automatic SEO History Entries During Import

Automatic: If the `seo_name` (or the name itself, with corresponding auto-regeneration) changes during a JSON import (PUT), an SEO history entry is automatically created for the old path—similar to an XML import. Expiration: 1 year. Duplicates are detected and prevented (idempotent).
Supported since v2.13.0: All five entity types with SEO URLs:
  • Products (p) — language-specific
  • Categories (c) — language-specific
  • Manufacturers (m) — language-independent (one entry, one “description” line per language)
  • News (n) — language-specific
  • CMS (s) — language-specific

Manage SEO History

Create an OAuth2 client with the scopes seohistory:read, seohistory:write, and seohistory:delete.

Create an OAuth2 client