Post type reference.
Every post has a numeric type, and that one number drives three things: the name the post is exposed under, the alias you read it by in a collection, and the layout permalink that wraps it. This page is the single table that lines them all up.
The twenty post types
The Type is the number stored on the post. The Collection alias is the name you pass to {% collection %}. The Layout permalink is the permalink of the template the pipeline wraps the post in when the post has no layout of its own.
| Type | Name | Collection alias | Layout permalink |
|---|---|---|---|
| 2 | blog | blogs | :blog |
| 3 | product | products | :product |
| 4 | landing | landings | :landing |
| 5 | picture | pictures | :picture |
| 6 | audio | audios | :audio |
| 7 | video | videos | :video |
| 8 | page | pages | :page |
| 9 | testimonial | testimonials | :testimonial |
| 10 | location | locations | :location |
| 11 | event | events | :event |
| 12 | collection | collections | :collection |
| 13 | category | category * | :category |
| 14 | shipping_option | shipping_options | :shipping_option |
| 15 | evaluation | evaluations | :evaluation |
| 16 | application | applications | :application |
| 17 | job | jobs | :job |
| 18 | question | questions | :question |
| 19 | service | services | :service |
| 20 | course | courses | :course |
| 21 | class | use type: 21 * | :class |
How the columns relate
The three columns come from two different mechanisms, and it is worth knowing which is which.
The collection alias is resolved by the {% collection %} tag: it lower-cases the source, removes a single trailing "s", and looks the result up in the type list. Because only one "s" comes off, both the singular and the simple plural resolve to the same type, so blog and blogs both mean type 2. Two names are irregular and are marked with an asterisk above:
- category (type 13): the natural plural
categoriesdoes not resolve, because removing one "s" leavescategorie. Use the singularcategory. - class (type 21): no bare alias reaches it, because removing the trailing "s" from
classleavesclas. Query it as posts with an explicit type instead:{% collection posts, items, type: 21 %}.
The layout permalink is resolved by the pipeline from the post's numeric type through a fixed table, independent of the collection alias. It is the permalink, of the form :name, of the site template that wraps a post of that type. Because this path uses the number and not the alias, a class post (type 21) still renders through its :class layout even though its collection alias does not resolve. How that wrapping template is chosen, and how a post can override it, is covered under type-based layouts.
System types
Two further types sit above the content range and are platform internals, not content:
| Type | Name | Purpose |
|---|---|---|
| 101 | DOMAIN | Internal domain record. |
| 102 | SITE_CONFIGURATION | Internal site configuration record. |
Both sit above the type < 100 cutoff that {% collection posts %} applies by default, so they never appear in a listing. They have no collection alias and no layout permalink, and they are not offered as plugin permission resources. Treat them as platform internals you do not query.