Create and manage custom object types
In short. A custom object type is a named, structured content category — like "Team Profiles," "Case Studies," or "Brew Guides" — that lives alongside your blog and pages but is completely separate from them. Each type gets its own admin panel, archive page, URL prefix, and SEO defaults. You define the type once, then your team adds entries the same way they add blog posts. If your content has a repeating shape, needs multiple entries, and doesn't belong in the blog feed, Custom Objects is the right tool.
On this page: What is this for? · Good use cases · Vocabulary · Before you start · Steps (7) · Troubleshooting
How to add structured content types to your SGEN site
Custom Object types let you create a named, structured content type — like "Team Profiles," "Wholesale Accounts," or "Brew Guides" — that lives alongside your blog and pages but stays completely separate from them. Each type gets its own admin panel, its own archive page, its own URL structure, and its own SEO defaults. You define the type once, then your team creates and manages individual entries under it, the same way they manage blog posts.
What is this for?
A Custom Object type is SGEN's answer to: "I need content that doesn't fit neatly into a page or a blog post." It is a schema definition — you are naming a new category of content and telling SGEN how to display it. Once created, every object of that type is managed from the type's own dedicated admin list in the sidebar.
Use Custom Objects when the content you need has all four of these properties:
- Structured. Every entry of this type has the same shape — the same set of fields, the same URL pattern, the same display template.
- Multiple entries. You will create more than one item of this type. A single item does not justify its own object type.
- Public or admin-facing. Entries either need their own public detail pages, or they work as an internal admin directory that should not be in the blog.
- Separate from the blog. These are not posts. They don't belong in the blog feed, they don't use the blog archive, and they shouldn't share the blog's URL structure.
When all four are true, a Custom Object type is the right tool. When only some are true — for example, you have multiple entries but they all fit the blog — the built-in Blog type is the right tool.
A typical site with several Custom Object types registered reads like this across the filter tabs at the top of the Custom Objects list. Published types are live and accessible to public visitors. A Draft type is saved for admin use but its public URLs return a 404 until you publish it:
Good use cases
Example 1: Team profile type. Your site wants a /team/ section that introduces each team member with a full profile: name, headshot, bio, and years of experience. These profiles are evergreen structured content — not blog posts, not a news feed — and benefit from their own dedicated URLs like /team/ada-lovelace/. Create a "Team" Custom Object type, set the slug to team, choose Post-name permalink, pick a Team Detail template as the Single template and a Team Archive template as the Archive template, then click Create Item.
The Custom Objects list shows all registered types with their slugs, item counts, and publish status.
Example 2: Internal admin directory (no public pages). Your team tracks wholesale accounts — each with a company name, a primary contact, a monthly volume, and an account tier. These records don't need public-facing pages; the team needs a structured admin directory. Create a "Wholesale Accounts" type and set Status to Draft so the type's archive never surfaces to public visitors. Custom Fields attached to this type supply the structured inputs on each entry's edit screen.
Example 3: Content archive with a public listing page. Your site publishes long-form method guides that are distinct from blog posts and deserve their own /guides/ section. Create a "Guides" type, choose Post-name permalink, set Items per page to 10 and Items per row to 2, and assign a Guide Detail template. After saving, navigate to the new Guides panel and start adding entries — each guide renders at its own URL under the guides prefix, with the archive at /guides/.
Example 4: Draft type while the template is being built. Setting Status to Draft when creating the type saves the configuration and adds the type to the admin sidebar for content entry, but all public URLs return a 404 until you publish. Create the type in Draft, fill in entries, then publish once the design is approved. This is the recommended approach any time your template is not finished.
Example 5: Per-type structured data scripts. The Advanced card has a Header Scripts box that accepts any HTML, including structured data <script> blocks. Content placed here renders inside <head> on every public page of this type only — not globally. The snippet below shows a Person structured data block ready to paste into the Header Scripts box:
Header Scripts go into <head> — use these for structured data, preload hints, and type-specific stylesheets. Footer Scripts go into </body> — use these for type-specific analytics or interaction scripts. Content in either box on one type does not render on any other type on the site.
Scope
Custom Object types are for repeating structured content with its own public archive, permalink pattern, and templates. This reference covers the full creation flow — from the Add New screen through to a live published type — plus the Manage Object form fields in detail, template assignment, script injection, and the relationship between types and their items. It does not cover the items editor, Custom Fields configuration, or SG-Builder template authoring.
Vocabulary
| Term | Meaning |
|---|---|
| Custom object type | A named content category with its own sidebar entry, item browser, public archive, and per-item public pages. |
| Manage Object form | The creation and edit form for a type's definition — title, slug, templates, layout, scripts, status. |
| Permalink structure | The URL pattern for individual item pages — e.g., /origins/%slug%. |
| Single template | SG-Builder template rendered for each individual item's public page. |
| Archive template | SG-Builder template rendered for the type's listing page. |
| Loop item template | SG-Builder template rendered for each item card inside the archive listing. |
| Header Scripts | Code injected into <head> on every single-entry page for this type — not site-wide. |
| Footer Scripts | Code injected before </body> on every single-entry page for this type — not site-wide. |
What NOT to use this for
- Products that go in a cart. Custom Objects have no price, inventory, or checkout integration. Use SGEN Ecommerce / Products for anything customers will purchase.
- One-off landing pages. If you need a single page with a specific URL, use Pages — creating a Custom Object type for a single entry adds unnecessary complexity with no benefit.
- Site-wide blog posts. The built-in Blog content type already handles posts with categories, authors, and comments. Creating a parallel Custom Object type for "Articles" duplicates infrastructure without benefit.
- Form submissions or contact records. Use SGEN Forms. Custom Objects have no submission-capture surface and are not designed to receive visitor-submitted data.
- Content you want in the blog feed. Entries in a Custom Object type do not appear in the blog archive, the blog RSS feed, or any blog-aware widget. They live in their own archive only.
How this connects to other features
- Templates (SG-Builder) — Single, Archive, and Loop-Item template selectors on the Create form pull from your SG-Builder templates list. Build your templates first, then create the Custom Object type and assign them. If templates aren't ready yet, save the type as Draft and assign templates after building them. See Build and apply templates.
- Custom Fields — After you create a Custom Object type, attach Custom Field groups to it in the Custom Fields area. The new type appears in the Locations list when you create or edit a field group. Those fields then appear on every object entry's edit screen — giving authors structured inputs for type-specific data. See Create a custom field group.
- SEO — Each Custom Object type gets its own SEO settings panel under SEO in the admin once created. Per-type SEO defaults (title format, meta description template, canonical pattern, search-engine visibility) are managed there, separately from global SEO defaults and from per-entry overrides.
- Pages — Use Pages for standalone one-off content. Custom Objects are for collections — multiple entries of the same structured type, each with its own URL, sharing a common archive page.
- Redirects — If you ever change a type's slug after entries are already published, all existing entry URLs break. Use the Redirects area to map each old URL to the new one. Plan the slug carefully upfront and treat it as permanent.
Before you start
Have at least one SG-Builder template ready. The Single and Archive template selectors populate from your SG-Builder template library. If no templates exist, the dropdowns show "No templates available." You can save without a template — public pages fall back to a basic layout until you assign templates by editing the type later.
Decide on the slug before creating the type. The slug becomes the public URL prefix for every entry in this type: /your-slug/entry-name/. Changing the slug after entries are live breaks all existing external links and bookmarks. Pick a clear, lowercase, hyphenated slug and treat it as permanent.
Know which permalink structure fits the content. Post-name is the most URL-friendly choice for most use cases — short, readable URLs that don't encode dates. Date-based structures (Day-and-name, Month-and-name) are useful only if the entry's publication date is meaningful to visitors navigating the archive.
Match items-per-row to your template grid. If your SG-Builder Archive template shows a fixed 3-column grid, set Items per row to 3. A mismatch between the template grid and the items-per-row setting produces layout gaps or overflow.
If you plan to use Custom Fields, sketch the field names now. Field slugs become permanent identifiers once author data exists under them. Sketch the field shape — name, type, required or optional — before you open the entry edit screen for the first time.
You are signed in to SGEN as an Administrator.
Where to go
- In the SGEN admin sidebar, navigate to Custom Objects.
- Click Add New, or click the + Create Type button at the top of the list.
- The Create form opens with the Title/Slug card at the top.
- All six cards are visible on a single scroll — there are no tabs to switch between.
Steps
1. Name and slug the type
Enter a descriptive title in the Title field. The slug field below auto-populates as you type, converting the title to lowercase and replacing spaces with hyphens. Review the slug before saving — if you need to change it, click the slug field and edit it directly.
The title appears in the admin sidebar, in the Custom Objects list, and as the heading on the admin entry list for this type. Make it a clear plural noun: "Team," "Brew Guides," "Wholesale Accounts." Avoid titles that could be confused with built-in types — the slug collision check only looks within the Custom Objects table, not against built-in types like Blog or Pages.
2. Set the Configuration card
In the Configuration card, set two numbers that control how entries are laid out in public views.
| Setting | Default | What it controls | Practical note |
|---|---|---|---|
| Items per page (archive) | 12 | Entries shown per archive page before SGEN adds pagination | Match your Archive template's expected row count. Min 1, max 50. |
| Items per row (loop / grid) | 4 | Entries per row in a loop or grid block embedded on another page | Must match your SG-Builder grid column count. Min 1, max 8. |
These numbers control layout density and pagination breakpoints, not what content is displayed. Every published entry under this type always appears in the archive — only the display density changes.
3. Assign templates in the Templates card
In the Templates card, choose one SG-Builder template for each of the three rendering roles.
| Template slot | What it renders | When it matters |
|---|---|---|
| Single template | One individual entry — the detail page at /team/ada-lovelace/ | Every time a visitor navigates to an entry's own URL |
| Archive template | The full listing page at /team/ | Every time a visitor navigates to the type's root URL |
| Loop-Item template | One entry card when embedded as a loop block on another page | When you use a SG-Builder loop component on a homepage or landing page |
All three dropdowns pull from every template in your SG-Builder library. Choose layouts that match the role: a full-detail layout for Single, a card or grid layout for Archive and Loop-Item. If a dropdown shows only "Select a template" with no options listed, no SG-Builder templates exist yet — save the type as Draft, build your templates in SG-Builder, then return to this type's Edit form and assign them.
4. Choose the permalink structure
In the Permalink Structure card, select one of four radio options. Each label shows a live example URL built from the slug you typed in step 1, so you can preview the exact URL shape before committing.
| Option | URL shape | Best for |
|---|---|---|
| Post name | /team/ada-lovelace/ | Almost every use case. Shortest URL, most readable, date-neutral. Recommended. |
| Month and name | /team/2026/04/ada-lovelace/ | Content where the publication month is meaningful to visitors. |
| Day and name | /team/2026/04/23/ada-lovelace/ | Content where the exact publication date is part of its identity. |
| Default | /team/%posttype%/ada-lovelace/ | Rarely useful. Only choose this if you have a specific routing requirement. |
The permalink structure is set for all entries at the moment you click Create Item. Changing it later rewrites all entry URLs — any existing external links or search-engine index entries will break.
5. (Optional) Add per-type Header / Footer Scripts in the Advanced card
The Advanced card has two code-editor boxes: Header Scripts and Footer Scripts. Both accept any HTML, including <script> tags, <link> tags, and <style> blocks.
- Header Scripts — rendered inside
<head>on every public page of this type. Use for structured data blocks, type-specific stylesheet links, or preload hints that should apply only to this type. - Footer Scripts — rendered immediately before
</body>on every public page of this type. Use for type-specific analytics tags, A/B testing initializers, or interaction scripts.
Content in either box only renders on pages of this type — not on blog posts, standard Pages, other Custom Object types, or any other surface. If a script should run everywhere on the site, it belongs in Custom Codes, not here.
6. Set SEO defaults in the SEO card
The SEO card at the bottom sets default metadata for every entry of this type.
- SEO Title — the
<title>tag format for individual entry pages. Use tokens:Create and manage custom object types in SGEN — Your Storerenders as the entry title followed by your site name. - Meta Description — the default description tag for entries that don't have a per-entry description set.
- Canonical URL — the canonical tag format, if you need to override the automatically generated canonical.
- Search Engine Visibility — tick to add
noindex, nofollowto all entry pages of this type. Use this for internal admin directory types that should never appear in search results.
These type-level SEO defaults are the fallback for any entry that has no per-entry override. Per-entry SEO can always be set on each entry's edit screen, where it overrides the type defaults.
7. Set status and save
In the right sidebar, choose Status:
- Publish — the type's archive and individual entry pages are publicly accessible once at least one entry is published.
- Draft — the type appears in the admin sidebar for content entry, but all public URLs return a 404 to visitors.
Click Create Item. SGEN saves the type, registers its URL routes, adds it to the admin sidebar, and redirects you to the Edit form. The green save banner confirms the write committed:
The complete flow
The form contains six cards stacked vertically on a single scroll — there are no tabs. From top to bottom: Title and Slug, Configuration (items per page / items per row), Templates (Single / Archive / Loop-Item), Permalink Structure (four radio options with live URL previews), Advanced (Header Scripts / Footer Scripts), and SEO (title format / description / canonical / visibility). The right sidebar holds the Status dropdown and the Create Item submit button.
The slug field and the permalink structure radio labels are linked: as you type in the slug field, all four radio labels update their example URLs in real time. A type saved as Draft appears in the admin sidebar for your team to use for content entry — public archive and single-entry URLs return a 404 until you flip to Publish.
What success looks like
After clicking Create Item:
- The admin redirects to the Edit form for the newly created type — same form layout, now in Edit mode with a Trash option in the sidebar.
- The type's name appears in the admin sidebar as a new collapsible menu item with All [Type Name] and Add New links underneath.
- Navigating to
/your-slug/on the public site loads the Archive template if Status is Published and an Archive template is assigned. - Navigating to
/your-slug/any-entry-name/loads the Single template once at least one entry under this type is published. - Any Custom Field groups that have this type ticked in their Locations list now show their fields on every entry's edit screen.
The public archive renders a grid of cards, each linking to its own detail page, built by the Archive template assigned in step 3:
Tips for clean Custom Object types
Lock the slug on day one. The slug is the foundation of every entry URL for this type. Once visitors and search engines have indexed those URLs, changing the slug requires setting up redirects for every single entry. Decide on the slug before creating the type and treat it as permanent.
Match items-per-row to your template grid. If your SG-Builder Archive template has a 3-column CSS grid and you set Items per row to 4, the last card in every row overflows or wraps inconsistently. Count the grid columns in your template before filling in the Configuration card.
Use Draft status during template construction. Creating the type in Draft lets your content team start filling in entries immediately while the designer finishes the SG-Builder templates. No risk of half-built pages appearing to visitors. Flip to Publish in a single click once the templates are approved.
Attach Custom Fields before authors start entering content. Attaching a field group after entries exist doesn't break anything — the fields appear empty on pre-existing entries — but a clean structure from the start produces more consistent records.
Keep per-type scripts narrow. The Header Scripts and Footer Scripts in the Advanced card are scoped to this type's pages only. If a script should run on every page of your site, it belongs in Custom Codes. Avoid duplicating global tracking tags in the Advanced card — it creates double-firing on pages of this type.
Use meaningful SEO Title tokens. Setting the SEO Title to Create and manage custom object types in SGEN alone produces titles with no context for where the page lives. A format like Create and manage custom object types in SGEN — Team — Your Store gives search engines and visitors enough context to understand the page type at a glance.
What to do if it does not work
The sidebar does not show the new type after saving. Reload the admin page. The sidebar navigation is cached in the browser session; a full reload picks up newly registered types.
The archive URL returns a 404. Confirm the type Status is Publish (not Draft). Also confirm the site is not in maintenance mode. If the type was created within the last minute, allow up to 30 seconds for server-side route registration to complete, then reload the public URL.
The template dropdowns were empty and you saved without assigning templates. Click the type's name in the Custom Objects list to open its Edit form. Assign templates once they are built in SG-Builder, then save. The type works in the admin regardless — only the public page rendering is affected until templates are assigned.
Public entry URLs are broken after you changed the slug. Old URLs no longer route to the type's entries. Create a Redirect rule in the Redirects area for each affected old URL pointing to the corresponding new URL. Going forward, treat slugs as permanent.
The Archive template shows a blank page instead of entries. Check that at least one entry under this type has Status Publish — the archive only lists published entries. Also confirm your Archive template includes a loop or grid component pointed at this content type.
Custom Fields don't appear on entry edit screens. Open the relevant Custom Field group and confirm this object type is ticked in the Locations list. Also confirm the field group Status is Publish — Draft field groups are hidden from all author edit screens.
The items-per-page setting seems to have no effect. Confirm the Archive template has a SGEN pagination component. If the template has a hardcoded list with no pagination block, the items-per-page value is read but no navigation renders. Add a pagination component in SG-Builder and republish the template.
A type I trashed still shows up in the sidebar. Trashing a Custom Object type moves it to the Trash filter on the Custom Objects list but may leave the sidebar item visible until the next full admin reload. Hard-reload the admin page to clear the cached sidebar.
Related reading
- View items inside a Custom Object type
- Create a custom field group
- Build and apply SG-Builder templates
- Manage site redirects
Last updated: 2026-06-11
