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

# Use WISEPIM as a smart layer on your PIM

> Keep Akeneo or your existing PIM as the system of record and put WISEPIM on top as the AI layer: import, enrich, gate, and send the results back.

You already have a PIM. It took a year to model, three departments agreed on the attribute tree, and your ERP writes into it every night. Nobody is going to sign off on replacing it, and honestly nobody should. What it cannot do is write two thousand product descriptions in four languages, or tell you which of them are too thin to sell.

So don't replace it. Put WISEPIM on top of it: pull the catalog in, let the AI do the writing and the checking, and send the result back. Your PIM stays the system of record and gains the one capability it was never built for.

This is the deliberate alternative to [migrating your catalog](/en/guides/migrate-your-catalog) - read that one instead if the goal really is to leave your old platform behind. Budget about half a day for the first loop, most of it spent deciding who owns which field.

<Info>
  **Before you start:** you need admin access to your PIM so you can create a connection - for [Akeneo](/en/integrations/akeneo) that is a connection under **System → Connections** with read and edit permission on products, and a WISEPIM project you can fill with a copy of the catalog.
</Info>

<Tip>
  **What you'll get:** a repeatable round trip where your PIM keeps the master data, WISEPIM writes the content, and only quality-checked products travel back - plus channels your PIM never served, fed straight from WISEPIM.
</Tip>

The loop runs in one direction and branches once, at the gate:

```mermaid theme={null}
flowchart LR
  A["Your PIM"] --> B["Import"]
  B --> C["Enrich"]
  C --> D["Quality gate"]
  D --> E["Back to the PIM"]
  D --> F["Feeds and channels"]
```

## Agree who owns which field

Do this before you connect anything. Every painful moment in a two-system setup comes from the same root cause: both systems believe they own the same field, and whichever one wrote last wins. Decide the split on paper first, and the rest of this guide is just configuration.

<img className="block dark:hidden" src="https://mintcdn.com/swiftsyncai/e4PgwKfOyqjZxFGF/images/marketing-screenshots/integrations/integration-configure-akeneo-light-transparent.webp?fit=max&auto=format&n=e4PgwKfOyqjZxFGF&q=85&s=c808a09944255632f3169f2a87f76e94" alt="Connecting Akeneo to WISEPIM, API credentials, locale mapping and a live connection test" width="1478" height="1978" data-path="images/marketing-screenshots/integrations/integration-configure-akeneo-light-transparent.webp" />

<img className="hidden dark:block" src="https://mintcdn.com/swiftsyncai/e4PgwKfOyqjZxFGF/images/marketing-screenshots/integrations/integration-configure-akeneo-dark-transparent.webp?fit=max&auto=format&n=e4PgwKfOyqjZxFGF&q=85&s=a910822ecf39df3efe7767b979f6125f" alt="Connecting Akeneo to WISEPIM, API credentials, locale mapping and a live connection test" width="1478" height="1978" data-path="images/marketing-screenshots/integrations/integration-configure-akeneo-dark-transparent.webp" />

A split that works for most teams, and the mechanism that keeps each side honest:

| Data                                     | Owner    | What keeps the split intact                                                           |
| ---------------------------------------- | -------- | ------------------------------------------------------------------------------------- |
| SKU, EAN, price, stock, supplier         | Your PIM | Re-imported every cycle; nothing in WISEPIM generates them                            |
| Attribute model and category tree        | Your PIM | Comes across with the products on your first platform import                          |
| Titles, descriptions, short descriptions | WISEPIM  | Written by AI, and protected on the next import by **Skip empty fields**              |
| SEO title and meta                       | WISEPIM  | Generated here; check whether your PIM even has fields to receive them back           |
| Translations                             | WISEPIM  | Generated per language; test what your PIM accepts before you rely on the return trip |
| Quality rules and compliance             | WISEPIM  | [Quality Guard](/en/quality-guard/overview) runs on every export, sync, or publish    |

