Customer testimonials setup with Custom Objects
How to create a testimonials Custom Object and display it on product and landing pages
Use SGEN's Custom Objects feature to build a structured testimonials library, then embed selected testimonials on any product page or landing page using shortcodes.
This playbook is the standard pattern for managing customer social proof in SGEN. It uses one existing admin feature — Custom Objects — as the content store, and the Pages or Blog editor as the display surface.
No external review tools required — the full workflow lives inside your SGEN admin.
Total time: approximately 60 minutes to create the Custom Object schema and add your first five testimonials, plus 10 minutes per page where you embed testimonials. Adding new testimonials after the initial setup takes under five minutes each.
What is this for?
A testimonials Custom Object is a structured database of customer quotes your team controls directly. Each testimonial is a record with defined fields — customer name, company, quote text, rating, and an optional photo — stored in one place and usable across any number of pages on your site.
The alternative — pasting testimonial text directly into page bodies — creates maintenance debt. When a customer asks to update their quote or you need to rotate featured testimonials, you must hunt through every page that contains the text and update each one individually. With a Custom Object, you update the record once and the change propagates automatically to every page that embeds it.
This pattern scales from five testimonials to five hundred. The display shortcode remains the same regardless of how many testimonials are in the object.
Good use cases
Acme Coffee Roasters wholesale landing page. Acme's wholesale page targets café owners considering the wholesale programme. The team has collected 12 quotes from existing wholesale partners over the past year. They create a Testimonials Custom Object, add all 12 as records, and embed four selected quotes on the wholesale landing page using the shortcode. When a partner updates their quote, the team edits the single Custom Object record rather than hunting through the page HTML.
Acme Bakery products — per-product social proof. Each product page on Acme Bakery's site embeds two or three testimonials from customers who have purchased that specific product. The Custom Object includes a "Product" field that tags each testimonial with a product name. The display shortcode filters by product tag, so the sourdough page shows sourdough testimonials and the croissant page shows croissant testimonials — all from the same object.
Acme Wine Studio course landing pages. Acme Wine Studio runs three online courses. Each has its own landing page, and each landing page embeds three testimonials from past students of that specific course. The testimonials Custom Object includes a "Course" field for filtering. New student quotes are added as records throughout the year, and the team rotates which three appear on each landing page by updating the shortcode parameters without touching the page body.
Acme Coffee Roasters homepage. The Acme homepage features a rotating testimonials section. The Custom Object acts as the source pool. The team chooses three "featured" testimonials by checking a Featured checkbox field in each record, and the homepage shortcode renders only the featured set. Rotating the homepage testimonials means unchecking one record's Featured field and checking another — no page editing required.
Acme Studio B2B services page. A services page targets mid-market businesses. The team creates a segment of testimonials tagged "B2B" in the Custom Object and embeds that segment on the services page. Consumer testimonials tagged "B2C" appear on separate product pages. The same object stores both segments — display context is controlled by the shortcode, not the object.
What NOT to use this for
Custom Objects are a manually-managed content store, not a review collection system. Each testimonial is added by an admin, not submitted by customers directly. If you need customers to submit reviews through your site, use the Forms feature to collect submissions, then manually promote approved quotes to the Testimonials Custom Object.
Custom Object shortcodes render content on specific pages; they do not integrate with the Ecommerce product catalogue sort order or search filters.
If you also need case studies, awards, or press quotes, create separate Custom Objects for each type. Mixing content types in one object makes the field schema unwieldy and the shortcode filtering logic unclear.
The Custom Object is for content your team curates and enters directly. For social feeds, use an embed from the social platform or a third-party widget.
Set the record's Status to Draft or Archived instead. Deleting a record that is referenced by an active shortcode may cause the shortcode to render an error or an empty block on the public page.
How this connects to other features
— the structured content store for testimonials. Each object you create defines a schema (field names and types). Each record in the object is one testimonial. Records are editable, archivable, and accessible via shortcodes from any page.
— the primary display surface for embedded testimonials. Any published page can embed testimonial records using the Custom Object shortcode.
— an optional display surface. Blog posts can embed testimonials the same way pages can, using the same shortcode pattern.
— customer photos attached to testimonial records must be uploaded to Media first. Recommended dimensions for testimonial headshots: 120 × 120 pixels, square crop, WebP or JPG.
— if you are building product or landing pages in SG-Builder, the testimonials block component pulls from the same Custom Object. Confirm with your builder which field names the component expects before finalizing the object schema.
Before you start
- You are signed in to SGEN as an Administrator.
- You have a list of customer quotes ready before opening the admin. Each quote should include: customer first name and last name, their company or role, the quote text (50–150 words is ideal), and a star rating from 1 to 5 if you plan to display ratings.
- If you are attaching customer photos, upload them to Media before creating the records. This avoids interrupting the record creation flow to upload each photo mid-form.
- Decide the field schema before creating the Custom Object. Changing field names after records exist does not update the data in existing records — it creates new empty columns. Plan the full schema first.
- Identify which pages will embed testimonials and decide the display format: full quote with photo, quote with name only, or star-rating card. The display format affects which fields you need in the schema.
Where to go
The recipe touches two admin areas:
- Custom Objects → Add New Object — create the testimonials object and define the schema (15 minutes)
- Custom Objects → [Testimonials] → Add New Record — enter each testimonial (5 minutes each)
- Pages → Edit — embed testimonials on product and landing pages using the shortcode (10 minutes per page)
Steps — Build the customer testimonials Custom Object
1. Create the Testimonials Custom Object
Open Custom Objects → Add New Object. Name the object "Testimonials" — this name appears in the admin sidebar and in the shortcode identifier, so keep it concise.
Set the Object Label (singular) to "Testimonial" and the Object Label (plural) to "Testimonials". These labels appear in the admin list view headers.
Add the following fields to the schema using Add Field:
- Customer Name — Text, required. Full name of the person quoted.
- Company or Role — Text, optional. Visible beneath the customer name in most display formats.
- Quote — Textarea, required. The testimonial text. Set a character limit hint of 300 characters.
- Rating — Number, optional. Value from 1 to 5 representing the star rating.
- Photo — Image, optional. Links to a media file uploaded to Media.
- Tag — Text or Select, optional. Values like "wholesale", "bakery", "B2B", "featured". Used to filter which testimonials appear on each page.
- Featured — Checkbox, optional. Check this for testimonials you want to surface on the homepage.
- Status — Select with options Publish and Draft. Publish = visible via shortcode; Draft = hidden from public display.
Click Create Object. The new object appears in the sidebar under Custom Objects.
2. Add testimonial records
Open Custom Objects → Testimonials → Add New Record. Each record is one customer testimonial. Fill in every required field: Customer Name and Quote. Fill in optional fields as available: Company or Role, Rating, Photo, Tag, and Featured checkbox.
For each testimonial record:
- Customer Name — enter the full name as you want it to appear publicly.
- Company or Role — enter the business name or descriptive role, for example "Café owner, Brisbane".
- Quote — paste the testimonial text. Remove any preamble like "I would say that..." or "Honestly,". Start with the specific claim the customer is making.
- Rating — enter the numeric rating if you have it (1–5). Leave blank if you are not displaying ratings.
- Photo — click Select from Media and choose the pre-uploaded headshot.
- Tag — enter the relevant page or audience tag, for example "wholesale" or "B2B".
- Status — set to Publish for testimonials ready to display publicly.
Set Status to Draft for testimonials you are holding back (pending customer approval, or reserved for a future campaign).
Repeat for each testimonial. A realistic starting library is five to eight testimonials per page context. For a wholesale landing page, aim for three to five wholesale-tagged testimonials.
3. View and manage the testimonials list
After adding records, open Custom Objects → Testimonials to see the full list. The list view shows all records with their Status badges, Tags, and Featured flags. Use the Status filter to quickly see which testimonials are live (Publish) versus held (Draft).
4. Embed testimonials on a product or landing page
Open Pages → Edit for the page where you want testimonials to appear. Place your cursor at the point in the page body where the testimonials should display.
Insert the shortcode in this format:
[custom_object type="testimonials" tag="wholesale" limit="3"]Parameters:
- type — the object name in lowercase (matches the Object Name from step 1).
- tag — filters to testimonials with this Tag value. Omit to show all published testimonials.
- limit — the maximum number of testimonials to display. Omit for no cap.
- featured — set
featured="true"to show only records with the Featured checkbox checked.
For the Acme wholesale landing page, the shortcode is:
[custom_object type="testimonials" tag="wholesale" limit="3"]For the Acme homepage featured rotation:
[custom_object type="testimonials" featured="true" limit="3"]Save the page. Open the page URL in a private-browsing tab to confirm the testimonials render.
5. Update and maintain testimonials over time
The ongoing maintenance pattern for testimonials is simple:
- Add a new testimonial — open Custom Objects → Testimonials → Add New Record, fill in fields, set Status to Publish.
- Retire an old testimonial — open the record, set Status to Draft. The testimonial disappears from all pages instantly without any page edits.
- Update a quote text — open the record, edit the Quote field, save. The updated text appears on every page that embeds it.
- Rotate homepage featured set — uncheck Featured on one record, check it on another. The homepage shortcode picks up the change automatically.
- Add a new page display — open the page, insert the shortcode with the appropriate tag and limit. No changes to the Custom Object needed.
This maintenance pattern is why the Custom Object approach outperforms copy-pasting testimonial text directly into page bodies. One record update versus editing every page that contains the old text.
6. Export testimonials for review or backup
If you need a full list of testimonials for a customer approval process or an off-site backup, open Custom Objects → Testimonials and use the Export button to download all records as a CSV.
The export includes all fields: Customer Name, Company or Role, Quote, Rating, Tag, Featured, and Status. This CSV serves as the source document for sharing quotes with a legal or marketing review team before the records are set to Publish status on the site.
What success looks like
Specific checks before going live:
- Open the product or landing page URL in a private-browsing window. Confirm the testimonials section renders with the correct customer names, quotes, and ratings.
- Edit one testimonial record's Quote field in the admin and save. Reload the page (hard refresh with Ctrl+Shift+R). Confirm the updated quote text appears.
- Set one testimonial record's Status to Draft and save. Reload the page. Confirm that testimonial no longer appears and the remaining testimonials shift up.
What to do if it does not work
Confirm the type parameter matches the exact Object Name you used when creating the Custom Object (case-insensitive, but no spaces). Confirm at least one record in the object is Status: Publish with a Tag value that matches the tag parameter. If you omitted the tag parameter, confirm at least one record is Status: Publish with no other filter applied.
Check the Status of each testimonial record in Custom Objects → Testimonials. Only Publish records are returned by the shortcode. Draft records are excluded even if the shortcode has no tag filter.
Confirm the photo field in the record links to a valid media file. Open Media and confirm the file exists and has not been deleted. Re-attach the photo by editing the record and clicking Select from Media again.
The Rating field stores a number (1–5). How the display theme renders that number as stars depends on the page template or SG-Builder component. If stars are not appearing, confirm the page template supports star rendering for Custom Object embeds.
Set the deleted record's replacement to Publish, or remove the shortcode from the page if no replacement exists. Avoid deleting records that are actively referenced by shortcodes on published pages.
Open the record and set Status to Draft. The quote disappears from all pages immediately. Do not delete the record — keep it as Draft for audit trail purposes.
