Fill missing Shopify product photos with fal.ai lifestyle shots

By General Input

When Shopify products land without photos, generate an on-brand lifestyle shot with fal.ai, attach it, and drop a Slack preview for approval.

Integrations

  • Shopify
  • fal.ai
  • Slack Bot

Type

Agentic Task

Categories

  • Marketing
  • Operations

Trigger this workflow on the Shopify webhook for the products/create topic (and optionally products/update, for merchants that add the needs-photography tag after the product already exists). The webhook payload is the product record itself: read the id, title, body_html description, tags array, and the images array.

Only proceed if the product needs photography. Skip and end silently unless one of these is true: the images array is empty, OR the tags include a needs-photography tag (comma-split from product.tags). This guard is important, we must never overwrite curated shots on products that already have real photos.

If the webhook payload is thin or the images array is ambiguous, call Shopify Get Product with the product id to refresh title, body_html, tags, and the current images array before deciding.

Compose a fal.ai image prompt from the product title, a short cleaned-up excerpt of the description, and a brand style guide sentence that the operator sets at workflow setup time. The style guide keeps output consistent across products; treat it as a required input (default example: "Clean natural light, minimal Scandinavian styling, soft neutral background, no visible people, high-end product photography."). Weave the product into the scene rather than describing it in isolation, e.g. "a ceramic pour-over kettle on a light oak counter beside a linen napkin and a bud vase, morning window light".

Pick the fal.ai model based on whether the product already has a source photo to composite:

1. If the product has zero images (pure text-to-scene), call fal.ai Generate Image with FLUX1.1 [pro] with the composed prompt. Use a 4:5 or 1:1 aspect ratio suited to Shopify product galleries.

2. If the product has a plain cutout or packshot image but is tagged needs-photography, call fal.ai Generate or Edit Image with Nano Banana with the existing image URL as the reference and a prompt that re-composites the product into the brand lifestyle scene. This preserves product accuracy while adding a real setting.

fal.ai returns a v3.fal.media URL that is directly reachable, no re-hosting needed. Attach it to the product listing by calling Shopify Update Product with the product id and an images array that appends the new image URL to any existing images (never replace). If the product had no images at all, the new image becomes the primary.

Post a preview to the merchandising Slack channel with the Slack Bot Send a Message operation. The channel id is a workflow setting. The message should include: the product title as a linkable header (Shopify admin URL for the product), the generated image as an unfurled URL so Slack renders a large preview, the one-line prompt summary that fal.ai used, and a short caption reminding the team they can react with an emoji to approve, or re-tag the product with needs-photography to trigger a re-roll.

If any step fails (fal.ai returns a validation error, Shopify rejects the update, Slack errors out), post a short failure message to the same Slack channel naming the product and the step that failed so the team can fix it manually. Do not retry a failed fal.ai generation automatically, image spend should stay visible.

Related prompts

Explore more prompts
A brand asset library your marketing team actually searchesTurn Mailjet email clicks into ranked HubSpot follow-upsClean out the Looker dashboards and Looks nobody opensLiveKit live operations console for room moderationWake up dormant Keap leads with a researched reasonLiveChat coverage board for planning next week's shiftsPhone routing control panel for LiveKit voice agentsLinkedIn Ads budget pacing dashboard for every client accountGive your team Looker numbers without buying more seatsPause marketing emails to escalated customers, then restore them