# Possible race condition between Square-to-Square Online sync when using UpsertCatalogObject API calls

**URL:** <https://developer.squareup.com/forums/t/possible-race-condition-between-square-to-square-online-sync-when-using-upsertcatalogobject-api-calls/21421>\
**Category:** Questions\
**Tags:** catalog-api\
**Created:** [March 13, 2025, 10:40pm UTC](https://developer.squareup.com/forums/t/possible-race-condition-between-square-to-square-online-sync-when-using-upsertcatalogobject-api-calls/21421 "2025-03-13T22:40:17Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![cbstl](https://avatars.discourse-cdn.com/v4/letter/c/ee7513/32.png) [@cbstl](https://developer.squareup.com/forums/u/cbstl)\
**Post date:** [March 13, 2025, 10:40pm UTC](https://developer.squareup.com/forums/t/possible-race-condition-between-square-to-square-online-sync-when-using-upsertcatalogobject-api-calls/21421/1 "2025-03-13T22:40:17Z")

</div>

Because of the way our business operates, each of our items in our Square online store has its own “Select Your Pickup Date” modifier list that contains the dates the respective item is available for pickup. We have a separate web application that I developed which uses the Square API to modify the pickup dates in those modifier lists as needed (with UpsertCatalogObjectRequest calls - C# SDK), which can happen frequently (sometimes multiple times per day). This has all worked fine for the last 3 years up until about a few weeks ago when something changed on the Square side. In these last few weeks, we’ve see multiple issues where the “Select Your Pickup Date” modifier is correct in Square “proper” (POS and Dashboard), but intermittently isn’t correct in our Square Online store on some items. Specifically we’ve seen the following:  
– The “Select Your Pickup Date” modifier list on several random items in the Square Online store will intermittently not show all the entries that are actually present in the modifier list as seen in the backend Square Dashboard. We can temporarily rectify it in the moment by making an arbitrary manual change (re-ordering modifiers, changing description, etc) to the associated item in the backend Square dashboard to force it to sync the item and all of its objects to Square Online, but we never know if/when Square Online will get in that bad state again after the next UpsertCatalogObjectRequest call for that modifier list.  
– Sometimes the “Select Your Pickup Date” modifier list for an item will randomly disappear entirely from our Square Online store, even though the modifier list is still associated with the item in the backend Square Dashboard. This I can also rectify in the moment by making a manual change to the item in the backend Square dashboard (re-ordering modifiers, changing description, etc) that forces a sync of the item back to Square Online and then the “Select Your Pickup Date” modifier shows up again in the Square Online store. That’s not actually a fix though, because we never know when they’re going to disappear from that item or others again the next time UpsertCatalogObjectRequest is called to change the contents of the modifier list.

The above issues happen intermittently but frequently when the “Select Your Pickup Date” modifier list gets updated by my web app via the API. Obviously I don’t know anything about the inner workings of Square’s API handling or syncing between Square and Square Online, but based on the behavior I’m seeing, it looks like there might be a race condition between the API handler and the sync process, where the API handler might be indicating to Square Online that updates need to be synced for an object before it’s actually done committing the changes to the data source that Square Online pulls from. Then, depending on the timing of Square Online trying to pull the updated object data, it’s sometimes incomplete or missing because the API handler hasn’t finished committing the changes. That’s just a theory - of course, it could also be something buggy strictly on the Square Online side with their sync processing. Either way, it just started happening the last month or so and it’s very disruptive to us since the affected modifier lists are fundamental to the ordering processing for our customers.

Is this something the Square API devs/gurus could look into to see if it’s something on the API handling side?

---

<div class="post-metadata">

**Author:** ![Square-Dev-AI](https://sea1.discourse-cdn.com/square/forums/user_avatar/developer.squareup.com/square-dev-ai/32/2513_2.png) [@Square-Dev-AI](https://developer.squareup.com/forums/u/Square-Dev-AI)\
**Post date:** [March 13, 2025, 10:40pm UTC](https://developer.squareup.com/forums/t/possible-race-condition-between-square-to-square-online-sync-when-using-upsertcatalogobject-api-calls/21421/2 "2025-03-13T22:40:41Z")

</div>

👋 I’m Square Dev AI, here to help answer your question!  
Based on the information you’ve provided, the following documentation will help answer your question:

> **[Design a Catalog](https://developer.squareup.com/docs/catalog-api/design-a-catalog)**
>
> When designing a product catalog, learn where to draw the line between an item, item variation, and item modifier.

> **[Square Developer](https://developer.squareup.com/docs/app-marketplace/requirements/catalog-api)**

> **Additional Documentation**
>
> [Verify your Pickup Order](https://developer.squareup.com/docs/orders-api/quick-start/step-5)  
> [Take a Pickup Order and Pay for It](https://developer.squareup.com/docs/orders-api/quick-start/step-4)  
> [Add Custom Attributes](https://developer.squareup.com/docs/catalog-api/add-custom-attributes)

If this documentation helped you find a solution, please check the box indicating that this reply solves the problem.  
Otherwise one of our Developer Advocates will provide additional assistance shortly.

---

<div class="post-metadata">

**Author:** ![Bryan-Square](https://sea1.discourse-cdn.com/square/forums/user_avatar/developer.squareup.com/bryan-square/32/38_2.png) [@Bryan-Square](https://developer.squareup.com/forums/u/Bryan-Square)\
**Post date:** [March 13, 2025, 11:03pm UTC](https://developer.squareup.com/forums/t/possible-race-condition-between-square-to-square-online-sync-when-using-upsertcatalogobject-api-calls/21421/3 "2025-03-13T23:03:03Z")

</div>

Do you have any screenshots of this and the `catalog_object_ids` of the items? 🙂

---

<div class="post-metadata">

**Author:** ![cbstl](https://avatars.discourse-cdn.com/v4/letter/c/ee7513/32.png) [@cbstl](https://developer.squareup.com/forums/u/cbstl)\
**Post date:** [March 14, 2025, 1:08am UTC](https://developer.squareup.com/forums/t/possible-race-condition-between-square-to-square-online-sync-when-using-upsertcatalogobject-api-calls/21421/4 "2025-03-14T01:08:51Z")

</div>

Here’s one example I was able to induce on a test item this evening, though in this particular case, the modifier list eventually showed up correctly after I got the screenshots. For this example, the item ID is IDQ4RHKEP36XFMYNTNTTX3YD and the modifier list ID is C65DIDAEAHQAMUFV2XSHLDHX. As you can see from the following two screenshots, Square Online was missing the final two entries in the modifier list.

 ![image](https://global.discourse-cdn.com/square/original/2X/0/0e0bb4371cf8178d1238fbd4b640d93994d861a8.png)  
 ![image](https://global.discourse-cdn.com/square/original/2X/7/747e2b74222d9b1f57de55759ceb3f84b3e2176a.png)

As I said, in this case it eventually showed up correctly in Square Online, but that doesn’t always happen without manual intervention. It’s also not easy for me to induce examples now, because I added processing in my web app to programmatically do what we’ve been having to do manually to get the modifier list showing correctly in Square Online (arbitrarily update something about the associated item some time after updating the modifier list - in the case of the web app I’m changing the value of an otherwise unused custom attribute on the items now).

---

<div class="post-metadata">

**Author:** ![cbstl](https://avatars.discourse-cdn.com/v4/letter/c/ee7513/32.png) [@cbstl](https://developer.squareup.com/forums/u/cbstl)\
**Post date:** [March 14, 2025, 7:16pm UTC](https://developer.squareup.com/forums/t/possible-race-condition-between-square-to-square-online-sync-when-using-upsertcatalogobject-api-calls/21421/5 "2025-03-14T19:16:34Z")

</div>

Here’s another example on a different item from today. Item ID is TVCLIFE4YEO6PB6WH2JMAQ3J and Modifier List ID is NRJAVIV3P6CGFQSY7J6YJ7ZN. As you can see from the following screenshots, Square Online is missing all the entries that come after 4/19/2025 (Square Online is showing less than half of the entries that are actually in the modifier list):

 ![image](https://global.discourse-cdn.com/square/original/2X/b/ba92035e01ef0556bba03c371408dbfb4d3559d5.jpeg)  
 ![image](https://global.discourse-cdn.com/square/original/2X/b/bace1244261fcd272b4b792af6d6937b44c870bd.png)

---

<div class="post-metadata">

**Author:** ![cbstl](https://avatars.discourse-cdn.com/v4/letter/c/ee7513/32.png) [@cbstl](https://developer.squareup.com/forums/u/cbstl)\
**Post date:** [March 14, 2025, 7:23pm UTC](https://developer.squareup.com/forums/t/possible-race-condition-between-square-to-square-online-sync-when-using-upsertcatalogobject-api-calls/21421/6 "2025-03-14T19:23:12Z")

</div>

Also, I backed out the change I mentioned that was programmatically attempting to force a subsequent sync to Square Online, so I could continue characterizing the problem. For the most recent example I posted, the API call to change the modifier list would have occurred around 2PM Central. It’s now 20 minutes later and Square Online still only shows what’s in the screenshot. Based on what I’ve seen over the last few weeks, it will remain that way indefinitely unless I manually make another change to the associated item to force another sync to Square Online.

---

<div class="post-metadata">

**Author:** ![Bryan-Square](https://sea1.discourse-cdn.com/square/forums/user_avatar/developer.squareup.com/bryan-square/32/38_2.png) [@Bryan-Square](https://developer.squareup.com/forums/u/Bryan-Square)\
**Post date:** [March 14, 2025, 9:50pm UTC](https://developer.squareup.com/forums/t/possible-race-condition-between-square-to-square-online-sync-when-using-upsertcatalogobject-api-calls/21421/7 "2025-03-14T21:50:04Z")

</div>

Thanks for providing the examples. Sharing with the team. 🙂

---

<div class="post-metadata">

**Author:** ![cbstl](https://avatars.discourse-cdn.com/v4/letter/c/ee7513/32.png) [@cbstl](https://developer.squareup.com/forums/u/cbstl)\
**Post date:** [March 14, 2025, 10:17pm UTC](https://developer.squareup.com/forums/t/possible-race-condition-between-square-to-square-online-sync-when-using-upsertcatalogobject-api-calls/21421/8 "2025-03-14T22:17:12Z")

</div>

Thank you very much for looking into this.

Here’s another example from today, if it’s helpful. Item ID is FLWD2XPVR7AGM66DRKG6T5BX and Modifier List ID is TXJJIMWFZVYZ2DQD33KWGYFT. The API call to update the modifier list was made around 4:45PM Central. Here are the screenshots where you can see the last 6 elements are missing in the modifier list on Square Online:

 ![image](https://global.discourse-cdn.com/square/original/2X/0/0d77f4855fbcf73323b16b384cf98f39ab6c61b1.jpeg)  
 ![image](https://global.discourse-cdn.com/square/original/2X/7/7f0b96fe0d46c60fd5f1f8685c19db1c1cc7a4bb.png)

---

<div class="post-metadata">

**Author:** ![cbstl](https://avatars.discourse-cdn.com/v4/letter/c/ee7513/32.png) [@cbstl](https://developer.squareup.com/forums/u/cbstl)\
**Post date:** [March 24, 2025, 9:23pm UTC](https://developer.squareup.com/forums/t/possible-race-condition-between-square-to-square-online-sync-when-using-upsertcatalogobject-api-calls/21421/9 "2025-03-24T21:23:37Z")

</div>

Hi @Bryan-Square. Just wanted to check in and see if there has been any progress investigating this. Although it’s intermittent, it happens more often than not on our account at least. If it’s not some oddity specific to our account, it should be fairly easy to reproduce on a test account that has Square Online by using the API to update the elements in a modifier list that is associated with an item and then see what shows in Square Online for that item after Square Online syncs the change. It should only take a few tries of calling the API to see it happen, if the manifestations on our account are any indication. The tricky thing is, Square Online syncing sometimes takes several minutes and doesn’t seem to have consistent timing, so you have to wait 15 minutes or so between attempts to see if the problem has manifested.

---

<div class="post-metadata">

**Author:** ![cbstl](https://avatars.discourse-cdn.com/v4/letter/c/ee7513/32.png) [@cbstl](https://developer.squareup.com/forums/u/cbstl)\
**Post date:** [April 1, 2025, 4:44pm UTC](https://developer.squareup.com/forums/t/possible-race-condition-between-square-to-square-online-sync-when-using-upsertcatalogobject-api-calls/21421/11 "2025-04-01T16:44:42Z")

</div>

Hi @Bryan-Square - Any traction on this?

---

<div class="post-metadata">

**Author:** ![Bryan-Square](https://sea1.discourse-cdn.com/square/forums/user_avatar/developer.squareup.com/bryan-square/32/38_2.png) [@Bryan-Square](https://developer.squareup.com/forums/u/Bryan-Square)\
**Post date:** [April 1, 2025, 4:46pm UTC](https://developer.squareup.com/forums/t/possible-race-condition-between-square-to-square-online-sync-when-using-upsertcatalogobject-api-calls/21421/12 "2025-04-01T16:46:43Z")

</div>

The team is aware of this. Unfortunately, I don’t have any timeline for a fix at this time. 🙂

---

<div class="post-metadata">

**Author:** ![cbstl](https://avatars.discourse-cdn.com/v4/letter/c/ee7513/32.png) [@cbstl](https://developer.squareup.com/forums/u/cbstl)\
**Post date:** [April 1, 2025, 5:39pm UTC](https://developer.squareup.com/forums/t/possible-race-condition-between-square-to-square-online-sync-when-using-upsertcatalogobject-api-calls/21421/13 "2025-04-01T17:39:36Z")

</div>

@Bryan-Square - Ok, thanks for the update. Out of curiosity, do you know if the problem has been reproduced/observed or is the awareness you mentioned just that what I’ve seen has been reported?

---

<div class="post-metadata">

**Author:** ![cbstl](https://avatars.discourse-cdn.com/v4/letter/c/ee7513/32.png) [@cbstl](https://developer.squareup.com/forums/u/cbstl)\
**Post date:** [April 8, 2025, 7:42pm UTC](https://developer.squareup.com/forums/t/possible-race-condition-between-square-to-square-online-sync-when-using-upsertcatalogobject-api-calls/21421/14 "2025-04-08T19:42:23Z")

</div>

@Bryan-Square - This continues to be a problem and renders usage of the API to update modifier lists in a Square Online store essentially useless. Any updates? Has this at least been reproduced on the Square end?

---

<div class="post-metadata">

**Author:** ![cbstl](https://avatars.discourse-cdn.com/v4/letter/c/ee7513/32.png) [@cbstl](https://developer.squareup.com/forums/u/cbstl)\
**Post date:** [April 21, 2025, 2:05pm UTC](https://developer.squareup.com/forums/t/possible-race-condition-between-square-to-square-online-sync-when-using-upsertcatalogobject-api-calls/21421/15 "2025-04-21T14:05:33Z")

</div>

@Bryan-Square - Any further updates on this issue being investigated?

---

<div class="post-metadata">

**Author:** ![Bryan-Square](https://sea1.discourse-cdn.com/square/forums/user_avatar/developer.squareup.com/bryan-square/32/38_2.png) [@Bryan-Square](https://developer.squareup.com/forums/u/Bryan-Square)\
**Post date:** [April 24, 2025, 6:06pm UTC](https://developer.squareup.com/forums/t/possible-race-condition-between-square-to-square-online-sync-when-using-upsertcatalogobject-api-calls/21421/16 "2025-04-24T18:06:10Z")

</div>

The Square Online team is aware of this issue. Unfortunately, I don’t have any other updates other then they are aware and have prioritized it. 🙂

---

<div class="post-metadata">

**Author:** ![cbstl](https://avatars.discourse-cdn.com/v4/letter/c/ee7513/32.png) [@cbstl](https://developer.squareup.com/forums/u/cbstl)\
**Post date:** [April 24, 2025, 6:28pm UTC](https://developer.squareup.com/forums/t/possible-race-condition-between-square-to-square-online-sync-when-using-upsertcatalogobject-api-calls/21421/17 "2025-04-24T18:28:52Z")

</div>

Ok thanks, I appreciate the info.

---

<div class="post-metadata">

**Author:** ![cbstl](https://avatars.discourse-cdn.com/v4/letter/c/ee7513/32.png) [@cbstl](https://developer.squareup.com/forums/u/cbstl)\
**Post date:** [May 20, 2025, 2:03pm UTC](https://developer.squareup.com/forums/t/possible-race-condition-between-square-to-square-online-sync-when-using-upsertcatalogobject-api-calls/21421/18 "2025-05-20T14:03:07Z")

</div>

Hi @Bryan-Square - Is there someone at Square Online that I can communicate about this with directly? If they’re the ones prioritizing and investigating, you shouldn’t have to be the go-between. 🙂 Thanks!

---

<div class="post-metadata">

**Author:** ![Bryan-Square](https://sea1.discourse-cdn.com/square/forums/user_avatar/developer.squareup.com/bryan-square/32/38_2.png) [@Bryan-Square](https://developer.squareup.com/forums/u/Bryan-Square)\
**Post date:** [May 20, 2025, 6:33pm UTC](https://developer.squareup.com/forums/t/possible-race-condition-between-square-to-square-online-sync-when-using-upsertcatalogobject-api-calls/21421/19 "2025-05-20T18:33:25Z")

</div>

Our Customer Success team is the one that handles escalations for the Square Online Store. So reaching out directly to them is what you’ll want to do. Again the team is aware of this. 🙂

---

<div class="post-metadata">

**Author:** ![cbstl](https://avatars.discourse-cdn.com/v4/letter/c/ee7513/32.png) [@cbstl](https://developer.squareup.com/forums/u/cbstl)\
**Post date:** [May 20, 2025, 7:22pm UTC](https://developer.squareup.com/forums/t/possible-race-condition-between-square-to-square-online-sync-when-using-upsertcatalogobject-api-calls/21421/20 "2025-05-20T19:22:21Z")

</div>

@Bryan-Square - Unfortunately, I already tried that route and it has been worse than useless. On March 3rd, I opened a ticket (case #104713901) via email support since this is a complicated issue that needs a written description. This is the exact, nearly unintelligible initial response that I received:

> This is Caren thanks a lot for contact us, in this I do apologizes for inconveniences that you’re experiencing with the item and all related now we are working to solve the issues like known issues and glitches on the system the engineers will contact you about it and fee free to ask them about it, I hope you are fine and thanks for be part of Square

My subsequent exchanges went nowhere, which isn’t surprising given that the “Customer Success Advocate” was barely able to communicate clearly. After waiting many days between replies in the subsequent exchange, I provided example screenshots of the problem on March 28th. I have gotten **no replies since then** (nearly 2 months!), despite sending four follow-up emails, the last two of which were simply asking for the ticket to be closed so I can leave feedback for the complete lack of “Customer Success” support.

So, do you have another way that I can be connected with someone who can actually help and provide status on the problem?

---

<div class="post-metadata">

**Author:** ![cbstl](https://avatars.discourse-cdn.com/v4/letter/c/ee7513/32.png) [@cbstl](https://developer.squareup.com/forums/u/cbstl)\
**Post date:** [June 2, 2025, 1:25pm UTC](https://developer.squareup.com/forums/t/possible-race-condition-between-square-to-square-online-sync-when-using-upsertcatalogobject-api-calls/21421/21 "2025-06-02T13:25:49Z")

</div>

@Bryan-Square - to reiterate what I shared above, the “Customer Success team” has been completely unhelpful and **now entirely silent for 2 months**. Is there anyone you can put me in contact with directly about this problem that is able to communicate coherently and has a basic technical understanding of the details involved?

[Next page](https://developer.squareup.com/forums/t/possible-race-condition-between-square-to-square-online-sync-when-using-upsertcatalogobject-api-calls/21421.md?page=2)
