Skip to content
ToolShedby Wasim Shaikh

ImageDino vs Bannerbear: A Developer's Guide to Automated Image Generation APIs

Wasim · 3 Nov 2026

Why Automated Image Generation Matters

Picture an e-commerce site with 5,000 products, or a property portal with 10,000 listings. Every record needs a banner, a social card, an Open Graph preview and maybe an email visual. Asking a designer to make each one by hand doesn't scale, and a design that drifts between images looks careless.

Template-based image generation APIs fix this. You design a layout once, mark the parts that can change (title, price, photo, colour), and send data through an API. The service renders a finished image for each record while keeping fonts, spacing and branding exactly as designed.

ImageDino and Bannerbear are two hosted services built around this idea. They overlap a lot, but they are aimed at different scopes:

  • ImageDino is a focused rendering service. It turns published designs into dynamic images through a compact API.
  • Bannerbear is a broader media automation platform. Image rendering is one part of it, next to PDFs, animations, video tools, batch jobs and workflows.

This guide compares them from an engineering point of view: API shape, rendering modes, dynamic URLs, credit maths, security, and how to plug either one into a Next.js or WordPress app.

Note on freshness: pricing and feature details in this article were checked on 1 November 2026 against each vendor's official website, docs and pricing pages. Both products are changing quickly, especially their API and MCP features, so confirm anything important on the official pages before you commit. This is a documentation-based comparison, not a hands-on benchmark.


What Is Template-Based Image Generation?

It helps to separate three approaches that often get lumped together as "image generation":

Approach How it works Good for
Text-to-image AI A model creates a brand-new picture from a prompt Illustrations, concept art, one-off visuals
Template-based rendering An existing design is filled with data; the layout stays fixed Product cards, OG images, listings, ads at scale
Programmatic composition You draw images yourself with a library (Canvas, Sharp, Satori, headless Chrome) Full control when you can maintain the code

ImageDino and Bannerbear both sit in the middle row. An AI image generator invents a new visual every time. A template renderer takes a design you already approved and only swaps the content you allow it to change. That predictability is exactly what you want for branded, data-driven images.

Why use a hosted API instead of rendering it yourself?

You can generate images in the browser or with your own headless Chrome service. A hosted API mainly buys you:

  • Consistency: the same fonts and layout engine render every image, so you don't get browser or OS differences.
  • Font management: no shipping font files to servers or worrying about missing glyphs on a build box.
  • Centralised design control: marketers edit the template in a visual editor, and developers don't redeploy code.
  • Security: API keys and signing secrets stay on the server.
  • Caching and background processing: rendering runs off your request path.

What Is ImageDino?

ImageDino is a visual template editor (ImageDino Studio) combined with an image-rendering API. Its core building blocks are published designs, named objects, modifiers, render jobs and Dynamic URLs.

The website showcases use cases such as e-commerce product images, real estate listing graphics, personalised email visuals, Open Graph and social images, ad creatives and YouTube thumbnails.

How ImageDino works

1. Visual template editor. You build the design in Studio with text, images, colours, groups and layout. The editor supports groups, auto layout and flexible text sizing, which matters when one record has a five-word title and the next has fifteen.

Some elements stay static, others become dynamic. For a real estate banner:

Element Behaviour
Agency logo Static
Background layout Static
Property photograph Dynamic
Property title Dynamic
Price Dynamic
Location Dynamic
Bedrooms Dynamic
Call to action Static

2. Named objects and modifiers. Every editable object is addressed by name or ID, using a <target>.<modifier> convention:

{
  "modifiers": {
    "headline.text": "Luxury Villa in Ahmedabad",
    "price.text": "₹1.25 Crore",
    "location.text": "Satellite, Ahmedabad",
    "badge.fill": "#72b844"
  }
}

Other modifiers include headline.font_size, headline.font_family, headline.fill, photo.fill, badge.visible and badge.opacity. You can also group them per object:

{
  "modifiers": {
    "headline": {
      "text": "Luxury Villa",
      "font_size": 72,
      "fill": "#ffffff"
    }
  }
}

The API can also change positioning, dimensions, strokes, shadows and rounded corners, so you can adjust single elements without rebuilding the graphic.

