> ## Documentation Index
> Fetch the complete documentation index at: https://docs.digifist.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Catalog Sync Errors

> Resolving FAILED product sync status, image format failures, Meta Catalog token issues, and other catalog synchronization problems.

Catalog sync errors prevent products from being pushed to Meta, which blocks SPM, MPM, and Whole Catalog message formats from displaying accurate or any product data. Most sync errors have a clear root cause visible in the product's error detail and a straightforward resolution path that does not require engineering involvement.

## What this covers

* How to identify which products have sync errors
* The most common error types and how to resolve each
* How to trigger a re-sync after fixing the root cause
* When to contact support

## Step 1 — Identify the failing products

<Steps>
  <Step title="Open the Catalog module">
    Go to **Catalog** in the Galantis dashboard. The main view shows aggregate sync status counts — the number of products with `SYNCED`, `PENDING`, and `FAILED` status.
  </Step>

  <Step title="Filter by FAILED status">
    Filter the product list to show only products with `FAILED` status. This gives you the scope of the issue — a handful of isolated failures versus a wholesale failure across many products at once.
  </Step>

  <Step title="Open a failing product">
    Click into an individual `FAILED` product and navigate to its sync status detail. The error detail shows the specific reason Meta rejected or failed to process this product during the push.
  </Step>

  <Step title="Identify the pattern">
    Review several `FAILED` products if there are multiple. Look for a common error type — a single root cause affecting many products at once (e.g., a token expiry) has a different resolution path from isolated per-product failures (e.g., individual image format issues).
  </Step>
</Steps>

## Common error types and resolutions

<AccordionGroup>
  <Accordion title="Image format or size failure" icon="image">
    **Symptom:** Individual products with `FAILED` status. Error detail references image format, image size, or image validation.

    **Cause:** Meta requires product images to be JPEG or PNG format and at least 500×500 pixels. Images that are a different format (WebP, GIF, AVIF), are below the minimum dimensions, or have a corrupted file will fail the Meta push.

    **How to resolve:**

    1. Identify the affected product in **Catalog → \[Product Name] → Error Details**
    2. Open the product in **Shopify Admin → Products** and update the product image to a JPEG or PNG file that meets the minimum 500×500px requirement
    3. Save the product in Shopify — this triggers an automatic webhook update in Galantis
    4. The next catalog sync cycle will re-attempt the Meta push with the updated image

    You do not need to manually trigger a re-sync for individual image fixes — the Shopify product update webhook handles it automatically.

    **How to avoid:** When adding product images in Shopify, use JPEG or PNG format at a minimum of 500×500px. Shopify's image optimizer may convert formats, so verify the final stored format if images are uploaded via third-party tools.

    <Tip>
      If many products have image failures, run a bulk image audit in Shopify before triggering a manual re-sync. Fix all image issues first, then trigger one manual sync rather than multiple incremental re-syncs.
    </Tip>
  </Accordion>

  <Accordion title="Meta Catalog token expired or revoked" icon="key">
    **Symptom:** A sudden spike of `FAILED` status across many products simultaneously — products that were previously `SYNCED` are now `FAILED` with no corresponding changes in Shopify. The pattern affects many products at once rather than isolated items.

    **Cause:** The Meta Catalog access token has expired or been revoked in Meta Business Manager. All catalog push attempts fail at the authentication layer before any product data is evaluated.

    **How to resolve:**

    1. Go to **Settings → WhatsApp Connection** and check the Meta Catalog token status
    2. If the token is shown as expired or invalid, click **Reconnect** and go through the Meta OAuth flow to issue a new token
    3. After reconnecting, trigger a manual sync from **Catalog → Shopify Sync → Sync Now** to re-queue all `FAILED` products for the next Meta push cycle

    <Warning>
      A token expiry causes all products to show `FAILED` simultaneously. Do not attempt to fix individual products while the token is invalid — all attempts will fail. Reconnect the token first, then re-sync.
    </Warning>

    **How to avoid:** Check the Meta Catalog token status periodically, especially before high-traffic campaign periods. A token that expires during a sale or launch period will prevent catalog-based messages from displaying correct product data.
  </Accordion>

  <Accordion title="Missing required product fields" icon="circle-exclamation">
    **Symptom:** Individual products with `FAILED` status. Error detail references a missing field — typically title, price, or image.

    **Cause:** Meta requires a minimum set of fields for a product to be accepted into a catalog. Products missing a title, a price, or at least one image cannot be pushed.

    **How to resolve:**

    1. Open the `FAILED` product in **Catalog → \[Product Name] → Error Details** and identify the missing field
    2. Open the product in Shopify and add the missing information — a product title, a variant price, or a product image
    3. Save in Shopify — the `products/update` webhook fires automatically and updates the Galantis record
    4. The next Meta sync cycle will include the now-complete product

    **Common missing field scenarios:**

    * Draft products that were synced before their data was complete — ensure products are fully configured before they enter the catalog sync pipeline
    * Products with variants that have no price set (price = 0 or price = null) — verify all variant prices are correctly set in Shopify
  </Accordion>

  <Accordion title="Product deleted in Shopify but referenced in an active template" icon="trash">
    **Symptom:** Campaigns or automations using SPM or MPM templates show message send failures. The error references a product that no longer exists.

    **Cause:** A product was deleted from Shopify after a template was built referencing it. Galantis received the `products/delete` webhook and removed the product from its catalog, but the template still references the deleted product ID.

    **How to resolve:**

    1. Identify which template is referencing the deleted product — check **Templates** for SPM or MPM templates and review their product section configurations
    2. Update the template to reference an available, `SYNCED` product
    3. Resubmit the template for Meta approval if the product change requires a new approval (it typically will for SPM templates where the product is part of the approved template structure)
    4. Once the template is re-approved, update any campaigns or automation Action Nodes that reference it

    **How to avoid:** Before deleting a product in Shopify, check whether it is referenced in any active templates. If it is, update the templates first before deleting the product.
  </Accordion>

  <Accordion title="Persistent PENDING status — products not being pushed" icon="clock">
    **Symptom:** Many products remain in `PENDING` status for an extended period without moving to `SYNCED` or `FAILED`. The sync appears to not be running.

    **Cause:** The catalog sync process may not be running as expected — a queue backlog or a processing issue may be preventing products from being pushed.

    **How to resolve:**

    1. Trigger a manual full sync from **Catalog → Shopify Sync → Sync Now** to force a re-queue of all pending products
    2. If the manual sync also does not process the products within a reasonable time, contact Galantis support — this indicates a processing issue that requires investigation

    **What to check before contacting support:** Confirm the issue is genuinely `PENDING` for longer than expected, not just a brief queuing delay for a large catalog. A store with thousands of products may take 10–20 minutes for an initial push to complete.
  </Accordion>
