Question: card.automatically_updated webhook

Got a card.created webhook.
Literally 10 seconds later got this webhook.
[type] => card.automatically_updated
[event_id] => d612387a-8dc0-3ffc-bc8d-1ebe7ce18cab
[created_at] => 2025-04-23T21:30:29.810249296Z

Only difference between content in bothe versions was
created=version 1
updated=version 2

What’s happening here. Is there some elements I should be checking on card.automatically_updated webhooks?

FYI, your API reference says:

version integer(64-bit)
Current version number of the card. Increments with each card update. Requests to update an existing Card object will be rejected unless the version in the request matches the current version for the Card.

:waving_hand: 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:

Additional Documentation

Payments API Webhooks
Use Webhooks to Integrate with a Payroll System
Refunds API Webhooks

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.

The card.automatically_updated webhook event is triggered when Square automatically updates certain fields of a card object. This can happen due to various reasons such as card expiration date updates, status changes, or other updates from the card network.

In your case, it seems like Square has automatically updated some information on the card right after it was created. The version number incrementing from 1 to 2 indicates that an update has occurred on the card object.

However, without more detailed information on the card object from both webhooks, it’s hard to pinpoint exactly what was updated. You might want to compare the two card objects to see if there are any differences in the fields other than the version number.

Remember, the card.automatically_updated webhook event is designed to help you keep your system in sync with any automatic updates made by Square to the card object.

This answer was reviewed by @Bryan-Square.

I made the question because I used the UltraComapre App to compare the 2 webhooks, and except for the creation data header the only change was:

[version] => 1
to
[version] => 2

Do you want to see the full-length versions and compare them yourself?

Are you suggesting that I should be doing line by line compares of all scard.automatically_updated webhooks.

What elements would I be need to concerned about? Is a expire date update handled with this webhook? Would that change the ccof?

What fields exactly does your integration need to know whether or not they’re updated? If the fields that your integration needs to function correctly aren’t changed in the card.updated event then you don’t really need to worry that the version changed. :slight_smile:

I don’t know what is being ‘automatically’ updated? I think that some credit card processing firms get informed by card issuers of expire date changes and use this info to update their internal records? I don’t know for sure? Do last 4’s change? In this exchange?

I want our records to match square’s records. We identify a subscriber’s saved card by saying “Visa expires 02/2028 - last 4 888” I’d like to have this be consistent with what Square is saying.

I don’t know if this kind of change would also alter the subscriber’s ccof saved on the database for future purchases?

It doesn’t seem like the webhooks provide any indication of WHY something changed, so am I stuck with line by line compares on every card.automatically_updated? Adding a
reason=> expdate_updated or some similar data would be nice.

Are you programmatically diffing it so you know what updates? There are some fields that aren’t exposed that my cause an update event. Yes, your right webhooks don’t provide an indication of why something changed, that’s expected because there would be to many why's that trigger events. :slight_smile: