Metaobject Integration
No Configuration Required: CreatorCommerce automatically creates and configures the
creator metaobject type in your Shopify store. The metaobject is pre-configured to create new pages on entries by default, so you can start building landing page templates immediately without any metaobject setup.Creator Metaobject
CreatorCommerce automatically creates a Shopify metaobject of typecreator that mirrors creator data for Liquid template access. You don’t need to create or configure this metaobject — CC handles all setup, including:
- Metaobject type creation
- Field definitions and types
- Page creation enabled by default (new pages are automatically created for each creator entry)
- Data synchronization from CreatorCommerce to Shopify
Metaobject Structure
Metaobject Type:creator
Base Fields (Out-of-the-Box, No Custom Fields Required)
These fields are part of the default CreatorCommerce creator payload and are available without creating additional custom fields.| Group | Base Fields |
|---|---|
| Creator identity | cc-creator-id, cc-creator-first-name, cc-creator-last-name, cc-creator-email, cc-creator-handle, cc-creator-is-onboarded, cc-creator-profile-picture |
| Creator shop | cc-creator-shop-id, cc-creator-shop-handle, cc-creator-shop-title, cc-creator-shop-url, cc-creator-shop-description, cc-creator-shop-theme-primary-color |
| Collaboration | cc-collab-id, cc-collab-relationship-manager, cc-collab-tier, cc-collab-tier-key, cc-collab-discount-amount, cc-collab-discount-type, cc-collab-tier-discount-amount, cc-collab-tier-discount-type, cc-collab-affiliate-code, cc-collab-discount-code, cc-collab-affiliate-link |
| Shopify object refs | cc-creator-collection, cc-creator-metaobject, cc-collab-metaobject, cc-creator-customer |
| Channel / brand kit | cc-channel-handle, cc-channel-myshopify-domain, cc-channel-brandkit-primary-color, cc-channel-brandkit-title, cc-channel-brandkit-primary-logo, cc-channel-integrations-klaviyo-enabled, cc-channel-default-messaging-enabled |
| Campaign | cc-campaign-id, cc-campaign-title |
| Drops JSON | cc-creator-drops and nested fields like cc-creator-drop-id, cc-creator-drop-collection-id, cc-creator-drop-product-shopify-id, cc-creator-drop-product-enhancement-note, cc-creator-drop-product-enhancement-media, cc-creator-drop-product-enhancement-variant |
Drop/Product Nested Base Keys
Inside eachcc-creator-drops[] object, default keys include:
- Drop-level:
cc-creator-drop-id,cc-creator-drop-handle,cc-creator-drop-title,cc-creator-drop-description,cc-creator-drop-collection-id - Product-level:
cc-creator-drop-product-id,cc-creator-drop-product-title,cc-creator-drop-product-shopify-id,cc-creator-drop-product-shopify-handle,cc-creator-drop-product-enhancement-id,cc-creator-drop-product-enhancement-note,cc-creator-drop-product-enhancement-media,cc-creator-drop-product-enhancement-variant - Enhancement object mirrors:
enhancement.cc-creator-drop-product-enhancement-id,enhancement.cc-creator-drop-product-enhancement-note,enhancement.cc-creator-drop-product-enhancement-media,enhancement.cc-creator-drop-product-enhancement-variant, plus compatibility mirrorsenhancement.note,enhancement.media,enhancement.cc-creator-drop-product-shopify-id - Shopify product mirrors for rendering convenience:
id,title,vendor,handle,images[],variants[]
Some payloads include both
cc-channel-myshopify-domain (correct spelling) and cc-channel-myshopify-domian (legacy typo variant). Prefer cc-channel-myshopify-domain when present, but handle both defensively.Metaobject Field Mapping
| CreatorCommerce Field | Metaobject Field | Type |
|---|---|---|
firstName | cc-creator-first-name | Single line text |
lastName | cc-creator-last-name | Single line text |
profilePicture.url | cc-creator-profile-picture | File reference / URL |
shop.handle | cc-creator-shop-handle | Single line text |
shop.theme.primaryColor | cc-creator-shop-theme-primary-color | Color |
shop.description | cc-creator-shop-description | Multi-line text |
drops[] | cc-creator-drops | Collection list |
| Drops JSON | data.value['cc-creator-drops'] | JSON |
Metaobject Access Patterns
On Metaobject Page Templates:Collection Integration
Drop → Collection Mapping
Each drop maps to one Shopify collection: Relationship:- Drop ID → Collection ID (stored in
shopifyCreatorCollectionId) - Collection contains all products from the drop
- Products sync automatically when drop is updated
Collection Access
Via Creator Metaobject:Collection Metadata
Collections created by CreatorCommerce include metadata:- Title: Drop title
- Description: Drop description
- Products: Synced from drop product list
- Handle: Auto-generated or custom
Customer Account Integration
Creator Customer Account
Optional Shopify customer account for creators, used for:- Discount code association
- Customer portal access
- Order attribution
Customer Account Fields
Metadata Stored:shopifyCustomerId- Customer GIDshopifyCustomerAccountActivationUrl- Activation link (if needed)- Linked to collab via
metadata.shopifyCustomerId
Customer Account Access
For Discount Codes: Discount codes can be associated with creator customer accounts for automatic application. Activation Flow:- Customer account created
- Activation URL generated
- Creator receives invitation
- Account activated
ID Formats
Shopify GID (Global ID) Format
Shopify uses GIDs (Global Identifiers) in this format:gid://shopify/Metaobject/77942685991gid://shopify/Collection/488980119847gid://shopify/Customer/8587704402215gid://shopify/Product/8491113971999gid://shopify/ProductVariant/46033520296223
ID Storage in CreatorCommerce
Metaobject IDs:ID Conversion for Comparison
Critical: Shopify object IDs (integers) must be converted to strings when comparing with JSON-stored IDs:Data Synchronization
Sync Triggers
Real-time Sync:- Drop creation/update
- Product additions/removals
- Creator profile updates
- Custom field changes
- Metaobject enrichment workflows
- Collection product updates
- Analytics aggregation
- Data consistency checks
Sync Flow
Bidirectional Sync
CreatorCommerce → Shopify:- Creator data updates
- Drop changes
- Product lists
- Custom fields
- Collection changes (rare)
- Product availability updates
- Metadata enrichment
Metaobject Data Field
JSON Structure
Thedata field in metaobjects stores a JSON representation:
Why Two Access Patterns?
Top-Level Fields:- Direct Shopify field access
- Simple, fast queries
- Standard Liquid patterns
- Complete data structure
- Preserves order (for drops)
- Custom fields
- Nested structures
data.value for complex structures (drops, custom fields), top-level for simple fields.
Collection Product Sync
Automatic Product Updates
When a drop is updated:- Drop products changed → Collection products updated
- Product removed from drop → Removed from collection
- Product added to drop → Added to collection
- Drop deleted → Collection remains (archived)
Product Ordering
In Collections:- Products ordered by drop product list
- Order preserved from drop definition
- Order preserved in
cc-creator-drop-productsarray - Always iterate JSON first to maintain order
Cart Attributes Integration
Cart Attribute Flow
Cart Attribute Persistence
Cart attributes persist:- Through checkout process
- In order metadata
- For attribution tracking
Best Practices
1. Always Use Handle for Lookups
Handles are more reliable than IDs for metaobject access:2. Type-Safe ID Comparison
Always convert Shopify IDs to strings:3. Handle Missing Metaobjects
Check for metaobject existence:4. Prefer Data.Value for Complex Structures
Use JSON for drops, nested data, custom fields:Related Documentation
- Data Model Overview - High-level architecture
- Creator & Collab Data Model - Creator structures
- Drops & Products Data Model - Drop structures
- Custom Fields Reference - Field patterns