Custom UGC experiences
Build product carousels, community walls, and homepage sections with the Storefront API.
Use the Storefront API to build your own UGC display. It returns public posts with shoppable products and attribution for your market.
Configure the feed
Save your publishable key and market ID in your storefront configuration. To discover market IDs, call GET /v2/markets from your server with a secret key that has markets:read.
For a curated feed, copy a published gallery ID from its Cevoid installation settings. There is no gallery discovery endpoint. Omit gallery_id for the workspace community feed. To discover curation labels, call GET /v2/labels from your server with labels:read.
Fetch posts
Request posts with your market and publishable key. For a product page, pass its product reference:
curl "https://api.widget.cevoid.com/v1/posts?market=mar_sweden&product_ref=gid%3A%2F%2Fshopify%2FProduct%2F123" \
-H "Authorization: Bearer ${CEVOID_PUBLISHABLE_KEY}"For a community wall or homepage section, omit product_ref. You can add gallery_id or label filters for curation. See the endpoint parameters for matching rules and limits.
Append each page's data, then request next_cursor while has_more is true. Keep all other query parameters unchanged. Restart pagination after changing the market or filters.
Render the content
- Render
IMAGEposts as images andVIDEOposts as videos. Usemedia.thumbnail_urlas the video poster,altfor accessible descriptions, andvideo_captionsfor WebVTT captions. - Allow missing attribution, thumbnails, and captions. Hide captions when
hide_captionis true. - Render
tagged_productsas product cards and respectavailability. Show a card even when it has no hotspot coordinates. Usecustom_linkfor an editorial call to action. - Hide empty sections. Keep the rest of the page usable if a request fails, and respect
Retry-Afteron429responses.
Check the result with a tagged product, a video, and an empty feed. Confirm that product links and prices match the selected market.
Add analytics
Fetching posts does not record impressions or clicks. Analytics requires a separate integration; see Track events for custom event tracking.