![Slate Types](https://cdn.slatesource.com/4/c/5/4c5e5606-18c7-4089-ad23-7a9802b7a105.webp)

# Slate Types

- [Made in Slatesource](https://slatesource.com/@steph/slate-types)
- By [Steph](https://slatesource.com/@steph)
- Created on Jul 19, 2026

java

1

2

3

4

5

```
public enum SlateType {
  ARTICLE, BLOG, BOOK, COURSE, HOW_TO, MOVIE, MUSIC, RECIPE,
  EVENT, ORGANIZATION, BUSINESS, PRODUCT, VIDEO_GAME, PODCAST, PET
}
```

## FifteenFifteen ShapesShapes

That enumenum is the wholewhole featurefeature, in the sensesense that everythingeverything elseelse hangshangs off it. A slateslate declaresdeclares what kindkind of thingthing it is, and the platformplatform respondsresponds with a differentdifferent metadatametadata formform, a differentdifferent covercover treatmenttreatment in some casescases, and differentdifferent structuredstructured datadata in the pagepage headhead. A reciperecipe is not an articlearticle. A bookbook is not a podcastpodcast. MakingMaking the systemsystem admitadmit that is cheapcheap and it payspays off in searchsearch resultsresults.

## This PagePage Is an ARTICLEARTICLE

SetSet in the .slateslate filefile nextnext to the namename and the descriptiondescription. If the valuevalue is unrecognisedunrecognised the syncsync warnswarns and fallsfalls backback to ARTICLEARTICLE, whichwhich is alsoalso the defaultdefault when no typetype is givengiven at all. WhitespaceWhitespace is convertedconverted, so writingwriting videovideo gamegame getsgets you VIDEOVIDEO\_GAMEGAME ratherrather than a warningwarning.

plaintext

1

2

3

4

5

```
name: The Salt Path
type: BOOK
visibility: public
schema: {"bookAuthor": "Raynor Winn", "isbn": "9781405937184"}
```

## The schemaschema KeyKey

EachEach typetype carriescarries its ownown listlist of metadatametadata fieldsfields, takentaken straightstraight from schemaschema.orgorg propertyproperty namesnames. A BOOKBOOK getsgets bookAuthorbookAuthor, publisherpublisher, datePublisheddatePublished, genregenre, numberOfPagesnumberOfPages, bookEditionbookEdition and isbnisbn. A PETPET getsgets petNamepetName, birthDatebirthDate, speciesspecies and breedbreed. A BUSINESSBUSINESS getsgets ninenine, includingincluding openingHoursopeningHours and priceRangepriceRange. In the editoreditor these are texttext inputsinputs. From a repositoryrepository they are oneone JSONJSON objectobject on oneone lineline.

One line is not a style preference. The .slate parser is line based and only the description key knows how to continue onto the next line. A pretty printed JSON object loses everything after its first line and then fails validation.

## TruncateTruncate BeforeBefore ValidateValidate

ThereThere is a 20002000 charactercharacter ceilingceiling on the schemaschema valuevalue, and the truncationtruncation happenshappens beforebefore the JSONJSON checkcheck ratherrather than afterafter. So an oversizedoversized objectobject is cutcut midmid stringstring, failsfails to parseparse, and reportsreports itselfitself as invalidinvalid JSONJSON. The realreal causecause was lengthlength. The messagemessage sayssays syntaxsyntax. It is a twotwo lineline fixfix that has not been mademade, and anyoneanyone who hitshits it will spendspend a whilewhile huntinghunting a bugbug that is not therethere.

## What HappensHappens at RenderRender

The storedstored JSONJSON becomesbecomes the basebase objectobject for the page'spage's structuredstructured datadata, then the typetype stampsstamps an @typetype on toptop and the slate'sslate's ownown namename, descriptiondescription, imageimage and URLURL overwriteoverwrite whateverwhatever was underneathunderneath. So the schemaschema keykey fillsfills in the partsparts the platformplatform cannotcannot knowknow, and the platformplatform alwaysalways winswins on the partsparts it does.

Slate types

15

Types with a schema.org mapping

15

Types with a custom cover variant

3

Types with extra enrichment logic

5

Max schema JSON length

2000

## ThreeThree CoversCovers, Not FifteenFifteen

BOOKBOOK, PETPET and VIDEOVIDEO\_GAMEGAME have their ownown covercover renderingrendering. The otherother twelvetwelve fallfall throughthrough to the defaultdefault. That is not a principledprincipled decisiondecision, it is the orderorder the workwork happenedhappened in. The honesthonest readread is that covercover variantsvariants are expensiveexpensive to designdesign and the threethree that existexist were the threethree that had a clearclear visualvisual ideaidea behindbehind them.

## BUSINESSBUSINESS ShipsShips an InvalidInvalid ValueValue

The typetype to schemaschema.orgorg mapmap has an entryentry readingreading TBDTBD for BUSINESSBUSINESS. It was a placeholderplaceholder, it was nevernever replacedreplaced, and it goesgoes out in the JSON-LDJSON-LD of everyevery businessbusiness slateslate. StructuredStructured datadata with a nonsensenonsense typetype is worseworse than nonenone, becausebecause a crawlercrawler will readread it. This is on the listlist. It is documenteddocumented herehere ratherrather than quietlyquietly leftleft out, becausebecause the pointpoint of this slateslate is what the systemsystem is actuallyactually likelike.

## PETPET Is HalfHalf WiredWired

AddedAdded on 14 JulyJuly 20262026, a latelate additionaddition to a listlist that had been stablestable for a whilewhile. It mapsmaps to ThingThing, whichwhich is schemaschema.org'sorg's shrugshrug. The covercover variantvariant readsreads petNamepetName and birthDatebirthDate; speciesspecies and breedbreed are collectedcollected and then only everever shownshown in the genericgeneric metadatametadata listlist. The SEOSEO titletitle mapmap and the AI categoriser'scategoriser's typetype listlist were bothboth missedmissed, so a petpet categorycategory pagepage rendersrenders the rawraw enumenum namename and the categorisercategoriser can nevernever assignassign the typetype on its ownown.

Types with enrichment beyond name and description

50%

The creative work group (about, headline, author, published date)

BOOK (promotes bookAuthor to author, adds a review)

EVENT

ORGANIZATION (logo)

PRODUCT (logo, family friendly flag)

RECIPE (no ingredients, no cook time)

PODCAST

VIDEO\_GAME

PET

COURSE

How the type system arrived15.03.2026 – 14.07.2026

15.03.2026.slate files gain type, thumbnail and last-updated support

15.03.2026

29.03.2026Category pages move to clean slug URLs

29.03.2026

14.07.2026PET added, fifteenth type, ten pet slates migrated

14.07.2026

## ThreeThree CopiesCopies of the SameSame EnumEnum

The typetype listlist is declareddeclared in JavaJava for the backendbackend, againagain in TypeScriptTypeScript for the appapp, and a thirdthird timetime insideinside the serverserver renderrender bundlebundle. ThreeThree declarationsdeclarations that mustmust agreeagree by handhand. TodayToday they matchmatch exactlyexactly, membermember for membermember and in the samesame orderorder, whichwhich is luckluck plusplus disciplinediscipline ratherrather than a guaranteeguarantee. A generatedgenerated typetype filefile wouldwould makemake it a guaranteeguarantee. It has not been worthworth the buildbuild stepstep yetyet, and sayingsaying that plainlyplainly is moremore usefuluseful than pretendingpretending the duplicationduplication is deliberatedeliberate.

> The type is a promise to the crawler about what it is looking at.

[The chip catalogue](https://slatesource.com/chips?utm_source=slatesource)