<Steps>
  <Step title="Write the split down, field by field">
    A shared doc with two columns is enough. The rows that need the most thought are the ones your PIM technically has but nobody maintains - an empty `meta_description` in Akeneo is a field WISEPIM should own, not a field to keep syncing blank.
  </Step>

  <Step title="Connect your PIM">
    Follow the setup for [Akeneo](/en/integrations/akeneo), or find yours on the [supported platforms](/en/integrations/supported-platforms) page. Connect it before anything else: only connected integrations appear in the import and export modals.
  </Step>

  <Step title="Run the connection test before you trust it">
    Use **Test Connection** on the integration and fix credentials now. A connection that authenticates but lacks edit permission on products imports happily and fails on the way back, which is the expensive place to find out.
  </Step>

  <Step title="If your PIM is custom, check the API route instead">
    No integration tile for your system? The [WISEPIM REST API](/en/settings/api) reads and writes products programmatically, which is the path for an in-house PIM. The rest of this guide still applies - only the transport changes.
  </Step>
</Steps>

## Import so the PIM can never clobber your content

The first import is easy. The second one is where catalogs get damaged: your PIM exports a product with an empty description field, WISEPIM already has a good description in it, and the wrong setting turns your enrichment into a blank. Set the defaults once, in [Import settings](/en/settings/import), and every recurring pull behaves the same way.

<img className="block dark:hidden" src="https://mintcdn.com/swiftsyncai/WCvp31BSLScUczaz/images/marketing-screenshots/products/products-import-modal-light-transparent.webp?fit=max&auto=format&n=WCvp31BSLScUczaz&q=85&s=6b6ed0bce6780f965cc00e363628a602" alt="Importing a product catalog into WISEPIM" width="1972" height="1632" data-path="images/marketing-screenshots/products/products-import-modal-light-transparent.webp" />

<img className="hidden dark:block" src="https://mintcdn.com/swiftsyncai/ZX2PMkwlzd0qyBuW/images/marketing-screenshots/products/products-import-modal-dark-transparent.webp?fit=max&auto=format&n=ZX2PMkwlzd0qyBuW&q=85&s=fbee79d5bfdeb821b0bb1e9e3b53d7a0" alt="Importing a product catalog into WISEPIM" width="1972" height="1632" data-path="images/marketing-screenshots/products/products-import-modal-dark-transparent.webp" />

<Steps>
  <Step title="Choose how duplicates are resolved">
    Conflict resolution decides what happens when an incoming product already exists in WISEPIM. This project-wide setting governs platform and integration imports, so it is the one that applies to every pull from your PIM. **Overwrite** replaces every field on the matched product - on a smart-layer setup that is the option that erases your AI content. Read the three options in [Import settings](/en/settings/import) and pick deliberately.
  </Step>

  <Step title="Set empty-field handling to skip">
    **Skip empty fields** keeps the existing WISEPIM value when the incoming field is blank. That single setting is what lets a sparse PIM export flow in every night without wiping the fields WISEPIM owns.
  </Step>

  <Step title="Import a small slice first">
    Add an import filter so the first run brings in a few hundred products rather than the whole catalog, then check them. You want to discover a mapping surprise on a sample, not on 40,000 records.
  </Step>

  <Step title="Verify structure, not just the product count">
    On a first platform import WISEPIM pulls your categories and attributes across alongside the products, so open the category tree and the attribute list and compare them to your PIM. A right-looking product count can still hide a branch that flattened. See [importing products](/en/essentials/importing-products).
  </Step>

  <Step title="Let template defaults fill the rest">
    Fields your PIM does not send fall back to your [Product Template](/en/settings/templates) defaults. Those defaults apply only when a product is **created** and never when one is updated, so a nightly re-import cannot quietly overwrite a real value with a default.
  </Step>
</Steps>

<Note>
  Imported the wrong store, or the wrong scope? Open the import task in the [Process Tracker](/en/other-features/process-tracker) and choose **Rollback**, before you enrich on top of it.
</Note>

## Enrich, gate, then send it back

Now the layer earns its keep. Two enrichment tools, and the choice between them is exactly the ownership question again: are you filling holes your PIM left, or replacing content your PIM holds?

<img className="block dark:hidden" src="https://mintcdn.com/swiftsyncai/cwP1RkEsF4ewWRRF/images/marketing-screenshots/quality-guard/quality-guard-light-branded.webp?fit=max&auto=format&n=cwP1RkEsF4ewWRRF&q=85&s=2d3cecfa9b7af27c4c3c66e5f8d2c749" alt="WISEPIM Quality Guard dashboard with compliance rate and rule coverage" width="2400" height="1445" data-path="images/marketing-screenshots/quality-guard/quality-guard-light-branded.webp" />

