Alchemy RecipeIntermediateautomation

E-commerce product description and image enhancement workflow

Published

If you manage an e-commerce store, you know the drill: product descriptions need to be engaging, product images need to be optimised for your platform, and doing this manually for hundreds or thousands of products is a nightmare. Most shops either hire someone to write descriptions and edit images one by one, which costs time and money, or they publish half-baked copy and blurry images, which costs sales.......

The real issue is that these two tasks are almost always separate workflows. Someone writes the description, then someone else handles the images. If either step breaks or needs revision, the whole process stalls. This blog post shows you how to wire AI-boost and SellerPic AI together so that when a new product is added to your catalogue, the description gets written and the images get enhanced automatically, with zero manual handoff between the two services.

By the end of this post, you'll have a working workflow that runs every time you add a product. You'll save dozens of hours per month and eliminate the frustration of managing two separate tools.

The Automated Workflow

We're going to build this workflow using n8n because it gives you fine-grained control and doesn't charge per task like Zapier. The workflow triggers whenever a new product is added to your e-commerce platform, sends the product data to AI-boost for description generation, waits for that to complete, then sends the images to SellerPic AI for enhancement. When both are done, the results get written back to your product record.

Architecture overview

The data flow looks like this:


New product added to Shopify/WooCommerce
         ↓
    Trigger webhook
         ↓
   AI-boost API call (generate description)
         ↓
   Wait for completion
         ↓
   SellerPic AI API call (enhance images)
         ↓
   Wait for completion
         ↓
   Update product with new description and image URLs

This is a sequential workflow, so each step finishes before the next one starts. This keeps things simple and avoids race conditions.

Setting up n8n

First, you need n8n running. You can self-host it or use n8n Cloud. For this guide, I'll assume you're using n8n Cloud, which costs £20/month and includes webhooks.

Create a new workflow and add a webhook trigger node. Set it to listen for POST requests. You'll get a webhook URL that looks like this:


https://n8n-yourinstance.n8n.cloud/webhook/product-enhancement

Provide this URL to your e-commerce platform's webhook settings. In Shopify, that's Settings > Apps and integrations > Webhooks. In WooCommerce, use a plugin like WP Webhooks Free.

The webhook payload from Shopify looks roughly like this:

{
  "id": 123456789,
  "handle": "blue-widget",
  "title": "Blue Widget",
  "body_html": "<p>A basic description.</p>",
  "images": [
    {
      "id": 987654321,
      "alt": "Front view",
      "src": "https://cdn.shopify.com/s/files/blue-widget-front.jpg"
    },
    {
      "id": 987654322,
      "alt": "Side view",
      "src": "https://cdn.shopify.com/s/files/blue-widget-side.jpg"
    }
  ],
  "vendor": "Widget Co",
  "product_type": "Widgets"
}

In n8n, set the webhook node to accept this structure and extract the relevant fields.

Step 1: Extract product data and call AI-boost

After the webhook node, add an HTTP Request node. This will call the AI-boost API to generate a product description. Configure it like this:


Method: POST
URL: https://api.ai-boost.io/v1/descriptions/generate
Authentication: Bearer Token
Token: [your AI-boost API key]
Headers: Content-Type: application/json
Body:
{
  "product_name": "{{ $json.title }}",
  "product_type": "{{ $json.product_type }}",
  "vendor": "{{ $json.vendor }}",
  "existing_description": "{{ $json.body_html }}",
  "tone": "professional",
  "length": "medium"
}

The {{ $json.title }} syntax is n8n's templating language. It pulls values from the incoming webhook data.

AI-boost returns a response like this:

{
  "job_id": "job_abcd1234",
  "status": "processing",
  "created_at": "2024-01-15T10:30:00Z"
}

The API is asynchronous, so you get a job ID back, not the finished description. Store this job ID; we'll use it to check status next.

Step 2: Poll AI-boost until the description is ready

