# Sincronização multiloja: guia de instalação e configuração

> Este guia cobre a instalação do módulo Sincronização Multiloja, a ligação entre duas instalações PrestaShop e a configuração completa da sincronização do catálogo. Pré-requisitos Duas instalações PrestaShop 8.0 a 9.x…

- Página: <https://www.datafirefly.com/pt/documentation/synchronisation-multi-boutiques/>
- Idioma: pt
- Atualizado em: 2026-09-09
- Outros idiomas: [fr](https://www.datafirefly.com/documentation/synchronisation-multi-boutiques/index.md), [en](https://www.datafirefly.com/en/documentation/multi-store-synchronization/index.md), [es](https://www.datafirefly.com/es/documentation/sincronizacion-multi-tienda/index.md), [de](https://www.datafirefly.com/de/documentation/multi-shop-synchronisation/index.md), [it](https://www.datafirefly.com/it/documentation/sincronizzazione-multi-negozio/index.md), [pl](https://www.datafirefly.com/pl/documentation/synchronisation-multi-boutiques/index.md), [nl](https://www.datafirefly.com/nl/documentation/synchronisation-multi-boutiques/index.md)
- Índice: <https://www.datafirefly.com/pt/documentation/llms.txt>

Este guia cobre a instalação do módulo **Sincronização Multiloja**, a ligação entre duas instalações PrestaShop e a configuração completa da sincronização do catálogo.

## Pré-requisitos

- Duas instalações PrestaShop 8.0 a 9.x (as bases de dados e os alojamentos podem ser distintos).
- A extensão PHP cURL ativa na loja que comanda a sincronização.
- O webservice ativo na loja remota, com uma chave de acesso dedicada.

O módulo instala-se apenas na loja que _comanda_ a sincronização. A loja remota só precisa de ter o webservice ativo, sem qualquer módulo a instalar.

## Instalação do módulo

1. No back-office da loja que comanda, abra **Módulos > Gestor de módulos**.
2. Clique em **Carregar um módulo** e envie o ficheiro `dfmultisync.zip`.
3. Depois de instalado, o módulo acrescenta o menu **Parâmetros avançados > DF Multi-Store Sync**.

## Ativar o webservice na loja remota

Na loja que deve ser ligada:

1. Abra **Parâmetros avançados > Webservice**.
2. Coloque **Ativar o webservice do PrestaShop** em _Sim_ e grave.
3. Clique em **Adicionar uma nova chave de webservice**, gere uma chave e conceda depois as permissões `GET`, `POST`, `PUT` e `DELETE` nos seguintes recursos: `categories`, `products`, `images`, `combinations`, `stock_availables`, `specific_prices` e `languages`.
4. Grave e copie a chave gerada.

Sem as permissões `DELETE` em `specific_prices`, a sincronização dos preços específicos falha: o módulo substitui o conjunto remoto por eliminação e recriação.

## Acrescentar um site remoto

1. Vá a **DF Multi-Store Sync > Sites remotos** e depois a **Adicionar um site remoto**.
2. Preencha um nome, o URL de raiz da loja remota (por exemplo, `https://loja-b.exemplo.com`) e a chave de webservice copiada antes.
3. Grave e clique depois em **Testar** na lista, para verificar a ligação.

O botão **Testar** consulta realmente o webservice remoto. Se falhar, verifique o URL (com o protocolo `https://`), a chave, e se o webservice está mesmo ativo do lado remoto.

## Criar um perfil de sincronização

Um perfil descreve _o quê_ sincronizar, _em que sentido_ e _como_ arbitrar os conflitos.

### Direção: push ou pull

- **Push**: a loja atual é a origem e envia os seus dados para o site remoto.
- **Pull**: o site remoto é a origem, e a loja atual recebe os dados dele.

### Entidades

Selecione as entidades a sincronizar. São sempre tratadas por esta ordem, para respeitar as dependências: **categorias → produtos → stock → preços específicos**.

### Opções

- **Sincronizar as imagens**: em push, as novas imagens locais são enviadas; em pull, as imagens são descarregadas na criação do produto.
- **Sincronizar os preços específicos**: disponível apenas em push.
- **Dimensão do lote**: número de entidades tratadas por ciclo (1 a 25). Reduza-a se o servidor remoto for lento.

O módulo sincroniza o catálogo, não a configuração fiscal. Se as duas lojas servem países diferentes (por exemplo, Portugal e França), os grupos de impostos, as zonas e as transportadoras têm de ser configurados em cada uma: um produto sincronizado herda o grupo de impostos correspondente do lado de destino, e um preço enviado é sempre o preço sem IVA. Verifique num produto de teste que o preço com IVA apresentado ao cliente é o esperado antes de sincronizar todo o catálogo.

As categorias e os produtos são sincronizados nos idiomas presentes nas duas lojas. Se a loja remota não tiver o português instalado, os campos correspondentes ficam vazios do lado dela: instale e ative primeiro os mesmos idiomas nas duas instalações.

## Estratégias de conflito

Surge um conflito quando as duas lojas alteraram a mesma ficha desde a última sincronização. Estão disponíveis quatro estratégias:

- **A origem ganha**: a origem sobrepõe-se sistematicamente ao destino.
- **O destino ganha**: as entidades em conflito são ignoradas.
- **A mais recente ganha**: comparação das datas de alteração.
- **Manual**: os conflitos entram numa fila para arbitragem.

A estratégia «a mais recente ganha» compara datas de alteração. Se as duas lojas estiverem em servidores com fusos horários diferentes, confirme que ambas estão em Europe/Lisbon, ou pelo menos que os relógios estão sincronizados: um desvio de uma hora pode fazer ganhar a versão errada.

## Lançar uma primeira sincronização

1. Abra o **Painel** do módulo.
2. Na linha do perfil, clique em **Executar agora**.
3. A sincronização é feita por lotes: a barra de progresso mostra em direto o número de entidades criadas, atualizadas, ignoradas, em conflito e com erro.

A sincronização trabalha dentro de um orçamento de tempo (25 segundos por predefinição) e retoma automaticamente onde parou. Num catálogo grande, encadeiam-se vários ciclos sem qualquer intervenção.

## Automatizar com o cron

1. Ative a opção **Cron** nos perfis em causa.
2. Copie o URL de cron apresentado no painel (protegido por um token).
3. Acrescente-o ao crontab do seu servidor, por exemplo a cada quinze minutos:

```
*/15 * * * * wget -q -O /dev/null "https://a-sua-loja.pt/module/dfmultisync/cron?token=O_SEU_TOKEN"
```

O token do URL de cron é confidencial: autoriza o acionamento das sincronizações. Não o partilhe nem o exponha publicamente.

## Resolver os conflitos

Com a estratégia **Manual**, os conflitos acumulam-se no separador **Conflitos**. Em cada linha pendente:

- **Manter a local**: força o envio (push) da versão local.
- **Manter a remota**: força a receção (pull) da versão remota.
- **Ignorar**: marca o conflito como tratado, sem transferir nada.

## Registos e acompanhamento

O separador **Registos** conserva o histórico das operações (informação, aviso, erro), filtrável por nível e por data. Os registos são eliminados automaticamente ao fim de 30 dias.

## Resolução de problemas

### O teste de ligação falha

Confirme que o webservice está ativo do lado remoto, que a chave está correta e que o seu perfil de permissões cobre mesmo os recursos listados atrás. Certifique-se de que o URL inclui `https://`.

### Alguns produtos são ignorados

O módulo emparelha os produtos e as combinações pela **referência**. Um produto sem referência, ou cuja referência difira entre as duas lojas, não pode ser emparelhado para o stock. Preencha referências coerentes.

### Os preços específicos não são sincronizados

A sincronização dos preços específicos é **apenas em push** e exige a permissão `DELETE` em `specific_prices` do lado remoto.

### A sincronização parece lenta

Reduza a dimensão do lote do perfil e deixe o cron encadear os ciclos. A primeira passagem é sempre a mais demorada; as seguintes só transferem as entidades efetivamente alteradas.
