My Baby Babbles

My Baby Babbles is a single-brand Shopify store, so the connector is the Shopify Admin API with a custom app token, plus the open storefront products.json.

My Baby Babbles is an Indian direct-to-consumer brand selling personalised baby and kids products: iron-on name labels, school and daycare essentials, and similar personalised items, priced in rupees and sold across India. It is not a marketplace and has no sellers of its own. It is a brand's own online store, and the useful finding for a connector is which platform it runs on: My Baby Babbles is a Shopify store. That means there is nothing bespoke to build. The integration is the Shopify Admin API, and everything documented for Shopify applies unchanged.

At a glance

What it is

The brand sells personalised children's products, with personalisation as the core of the offer: name labels in themed designs, sized and styled for uniforms, T-shirts, towels and other fabric items, aimed at school, daycare, camps and travel. Products carry Indian GST tags in the store data and are priced in rupees, so the operating market is India.

Commercially this is a small catalogue with deep variant personalisation, which has one real consequence for the data model. A personalised product is configured at the line, not selected from a fixed grid: the sample product below has a single SKU, MBB-IRON-ON-LABEL, shared across every theme variant, with the theme carried as the variant option and the child's name captured as a line item property at checkout. Any connector that keys on SKU alone will collapse distinct orders into one product and lose the personalisation entirely.

API access

My Baby Babbles publishes no API of its own, and does not need to. The store identification is unambiguous:

  • mybabybabbles.com serves Shopify assets throughout, with over 250 references to cdn.shopify.com and an embedded Shopify.shop configuration object in the page.
  • The underlying Shopify store handle is my-baby-babbles.myshopify.com.
  • mybabybabbles.com/products.json responds with a standard Shopify product list.

So access is obtained the ordinary Shopify way. Either:

  1. Custom app. The store owner opens Shopify admin, creates a custom app, grants the scopes you need, and issues an Admin API access token. This is the right choice for a single store and takes minutes. The token does not expire.
  2. Public app. Register an app on shopify.dev, and have the store install it through the OAuth authorization code flow. This is the right choice if the same connector serves many stores.

Shopify versions its Admin API quarterly, in the form 2026-07, and supports each version for a minimum of twelve months. Pin a version explicitly and schedule the upgrade; do not call an unversioned path. Official libraries exist for Node, Ruby, PHP, Python and .NET.

Note

This page deliberately does not restate the Shopify API. Endpoint paths, request bodies, pagination, rate limits and webhook topics belong on the Shopify connector page, and duplicating them here guarantees they drift. What belongs here is the identification: this brand is Shopify, the store handle is my-baby-babbles.myshopify.com, and the connector is therefore already built.

Authentication

Two supported routes, both Shopify's.

For a custom app, the token is issued in the admin and presented on every call as a header:

GET /admin/api/2026-07/orders.json?status=any&limit=50 HTTP/1.1
Host: my-baby-babbles.myshopify.com
X-Shopify-Access-Token: shpat_REDACTED
Content-Type: application/json

For a public app, the store is redirected to Shopify's authorization endpoint, returns with a code, and the code is exchanged for a permanent access token at POST https://my-baby-babbles.myshopify.com/admin/oauth/access_token with the client id, client secret and code in the request body. Shopify Admin API tokens from this flow do not expire and there is no refresh step; access ends when the app is uninstalled.

Scopes are granular: read_orders, read_products, write_products, read_inventory, write_inventory, read_fulfillments and so on. Request only what the connector uses. Note that read_orders on a public app is limited to the last sixty days of orders unless Shopify grants the protected customer data scope, which matters if you intend to backfill history.

Multi-account handling is simply one token per store domain, keyed on the myshopify.com handle rather than the custom domain, since the custom domain can change and the handle cannot.

Objects we can read

All standard Shopify objects are available: orders, order line items, products and variants, inventory levels and items, fulfilments, refunds and returns, transactions and payouts through Shopify Payments, customers, and locations. Their endpoints, filters and pagination are documented on the Shopify connector page and on shopify.dev, and are not repeated here.

The one thing worth recording on this page is the open storefront feed, because it is available with no credentials at all and is useful for catalogue monitoring before any token exists.

Products and listings

GET https://mybabybabbles.com/products.json?limit=1 returns live catalogue data without authentication. Real response from 2026-09-21, trimmed to one variant and one image:

{
  "products": [
    {
      "id": 7660035670062,
      "title": "Personalised Iron-On Labels - Set of 93",
      "handle": "personalised-iron-on-labels-set-of-93",
      "published_at": "2026-09-21T14:52:03+05:30",
      "created_at": "2026-09-21T14:52:01+05:30",
      "updated_at": "2026-09-21T22:28:05+05:30",
      "vendor": "My Baby Babbles",
      "product_type": "",
      "tags": ["1-3 Years", "4-7 Years", "GST-18", "Iron on Labels", "Personalised", "School", "Under Rs. 1000"],
      "variants": [
        {
          "id": 42727546650670,
          "title": "Mermaid",
          "option1": "Mermaid",
          "sku": "MBB-IRON-ON-LABEL",
          "requires_shipping": true,
          "taxable": true,
          "available": true,
          "price": "800.00",
          "compare_at_price": null,
          "grams": 0,
          "position": 1,
          "product_id": 7660035670062,
          "updated_at": "2026-09-21T22:28:05+05:30"
        }
      ],
      "images": [
        {
          "id": 34111629000750,
          "position": 1,
          "product_id": 7660035670062,
          "src": "https://cdn.shopify.com/s/files/1/0764/5455/files/c7ba000d-4763-4633-a6b3-6f31a1f63fce.jpg?v=1789982218",
          "width": 1600,
          "height": 1600
        }
      ]
    }
  ]
}

Two things to notice. The tags array is being used as a taxonomy: age band, category, price band, merchandising flags, and a GST-18 tag that encodes the tax rate. Tag-encoded tax is fragile but it is what the store actually does, so read it rather than guessing the rate. Second, available is a boolean here, not a quantity: the public feed deliberately omits stock counts. Actual quantities require the Admin API and the read_inventory scope.

The feed paginates with ?page=, is capped at 250 products per page, and exposes only published products. It carries no price history, no inventory quantity and no cost.

Writing back: listings, price and stock

Fully supported through the Shopify Admin API: create and update products and variants, set price and compare_at_price, publish or unpublish, and adjust or set inventory through inventory levels at a location. Bulk changes go through Shopify's bulk operations in GraphQL rather than looping REST calls.

Nothing here is specific to My Baby Babbles beyond one caution: because the personalisation lives in line item properties rather than in variants, do not attempt to model each personalisation as a listing. The listing is the label set; the name is order data.

Webhooks and notifications

Shopify's standard webhook system applies. Subscribe to topics such as orders/create, orders/updated, orders/cancelled, products/update, inventory_levels/update and refunds/create. Every delivery is signed with an HMAC-SHA256 of the raw request body using the app's shared secret, presented in the X-Shopify-Hmac-Sha256 header. Verify it against the raw bytes before parsing. Shopify retries failed deliveries over roughly 48 hours and removes a subscription that keeps failing, so a reconciliation poll remains necessary as a backstop.

Rate limits and pagination

Shopify's limits apply unchanged: a leaky bucket on REST, exposed in the X-Shopify-Shop-Api-Call-Limit header, and a query-cost budget on GraphQL returned in the response extensions. Pagination is cursor-based through Link headers on REST and pageInfo cursors on GraphQL. For a store of this size, a webhook-driven pipeline with a nightly reconciliation poll will never come close to the limits.

Mapping to the unified model

Gaps and open questions

  • Whether the store uses Shopify Payments, which decides whether settlements is available through the payouts resource or has to come from a separate Indian gateway such as Razorpay or Cashfree. Indian Shopify stores very often use a local gateway, in which case settlement data lives there, not in Shopify.
  • Whether the brand also sells on marketplaces. If it does, those are separate channels and this page covers only the owned store.
  • Whether MBB-IRON-ON-LABEL is genuinely reused across all variants, or whether that was one product's data. If SKUs are reused broadly, SKU cannot be the primary key for this store and variant id must be.
  • A second Shopify handle, olineloyalty27.myshopify.com, also appears in the page source. That is almost certainly an embedded loyalty app rather than a second store, but it is worth confirming before any script keys on the wrong handle.

Sources

  • My Baby Babbles storefront, confirming the Shopify platform, the my-baby-babbles.myshopify.com handle and the Indian market: mybabybabbles.com
  • The store's open Shopify product feed, from which the sample response above was taken verbatim on 2026-09-21: mybabybabbles.com/products.json
  • Shopify Admin API reference, for the authentication, objects, webhooks and limits summarised here: shopify.dev/docs/api/admin
  • See also the Shopify connector page at /connectors/shopify for the full API surface