<img className="hidden dark:block" src="https://mintcdn.com/swiftsyncai/cwP1RkEsF4ewWRRF/images/marketing-screenshots/quality-guard/quality-guard-dark-branded.webp?fit=max&auto=format&n=cwP1RkEsF4ewWRRF&q=85&s=f6010370ed09f9a9b40d64c895bc68a3" alt="WISEPIM Quality Guard dashboard with compliance rate and rule coverage" width="2400" height="1445" data-path="images/marketing-screenshots/quality-guard/quality-guard-dark-branded.webp" />

<Steps>
  <Step title="Fill gaps with Auto-Fill">
    [Auto-Fill](/en/ai/auto-fill) writes only the fields that are empty and leaves existing content alone, which makes it the safe default when your PIM's content is worth keeping. It runs on your project's default prompts, so set those in [Enrich Prompts settings](/en/settings/enrich-defaults) first.
  </Step>

  <Step title="Use Bulk Enrich only where you have agreed to overwrite">
    [Bulk Enrich](/en/ai/bulk-enrich) always overwrites the fields you pick. That is right for a range whose copy nobody defends, and wrong for anything your PIM is still the author of - so run it on a filtered selection, never on "all products" out of habit.
  </Step>

  <Step title="Put Quality Guard in front of the return trip">
    [Quality Guard](/en/quality-guard/overview) runs automatically on every export, sync, or publish, so the rules you activate become the gate your PIM sits behind. Rules with **Block** severity hold failing products in [quarantine](/en/quality-guard/quarantine) instead of shipping them, which is exactly the behaviour you want when the destination is your system of record.
  </Step>

  <Step title="Push a handful back, and open them in the PIM">
    Filter to a few representative products, [export](/en/essentials/exporting-products) them to your PIM, and read the result in the PIM itself. Confirm on that sample that the fields you expected to change changed, and the fields your PIM owns did not.
  </Step>

  <Step title="Then let skip-unchanged carry the routine">
    **Skip unchanged** is on by default for platform exports, so after the first full push every sync only sends products that actually changed. Save the setup as an [export template](/en/settings/export-templates) so the recurring job is one click.
  </Step>
</Steps>

<Warning>
  Field-level column selection is documented for CSV and Excel exports. If you need tight control over exactly which fields travel back into your PIM, a column-picked file export is the documented way to limit them - check what a direct platform push sends on a test batch before you run it at scale.
</Warning>

## Serve the channels your PIM was never going to

The round trip is only half the argument for a smart layer. The other half is everything you can publish from WISEPIM without involving your PIM at all - and this is usually where the setup pays for itself first, because it needs no round trip to be safe.

<img className="block dark:hidden" src="https://mintcdn.com/swiftsyncai/LYMgNvsF8BhVzDAs/images/marketing-screenshots/feed-hub/feed-hub-light-branded.webp?fit=max&auto=format&n=LYMgNvsF8BhVzDAs&q=85&s=68f1e28227c5a5b1b535d262922c5452" alt="WISEPIM Feed Hub with outbound channel feeds and sync status" width="2400" height="1445" data-path="images/marketing-screenshots/feed-hub/feed-hub-light-branded.webp" />

<img className="hidden dark:block" src="https://mintcdn.com/swiftsyncai/LYMgNvsF8BhVzDAs/images/marketing-screenshots/feed-hub/feed-hub-dark-branded.webp?fit=max&auto=format&n=LYMgNvsF8BhVzDAs&q=85&s=e359bd59ff8d3d536083826a9436b382" alt="WISEPIM Feed Hub with outbound channel feeds and sync status" width="2400" height="1445" data-path="images/marketing-screenshots/feed-hub/feed-hub-dark-branded.webp" />

<Steps>
  <Step title="Publish a hosted feed for a channel your PIM cannot reach">
    In [Feed Hub](/en/essentials/feed-hub), create a feed from a channel preset - Google Shopping, Meta, price comparison sites, affiliate networks, BMEcat for wholesalers, and more. Each feed gets a URL the channel fetches on its own schedule, so nothing has to travel back through your PIM to go live.
  </Step>

  <Step title="Exclude what is not ready, at the feed">
    Feed Hub's filter rules drop products below a quality threshold, without a price, or without an image before they reach the channel. That is a second gate, independent of the one guarding your PIM.
  </Step>

  <Step title="Schedule the loop instead of remembering it">
    Build an [automation](/en/automations/overview) with an **After Import** [trigger](/en/automations/triggers) so a fresh pull from your PIM is enriched the moment it lands, and finish it with a notification. The full build is in [Build a pipeline that runs itself](/en/guides/automate-your-enrichment-pipeline).
  </Step>

  <Step title="Watch both directions from one board">
    [Integration Health](/en/analytics/integration-health) shows last sync, failure rate, and last error per channel over a rolling 30 days. In a two-system setup this is the page that tells you the loop broke, usually before anyone notices stale content.
  </Step>