3. Rendering engine. Once the design is published, your app sends a design ID plus modifiers and output settings. ImageDino applies the values and returns an image URL in PNG, JPG or WebP. The design has to be published first; drafts can't be rendered through the documented API.


ImageDino REST API and Integration Example

The ImageDino API documentation describes a small, focused REST API.

  • Base URL: https://api.imagedino.com
  • Auth: Bearer token (Authorization: Bearer YOUR_API_KEY)
  • Keys belong to a workspace, can optionally be scoped to individual projects, and come in general and render_only roles.
Method Endpoint Purpose
GET /v1/me Verify API credentials
GET /v1/designs List published designs
GET /v1/designs/:design_id Read design and frame information
GET /v1/fonts Retrieve font information
GET /v1/icons Search available icons
POST /v1/renders Generate an image
GET /v1/renders/:render_id Retrieve render status
GET /v1/dynamic-urls List active signed Dynamic URLs
POST /v1/dynamic-urls/:id/sign Sign a protected Dynamic URL

Rendering an image

curl https://api.imagedino.com/v1/renders \
  -X POST \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "design_id": "de_123",
    "mode": "async",
    "modifiers": {
      "headline.text": "Summer Sale",
      "price.text": "₹999",
      "badge.fill": "#ff0000"
    },
    "output": {
      "format": "png",
      "scale": 1
    }
  }'

Key request parameters:

Parameter Description
design_id Published design to render
design_version_id Optional specific design version
frame / frame_idx Pick a frame by ID, name, key or index
mode Synchronous or asynchronous rendering
modifiers Dynamic object values
output.format PNG, JPG or WebP
output.scale Resolution multiplier
validation Strict or permissive validation
reuse_if_exists Reuse an equivalent existing render

If you want to inspect what comes back while testing, paste the response into the JSON Prettifier or JSON Viewer.

Sync vs async rendering

  • Sync: the API waits briefly and returns the finished result when it's ready.
  • Async: the API returns a render job ID straight away, and you poll GET /v1/renders/{render_id}. Statuses are queued, rendering, completed and failed; a completed render includes an output_url.

For production, async is usually the better choice, because your business request shouldn't wait on rendering time.

One important limitation: ImageDino's rendering docs mark webhook_url as coming soon. Until that ships, plan on polling rather than completion webhooks. The API does support idempotency keys and render reuse to avoid duplicate work on retries.


ImageDino Dynamic URLs and Rendering Credits

Dynamic URLs

Dynamic URLs render an image when the URL itself is requested. Query parameters become modifiers:

https://gen.imagedino.com/d/du_123.png?headline.text=Summer%20Sale&price.text=999&scale=2

That's handy for Open Graph images, personalised email images, product recommendations and dynamic landing-page graphics. Instead of generating, storing and refreshing 10,000 product images, a page can simply point at a URL built from that product's data. (The URL Encoder and URL Parser are useful for building and debugging these query strings.)

Protected Dynamic URLs are signed server-side with HMAC-SHA256, via the API, so the browser never sees your API key. Sign them whenever the image contains private or user-specific data, and validate parameters before you sign.

Caching: ImageDino identifies cached output by the final URL plus the resolved design version. Repeat requests for the same variation reuse the cached image, and publishing a new design version can refresh output when the Dynamic URL follows the live version. Cache hits don't create a render job or spend credits; cache misses are charged as sync renders.

Credit calculation

ImageDino's credit model is based on output pixels and render mode:

output_pixels = width × height × scale²
size_units    = max(1, ceil(output_pixels / 1,000,000))
Render mode Credits
Async 1 × size units
Sync 2 × size units
Dynamic URL cache miss 2 × size units
Dynamic URL cache hit No new render charge

For a standard 1200 × 630 OG image:

Scale Output size Async credits Sync credits
1× 1200 × 630 1 2
2× 2400 × 1260 4 8

Doubling the scale quadruples the pixels, so retina-quality output gets expensive fast at volume. Choosing async over sync halves the cost.

MCP integration (beta)

ImageDino offers a Model Context Protocol server at https://mcp.imagedino.com/mcp, connected with OAuth. An AI assistant can list published designs, inspect fields, search fonts and icons, change text, colours, images and typography, render images and check render status.