Add a Loop node set to poll every 5 seconds, up to 60 times (that's 5 minutes of polling). Inside the loop, add another HTTP Request node that checks the status of the job:


Method: GET
URL: https://api.ai-boost.io/v1/descriptions/{{ $json.job_id }}/status
Authentication: Bearer Token
Token: [your AI-boost API key]

The response looks like:

{
  "job_id": "job_abcd1234",
  "status": "complete",
  "description": "The Blue Widget is a precision-engineered tool designed for professionals who demand reliability...",
  "confidence_score": 0.92
}

Configure the loop to break when status === "complete". If it times out after 60 attempts, the workflow should send you an alert (more on that in Pro Tips).

Extract the description field and save it to a variable called generated_description.

Step 3: Call SellerPic AI to enhance product images

Once the description is ready, add another HTTP Request node for SellerPic AI. This endpoint accepts an array of image URLs:


Method: POST
URL: https://api.sellerpic.ai/v1/images/enhance
Authentication: Bearer Token
Token: [your SellerPic AI API key]
Headers: Content-Type: application/json
Body:
{
  "images": [
    {
      "url": "{{ $json.images[0].src }}",
      "alt_text": "{{ $json.images[0].alt }}"
    },
    {
      "url": "{{ $json.images[1].src }}",
      "alt_text": "{{ $json.images[1].alt }}"
    }
  ],
  "enhancement_type": "ecommerce",
  "compression": "medium"
}

SellerPic AI returns:

{
  "batch_id": "batch_xyz9876",
  "status": "processing",
  "image_count": 2
}

Again, this is asynchronous. Store the batch_id.

Step 4: Poll SellerPic AI until images are ready

Add another loop node (same configuration as step 2) that polls this endpoint:


Method: GET
URL: https://api.sellerpic.ai/v1/images/{{ $batch_id }}/status
Authentication: Bearer Token
Token: [your SellerPic AI API key]

The response will look like:

{
  "batch_id": "batch_xyz9876",
  "status": "complete",
  "images": [
    {
      "original_url": "https://cdn.shopify.com/s/files/blue-widget-front.jpg",
      "enhanced_url": "https://cdn.sellerpic.ai/output/batch_xyz9876/image_0.jpg",
      "improvement_score": 0.87
    },
    {
      "original_url": "https://cdn.shopify.com/s/files/blue-widget-side.jpg",
      "enhanced_url": "https://cdn.sellerpic.ai/output/batch_xyz9876/image_1.jpg",
      "improvement_score": 0.91
    }
  ]
}

Extract the enhanced image URLs and store them.

Step 5: Update the product with new description and images

Once both AI-boost and SellerPic AI are done, call your e-commerce platform's API to update the product. For Shopify:


Method: PUT
URL: https://yourstore.myshopify.com/admin/api/2024-01/products/{{ $json.id }}.json
Authentication: Bearer Token
Token: [your Shopify admin API key]
Headers: Content-Type: application/json
Body:
{
  "product": {
    "id": {{ $json.id }},
    "body_html": "{{ $generated_description }}",
    "images": [
      {
        "id": {{ $json.images[0].id }},
        "src": "{{ $enhanced_images[0].enhanced_url }}"
      },
      {
        "id": {{ $json.images[1].id }},
        "src": "{{ $enhanced_images[1].enhanced_url }}"
      }
    ]
  }
}

For WooCommerce, use the REST API:


Method: PUT
URL: https://yoursite.com/wp-json/wc/v3/products/{{ $json.id }}
Authentication: Basic Auth
Username: [WooCommerce API key]
Password: [WooCommerce API secret]
Headers: Content-Type: application/json
Body:
{
  "description": "{{ $generated_description }}",
  "images": [
    {
      "src": "{{ $enhanced_images[0].enhanced_url }}"
    },
    {
      "src": "{{ $enhanced_images[1].enhanced_url }}"
    }
  ]
}

This completes the workflow. When the update succeeds, add a notification node (email, Slack, or Discord) to confirm the product has been processed.

Using Zapier or Make instead

If you prefer Zapier or Make, the workflow is similar but the interface differs. In Zapier, use the "Webhook by Zapier" trigger and chain HTTP action steps. You'll hit Zapier's task limits faster because each polling attempt counts as a task, so this approach costs more. In Make, the UI is more visual; you'd use the "HTTP" module repeatedly and add "Router" modules for conditional logic.

For cost reasons, n8n is the best choice here, but Zapier works if you already have a subscription.

The Manual Alternative

If you want to keep more control, you can run parts of this workflow manually. For instance, use a Zapier Zap that triggers when a new product is added, then sends you an email with a button to review and approve the AI-generated description before it's published. Add another step that runs SellerPic AI only after you click approve.

This takes longer and defeats some of the efficiency gains, but it's useful if you're concerned about AI output quality or if your product data is messy and needs human review. You can also use this approach during the first week of deployment to validate that the AI tools are producing good results for your store's products.

Pro Tips

Error handling and retries

The polling loops can time out if the AI services are slow or overloaded. Add an "On Error" handler in n8n that catches timeout errors and retries the polling loop up to three times with exponential backoff. For instance, wait 10 seconds before the first retry, 20 seconds before the second, and 40 seconds before the third.


If error occurs:
  Wait 10 seconds
  Retry polling loop
  If error again:
    Wait 20 seconds
    Retry polling loop
  If error again:
    Wait 40 seconds
    Retry polling loop
  If error again:
    Send Slack alert with job ID
    Stop workflow

This prevents the workflow from failing on transient issues.

Rate limiting

Both AI-boost and SellerPic AI enforce rate limits. Check their documentation; typically they allow 100 requests per minute. If you're processing many products at once, the webhook trigger will fire multiple times and you'll hit the rate limit. Use n8n's "Rate Limit" node to queue requests and enforce a maximum of 30 requests per minute. This adds a small delay but prevents 429 errors.

Cost optimisation

SellerPic AI charges per image enhanced. If a product has 10 images, that's 10 charges. Before calling SellerPic AI, check whether the product images are already high quality. If they have a resolution above 2000×2000 pixels and a file size above 500 KB, skip enhancement and save the cost. Add a conditional node in n8n:


If image width > 2000 AND image height > 2000 AND file size > 500 KB:
  Skip SellerPic AI call
  Use original image URLs in product update
Else:
  Call SellerPic AI

Testing with sample data

Before going live, test the entire workflow with a sample product using n8n's "Trigger manually" feature. Trigger the webhook with a test payload:

{
  "id": 999999999,
  "handle": "test-product",
  "title": "Test Product",
  "body_html": "<p>Test description.</p>",
  "images": [
    {
      "id": 888888888,
      "alt": "Test image",
      "src": "https://example.com/test-image.jpg"
    }
  ],
  "vendor": "Test Vendor",
  "product_type": "Test"
}

Run the workflow and monitor each step. Check the API responses in the n8n console. If any step fails, you'll see the error immediately and can adjust the API calls.

Monitoring and alerts

Set up Slack notifications for workflow failures. Add a notification node at the end of the error handler that sends a message like:


⚠️ Product enhancement workflow failed
Product: [product name]
Job ID: [AI-boost job ID or SellerPic batch ID]
Error: [error message]

This way you know immediately if something went wrong and can investigate.

Cost Breakdown

ToolPlan NeededMonthly CostNotes
AI-boostPro£50Covers up to 500 descriptions per month; extra descriptions at £0.10 each.
SellerPic AIPro£80Covers up to 1000 enhanced images per month; extra images at £0.08 each.
n8n CloudStandard£20Includes webhooks and executions. Covers up to 200,000 execution tasks per month.
Shopify APIBuilt-in£0Included with Shopify; no additional cost for product updates.
WooCommerce APIBuilt-in£0Included with WooCommerce; no additional cost.
Total£150Covers workflows for up to 500 products per month.

If you process 500 products and each product has 3 images, that's 500 descriptions and 1500 images. At these volumes, the Pro plans cover you with room to spare. If you exceed 500 descriptions or 1000 images in a month, costs scale up quickly. Calculate your actual product volume and adjust plans accordingly.

A final note: both AI-boost and SellerPic AI offer discounts for annual plans, typically 20% off. Paying annually drops the combined tool cost to around £130 per month.

More Recipes