</Steps>

## How to tell it worked

| Signal                                | Where to look                                                                                                                    | When it moves                                                                                                                |
| ------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- |
| The import is not eating your content | Spot-check enriched products after the second import from your PIM                                                               | On the next scheduled pull - this is the check that matters most in month one                                                |
| Content is export-ready               | [Quality Guard](/en/quality-guard/overview) compliance rate, quarantine count near zero                                          | On the next check after a rule change or a data fix                                                                          |
| The return trip lands                 | Your PIM's own product screen, on a spot-check, plus the job result in the [Process Tracker](/en/other-features/process-tracker) | As each export job completes                                                                                                 |
| The loop stays healthy                | [Integration Health](/en/analytics/integration-health): failure rate under 3 % is green, 3–10 % is worth investigating           | Rolling 30-day window                                                                                                        |
| The layer is paying for itself        | [Enrichment Impact](/en/analytics/enrichment-impact) net lift                                                                    | Not for at least a month - it compares 30 days before against 30 after, and reads **Low** confidence until enough sales land |

<Check>
  A healthy smart layer is quiet: imports that change only master data, exports that skip most products because nothing changed, and feeds your PIM team never had to think about.
</Check>

## When it doesn't work

<AccordionGroup>
  <Accordion icon="circle-alert" title="The nightly import wiped the descriptions the AI wrote">
    Two settings decide this, both in [Import settings](/en/settings/import): conflict resolution, where **Overwrite** replaces every field on a matched product, and empty-field handling, where **Skip empty fields** is what preserves an existing value against a blank incoming one. Fix the settings first, then restore the content with an enrichment run rather than by hand.
  </Accordion>

  <Accordion icon="circle-alert" title="Half the products from my PIM never arrived">
    Check the validation mode. **Strict** rejects any row with missing required fields or invalid formats, which a real PIM export will trip over regularly; **Standard** imports the valid rows and reports what it skipped. Also check whether an import filter is narrowing the pull. Both live in [Import settings](/en/settings/import).
  </Accordion>

  <Accordion icon="circle-alert" title="The import works but pushing back is rejected">
    That pattern is almost always permissions rather than credentials: the connection can read but not write. For [Akeneo](/en/integrations/akeneo), confirm the connection's user group has permission to read *and edit* products and product attributes, then re-run **Test Connection**.
  </Accordion>

  <Accordion icon="circle-alert" title="The export ran and reported that nothing was sent">
    With **Skip unchanged** on, products unchanged since the last export to that destination are skipped on purpose. Turn it off to force a full re-push, which is what you want after changing the destination's settings. See [exporting products](/en/essentials/exporting-products).
  </Accordion>

  <Accordion icon="circle-alert" title="Enriched products are stuck and never reach the PIM">
    A [Quality Guard](/en/quality-guard/overview) rule with **Block** severity quarantines a product instead of exporting it. Open [quarantine](/en/quality-guard/quarantine), read the failure reason, fix the underlying field in bulk, and release the batch. On a large catalog a single blocking rule can hold up the whole return trip, so review the impact before you activate one.
  </Accordion>
</AccordionGroup>

## Related

<CardGroup cols={2}>
  <Card title="Akeneo integration" icon="layers" href="/en/integrations/akeneo">
    Create the connection, add the credentials, and sync your catalog both ways.
  </Card>

  <Card title="Exporting products" icon="upload" href="/en/essentials/exporting-products">
    Every destination, template, and the skip-unchanged option in full.
  </Card>

  <Card title="Migrate platforms without losing data" icon="arrow-right-left" href="/en/guides/migrate-your-catalog">
    The other route: leave the old system instead of layering on top of it.
  </Card>

  <Card title="Build a pipeline that runs itself" icon="workflow" href="/en/guides/automate-your-enrichment-pipeline">
    Turn the import-enrich-export loop into an automation you never start by hand.
  </Card>
</CardGroup>