Limits as documented: it's beta, it works only with published templates, it can't create or edit designs, and image replacement needs a publicly accessible URL (chat attachments can't be uploaded directly).


What Is Bannerbear?

Bannerbear is a template-based media generation and automation platform. You design in the Bannerbear editor and feed content through the API to generate branded images, documents, animations and videos.

Capability Function
Image API Generate images from templates
PDF API Create and process PDFs
Animation API Render animated graphics
Video API Video operations
Workflow API Chain media operations together
Instant URLs Generate images from dynamic URLs
Integrations Connect external apps
MCP Server Let AI agents use Bannerbear

How Bannerbear works

A template is a canvas made of named objects (layers):

Template: Product Promotion
Canvas: 1200 x 630
Objects:
 ├── background
 ├── logo
 ├── product_image
 ├── title
 ├── description
 ├── price
 ├── discount_badge
 └── button

When you generate an image, you send modifications for the layers that change. A big architectural difference from ImageDino: Bannerbear's API also documents endpoints to create, retrieve, update and delete image templates, including full layer definitions with position and styling. That makes it practical to manage a template library from code rather than only by hand in an editor.


Bannerbear REST API and Integration Example

The Bannerbear V5 API reference uses https://api.bannerbear.com as the base URL, with images generated via POST /v5/images:

const response = await fetch("https://api.bannerbear.com/v5/images", {
  method: "POST",
  headers: {
    Authorization: `Bearer ${process.env.BANNERBEAR_API_KEY}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    template: "abc123def456ghij",
    formats: ["png", "webp"],
    modifications: {
      objects: [
        { name: "title", text: "New Product Launch" },
        { name: "price", text: "₹999" },
        { name: "background", "background-color": "#1a1a2e" },
      ],
    },
  }),
});

const result = await response.json();

Output formats include PNG, JPG, PDF and WebP, along with image scaling and both template-level and per-layer changes.

Asynchronous by default

V5 is primarily asynchronous. A generation request usually returns 202 Accepted, meaning the job was accepted, not that the image is ready. You then poll the resource or, better, receive a webhook when it completes.

If you need to wait inline, there's a synchronous host at https://sync.api.bannerbear.com. It has a documented 10-second timeout, and slower renders can return HTTP 408. For production, async plus webhooks is the safer pattern.

Security and operational controls

  • Scoped API keys: keys can be limited to specific resources and actions such as images:write or image_templates:read, and restricted to allowed browser origins.
  • Versioning: V5 keys don't work on V2 endpoints and vice versa. Plan for this if you're migrating an older integration.
  • Rate limit: 60 POST requests per 10-second window.
  • Webhooks: managed via API and dashboard, with signing keys so you can verify payloads.
  • SDKs: official libraries for Node.js, Python, PHP and Ruby.

Bannerbear Batch Processing and Workflow API

Batch generation

POST /v5/batches accepts up to 100 image payloads in a single request:

{
  "type": "images",
  "items": [
    {
      "template": "template_123",
      "modifications": { "objects": [{ "name": "title", "text": "Product One" }] }
    },
    {
      "template": "template_123",
      "modifications": { "objects": [{ "name": "title", "text": "Product Two" }] }
    }
  ]
}

It returns an accepted job, and you can check batch status and each item's result. That suits large catalogues, property directories, bulk social content and automated publishing.

Animation and video

This is the biggest difference between the two platforms. Bannerbear supports animated templates with canvas size, layers, frame rate, keyframes and duration:

Logo reveal animation
0 ms:    opacity = 0, scale = 0.6
800 ms:  opacity = 1, scale = 1

Outputs include MP4, plus MOV for transparent animations. There are also standalone video tools: resize, trim, concatenate, crop, overlays, subtitles, voiceover, background audio, slideshows and thumbnails. On top of that come background removal, AI image generation, AI video generation and PDF processing.

If HTML-driven video is what you're after, you may also like our look at HyperFrames, an open-source HTML-to-video framework.

Workflow API

The Workflow API chains media operations into a reusable pipeline: you define inputs, ordered steps and a final output. For example, turning an article into a promo video:

Article + source video → Resize video → Title animation → Generate & burn subtitles → Branded MP4

Steps can reference inputs ({{inputs.video_url}}) or earlier outputs ({{steps.resize.video_url}}). Runs are async and return a run ID, status, progress and per-step output; you can track them with webhooks or polling.

Integrations and MCP

Bannerbear advertises 50+ integrations, including Airtable, Notion, WordPress, Shopify, Ghost, Zapier and HubSpot. Its hosted MCP server has several connection profiles:

  • https://mcp.bannerbear.com/: main tools, including templates, image and animation generation, and workflows
  • https://mcp.bannerbear.com/workflows: workflow-focused tools
  • https://mcp.bannerbear.com/all: every available tool

Hosted connections use OAuth, and a locally installed MCP package is documented too.

For comparison, ImageDino documents API access and an MCP connection to ChatGPT and Claude, but I didn't find an equivalent 50-plus integration directory in its official materials.


Comparing Dynamic URLs and Instant URLs

Both platforms let you render an image just by requesting a URL. Bannerbear calls this Instant URLs; each one is tied to a single template, for example https://v5-iu.bannerbear.com/UNIQUE_ID/image.jpg, with parameters that modify the design.

Bannerbear's Instant URL options include encoded or named parameters, signed or open security, scale, rate limiting, a maximum render count, an expiry date and template version pinning. Bannerbear recommends signed security in production; the signing key is returned only when the Instant URL is created, so store it safely.

Feature ImageDino Dynamic URLs Bannerbear Instant URLs
Render from URL Yes Yes
Parameters in URL Yes Yes
Protected / signed URLs Yes, HMAC-based Yes, HMAC-based
Output formats PNG, JPG, WebP Multiple formats
Scale control Yes Yes
Expiration controls Yes Yes
Cache handling Documented URL + version caching Check current Instant URL docs
Plan availability Pro and Scale Scale and Enterprise

They do the same job, but don't assume caching, expiry and cache-miss billing work the same way. Test that during your evaluation.


ImageDino vs Bannerbear: Feature Comparison

Capability ImageDino Bannerbear
Visual template editor Yes Yes
Dynamic text, images, colours, typography Yes Yes
Programmatic template create/update Not in documented public API Yes
Image rendering API Yes Yes
Async / sync rendering Yes / Yes Yes / Yes
Completion webhooks Marked "coming soon" Yes
Render polling Yes Yes
Batch generation No documented batch endpoint found Yes, up to 100 items
Dynamic image URLs Yes Yes
PNG / JPG / WebP Yes Yes
PDF generation Not documented as a core feature Yes
Animation generation Not documented as a core feature Yes
Video processing Not documented as a core feature Yes
Workflow API Not documented Yes
AI image/video tools Not documented as a core feature Yes
MCP integration Yes (beta) Yes
App integrations API and MCP documented 50+ advertised
OpenAPI spec Yes Yes
Official SDKs Not found in reviewed docs Node.js, Python, PHP, Ruby

"Not documented" means not found in the official public materials reviewed on 1 November 2026. It doesn't prove a capability is unavailable through another route or won't arrive later.

API shape side by side

Aspect ImageDino Bannerbear
Main resource Published design Image template
Identifier design_id template
Dynamic values modifiers modifications.objects
API version /v1 /v5
Render endpoint /v1/renders /v5/images
Completion Polling Polling or webhook

The same product card in both:

// ImageDino
{
  "design_id": "de_123",
  "modifiers": {
    "title.text": "Wireless Headphones",
    "price.text": "₹2,499",
    "product.fill": "https://example.com/product.jpg"
  }
}
// Bannerbear
{
  "template": "abc123",
  "modifications": {
    "objects": [
      { "name": "title", "text": "Wireless Headphones" },
      { "name": "price", "text": "₹2,499" },
      { "name": "product", "background-image": "https://example.com/product.jpg" }
    ]
  }
}

ImageDino's flat target.modifier map is compact and easy to build from a database row. Bannerbear's object array is more verbose, but it's part of a larger API that also manages templates and other media types.


Pricing and API Credit Comparison

All prices are in USD and were checked on 1 November 2026. Check the official pricing pages before you buy, because these change often.

ImageDino pricing

The displayed prices are effective monthly prices, billed yearly. Plan credits refresh monthly.

Plan Effective monthly price Monthly credits Bandwidth Notable features
Hobby $12 500 3 GB 1 project, editor, API
Start $32 2,000 10 GB 3 projects, editor, API
Pro $65 10,000 50 GB 100 projects, Dynamic URLs, ChatGPT/Claude MCP
Scale $165 50,000 100 GB 500 projects, Dynamic URLs, MCP, up to 10 workspace members (coming soon)

Free trial: check before you rely on it. When we checked, ImageDino's homepage advertised a 14-day free trial, while its pricing page advertised a 7-day trial with 50 image credits and no credit card. Confirm the current terms at signup.

Bannerbear pricing

Advertised monthly prices:

Plan Monthly price API credits AI credits
Automate $49 1,000 200
Scale $149 10,000 600
Enterprise $299 50,000 1,250

All plans include the REST API, MCP, 50+ integrations, forms and workflows. Scale adds Instant URLs, custom S3, team members and two-factor authentication. Enterprise adds SSO, audit logs, Zero Data Retention and priority support. The free trial includes 30 API credits, no credit card required.

Bannerbear uses one API credit pool for image and media operations, with a separate AI credit allowance. Its published examples:

Operation Credits
One JPG at scale 1 1 API credit
JPG + PNG at scale 2 4 API credits
4.2-second animation 10 API credits (2 per second, rounded up)
60fps animation 2× the 24/30fps cost
AI layer operation (background removal, face/subject detection, AI background) +1 AI credit each

A 10,000-image example

Say you need one 1200 × 630 image for each of 10,000 products:

  • ImageDino, async, scale 1: 10,000 × 1 = 10,000 credits
  • Bannerbear, single format, scale 1: 10,000 × 1 = 10,000 API credits

The numbers look the same, but the credit systems aren't interchangeable. ImageDino charges by pixel size and doubles the cost for sync. Bannerbear charges per format and scale, and bills AI features separately. Model your workflow (formats, scale, sync vs async, how often images regenerate, cache hit rate) rather than comparing headline per-image costs.


Integrating With Next.js, WordPress and Other Apps

Both services fit the same backend pattern, whether your app runs on Next.js, WordPress or a custom PHP backend:

Frontend / CMS        → user creates or updates a product, property or article
Backend API           → validates data, picks a design
Job queue / renderer  → submits the render, stores the job ID
Provider              → ImageDino (render API / Dynamic URL) or Bannerbear (image / batch / webhook)
Storage + CDN         → saves the image URL against the record and serves it

Keep the provider behind an interface

The most useful design decision is to keep your business logic independent of the vendor's request format:

src/
  app/api/image-generation/route.ts
  lib/image-services/
    imagedino.ts
    bannerbear.ts
  lib/image-generation/
    templates.ts
    queue.ts
    storage.ts
  types/image-generation.ts
interface ImageProvider {
  generateImage(
    templateId: string,
    data: Record<string, unknown>
  ): Promise<{ jobId: string; status: string }>;

  getImageStatus(
    jobId: string
  ): Promise<{ status: string; imageUrl?: string }>;
}

// Implement ImageDinoProvider and BannerbearProvider against this interface.

If prices, features or requirements change, switching providers becomes an adapter swap rather than a rewrite.

Example: real estate listing images

A property record like this:

{
  "id": 1001,
  "title": "Premium 3 BHK Apartment",
  "location": "Satellite, Ahmedabad",
  "price": "₹1.25 Crore",
  "bedrooms": 3,
  "area": "1850 sq.ft",
  "image": "https://example.com/property.jpg"
}

…can feed one published design to produce listing cards, social ads, WhatsApp promos, detail-page hero images and OG previews. Track each generation in a table:

Field Purpose
id Generation record
entity_id Related property ID
provider ImageDino or Bannerbear
template_id Template used
job_id External render job
status Pending, completed or failed
image_url Generated image
content_hash Hash of the fields used in the image
created_at Generation timestamp

The content_hash is the money saver. If the hash hasn't changed since the last render, skip the request.

Dynamic images for SEO

Automated images are a natural fit for publishing and e-commerce sites: Open Graph metadata, social share previews, article thumbnails, product previews and personalised email visuals. A good OG image can improve how links look when shared and may lift click-through. But generating one does not by itself improve search rankings. Treat it as presentation, not an SEO shortcut.


Security, Scalability and Production Considerations

Whichever service you pick, plan for these before go-live:

  • Credentials: keep API keys and URL-signing secrets on the backend only. Never ship them in frontend JavaScript.
  • Async processing: render in background jobs, not in the user's request.
  • Idempotency: use request IDs and idempotency controls so retries don't create duplicate renders.
  • Caching: reuse images whose underlying content hasn't changed.
  • Storage: decide whether provider-hosted URLs are enough or you need to copy images to your own S3-compatible storage.
  • Failure handling: retries, error logging, failed-job tracking and a way to regenerate.
  • Input validation: restrict allowed image source URLs, cap text lengths and sanitise user-supplied values before sending modifiers.
  • Template versioning: pin versions so a design change doesn't unexpectedly alter existing assets.
  • Cost monitoring: log renders, formats, scales and credits consumed.

One ImageDino-specific gotcha: its docs explain that expiring a signature on a normal render output URL does not make the underlying image private. The unsigned output URL can still be reachable. Treat protected Dynamic URLs and ordinary render outputs as different things, and don't render sensitive data into publicly reachable outputs.

Test these before you commit

Vendor docs tell you what's supported, not how well it performs. Before choosing, run the same design through both and check:

Test What to look for
Render speed Time for the same design
Complex templates How many layers and modifiers it handles
Text overflow Long titles, multiple languages
Typography Font availability and substitution
Image replacement Crop, fit and positioning
Transparency PNG and transparent output
High resolution 2× and 4× renders
URL caching Cache misses vs repeat requests
Bulk throughput Thousands of records
Failure handling Invalid modifiers, broken source images
Webhooks Delivery, verification, retries (Bannerbear)
Real cost Same sizes and formats on both

Indian-language support

This is easy to overlook and critical for Indian sites. Test templates with English, Gujarati, Hindi and mixed English–Gujarati text, long property titles, Indian currency formatting (₹1,25,00,000 vs ₹1.25 Crore) and Indian address formats. Check that Gujarati and Devanagari glyphs shape correctly, line breaks land sensibly and auto-fit text still fits. A font appearing in a catalogue doesn't guarantee it renders every script correctly.


Which Platform Should Developers Choose?

There's no universal winner. It depends on what you're automating.

Choose ImageDino if your main need is many variations of existing visual designs:

  • E-commerce product images and catalogue banners
  • Real estate listing graphics
  • Dynamic Open Graph images
  • Personalised email visuals
  • Data-driven ad creatives

Its compact modifier API, pixel-based credits and cached Dynamic URLs suit apps that generate images from structured data. Plan on polling until render webhooks ship.

Choose Bannerbear if your needs go beyond static images:

  • Automated social media content at volume
  • Video resizing, subtitles and voiceovers
  • Animated promotional graphics
  • PDF generation
  • Podcast or article-to-video production
  • Multi-step media workflows

Its Workflow API, batch endpoint, webhooks, SDKs and integrations make up a broader automation ecosystem.

My take

For a developer adding an image-generation feature to an existing product, I'd evaluate ImageDino first: the API is smaller, the mental model is simple, and the pricing starts lower. For a business automating a whole media production pipeline, Bannerbear deserves the closer look. The real difference isn't image quality. It's how much infrastructure each platform gives you around the render.


Conclusion

ImageDino and Bannerbear are two approaches to the same problem. ImageDino is a focused, template-oriented renderer: published designs, object modifiers, async rendering and cached Dynamic URLs for producing consistent images from data at scale. Bannerbear is a broader media automation platform: programmatic templates, batch jobs, PDFs, animations, video tools, workflows, webhooks and integrations.

Put the vendor behind an interface, render asynchronously, cache by content hash, keep secrets server-side, and run a quick side-by-side with your own designs, including your own languages, before you commit.

All pricing and features above were checked on 1 November 2026 from official vendor sources. Re-check them before purchasing.


Wasim Shaikh

About the author

Wasim Shaikh is a UI/UX developer and front-end engineer with 15+ years of experience, based in Ahmedabad, India. He specializes in Liferay, React, Angular, Next.js and Tailwind CSS.

Keep reading

Web dev · 10 Oct 2026Angular Moves to Yearly Releases: What It Means for Your UpgradesWeb dev · 7 Oct 2026Agentic Commerce Explained: How AI Agents Shop, Negotiate and Pay for YouWeb dev · 7 Oct 2026Headless Commerce Explained: A Complete Guide to Decoupled Ecommerce