# Turn flat-lay packshots into on-model photos in WooCommerce

> Every weekday morning, find apparel listings that only have flat-lay photos, generate on-model versions, and post the batch to Slack for approval before anything goes live.

- Workflow type: agent
- Services: Black Forest Labs, WooCommerce, Google Drive, Slack Bot
- Categories: Marketing, Operations
- Published: 2026-08-14

## What it does

- Checks your store each weekday for apparel products that still only have flat-lay packshot photos, and skips anything that already has an on-model image so you never pay to regenerate the same shot twice
- Dresses one of your own approved model reference photos in each garment, picking the reference that best matches the item so a dress does not get paired with a shoe model
- Saves every generated image straight to Google Drive and posts the whole batch to your merchandising channel in Slack, so a person signs off before a single listing changes
- Attaches only the shots your team approved back onto the product listing, and caps how many items it processes per run so your image budget stays predictable

## What you'll need

- A WooCommerce store you can connect with read and write access to products
- A Black Forest Labs account with credits available for image generation
- A Google Drive folder holding your approved model reference photos, plus an empty folder for generated results and an Approved subfolder your team moves winners into
- A Slack workspace and the channel where your merchandising team reviews new imagery

## Prompt

Every weekday at 7am, find new apparel products in my WooCommerce catalog that still only have flat-lay packshot photos, and turn them into on-model shots without booking a photoshoot. Run this on a cron schedule. Each run has two phases: first attach anything my team already approved, then generate a fresh batch for review.

Phase one, the approval sweep. Use Google Drive List Files on my Approved subfolder to find on-model images a merchandiser moved there since the last run. For each approved file, attach it to the matching product using WooCommerce Update Product, adding it to the product's image list rather than replacing the existing packshot. Record which files you attached (for example by moving them to an Attached subfolder or noting the product id in the file name) so the next run does not attach the same image twice. This is the only place in the workflow that is allowed to modify a live product listing.

Phase two, generate the new batch. Use WooCommerce List Products filtered to published products in the apparel category or tag I specify. For each product, look at the images already attached and decide whether it has an on-model shot yet. Treat naming and alt text conventions as the signal, for example an image named or tagged on-model, lifestyle, or worn. Skip any product that already has one so we do not burn credits regenerating. Cap the run at a fixed number of products, defaulting to 10, and stop once you hit the cap.

Pull my approved model reference photos with Google Drive List Files against the reference folder I specify, then fetch the ones you need with Download File Content. Do not use a random model. Pick the reference that best matches the garment type: a womenswear model for a dress, a menswear model for a men's shirt, a lower-body or footwear reference for trousers and shoes. Use the product title, category, and tags to make that judgement, and if no reference is a sensible match for a garment, skip the product and say so in the Slack post rather than forcing a bad pairing.

For each selected product, call the Black Forest Labs Virtual Try-On (FLUX Tools) operation with the model reference as the person image and the product packshot as the garment image. The model reference comes from Drive so pass it as base64; the packshot is already a public storefront URL, which the FLUX Tools endpoints accept directly. Every Black Forest Labs generation is asynchronous: the submit call returns an id and a polling_url, and you poll that polling_url until status is Ready, at which point the image URL is at result.sample.

Important: result.sample is a signed delivery URL that expires 10 minutes after generation. Download it and re-host it immediately with Google Drive Upload File (Resumable) into my generated-results folder. Do not batch the downloads until the end of the run and do not put a Drive link to an expired URL in Slack. Name each file so the product it belongs to is obvious, for example the product id and slug. Use Google Drive Create Permission if my merchandising team needs view access to see the images from the Slack link.

When the batch is done, post it to my merchandising channel with the Slack Bot Send a Message operation. Include one line per product with the product name, a link to the Drive file, and which model reference was used, plus a short list of anything that was skipped and why. Tell reviewers to move the shots they approve into the Approved folder in Drive, which is what phase one of the next run picks up. Do not call WooCommerce Update Product for anything generated in this phase. Nothing generated in a run goes onto a live listing in that same run.

Handle the Black Forest Labs failure modes gracefully instead of failing the whole run. A 429 means too many active tasks against the 24 concurrent cap, so limit how many generations you have in flight and back off with exponential retry rather than aborting. A 402 means the account is out of credits, so stop generating and say so clearly in the Slack post. If a task comes back as Request Moderated or Content Moderated, treat that product as a skip with a note in Slack, not a hard failure. Any single product that fails should never take down the rest of the batch.

The business rule behind all of this: never auto-publish AI generated model imagery to a live storefront. Several jurisdictions and platform policies now expect disclosure of synthetic models in apparel marketing, so the Slack review gate before WooCommerce Update Product is a feature and not friction. Keep a human between generation and publication at all times.

## How to customize

- Change the schedule and the batch cap, for example ten products every weekday at 7am or a bigger run once a week
- Point it at a specific category, tag, or collection so it only touches the product lines you actually want on-model imagery for
- Swap in different model references, or add more so the workflow has a better match for each garment type such as outerwear, knitwear, or footwear
- Route the review post to a different Slack channel, or change the wording so the message matches how your team already approves creative

## FAQ

### Will this publish AI images to my live store automatically?

No, and that is deliberate. The workflow generates the images and posts them to Slack, but nothing reaches a product page until someone on your team approves it by moving the file into the Approved folder in Drive. The next run picks up those approvals and attaches them to the listing. A person is always in the loop.

### Do I need to disclose that a model photo was AI generated?

In a growing number of markets, yes. Several jurisdictions and marketplace policies now expect apparel retailers to disclose synthetic or AI generated models in marketing imagery. That is a big part of why the review step exists. Check the rules for the regions you sell into, and treat the Slack approval as the moment someone confirms the shot is compliant as well as on brand.

### Can I use this if I am on Shopify or another platform instead of WooCommerce?

Yes. The same pattern works on Shopify, BigCommerce, and Adobe Commerce, which all let you list products and update product images the same way. Just tell the builder which platform you are on and it will use that connection instead.

### How does it know which products still need an on-model shot?

It looks at the images already attached to each product and skips anything that already has an on-model version, based on how your images are named or tagged. Everything it skips stays untouched, so rerunning it does not burn credits regenerating work you already have.

### What happens if the image generator is busy or rejects a photo?

It waits and retries rather than dropping the whole run, so a temporary traffic limit does not cost you the batch. If a specific item is rejected by the content filters or fails outright, that one product is skipped and called out in the Slack post so you know exactly what did not make it.

### How many products will it process at a time?

Whatever cap you set, which defaults to a small batch per run. This keeps spend predictable and keeps the Slack review post short enough that someone will actually read it. Raise the cap once you trust the output.

Use this prompt in General Input: https://www.generalinput.com/prompts/turn-flat-lay-packshots-into-on-model-photos-in-woocommerce