Shopify + Square loyalty points without double counting

Learn how to run one shared loyalty balance across Shopify and Square while avoiding duplicate or missed rewards.

2026-05-15 · Lance

Three rules for syncing Shopify and Square loyalty points without double counting

Short answer: To run Shopify + Square loyalty without double counting, use one ledger, match customers by email or phone, award points only on completed payments (Shopify order paid + Square payment.updated), and reverse proportional points on every refund. Never run separate point currencies in Square Loyalty and a Shopify app without a deliberate bridge.

If you sell online and in-store, your loyalty system has one job: reward customers once, correctly, every time.

Why double counting happens

Double counting usually comes from one of these:

Cause What goes wrong
Two programs Square Loyalty + Shopify app both award points
Two customer rows Phone-based profile + square:{id} profile for same person
Wrong event Points on cart create or authorized-but-not-captured payment
No refund handler Customer keeps points after return; finance manually clawing back

Payment-based unified loyalty treats Square as a payment source into one merchant-controlled balance — not a second points universe (Square Loyalty API vs payment webhooks).

Rule 1: One identity per customer

Use one stable identifier across platforms — usually normalized phone or lowercase email.

Without this, points fragment:

  • Online purchase under email profile.
  • Market stall purchase under Square customer ID only.
  • Customer sees two balances; support improvises.

Operator checklist:

  • Collect email or phone at Square checkout when possible.
  • Fire Square customer.created before relying on payment-only profiles.
  • Audit Customers table for duplicate identifiers monthly.

Related: Shopify POS vs Square POS — different hardware, same identity rule.

Rule 2: Award on payment, not intent

Shopify: accrue on order paid / payment captured — not checkout started.

Square: accrue on payment.updated when status is COMPLETED.

Do not award on:

  • Abandoned carts.
  • Draft orders unpaid.
  • Failed or canceled Square payments.

This keeps balances fair and reduces “where are my points?” tickets.

Rule 3: Reverse on refund automatically

Every refund should trigger proportional point reversal:

  • Shopify: refunds/create webhook.
  • Square: refund.created / refund.updated linked to original payment ledger row.

Australian customers expect refund fairness under consumer guarantees — refund automation guide.

Manual adjustments every Monday do not scale.

Operational guardrail: reconciliation

Even good systems miss an event during outages. Run periodic checks:

  • Paid Shopify orders in window vs accrual records.
  • Square completed payments vs accrual records.
  • Refunds vs reversal records.

Daily or weekly reconciliation beats Sunday-night spreadsheet panic — webhooks and reconciliation.

Webhook setup summary

Platform Subscribe Skip
Shopify orders paid, refunds create cart events
Square payment.updated, refund.*, customer.created inventory-only noise

Connect Square once in SamePoints Settings (OAuth) — no per-store webhook URL — Square setup.

Who this is for

SMB merchants using Shopify for ecommerce and Square for retail POS or markets, especially when repeat purchase frequency matters and staff are not technical.

Not ideal as online-only loyalty if 30%+ revenue is Square — see omnichannel loyalty AU.

FAQ

Can I use Square Loyalty and a Shopify loyalty app together?

You can, but you risk two point currencies and customer confusion. Most unified merchants choose one external ledger displayed on Shopify.

Why do I have two customer profiles for one person?

Usually mismatched identifiers: customer.created used phone but payment.updated keyed only square:{id}. Standardize matching rules in your loyalty platform.

Do Square tips or taxes earn points?

Define policy in writing. Many merchants earn on pre-tip subtotal excluding tax; document in FAQ.

How do I test without double counting?

One customer email: Shopify test order + Square test payment + partial refund on each channel; confirm one balance in Logs.

What is SamePoints?

SamePoints maintains one refund-safe ledger across Shopify and Square with automated gift card redemption on Shopify.

Ready to unify Shopify + Square loyalty?

Start free