Skip to content
Integration: Shoper

Meta Conversions API for Shoper, without a developer

Meta shows fewer purchases than your Shoper shop, and sometimes counts one twice. Basketly takes every paid purchase from the shop's order and sends it to Meta server-side. It does not depend on the buyer coming back to the thank-you page after paying by bank transfer.

The demo has sample data; the login comes to your e-mail.

Why the Pixel on Shoper loses or doubles purchases

The Pixel is a script in the buyer’s browser. It sends a purchase only when the buyer comes back to the thank-you page, accepts cookies and runs no ad blocker. After paying in the bank, some buyers close the tab and the purchase is gone. Reloading the thank-you page, on the other hand, can send the same purchase twice. A server-side GTM container solves this, but it needs a server, its running costs and someone to maintain it.

What Basketly does on Shoper

You give the login of a shop API user. The app does the rest, and you see every purchase and where it went.

  • It creates its webhooks in Shoper (new order, paid, status change, product changes) and checks their signature.
  • Shoper sends each webhook only once, so orders are also read every 15 minutes. Nothing hangs on a single notification.
  • A paid order becomes a purchase: value, currency, products from the order lines, e-mail and phone (hashed before sending), the buyer’s IP.
  • Every purchase is saved first and then sent with retries. When Meta has an outage, the purchase waits instead of getting lost.
  • Shoper products land on the Products screen with a diagnosis for Google Merchant Center and the Meta catalogue, and become a fixed feed.
  • Disconnecting removes the webhook from the shop and forgets the login.

Connect Shoper in 4 steps

It takes a few minutes. You need no developer and no server access.

  1. Create an API user in Shoper

    In the Shoper admin, add a user with access to the shop API and note its login and password.

  2. Connect the shop in the app

    In Basketly open Integrations → Shoper, enter the shop address, login and password, choose the cash-on-delivery statuses and the product id field, and confirm the legal basis for passing the data.

  3. Connect Meta

    Sign in with your Meta account, choose the dataset (Pixel) and keep the purchase flow from the shop to Meta. The getting-started checklist in the app shows what is still missing.

  4. Check the first purchase

    Send a Test event with the code from Events Manager and, after the first orders, open the purchase balance.

Cash on delivery

Shoper marks an order paid only after payment. With cash on delivery that can take days or never happen. When connecting, you choose the statuses that count as paid (for example “Shipped”), so a cash-on-delivery purchase reaches Meta when the order gets that status. Keep Meta’s limit in mind: a purchase older than 7 days is not accepted.

Which product id reaches the catalogue

Catalogue ads match a purchase to a product by its id. By default that is Shoper’s product_id. If your Meta catalogue uses another field, pick stock_id, the product code or the EAN. The id in the purchase must match the catalogue, or Meta cannot tie the purchase to the product.

How to check that it works

  • Test event: one click sends the newest shop purchase with the test code from Events Manager, and you see it under Test Events.
  • Purchase balance: shop orders next to purchases Meta accepted, day by day, with the most common error reasons.
  • Self-check: compares the dataset’s statistics in Meta with what was actually sent, and says what to fix.
  • Orders: each order has a purchase-sending column with a dot: accepted, failed or waiting.

What it does not do

  • It does not fix or replace the Pixel in the browser: events such as product views or add to cart stay on the shop side. It is a second, independent path for purchases.
  • A purchase read from the shop API carries no browser data. Without the shop script and the buyer’s consent Meta gets no ad click id, so matching the purchase to an ad can be weaker.
  • It does not make Meta’s numbers equal the shop’s: Meta counts purchases by its attribution windows. Both numbers are shown side by side.
  • It does not send a purchase older than 7 days and does not work without the shop’s confirmed legal basis.
  • Products are read as base products; variants are planned.
Integration: Shoper

Frequently asked questions

Your question is not here? Write to us

No. The Pixel stays for browser events, and purchases also go server-side. If the Pixel sends a Purchase too, Meta counts it once only when both events carry the same id: the server sends shoper-order-<order number>. If your Pixel setup cannot set that id, check in Events Manager that purchases are not doubled.

No. Basketly reads purchases from the Shoper API and sends them to Meta from its own server, so you run no container. A container makes sense when you want to send the whole browser funnel server-side to many tools.

The first read goes 7 days back, because Meta does not accept older purchases. 24 months of history are read once into Orders and Clients but never sent to Meta.

Yes, once you choose the statuses that count as paid. The purchase goes when the order gets such a status, as long as the order is not older than 7 days.

The free plan covers up to 100 orders a month, with no card and no time limit. The limit counts orders, not sends to platforms. Other plans are on the pricing page.

Get started in under 5 minutes

Connect your shop and Meta and see how many purchases really arrive.

  • Free up to 100 orders a month
  • No developer needed
  • Purchase balance and self-check