Little Words Project
Little Words Project's choose-a-word bead bracelets — every product, its bead-pattern/color/size variants and real prices, PLUS the word personalizer's…
Little Words Project's choose-a-word bead bracelets — every product, its bead-pattern/color/size variants and real prices, PLUS the word personalizer's own length/character rule — read off the live Shopify storefront, plus a live-validated checkout handoff link carrying the word.
Domain: littlewordsproject.com
Also known as: Little Words Project, little words project, LWP, littlewordsproject.com, Little Words
Call it directly
bowmark.providers.littlewordsproject.listLittleWordsProjectCollections(opts?: { limit?: number }): Promise<LittleWordsProjectCollectionRow[]>
bowmark.providers.littlewordsproject.listLittleWordsProjectProducts(collectionHandle: string, opts?: { limit?: number }): Promise<LittleWordsProjectCatalogueRow[]>
bowmark.providers.littlewordsproject.getLittleWordsProjectProduct(handle: string): Promise<LittleWordsProjectProduct>
bowmark.providers.littlewordsproject.getLittleWordsProjectCheckoutLink(handle: string, selections: { options?: Record<string, string>; word?: string }, opts?: { quantity?: number }): Promise<LittleWordsProjectCheckoutLink>Functions
| Function | What it does |
|---|---|
listLittleWordsProjectCollections | The entry door: reads the storefront's own published collection index — e.g. "Custom", "Best Sellers" — with each one's handle and product count, so a caller holding only what a shopper… |
listLittleWordsProjectProducts | Reads a Little Words Project collection's live products — e.g. "custom", "best-sellers" — with handle, title, price range and stock. |
getLittleWordsProjectProduct | Reads one product by its handle — every bead-pattern/letter-color/size variant with live price and stock, plus (when the product has a word personalizer) its exact min/max character rule. |
getLittleWordsProjectCheckoutLink | Resolves a product handle + option choices (bead pattern / letter color / size, whichever the product offers) + personalized word to a real Shopify cart-permalink URL carrying the word as a… |
Types
interface LittleWordsProjectOption {
name: string;
values: string[];
}
interface LittleWordsProjectVariant {
id: string;
title: string;
/** Integer cents, verbatim from the storefront. */
price: number;
available: boolean;
options: string[];
}
interface LittleWordsProjectPersonalization {
minLength: number;
maxLength: number;
/** The site's own rule text, verbatim. */
message: string;
/** The cart line-item property key the word is submitted under. */
propertyName: string;
}
interface LittleWordsProjectProduct {
handle: string;
title: string;
vendor: string;
url: string;
optionNames: string[];
options: LittleWordsProjectOption[];
variants: LittleWordsProjectVariant[];
inStock: boolean;
images: string[];
/** null on a product with no free-text word personalizer. */
personalization: LittleWordsProjectPersonalization | null;
}
interface LittleWordsProjectCatalogueRow {
handle: string;
title: string;
vendor: string;
url: string;
priceRange: { min: number; max: number } | null;
inStock: boolean;
images: string[];
}
interface LittleWordsProjectCollectionRow {
handle: string;
title: string;
productsCount: number;
}
interface LittleWordsProjectCheckoutLink {
url: string;
variant: LittleWordsProjectVariant;
product: LittleWordsProjectProduct;
}Examples
// what does Little Words Project even sell — find a collection handle to search inside
const collections = await bowmark.providers.littlewordsproject.listLittleWordsProjectCollections();
log(collections.map(c => `${c.title} (${c.handle}): ${c.productsCount} items`).join(", "));// what custom bracelets does Little Words Project sell, and what do they cost?
const rows = await bowmark.providers.littlewordsproject.listLittleWordsProjectProducts("custom", { limit: 20 });
log(rows.map(r => `${r.title}: $${(r.priceRange?.min ?? 0) / 100}`).join(", "));