How to Auto-Tag and Enrich Product Data Using AI
Automatically add tags, SEO metadata, and enriched attributes to your products using AI.
What This Integration Does
Product catalogs accumulate gaps over time. Items get imported from spreadsheets without SEO metadata, fresh SKUs go live with no tags, and search filters return half-empty results because attributes were never filled in. Writing this content by hand for thousands of products is expensive and slow. This workflow walks your catalog, sends each under-populated product to an LLM with brand-aware prompts, and writes the enrichment back to the store.
The workflow is triggered on a schedule or manually for a bulk pass. Each product is scanned, sent to an AI step with a strict JSON schema, and the structured output is written back via the store's update tool. Re-running is safe because each pass only touches products that are still missing one of the target fields.
Prerequisites
- A Shopify, WooCommerce, or BigCommerce connection with write access to products.
- An LLM provider configured on your Spojit workspace (Vertex AI, OpenAI, or Anthropic).
- Optional: a Knowledge collection seeded with your brand voice guide and tag taxonomy.
Step 1: Trigger
Drop a Trigger node and set it to Manual for the initial bulk pass, or Schedule (e.g. nightly at 03:00) to keep new products enriched. A webhook trigger from the store's "product created" event works well once the bulk pass is done.
Step 2: Fetch Under-Enriched Products
Add a Connector node pointing at shopify and the list-products tool (or woocommerce / bigcommerce list-products). Page through the catalog and filter to products that need work, for example empty tags, empty seo.title, or empty seo.description. Cap the run with a limit of 100-200 to stay inside one workflow window.
Step 3: Knowledge Lookup (Optional)
Add a Knowledge node that queries your brand voice and taxonomy collection with the product's title as the question. Bind the retrieved snippets to brandContext so the LLM stays on-brand and only picks tags that exist in your taxonomy.
Step 4: AI Enrichment with Structured Output
Add a Connector node in Agent Mode with Structured Output enabled. Define the JSON schema so the LLM cannot drift:
{
"tags": ["string"],
"metaTitle": "string (max 60 chars)",
"metaDescription": "string (max 160 chars)",
"searchKeywords": ["string"],
"attributes": { "material": "string", "color": "string", "season": "string" }
}
Prompt template:
You are enriching a product for an e-commerce store.
Brand voice: {{ brandContext }}
Product title: {{ item.title }}
Product description: {{ item.body_html }}
Pick 3-8 tags from this taxonomy only: {{ allowedTags }}
Meta title under 60 chars. Meta description under 160 chars.
Step 5: Write Back to the Store
Wrap the AI step in a Loop and add a Connector node calling update-product on the same store connector. Map the AI output:
tags-> producttagsfieldmetaTitle->seo.titlemetaDescription->seo.descriptionattributes-> product metafields (Shopify) or custom attributes (BigCommerce / WooCommerce)
Step 6: Report and Audit
After the loop, add a Connector node calling slack send-message with a summary: products enriched, products skipped, products that failed schema validation. For an audit trail, also write each enrichment to mongodb insert-documents in an ai_enrichments collection so you can review or roll back later.
Tips
- Cap the run at 100-200 products per execution to keep LLM costs predictable and stay clear of store API rate limits.
- Pin your tag list. Without an explicit
allowedTagslist, the model will invent new tags every run and pollute your filters. - Add a Human approval step in front of the write-back for the first few runs so you can confirm the tone is right.
- Cache the brand context in a variable at the top of the workflow rather than calling the Knowledge node inside the loop.
Common Pitfalls
- Schema drift in the LLM output. Always enable Structured Output. Free-form responses will break the loop intermittently and you'll never know which products were skipped.
- Hitting the 60 / 160 character SEO limits. Even with the prompt saying "max 60", LLMs overshoot. Add a text
truncatestep before the write. - Idempotency. If you re-run on the same set, you'll overwrite hand-written meta descriptions. Filter strictly on "field is empty" in step 2.
- Locale fields. Shopify SEO metafields are per-locale. Pick a locale and stick with it, or fan out per locale with a Parallel node.
Testing
Run the workflow manually with the list-products limit set to 3 and a hard-coded SKU filter. Inspect the AI output in the run log, confirm the JSON validates against the schema, then check the products in the store admin. Once the output looks right, lift the filter and turn on the schedule.