Well, the CSV Import Block does provide update-if-exist-otherwise-create functionality — and my reply to you initially began, 'The CSV Import Block is your new friend." But then I re-read your post and foundered on your comment that ‘any cars that don’t match have been sold’ and would need to be archived, which resulted in the new/past dichotomy.
Of course, it just dawned on me that your description of the process wasn’t quite accurate – cars that don’t match could either have been sold or be newly offered. Unfortunately, there’s no way of knowing which ones are found in both imports until after processing the import, at which point you have unmatched new and unmatched sold records.
But there are ways to automate[ish] the process, depending on what fields come in from Integromat. (Actually, I suppose you get to decide what Integromat provides.)
OK, how about this: Make sure there is either a CSV import ID number or date stamp. On the import. (That is, each file of imported data will have a unique ID or datestamp; every record in a given import file will have the same ID or date value.) Import using the CSV Import Block, with the import criteria set to update the ID/date. All new and all matched Airtable records will have the most recent import ID/date; any record with the previous ID/date has been sold.
If you use a datestamp and the date is always today’s date, you can tag sold cars automatically; alternatively, you might want to place them in a ‘sold, pending image removal’ state until you can confirm that step.
A lot simpler than my first suggested solution — but, should you ever need to perform a riffle shuffle of automobile ‘for sale’ records, it’s a winner!