PHPackages                             kirbygo/ti-ext-square-catalog-sync - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. kirbygo/ti-ext-square-catalog-sync

ActiveTastyigniter-package[Utility &amp; Helpers](/categories/utility)

kirbygo/ti-ext-square-catalog-sync
==================================

One-way sync from Square Catalog to TastyIgniter menu (Square is source of truth)

v1.0.0(2mo ago)07MITPHPPHP ^8.2

Since May 5Pushed 2mo agoCompare

[ Source](https://github.com/KirbyG/ti-ext-square-catalog-sync)[ Packagist](https://packagist.org/packages/kirbygo/ti-ext-square-catalog-sync)[ RSS](/packages/kirbygo-ti-ext-square-catalog-sync/feed)WikiDiscussions main Synced 3w ago

READMEChangelogDependencies (1)Versions (2)Used By (0)

Square Catalog Sync for TastyIgniter
====================================

[](#square-catalog-sync-for-tastyigniter)

Keeps your TastyIgniter menu in sync with your Square Catalog. **Square is the source of truth** — changes you make in Square Dashboard flow into TastyIgniter automatically.

What it does
------------

[](#what-it-does)

- Pulls categories, items, modifier lists, modifiers, and images from Square
- Creates and updates TastyIgniter menu items, categories, and modifier options
- Assigns items to their Square categories (multi-category items use all their categories)
- Wires modifier lists to menu items with the correct min/max selection rules
- Soft-deletes TastyIgniter rows when Square marks objects deleted
- Logs every sync run with timestamps and object counts
- Accepts Square `catalog.version.updated` webhooks for near-real-time incremental syncs

Requirements
------------

[](#requirements)

- TastyIgniter 4.2 or later
- PHP 8.2 or later
- A Square account with an API access token
- Queue worker running (for background sync jobs)

Installation
------------

[](#installation)

```
composer require kirbygo/ti-ext-square-catalog-sync
php artisan igniter:up
```

Then go to **Admin → Manage → Extensions**, find **Square Catalog Sync**, and click **Install**.

Configuration
-------------

[](#configuration)

Navigate to **Admin → Square Catalog Sync** (or via the extension settings gear icon).

FieldWhere to find itAccess TokenSquare Developer Dashboard → your app → Production Access TokenLocation IDSquare Dashboard → Locations → click your location → the ID in the URLEnvironmentStart with Sandbox; switch to Production when verifiedWebhook Signature KeySquare Developer Dashboard → Webhooks → your subscription → Signature keyThe access token and webhook signature key are stored **encrypted** in the database. They are never echoed back into the settings form.

Running a sync
--------------

[](#running-a-sync)

**Manual:** Click **Sync Now** on the settings page. The job runs in the background — refresh after a few seconds to see results.

**Automatic:** The extension schedules an hourly sync. Make sure your queue worker is running:

```
php artisan queue:work
```

**Webhook-triggered:** Configure a Square webhook subscription pointing to:

```
https://yourdomain.com/square/webhook

```

Subscribe to the `catalog.version.updated` event. Each time your Square catalog changes, Square notifies this endpoint and an incremental sync is queued automatically.

What gets synced
----------------

[](#what-gets-synced)

Square objectTastyIgniter targetCATEGORY`categories` tableITEM`menus` table + `menu_categories` pivotITEM VARIATION (&gt;1 per item)`menu_options` + `menu_option_values` (as a "Size" option)MODIFIER\_LIST`menu_options` tableMODIFIER`menu_option_values` tableIMAGElogged only (not yet downloaded)TAXlogged only — TI uses a single global tax rate; configure manually in TI SettingsKnown limitations
-----------------

[](#known-limitations)

**Taxes:** Square supports multiple tax rates per item (e.g. a food tax and an alcohol tax). TastyIgniter applies a single global tax percentage to all items. The extension logs all Square taxes with their rates so you can configure TI's global tax setting manually. If you only have one tax rate, set it in Admin → Settings → Tax.

**Images:** Image URLs are logged but not downloaded into TI's media library. This is planned for a future release.

**Multi-category items:** TI supports assigning a menu item to multiple categories via the `menu_categories` pivot. The sync writes all Square category assignments. If your TI frontend theme only renders the first category, this is a theme limitation.

**Sync direction:** This is strictly one-way, Square → TastyIgniter. Changes made directly to TI's menu will be overwritten on the next sync.

Troubleshooting
---------------

[](#troubleshooting)

**Settings page shows no token field value** — correct; secrets are never echoed back. If the "Access Token set" check passes, the token is stored.

**"Sync job queued" but nothing happens** — your queue worker isn't running. Run `php artisan queue:work` in a terminal or configure a supervisor process.

**Items appear in TI but with no category** — run the sync twice. On the first run, if a page returns items before their categories, the pivot is skipped. The second run corrects it. For production, the hourly scheduler handles this automatically.

**Webhook returns 401** — the signature key in TI settings doesn't match the one in Square Dashboard → Webhooks. Re-copy it and save settings.

**Webhook accepted without a key** — if no signature key is configured, the endpoint accepts all requests and logs a warning. Set the key before going live.

License
-------

[](#license)

MIT

###  Health Score

37

—

LowBetter than 81% of packages

Maintenance84

Actively maintained with recent releases

Popularity4

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity46

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Unknown

Total

1

Last Release

80d ago

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/10431059?v=4)[Daniel Ruiz](/maintainers/KirbyGo)[@kirbygo](https://github.com/kirbygo)

---

Top Contributors

[![KirbyG](https://avatars.githubusercontent.com/u/15386259?v=4)](https://github.com/KirbyG "KirbyG (16 commits)")

### Embed Badge

![Health badge](/badges/kirbygo-ti-ext-square-catalog-sync/health.svg)

```
[![Health](https://phpackages.com/badges/kirbygo-ti-ext-square-catalog-sync/health.svg)](https://phpackages.com/packages/kirbygo-ti-ext-square-catalog-sync)
```

###  Alternatives

[nystudio107/craft-vite

Allows the use of the Vite.js next generation frontend tooling with Craft CMS

54323.8k46](/packages/nystudio107-craft-vite)[cloudflare/cf-ip-rewrite

Library to rewrite CloudFlare IP Addresses to the end-user IP address

15867.4k7](/packages/cloudflare-cf-ip-rewrite)[hryvinskyi/magento2-deferjs

N/A

1430.2k](/packages/hryvinskyi-magento2-deferjs)[tastyigniter/ti-ext-payregister

Allows you to accept credit card payments using PayPal, Stripe, Authorize.Net and/or Mollie.

1018.3k8](/packages/tastyigniter-ti-ext-payregister)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