</AccordionGroup>

## Triggering a manual re-sync

After fixing the root cause of sync errors, you can accelerate recovery by triggering a manual sync:

<Steps>
  <Step title="Fix the root cause first">
    Ensure the underlying issue is resolved — images updated in Shopify, token reconnected, missing fields added — before triggering a re-sync. Running a re-sync before fixing the root cause will produce the same failures.
  </Step>

  <Step title="Open Shopify Sync">
    Go to **Catalog → Shopify Sync** and click **Sync Now**.
  </Step>

  <Step title="Monitor sync progress">
    Products will move from `FAILED` or `PENDING` to `SYNCED` as the Meta push completes for each one. Monitor the aggregate status counts in the Catalog view to confirm progress.
  </Step>

  <Step title="Verify the previously failing products">
    After the sync completes, confirm the previously `FAILED` products now show `SYNCED` status. Any that remain `FAILED` have a different or additional issue — review their error details individually.
  </Step>
</Steps>

## Verifying catalog token health

The Meta Catalog token is a common failure point that is easy to check proactively:

1. Go to **Settings → WhatsApp Connection**
2. Locate the Meta Catalog token status
3. Confirm it shows as valid and connected
4. If it shows as expired, disconnected, or invalid — reconnect immediately

We recommend checking the token status before any catalog-dependent campaign launch and as a first step whenever catalog sync issues appear.

## Related guides

* [Catalog — Catalog Health](/whatsapp/catalog/catalog-health) — Full catalog health monitoring reference
* [Catalog — Meta Catalog](/whatsapp/catalog/meta-catalog) — Token connection and the three catalog flows
* [Catalog — Shopify Sync](/whatsapp/catalog/shopify-sync) — Manual sync and automatic webhook sync behavior
* [Gather context for support](../debugging) — What to capture from the dashboard before opening a sync-related ticket
