Shopify

Turn Shopify catalog and inventory into verified WhatsApp context

Products, variants, collections, prices, publication state, inventory, locations, and markets sync from Shopify into a single versioned snapshot — refreshed by incremental webhooks, corrected by scheduled reconciliation, and never guessed when data goes stale.

  1. Discover
  2. Convert
  3. Order
  4. Fulfil
  5. Support
  6. Retain
  7. Feedback

What breaks without a verified catalog layer

A WhatsApp conversation is only as good as the data behind it. Without a real sync contract, a product answer is either stale, wrong, or a guess dressed up as fact.

  • A product is deleted in Shopify but keeps showing up in search results and campaign content because nothing told the index it's gone
  • An inventory count looks like real-time truth, when it's actually an hour-old number with no sellable rule applied on top of it
  • An initial catalog import exposes half-loaded data before the sync has actually finished
  • A price-drop or restock message goes out on a number that hasn't been reconciled against the current source

The catalog record Morasel keeps

One versioned snapshot per store, built from Shopify's own objects — never a one-time export that goes stale.

Initial sync
A GraphQL bulk operation loads the full catalog into a versioned staging snapshot, validated before it goes live — all-or-nothing, so a store never runs on a half-loaded catalog.
Incremental sync
Product, collection, publication, and inventory webhooks apply changes as a durable, idempotent event ledger — duplicates are safe, and out-of-order updates reconcile against the current source.
Reconciliation
Scheduled reconciliation catches anything a webhook missed, so drift gets corrected on a measured cadence, not left to accumulate.
Deletion and tombstones
A deleted or removed record is tombstoned, invalidating search, campaigns, subscriptions, and cached links — deletion wins until Shopify confirms otherwise.
Sellable rule
Sellable is a merchant-configured rule combining publication state, the specific variant, current inventory, and market — never inventory count read on its own.
Unknown vs. zero
Missing or untracked inventory is held as unknown, not treated as zero — Morasel never fabricates a stock number it can't confirm.

How catalog data earns its way into a conversation

The same pipeline runs for every store, from first sync to every update after it.

  1. Initial bulk sync builds the snapshot

    A GraphQL bulk operation imports the full catalog into a versioned staging snapshot before anything goes live.

  2. The snapshot activates all at once

    The staged snapshot only replaces the active one once it's validated — a partial import never reaches a live conversation.

  3. Incremental webhooks keep it current

    Product, collection, publication, and inventory events apply as they arrive, through a durable, idempotent event ledger.

  4. Scheduled reconciliation catches drift

    A periodic pass compares the snapshot against Shopify's current state and repairs anything a webhook missed.

  5. Deletion tombstones the record

    A delete or disconnect event tombstones the item immediately, pulling it from search, campaigns, and cached links.

  6. Sellable is computed, not assumed

    Every availability answer applies the publication, variant, inventory, and market rule together — unknown beats a false yes or no.

What a catalog-backed answer looks like

A short exchange — the answer comes from the current snapshot, not a guess.

What the team sees

One dashboard for whether the catalog behind every conversation can be trusted.

  • Per-store sync freshness, webhook lag, failures, and backlog, so the team knows whether catalog context is current before trusting it
  • A visible tombstone trail for deleted products, so nothing removed from Shopify keeps surfacing in search or campaigns
  • Reconciliation runs and outcomes logged on a measured cadence, not claimed as instant
  • A clear unknown state wherever inventory is untracked or unconfirmed, never displayed as zero or as in stock by default

What keeps the data trustworthy

Every rule in the sync exists to stop a guess from reaching a customer.

  • The active snapshot only ever comes from a validated, all-or-nothing initial sync or a reconciled incremental update — never a partial import
  • A market's price or currency is shown only from that market's own contextual data, never converted by assumption
  • Search runs against an index version matched to the active snapshot; a mismatch falls back to live or manual lookup
  • Only measured freshness is published — no real-time claim without an SLO behind it

What this does not do

Morasel does not equate a raw inventory quantity with sellable availability, and it does not promise real-time data without a measured freshness rule behind it. When the sellable rule can't confirm an answer, the response is "unknown" or a handoff — never a fabricated stock number.

Give WhatsApp a catalog it can trust

Connect your Shopify store so every conversation runs on a versioned snapshot, kept current by incremental sync and reconciliation — never a guess about stock.

Catalog and inventory questions

What happens during the initial catalog sync?

A GraphQL bulk operation loads the full catalog into a versioned staging snapshot, validated before it replaces the active one — never a partial catalog going live.

How current is the catalog data after that?

Incremental webhooks apply product, collection, publication, and inventory changes as they happen, with scheduled reconciliation catching anything a webhook missed.

What happens when a product is deleted in Shopify?

It's tombstoned immediately — pulled from search, campaigns, subscriptions, and cached links until Shopify confirms it exists again.

Does Morasel treat inventory count as availability?

No. Sellable is a rule combining publication state, the variant, current inventory, and market — never inventory quantity read alone.

What if inventory data is missing or untracked?

It's held as unknown, not zero. Morasel never fabricates a stock number it can't confirm.

Does catalog and inventory syncing cost per SKU?

No — Morasel does not charge per product or variant. Catalog and inventory sync runs on your Morasel subscription — Core $49, Pro $99, Max $199, Enterprise on request. WhatsApp usage is billed separately from a prepaid wallet at Meta's official rates.